Overview
Sigilum namespaces are identified by Decentralized Identifiers (DIDs) following thedid:sigilum:<namespace> method. DID documents expose the namespace’s current authorization state, including:
- Verification methods (agent public keys)
- Service endpoints for approved authorizations
- Controller information
- Namespace metadata
DID Format
did:sigilum:acme-corpdid:sigilum:my-companydid:sigilum:example-namespace
Resolve DID Document
Resolve a
did:sigilum:<namespace> DID to its DID document.Path Parameters
DID value (must match pattern
did:sigilum:<namespace>).Example: did:sigilum:acme-corpResponse Headers
application/did+json(preferred)application/json(also supported)
Response Body
JSON-LD context for DID document.Value:
["https://www.w3.org/ns/did/v1"]The DID identifier.Example:
did:sigilum:acme-corpDID controller (typically same as
id for self-sovereign namespaces).ISO 8601 timestamp when namespace was created.
ISO 8601 timestamp when DID document was last updated.
Array of verification methods (agent public keys with authorization status).
Verification method identifier.Format:
{did}#agent-{index}Key type:
Ed25519VerificationKey2020Base64-encoded public key bytes.
Service slug this key is authorized for.
Authorization status:
approved, pending, revoked, rejectedExample Request
DID Resolution Envelope
Resolve DID with full resolution metadata envelope.
Response Headers
application/ld+json;profile="https://w3id.org/did-resolution"Response Body
DID resolution context URL.
The resolved DID document (same structure as
/.well-known/did/{did} response).Metadata about the resolution process.
Content type of the response.
Example Request
Use Cases
Identity Verification
Verify namespace ownership and agent authorization:Service Discovery
Discover which services an agent is authorized for:Audit Trail
Track authorization history:Error Responses
| Status | Code | Description |
|---|---|---|
| 400 | INVALID_DID | DID format is invalid |
| 401 | SIGNATURE_INVALID | Invalid or missing signed headers |
| 404 | DID_NOT_FOUND | Namespace does not exist |
Deactivated Namespaces
When a namespace owner deletes their account, the DID document is marked as deactivated:- Retain historical authorization data
- Cannot approve new authorizations
- Existing approved authorizations are effectively revoked
- DID document remains resolvable for audit purposes
Integration with Blockchain
When blockchain integration is enabled (BLOCKCHAIN_MODE is not disabled), namespace registration and key events are recorded on-chain:
- Namespace registration: Transaction hash in
registration_tx_hash - Authorization approval: Transaction hash in
approval_tx_hash - Authorization revocation: Transaction hash in
revocation_tx_hash
Caching Recommendations
DID documents can be cached with appropriate TTLs:- Approved authorizations: Cache for 5-15 minutes
- Pending/rejected: Cache for 1 minute or less
- Metadata: Cache for 1 hour
request.approved→ Refresh DID documentrequest.revoked→ Refresh DID document- Namespace updates → Refresh DID document
Security Considerations
Public Key Encoding
publicKeyBase64 contains the raw Ed25519 public key bytes (32 bytes) encoded as base64. To use with the verification API, prepend ed25519: prefix.
Controller Verification
Always verify thecontroller field matches the expected namespace DID to prevent DID document spoofing.
Signature Verification
When using DID documents to verify signatures, ensure:- The signing key appears in
verificationMethod - The key’s
statusisapproved - The key’s
servicematches your service - The DID document is current (check
updatedtimestamp)