Capability discovery for ActivityPub applications.
This document is based on the idea described in FEP-aaa3: Listing Implemented Specifications on the Application Actor.
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC-2119.
An application can advertise its capabilities using the implements
property on an Application
object.
This object might not be an actor. The value of implements
property MUST be an array of Link
objects, each containing the following properties:
href
(REQUIRED): the unique identifier of the capability. The value MUST be an URI.name
(RECOMMENDED): the short description of the capability.Example:
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/fep/844e"
],
"type": "Application",
"id": "https://social.example/server",
"implements": [
{
"href": "https://datatracker.ietf.org/doc/html/rfc9421",
"name": "RFC-9421: HTTP Message Signatures"
}
]
}
An Application
object can be linked to an actor using the generator
property. The value of this property SHOULD be a partial object containing the implements
property. That object MAY be anonymous (without an identifier).
Example:
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/fep/844e"
],
"id": "https://social.example/actors/1",
"type": "Person",
"inbox": "https://social.example/actors/1/inbox",
"outbox": "https://social.example/actors/1/outbox",
"generator": {
"type": "Application",
"implements": [
"href": "https://datatracker.ietf.org/doc/html/rfc9421",
"name": "RFC-9421: HTTP Message Signatures"
]
}
}
The mechanism of discovering an Application
object using WebFinger is described in FEP-d556.
Capability discovery through NodeInfo endpoint is discouraged.
The reliance on the mechanism described in this document might increase implementation complexity and hinder interoperability.
Implementers MUST NOT use it in cases where capabilities can be inferred from properties and types of objects.
(This section is non-normative.)
Name | Identifier |
---|---|
RFC-9421: HTTP Message Signatures | https://datatracker.ietf.org/doc/html/rfc9421 |
RFC-9421 signatures using the Ed25519 algorithm | https://datatracker.ietf.org/doc/html/rfc9421#name-eddsa-using-curve-edwards25 |
CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
To the extent possible under law, the authors of this Fediverse Enhancement Proposal have waived all copyright and related or neighboring rights to this work.