fep

FEP-844e: Capability discovery

Summary

Capability discovery for ActivityPub applications.

This document is based on the idea described in FEP-aaa3: Listing Implemented Specifications on the Application Actor.

Requirements

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.

Application object

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:

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"
    }
  ]
}

Discovery through an actor

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"
    ]
  }
}

Discovery through a well-known endpoint

The mechanism of discovering an Application object using WebFinger is described in FEP-d556.

Capability discovery through NodeInfo endpoint is discouraged.

Intended use

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.

Registry of software capabilities

(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

Implementations

References

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.