DIDComm Service Endpoints

View as Markdown

For a DID to be reachable by DIDComm peers, its DID Document must include a DIDCommMessaging service entry. IDA auto-populates this for every did:adi it provisions:

1{
2 "@context": ["https://www.w3.org/ns/did/v1", "https://didcomm.org/messaging/contexts/v2"],
3 "id": "did:adi:def…",
4 "verificationMethod": [/* … */],
5 "authentication": ["did:adi:def…#key-1"],
6 "keyAgreement": ["did:adi:def…#key-x25519-1"],
7 "service": [
8 {
9 "id": "did:adi:def…#didcomm-1",
10 "type": "DIDCommMessaging",
11 "serviceEndpoint": {
12 "uri": "https://adid.dev/api/v1/didcomm/receive",
13 "accept": ["didcomm/v2"],
14 "routingKeys": []
15 }
16 }
17 ]
18}

To override the default endpoint (e.g., point at your own mediator), update the DID Document via PUT /api/v1/dids/{did} and replace the service array. See §9.3 DID endpoints.

Important: the keyAgreement verification method is distinct from the authentication key. Authentication uses Ed25519; key agreement uses X25519 (derived from the same seed via the standard birational map). The platform manages this for you, but if you publish a custom DID Document, ensure both keys are present — DIDComm v2 cannot decrypt without an X25519 key-agreement key.