`POST /v1/orgs/{org}/signing-keys/hand-over`.
const url = 'https://api.updawg.net/v1/orgs/example/signing-keys/hand-over';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"proof":{"signature":"example","statement":"example"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.updawg.net/v1/orgs/example/signing-keys/hand-over \ --header 'Content-Type: application/json' \ --data '{ "proof": { "signature": "example", "statement": "example" } }'Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Organization slug.
Request Bodyrequired
Section titled “Request Bodyrequired”object
What updawgctl prove-key printed. Required; optional here only so a
missing one is answered after the permission check.
object
Base64 Ed25519 signature over updawg-endorsement-v1\0 and statement.
The statement’s canonical JSON, exactly as signed.
Example generated
{ "proof": { "signature": "example", "statement": "example" }}Responses
Section titled “Responses”Queued. Updawg’s current key endorses yours, and yours becomes the active key; the list shows it when it lands. From then on every job waits for updawgctl sign.
object
The key being replaced.
Example generated
{ "from": "example"}No proof, or one that does not prove the key: wrong organization, too old, not the key endorsing itself, or a signature that does not verify.
object
Example generated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}No session.
object
Example generated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}Not permitted for this role. Or the plan does not include customer-held signing keys (Enterprise): plan-required.
object
Example generated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}No such organization, or not yours — one answer for both.
object
Example generated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}No key to endorse yours with, the organization holds its own key already, this key is already one of the organization’s, or an earlier hand-over failed and is waiting for an operator.
object
Example generated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}The organization’s data is in another region (wrong-region, DAWG-159). detail names that region’s API; send the request there.
object
Example generated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}Over the organization’s request limit. Retry-After says when to try again; RateLimit-Limit is the burst.
object
Example generated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}