DID Document Schema

View as Markdown

The DID Document is the core data structure in the did:adi method. It describes the subject of the DID, including its public keys, authentication methods, service endpoints, and capabilities.

JSON-LD Context

Every did:adi DID Document uses the following JSON-LD contexts:

1{
2 "@context": [
3 "https://www.w3.org/ns/did/v1",
4 "https://w3id.org/security/suites/ed25519-2020/v1",
5 "https://w3id.org/security/suites/secp256k1-2019/v1",
6 "https://w3id.org/security/suites/x25519-2020/v1",
7 "https://w3id.org/security/bbs/v1",
8 "https://ida.infinia.io/ns/did/v1"
9 ]
10}

The IDA-specific context (https://ida.infinia.io/ns/did/v1) adds:

  • Agent-specific properties (operator, model, capabilities)
  • ADI blockchain metadata
  • IBCT capability invocation extensions

Full DID Document Schema

Person / Organization DID Document

1{
2 "@context": [
3 "https://www.w3.org/ns/did/v1",
4 "https://w3id.org/security/suites/ed25519-2020/v1",
5 "https://w3id.org/security/suites/x25519-2020/v1",
6 "https://w3id.org/security/bbs/v1",
7 "https://ida.infinia.io/ns/did/v1"
8 ],
9 "id": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f",
10 "controller": "did:adi:3f7a9b2e1c4d5f6a8b0c2d4e6f8a0b2c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f",
11
12 "verificationMethod": [
13 {
14 "id": "did:adi:3f7a...#key-1",
15 "type": "Ed25519VerificationKey2020",
16 "controller": "did:adi:3f7a...",
17 "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
18 },
19 {
20 "id": "did:adi:3f7a...#key-2",
21 "type": "EcdsaSecp256k1VerificationKey2019",
22 "controller": "did:adi:3f7a...",
23 "publicKeyMultibase": "zQ3shokFTS3brHcDQrn82RUDfCZtME..."
24 },
25 {
26 "id": "did:adi:3f7a...#key-agreement-1",
27 "type": "X25519KeyAgreementKey2020",
28 "controller": "did:adi:3f7a...",
29 "publicKeyMultibase": "z6LShs9GGnqk85JBBenbnvGGnm1V8..."
30 },
31 {
32 "id": "did:adi:3f7a...#bbs-key-1",
33 "type": "Bls12381G2Key2020",
34 "controller": "did:adi:3f7a...",
35 "publicKeyBase58": "25EEStQgp9xE3gqAZqYejcNB..."
36 }
37 ],
38
39 "authentication": [
40 "did:adi:3f7a...#key-1",
41 "did:adi:3f7a...#key-2"
42 ],
43
44 "assertionMethod": [
45 "did:adi:3f7a...#key-1",
46 "did:adi:3f7a...#bbs-key-1"
47 ],
48
49 "keyAgreement": [
50 "did:adi:3f7a...#key-agreement-1"
51 ],
52
53 "capabilityInvocation": [
54 "did:adi:3f7a...#key-1"
55 ],
56
57 "capabilityDelegation": [
58 "did:adi:3f7a...#key-1"
59 ],
60
61 "service": [
62 {
63 "id": "did:adi:3f7a...#didcomm",
64 "type": "DIDCommMessaging",
65 "serviceEndpoint": {
66 "uri": "https://agent.example.com/didcomm",
67 "accept": ["didcomm/v2"],
68 "routingKeys": ["did:adi:mediator1#key-1"]
69 }
70 },
71 {
72 "id": "did:adi:3f7a...#linked-domain",
73 "type": "LinkedDomains",
74 "serviceEndpoint": "https://example.com"
75 }
76 ],
77
78 "created": "2026-03-28T10:00:00Z",
79 "updated": "2026-03-28T10:00:00Z",
80 "versionId": 1,
81 "deactivated": false
82}

Agent DID Document

Agent DID Documents extend the base schema with agent-specific properties:

1{
2 "@context": [
3 "https://www.w3.org/ns/did/v1",
4 "https://w3id.org/security/suites/ed25519-2020/v1",
5 "https://ida.infinia.io/ns/did/v1",
6 "https://ida.infinia.io/ns/agent/v1"
7 ],
8 "id": "did:adi:agent:7f3a9b2e1c4d5f6a8b0c2d4e6f8a0b2c...",
9 "controller": "did:adi:3f7a9b2e1c4d...",
10
11 "verificationMethod": [
12 {
13 "id": "did:adi:agent:7f3a...#key-1",
14 "type": "Ed25519VerificationKey2020",
15 "controller": "did:adi:agent:7f3a...",
16 "publicKeyMultibase": "z6Mkw6QUbN4PqGmPVjR..."
17 }
18 ],
19
20 "authentication": ["did:adi:agent:7f3a...#key-1"],
21 "assertionMethod": ["did:adi:agent:7f3a...#key-1"],
22 "capabilityInvocation": ["did:adi:agent:7f3a...#key-1"],
23
24 "service": [
25 {
26 "id": "did:adi:agent:7f3a...#a2a",
27 "type": "AgentToAgent",
28 "serviceEndpoint": "https://agent.example.com/a2a"
29 },
30 {
31 "id": "did:adi:agent:7f3a...#agent-card",
32 "type": "AgentCard",
33 "serviceEndpoint": "https://agent.example.com/.well-known/agent.json"
34 }
35 ],
36
37 "agent": {
38 "operator": "did:adi:3f7a9b2e1c4d...",
39 "model": {
40 "provider": "OpenAI",
41 "name": "gpt-4o",
42 "version": "2026-03-01"
43 },
44 "capabilities": ["shopping", "price-comparison", "order-placement"],
45 "autonomyLevel": "Junior",
46 "state": "active",
47 "registeredAt": "2026-03-28T10:00:00Z"
48 },
49
50 "created": "2026-03-28T10:00:00Z",
51 "updated": "2026-03-28T10:00:00Z",
52 "versionId": 1,
53 "deactivated": false
54}

Property Reference

Core Properties

PropertyTypeRequiredDescription
@contextarrayYesJSON-LD contexts
idstringYesThe DID string
controllerstring/arrayYesDID(s) authorized to make changes
verificationMethodarrayYesPublic keys and their types
authenticationarrayYesKeys for DID Auth
assertionMethodarrayNoKeys for signing VCs
keyAgreementarrayNoKeys for encryption
capabilityInvocationarrayNoKeys for invoking capabilities
capabilityDelegationarrayNoKeys for delegating capabilities
servicearrayNoService endpoints

Agent Extension Properties

PropertyTypeRequiredDescription
agent.operatorstringYesDID of the human/org operator
agent.model.providerstringYesAI model provider
agent.model.namestringYesModel identifier
agent.model.versionstringNoModel version
agent.capabilitiesarrayYesList of capability tags
agent.autonomyLevelstringYesIntern, Junior, Senior, Principal
agent.statestringYesregistered, active, suspended, decommissioned
agent.registeredAtstringYesISO 8601 registration timestamp

Service Endpoint Types

TypeDescriptionExample
DIDCommMessagingDIDComm v2 messagingAgent messaging endpoint
LinkedDomainsDomain ownershipWebsite verification
AgentToAgentA2A protocol endpointAgent task handling
AgentCardAgent metadata.well-known/agent.json
CredentialRegistryCredential statusStatusList2021 endpoint

Verification Method Types

Ed25519VerificationKey2020

1{
2 "id": "did:adi:3f7a...#key-1",
3 "type": "Ed25519VerificationKey2020",
4 "controller": "did:adi:3f7a...",
5 "publicKeyMultibase": "z6Mkf5rGMoatrSj1f4CyvuHBeXJELe9RPdzo2PKGNCKVtZxP"
6}
  • Encoding: Multibase (base58-btc, prefix z)
  • Key size: 32 bytes (256 bits)
  • Usage: Authentication, assertion, capability invocation/delegation

EcdsaSecp256k1VerificationKey2019

1{
2 "id": "did:adi:3f7a...#key-2",
3 "type": "EcdsaSecp256k1VerificationKey2019",
4 "controller": "did:adi:3f7a...",
5 "publicKeyMultibase": "zQ3shokFTS3brHcDQrn82RUDfCZtME..."
6}
  • Encoding: Multibase (base58-btc, prefix z)
  • Key size: 33 bytes (compressed, 264 bits)
  • Usage: Authentication, blockchain-native operations

X25519KeyAgreementKey2020

1{
2 "id": "did:adi:3f7a...#key-agreement-1",
3 "type": "X25519KeyAgreementKey2020",
4 "controller": "did:adi:3f7a...",
5 "publicKeyMultibase": "z6LShs9GGnqk85JBBenbnvGGnm1V8..."
6}
  • Encoding: Multibase (base58-btc, prefix z)
  • Usage: Diffie-Hellman key agreement for DIDComm encryption

Bls12381G2Key2020

1{
2 "id": "did:adi:3f7a...#bbs-key-1",
3 "type": "Bls12381G2Key2020",
4 "controller": "did:adi:3f7a...",
5 "publicKeyBase58": "25EEStQgp9xE3gqAZqYejcNB..."
6}
  • Encoding: Base58
  • Usage: BBS+ signatures for selective disclosure

Validation Rules

A did:adi DID Document is valid if and only if:

  1. @context includes "https://www.w3.org/ns/did/v1" as the first entry
  2. id is a valid did:adi identifier per the ABNF grammar
  3. At least one verificationMethod exists
  4. At least one authentication relationship references a valid verification method
  5. All referenced verification method IDs resolve to entries in verificationMethod
  6. controller is a valid DID (same or different from id)
  7. For agent DIDs: agent object is present with all required fields
  8. For agent DIDs: agent.operator references a valid non-agent DID
  9. created and updated are valid ISO 8601 timestamps
  10. versionId is a positive integer