- POST to create a challenge — the node returns a short-lived string to sign.
- Sign the
challengestring with the Ed25519 private key for your DID. - Submit the
challenge_idand your signature in the subsequent provider register or rotate-key request.
Create an ownership challenge
POST /v1/providers/ownership-challenges
Body parameters
string
required
The DID you will prove ownership of (e.g.
"did:key:z6Mk…"). Must match the DID you intend to use when registering or rotating.string
required
The operation this challenge authorises. Either
"register" (new provider) or "rotate_key" (key rotation on an existing provider).string
Required when
operation is "rotate_key". The provider_id of the existing provider whose key you are rotating.Response
Returns aProviderOwnershipChallenge with status 201 Created.
string (UUID)
Unique identifier for this challenge. Pass this as
ownership_challenge_id in the subsequent request.string
The provider ID associated with this challenge.
string
The DID this challenge was issued for.
string
Either
"register" or "rotate_key".string
The raw string you must sign with the Ed25519 private key for
provider_did. Pass the resulting base64 signature as ownership_signature.string
ISO 8601 timestamp of when the challenge was created.
string
ISO 8601 timestamp after which this challenge is no longer valid. Default TTL is 300 seconds.
string
ISO 8601 timestamp of when the challenge was successfully consumed. Omitted until the challenge is used.
Status codes
Example response
Retrieve an ownership challenge
GET /v1/providers/ownership-challenges/:challenge_id
Path parameters
string (UUID)
required
The
challenge_id returned when you created the challenge.Response
Returns the sameProviderOwnershipChallenge object described above. The completed_at field is set once the challenge has been successfully used.