Terminal status + validation-change callback (per-tenant HMAC-signed)

Sent to the provider's webhookUrl on terminal status and on every validation.status change. Headers - X-Atk-Signature: sha256=<HMAC-SHA256(secret, raw-body)>, X-Atk-Idempotency-Key, and a timestamp. At-least-once; verify the MAC, reject stale timestamps, dedupe by idempotency key.

postWebhooksignStatus

Payload

requestIdstring uuid required
method'physical' | 'nfc' required

physical = desktop reader; nfc = phone tap.

status'pending' | 'awaitingCard' | 'awaitingCredentials' | 'finalizing' | 'done' | 'cancelled' | 'timeout' | 'deviceError' | 'pinBlocked' | 'cardRemoved' | 'certInvalid' required

Non-terminal - pending/awaitingCard/awaitingCredentials/finalizing. Terminal success - done. Terminal failure - cancelled/timeout/deviceError/pinBlocked/cardRemoved/certInvalid. Validation failure is on the validation axis, NOT here.

sigstring byte
sigAlgOidstring
downloadTokenstring

Example payload

{
  "method": "physical",
  "cert": {
    "subject": {
      "serialNumber": "PNOLT-39001010000",
      "c": "LT"
    }
  }
}

Response

Acknowledged.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.