DFOS Extension Registry
Status — companion document, no clock of its own. This document defines no protocol rules; it is the single index of the names the specs register — service types under the core's open services namespace, JWS
typvalues under the core'stypconvention, and the names the corpus mints in global registries it does not own (External Registrations). Each name's semantics live in its owner spec, which remains normative wherever the two could be read to disagree. A new name lands by adding its row here in the same PR that specifies it, never by minting locally (CONTRIBUTING, item 2). Discuss in the DFOS space.
Service Types
The services namespace is open: the two core types are structurally validated by every conformant verifier, and every other registered type is an opaque extension the core preserves verbatim and ignores — registering one requires no protocol or cross-language change. One row per type:
Service type |
Owner spec | Validation | Semantics |
|---|---|---|---|
DfosRelay |
PROTOCOL | core | Transport locator — where to reach a relay serving this identity. |
ContentAnchor |
PROTOCOL | core | Stable content reference — a contentId or artifact CID under a client-defined semantic label. |
DfosAuthorizationServer |
SIWD | consumer | The canonical authorize origin able to produce this subject's signature under SIWD profile A. |
DfosOrigin |
ORIGIN-BINDING | consumer | The identity's claimed web domain — the chain half of the bidirectional origin binding. |
DfosDocumentGateway |
WEB-RELAY | consumer | Base URL of a document gateway serving this identity's content. |
DfosProfile |
WEB-RELAY | consumer | The identity's profile document — a contentId (living chain) or artifact CID (immutable snapshot), dispatched by shape as anchors are. |
Validation — core: structurally validated by every conformant verifier, and a malformed entry rejects at verification. consumer: opaque to the core (preserved verbatim, ignored); structural validation is an obligation of the owner spec's consumers. Everything else — ambiguity rules (DfosOrigin and DfosAuthorizationServer: one entry or none), field grammar, display discipline — is the owner spec's.
JWS typ Values
Every DFOS JWS envelope is typ-scoped: the protected header names exactly one registered value, and a verifier rejects any typ other than the one the presented context requires — the gate that keeps a JWS signed for one purpose from ever being presented as another. The cid column marks whether the envelope carries the protocol's cid header.
typ value |
Owner spec | cid |
Semantics |
|---|---|---|---|
did:dfos:identity-op |
PROTOCOL | yes | Identity chain operations. |
did:dfos:content-op |
PROTOCOL | yes | Content chain operations. |
did:dfos:artifact |
PROTOCOL | yes | Standalone signed inline documents. |
did:dfos:countersign |
PROTOCOL | yes | Standalone witness attestations. |
did:dfos:credential |
CREDENTIALS | yes | Authorization credentials — the cid is their revocation address. |
did:dfos:revocation |
CREDENTIALS | yes | Credential revocation artifacts. |
did:dfos:credit-claim |
CREDITS | yes | Document-plane credit claims — registered for typ routing; never relay-ingested. |
did:dfos:sign-request |
SIGNING | yes | Sign-request envelopes — travel the signing-mailbox courier, never POST /proof/v1/operations. |
did:dfos:siwd |
SIWD | no | Sign In With DFOS challenge proofs — delivered by web redirect or the signing mailbox; never relay-ingested. |
did:dfos:siwd-ask |
SIWD | no | Loopback client ask proofs — the client's key-control proof over its own authorize request. |
did:dfos:request-proof |
API-AUTH | no | API request proofs — ride the Authorization header of a credential-gated API request and die with the freshness window. |
did:dfos:identity-proof |
API-AUTH | no | API identity proofs — the request proof's credential-less sibling: bind one exact request to a bare DID, authentication only. |
did:dfos:key-add |
KEY-PROOF | no | Key introduction proofs — the candidate key's position-bound possession-and-consent proof; self-signed, presented to ceremonies and embedded in the introducing identity operation's keyProofs. |
External Registrations
The corpus also mints names in two global namespaces DFOS does not own, and there the obligation runs outward: RFC 8615 §3 requires that an application minting a new well-known URI register its suffix in the IANA Well-Known URIs registry, and RFC 8552 §4.1.5 requires that a public specification calling for a global underscored DNS node name enter it in the IANA Underscored and Globally Scoped DNS Node Names registry. This table tracks those registrations the way the tables above track the internal ones — one row per name, corrected in place as the registries change. A Registered cell of — is a name the registry does not list.
| Name | Registry | Owner spec | Registered |
|---|---|---|---|
/.well-known/dfos-relay |
IANA Well-Known URIs (RFC 8615) | WEB-RELAY | — |
/.well-known/dfos-app.json |
IANA Well-Known URIs (RFC 8615) | SIWD | — |
/.well-known/dfos-did |
IANA Well-Known URIs (RFC 8615) | ORIGIN-BINDING | — |
/.well-known/dfos-key-proof |
IANA Well-Known URIs (RFC 8615) | KEY-PROOF | — |
_dfos (TXT) |
IANA Underscored DNS Node Names (RFC 8552) | ORIGIN-BINDING | — |
Registration is an act of the project's stewards, outside any PR; what a PR owns is this table's accuracy and the registration note in each minting spec. A future spec that mints a well-known path or an underscored name adds its row here in the same PR that specifies it, exactly as internal names do.
Registries That Live in Their Owner Spec
Names whose grammar is inseparable from their owner's machinery register there, not here — this section only says where:
- Credential resource forms (
chain:<contentId>,mailbox:<id>,api:<host>) — CREDENTIALS → Resource Types. - API action tokens (
read:profile,read:email,read:memberships) — API-AUTH's action registry. - SIWD scope tokens — SIWD → Scopes and Credentials.
- Sign-request
payloadTypfamilies — SIGNING. - Key-proof ceremony purposes — KEY-PROOF → Purpose Registry (each purpose
typalso lands a row above). - App description members — SIWD → The App Description Document (the member table is the registry).
- Content schemas (
$schemavocabulary) — CONTENT-MODEL, hosted at schemas.dfos.com.