The S2S specification doesn’t appear to have an API for discovering what capabilities an Actor’s server supports. As an example, I happen to know that right now Mastodon doesn’t support AP features such as relationships, so I shouldn’t offer my users an option to use those features with actors running on Mastodon. If I did, the experience for my user would be confusing (“I sent Bob an Offer activity (friend request), but Bob never responded,” when Mastodon never presented Bob with the activity).
How can I as a developer (on behalf of my users), know what features are supported for a given Actor? Manually maintaining a table of (Server, Version) => [Feature] seems inadequate, but also seems like the only option available to me right now.
How is service interoperability supposed to work in this model?
Specify the features your server supports in its NodeInfo
Specify feature flags in each actor object, in your own namespace (see supportsFriendRequests in this actor as an example: https://friends.grishka.me/grishka).
I know it’s an old thread, but I recently searched for this and another mechanism @silverpillshared with me on fedi, which I think is also relevant to have in this thread (I’m using my own words here);
If a certain feature implies that a certain property is present on the object (and vice versa), then a check could be done for the presence of this property. This is only for these specific cases ofc. E.g. when a feature implies the presence of a collection (and vice versa), you could check if that collection is present.