Propose adding or revoking an approver key
Proposes trusting a new approver key (add, with its Ed25519 public key) or revoking one added this way (revoke).
Authorizations
Caller API key issued by scripts/generate-api-key.ts. Sent as Authorization: Bearer . Verified against a stored SHA-256 hash in constant time by packages/api/src/auth/StaticKeyAuthenticator.ts. Required on every route not listed as exempt in this document's top-level description. See /api-reference/authentication.
Body
Request body for POST /approval-issuers/changes.
add, revoke ^[A-Za-z0-9._-]{1,128}$^[A-Za-z0-9._-]{1,128}$1 - 2000Required for add, not allowed for revoke. The .public.pem file scripts/generate-approver-key.ts writes.
Response
Proposed and waiting for a checker. Keep the changeId.
Response of POST /approval-issuers/changes (201) and of approve and reject (200). A bare Approver Change, no wrapper.
Unique id of the change, a UUID. The step up authorization for approve or reject names it in payload.pendingPolicyChangeId.
add trusts a new key; revoke stops trusting a key added this way, and every approval it ever signed.
add, revoke The approver, as named in the payload.issuer.approverId of the approvals they sign.
^[A-Za-z0-9._-]{1,128}$The approver's key, as named in payload.issuer.keyId. A key id is used once: a revoked key id cannot be added again.
^[A-Za-z0-9._-]{1,128}$Why, from the proposer.
2000The proposer's caller id. Always a human credential.
PENDING_APPROVAL until a second person approves or rejects it; then APPROVED or REJECTED, once.
PENDING_APPROVAL, APPROVED, REJECTED The approver's Ed25519 public key, PEM (SPKI), as the server stored it. Present on add, absent on revoke.
Who approved or rejected it. Never the proposer.
Present when REJECTED.