curl --request POST \
--url "https://directory.example.com/dids/did%3Aopenpayload%3A1111111111111111111111/deactivate" \
--header "Content-Type: application/json" \
--data '{"did":"did:openpayload:1111111111111111111111","action":"deactivate_did","nonce":"<control_nonce>","valid_until":"<epoch-millis>","signer_key_id":"<authorized-key-id>","canonical_payload":"<payload>","signature":"<signature>"}'
{
"status": "accepted",
"did": "did:openpayload:1111111111111111111111",
"extrinsic": "apply_control_with_proof",
"tx_hash": "<transaction-hash>",
"message": "Chain extrinsic submitted"
}
DIDs
Deactivate a DID
Permanently mark an OpenPayload identity as inactive
curl --request POST \
--url "https://directory.example.com/dids/did%3Aopenpayload%3A1111111111111111111111/deactivate" \
--header "Content-Type: application/json" \
--data '{"did":"did:openpayload:1111111111111111111111","action":"deactivate_did","nonce":"<control_nonce>","valid_until":"<epoch-millis>","signer_key_id":"<authorized-key-id>","canonical_payload":"<payload>","signature":"<signature>"}'
{
"status": "accepted",
"did": "did:openpayload:1111111111111111111111",
"extrinsic": "apply_control_with_proof",
"tx_hash": "<transaction-hash>",
"message": "Chain extrinsic submitted"
}
Deactivation is the identity-level retirement operation. After it settles, compatible clients should stop treating the DID as an active message recipient or current signing identity.
The request body is required and carries a DID-key proof with action
After final settlement,
Deactivation is intentionally permanent. Do not use it for a temporarily offline device. Tombstone or remove only the affected device instead.
Request
string
required
The DID to deactivate.
deactivate_did, the current
control_nonce, valid_until, signer_key_id, canonical_payload, and signature. See
Authorize a Directory update.
curl --request POST \
--url "https://directory.example.com/dids/did%3Aopenpayload%3A1111111111111111111111/deactivate" \
--header "Content-Type: application/json" \
--data '{"did":"did:openpayload:1111111111111111111111","action":"deactivate_did","nonce":"<control_nonce>","valid_until":"<epoch-millis>","signer_key_id":"<authorized-key-id>","canonical_payload":"<payload>","signature":"<signature>"}'
Response
{
"status": "accepted",
"did": "did:openpayload:1111111111111111111111",
"extrinsic": "apply_control_with_proof",
"tx_hash": "<transaction-hash>",
"message": "Chain extrinsic submitted"
}
GET /resolve/{did} returns "deactivated": true.
Straight to the point
POST /dids/{did}/deactivate
- Permanent identity lifecycle change
- Accepted:
202 - Verify later with
GET /resolve/{did}

