The HTTP API
One contract.Every registry operation.
Integrate public discovery and resolution, authenticated publication, and deliberate registry operations through the canonical v1 API. Request and response types come from Rust.
- 35 operations
- camelCase JSON
- URL-encoded DID paths
The HTTP API exposes explicit registry operations. Public reads and authenticated writes have distinct boundaries.
- 01Choose the operation
- 02Send the request
- 03Read the structured response
01 / access
Easy reads. Explicit authority.
Choose your registry base URL, then use the endpoint contract below. Each protected operation checks the authority relevant to that action.
Public reads
Resolve entries, inspect versions, and perform local discovery without a publication session.
Authenticated changes
SIWS is the concrete user authentication profile. Mutations require a session, relevant capability, and route-scoped idempotency.
Separate operator access
Deep health, administration, and federated discovery have protected access. Peer traffic uses signed federation envelopes.
02 / endpoint reference
The complete surface.
All 35 operations from the current OpenAPI v1 snapshot. WS denotes an HTTP GET upgraded to WebSocket.
Entries and history
- POST
/v1/entriesEntry created
- Request
- MarsEntry
- Response
- MarsEntry (201)
- DELETE
/v1/entries/{did}Entry revoked
- Request
- —
- Response
- — (204)
- GET
/v1/entries/{did}Latest entry
- Request
- —
- Response
- MarsEntry (200)
- PUT
/v1/entries/{did}Entry updated
- Request
- MarsEntry
- Response
- MarsEntry (200)
- GET
/v1/entries/{did}/lineageCanonical lineage summary; lineage is null when absent
- Request
- —
- Response
- EntryLineageResponse (200)
- GET
/v1/entries/{did}/versionsBounded version page in stable newest-first sequence order
- Request
- —
- Response
- EntryVersionsResponse (200)
- GET
/v1/entries/{did}/versions/{version}Specific entry version
- Request
- —
- Response
- MarsEntry (200)
Discovery
- POST
/v1/discoverDiscovery results
- Request
- DiscoverRequest
- Response
- MarsQueryResult (200)
- POST
/v1/discover/federatedDeterministically merged local and signed peer results with bounded partial metadata
- Request
- MarsQuery
- Response
- FederatedDiscoveryResult (200)
- POST
/v1/discover/marsqlMARS-QL DISCOVER results
- Request
- MarsQlRequest
- Response
- MarsQueryResult (200)
Attestations, reports, and bonds
- POST
/v1/attestationsVerifies and separately stores a canonical OAS Verifiable Credential.
- Request
- AttestationRequest
- Response
- VerifiableAttestationRecord (201)
- GET
/v1/attestations/{did}Verified attestations; expired and revoked omitted by default
- Request
- —
- Response
- VerifiableAttestationRecord[] (200)
- GET
/v1/bonds/{bond_id}Bond record
- Request
- —
- Response
- Bond (200)
- POST
/v1/reportRecords a report whose reporter is derived from Principal.
- Request
- ReportRequest
- Response
- ReportResponse (201)
Ownership transfer
- GET
/v1/transfers/offers/{offer_id}Transfer offer
- Request
- —
- Response
- TransferOffer (200)
- POST
/v1/transfers/offers/{offer_id}/acceptRecipient-signed transferred entry
- Request
- TransferAcceptRequest
- Response
- MarsEntry (200)
- POST
/v1/transfers/offers/{offer_id}/declineDeclined transfer offer
- Request
- TransferDeclineRequest
- Response
- TransferOffer (200)
- POST
/v1/transfers/{did}/offersCreates a signed, expiring offer without changing entry ownership.
- Request
- TransferOfferRequest
- Response
- TransferOffer (201)
Federation
- POST
/v1/federation/discoverServes a typed MARS-QL query only after signed-envelope verification, replay protection, and active agreement authorization.
- Request
- SignedFederationEnvelope_FederatedDiscoveryRequest
- Response
- SignedFederationEnvelope_FederatedDiscoveryResponse (200)
- GET
/v1/federation/peersCanonical federation peer list
- Request
- —
- Response
- FederationPeer[] (200)
- PUT
/v1/federation/peers/selfPrincipal-bound peer metadata
- Request
- FederationPeerUpdateRequest
- Response
- FederationPeer (200)
- POST
/v1/federation/syncReturns local changes only after OAS service identity, JCS Ed25519 envelope, durable nonce, and active agreement verification.
- Request
- SignedFederationEnvelope_SyncRequest
- Response
- SignedFederationEnvelope_SyncResponse (200)
- GET
/v1/registriesCompatibility alias with the exact response body of GET /v1/federation/peers.
- Request
- —
- Response
- FederationPeer[] (200)
Authentication
- POST
/v1/auth/logoutSession revoked idempotently
- Request
- —
- Response
- — (204)
- GET
/v1/auth/sessionCurrent SIWS identity
- Request
- —
- Response
- SiwsSessionResponse (200)
- POST
/v1/auth/siws/challengeSingle-use SIWS challenge
- Request
- SiwsChallengeRequest
- Response
- SiwsChallengeResponse (200)
- POST
/v1/auth/siws/verifyVerified identity and opaque MARS session
- Request
- SiwsVerifyRequest
- Response
- SiwsVerifyResponse (200)
Health and operator controls
- POST
/v1/admin/anchors/{intent_id}/abandonIntent abandoned
- Request
- —
- Response
- AnchorControlResponse (200)
- POST
/v1/admin/anchors/{intent_id}/retryIntent requeued
- Request
- —
- Response
- AnchorControlResponse (200)
- POST
/v1/admin/bondsRegistry-local bond provisioned
- Request
- BondProvisionRequest
- Response
- Bond (201)
- GET
/v1/admin/federation/peersProtected durable peer cursor, breaker, lag, and quarantine status
- Request
- —
- Response
- FederationPeerStatus[] (200)
- GET
/v1/anchors/{did}Returns a stable keyset page of durable provider-neutral anchor intents, immutable receipts, and the current registry projection.
- Request
- —
- Response
- AnchorListResponse (200)
- GET
/v1/healthShallow service health
- Request
- —
- Response
- HealthResponse (200)
- GET
/v1/health/deepOperator subsystem health; inspect the body status
- Request
- —
- Response
- DeepHealthResponse (200)
Events
- WS
/v1/wsWebSocket protocol upgrade
- Request
- —
- Response
- — (101)
Federated discovery routes depend on configuration. Anchor operations expose staged intents and receipts; endpoint presence does not establish activated Sigil authority.