mirror of
https://codeberg.org/fediverse/fep.git
synced 2026-08-05 11:46:04 +00:00
FEP-844e: Capability discovery (#623)
Reviewed-on: https://codeberg.org/fediverse/fep/pulls/623 Co-authored-by: silverpill <silverpill@firemail.cc> Co-committed-by: silverpill <silverpill@firemail.cc>
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"@context": {
|
||||
"implements": {
|
||||
"@id": "https://w3id.org/fep/844e/implements",
|
||||
"@type": "@id",
|
||||
"@container": "@list"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
---
|
||||
slug: "844e"
|
||||
authors: silverpill <@silverpill@mitra.social>
|
||||
type: implementation
|
||||
status: DRAFT
|
||||
dateReceived: 2025-06-14
|
||||
discussionsTo: https://codeberg.org/silverpill/feps/issues
|
||||
---
|
||||
# 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][FEP-aaa3].
|
||||
|
||||
## 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:
|
||||
|
||||
- `href` (REQUIRED): the unique identifier of the implementable feature. The value MUST be an URI.
|
||||
- `name` (RECOMMENDED): the short description of the implementable feature.
|
||||
|
||||
Example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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`][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:
|
||||
|
||||
```json
|
||||
{
|
||||
"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 implementable features
|
||||
|
||||
(This section is non-normative.)
|
||||
|
||||
| Name | Identifier |
|
||||
| --- | --- |
|
||||
| RFC-9421: HTTP Message Signatures | https://datatracker.ietf.org/doc/html/rfc9421 |
|
||||
|
||||
## References
|
||||
|
||||
- Christine Lemmer-Webber, Jessica Tallon, Erin Shepherd, Amy Guy, Evan Prodromou, [ActivityPub], 2018
|
||||
- S. Bradner, [Key words for use in RFCs to Indicate Requirement Levels][RFC-2119], 1997
|
||||
- Helge, [FEP-aaa3: Listing Implemented Specifications on the Application Actor][FEP-aaa3], 2024
|
||||
- Steve Bate, [FEP-d556: Server-Level Actor Discovery Using WebFinger][FEP-d556], 2024
|
||||
|
||||
[ActivityPub]: https://www.w3.org/TR/activitypub/
|
||||
[RFC-2119]: https://datatracker.ietf.org/doc/html/rfc2119.html
|
||||
[FEP-aaa3]: https://codeberg.org/helge/fep/src/commit/e1b2a16707b542ea5ea0cfb390ac1abce89f05bb/fep/aaa3/fep-aaa3.md
|
||||
[FEP-d556]: https://codeberg.org/fediverse/fep/src/branch/main/fep/d556/fep-d556.md
|
||||
[generator]: https://www.w3.org/TR/activitystreams-vocabulary/#dfn-generator
|
||||
|
||||
## Copyright
|
||||
|
||||
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.
|
||||
Reference in New Issue
Block a user