curl --request POST \
--url "https://directory.example.com/dids/did%3Aopenpayload%3A1111111111111111111111/document/key-agreements" \
--header "Content-Type: application/json" \
--data '{
"did": "did:openpayload:1111111111111111111111",
"action": "AddKeyAgreement",
"key_agreement": {
"id": "did:openpayload:1111111111111111111111#agreement",
"type": "Multikey",
"controller": "did:openpayload:1111111111111111111111",
"publicKeyMultibase": "<public-key>"
},
"nonce": "<nonce>",
"valid_until": "<future-epoch-milliseconds>",
"signer_key_id": "root",
"canonical_payload": "<payload>",
"signature": "<signature>"
}'
{
"status": "accepted",
"did": "did:openpayload:1111111111111111111111",
"action": "AddKeyAgreement",
"tx_hash": "<transaction-hash>",
"message": "DID document modification submitted"
}
DID documents
Add key agreement
Add key agreement in a public OpenPayload DID document.
curl --request POST \
--url "https://directory.example.com/dids/did%3Aopenpayload%3A1111111111111111111111/document/key-agreements" \
--header "Content-Type: application/json" \
--data '{
"did": "did:openpayload:1111111111111111111111",
"action": "AddKeyAgreement",
"key_agreement": {
"id": "did:openpayload:1111111111111111111111#agreement",
"type": "Multikey",
"controller": "did:openpayload:1111111111111111111111",
"publicKeyMultibase": "<public-key>"
},
"nonce": "<nonce>",
"valid_until": "<future-epoch-milliseconds>",
"signer_key_id": "root",
"canonical_payload": "<payload>",
"signature": "<signature>"
}'
{
"status": "accepted",
"did": "did:openpayload:1111111111111111111111",
"action": "AddKeyAgreement",
"tx_hash": "<transaction-hash>",
"message": "DID document modification submitted"
}
Add key agreement in a public OpenPayload DID document.
A key-agreement method is a public key that another client can use when deriving encryption material for this DID. It is not the private key and cannot decrypt messages by itself.
Read Authorize a Directory update before signing.
Path parameters
string
required
The DID to update.
Request body
string
required
The DID to update. It must match the path.
string
required
The operation name. Use
AddKeyAgreement.object
required
The public key agreement value for this operation.
string
required
The request nonce.
string
required
The authorization expiration time.
string
The public signing-key identifier. Defaults to
root.string
required
The payload supplied by an OpenPayload-compatible signer.
string
required
The authorization signature.
curl --request POST \
--url "https://directory.example.com/dids/did%3Aopenpayload%3A1111111111111111111111/document/key-agreements" \
--header "Content-Type: application/json" \
--data '{
"did": "did:openpayload:1111111111111111111111",
"action": "AddKeyAgreement",
"key_agreement": {
"id": "did:openpayload:1111111111111111111111#agreement",
"type": "Multikey",
"controller": "did:openpayload:1111111111111111111111",
"publicKeyMultibase": "<public-key>"
},
"nonce": "<nonce>",
"valid_until": "<future-epoch-milliseconds>",
"signer_key_id": "root",
"canonical_payload": "<payload>",
"signature": "<signature>"
}'
Response
string
required
The submission status.
string
required
The affected DID.
string
required
The document operation.
string
required
The transaction hash.
string
required
A human-readable submission result.
{
"status": "accepted",
"did": "did:openpayload:1111111111111111111111",
"action": "AddKeyAgreement",
"tx_hash": "<transaction-hash>",
"message": "DID document modification submitted"
}
202 Accepted means the Directory accepted the request for processing. It does not confirm final settlement.Straight to the point
- Action:
AddKeyAgreement - Signed item: complete
key_agreementobject - Controller must equal the DID
- Uses the DID document nonce

