Service Capability Discovery

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?

As far as I know, you have two options:

  1. Specify the features your server supports in its NodeInfo
  2. Specify feature flags in each actor object, in your own namespace (see supportsFriendRequests in this actor as an example: https://friends.grishka.me/grishka).
2 Likes

I know it’s an old thread, but I recently searched for this and another mechanism @silverpill shared 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.

1 Like