curl --request PUT \
--url "https://directory.example.com/dids/did%3Aopenpayload%3A1111111111111111111111/document/proof" \
--header "Content-Type: application/json" \
--data '{
"did": "did:openpayload:1111111111111111111111",
"document": {
"id": "did:openpayload:1111111111111111111111",
"verificationMethod": [],
"keyAgreement": [],
"service": []
},
"timestamp": "2026-07-16T12:00:00Z",
"pubkey": "<public-key>",
"signature": "<signature>"
}'
{
"status": "accepted",
"did": "did:openpayload:1111111111111111111111",
"extrinsic": "set_document_with_proof",
"tx_hash": "<transaction-hash>",
"message": "Chain extrinsic submitted"
}
DIDs
Replace a DID document with proof
Replace a public DID document with authorization proof.
curl --request PUT \
--url "https://directory.example.com/dids/did%3Aopenpayload%3A1111111111111111111111/document/proof" \
--header "Content-Type: application/json" \
--data '{
"did": "did:openpayload:1111111111111111111111",
"document": {
"id": "did:openpayload:1111111111111111111111",
"verificationMethod": [],
"keyAgreement": [],
"service": []
},
"timestamp": "2026-07-16T12:00:00Z",
"pubkey": "<public-key>",
"signature": "<signature>"
}'
{
"status": "accepted",
"did": "did:openpayload:1111111111111111111111",
"extrinsic": "set_document_with_proof",
"tx_hash": "<transaction-hash>",
"message": "Chain extrinsic submitted"
}
Replace a public DID document with authorization proof.
This full-document operation includes a public authorization key, timestamp, and signature. It is useful when the runtime expects the
set_document_with_proof call rather than a component-level authorization payload.
Request
string
required
The DID to update.
string
required
The DID to update. It must match the path.
object
The replacement public DID document. Provide
document or doc_blob.string
An encoded public DID document. Provide
doc_blob or document.string
required
The authorization timestamp.
string
required
The public authorization key.
string
required
The authorization signature.
curl --request PUT \
--url "https://directory.example.com/dids/did%3Aopenpayload%3A1111111111111111111111/document/proof" \
--header "Content-Type: application/json" \
--data '{
"did": "did:openpayload:1111111111111111111111",
"document": {
"id": "did:openpayload:1111111111111111111111",
"verificationMethod": [],
"keyAgreement": [],
"service": []
},
"timestamp": "2026-07-16T12:00:00Z",
"pubkey": "<public-key>",
"signature": "<signature>"
}'
Response
string
required
The submission status.
string
required
The DID affected by the request.
string
required
The public operation name.
string
required
The submitted transaction hash.
string
required
A human-readable submission result.
{
"status": "accepted",
"did": "did:openpayload:1111111111111111111111",
"extrinsic": "set_document_with_proof",
"tx_hash": "<transaction-hash>",
"message": "Chain extrinsic submitted"
}
202 Accepted means the Directory accepted the request for processing. It does not confirm final settlement.Straight to the point
- Operation:
set_document_with_proof - Replacement: complete document or
doc_blob - Public proof fields:
timestamp,pubkey, andsignature - Never send the private key

