API reference · Diagnostics

Check your signature

POST/v1/diagnostics/signature

The signature self-check: runs your call through Anis’s full checks and reports exactly what Anis saw — the method, address, path and query it signed over, the key it found and the permissions in force. It changes nothing. Sends exactly {}.

Permissiondiagnostics:use
AuthenticationSigned change
Staff-set limits it counts towardAll requests
.NET SDKanis.Diagnostics.CheckSignatureAsync()
  • The right first call when a signature will not verify.

Request

Signed with your key, with a one-time nonce and a digest of the body.

Headers: Signature-Input, Signature, Content-Digest, Nonce, X-Anis-Date. The SDKs set all of them for you.

Body: Exactly the two bytes {} — nothing else.

Responses

StatusMeaningBody
200Success.SignatureDiagnostic
401Refused: not authenticated.Problem
403Refused: not allowed.Problem
409Refused: conflicts with the current state.Problem
422Refused: the request breaks a rule.Problem
429Refused: a limit was reached.Problem

Every answer is signed by Anis; the SDKs check it before you see it.

Refusals

Every refusal is a signed problem. Branch on its code; each links to what it means and what to do.

ErrorCodeStatus
Invalid credentialsinvalid_credentials401
Insufficient scopeinsufficient_scope403
Source address not allowedsource_ip_not_allowed403
Rate limitedrate_limited429
Replay detectedreplay_detected409
Validation failedvalidation_failed422
Internal errorinternal_error500
Request timeoutrequest_timeout504

Types

SignatureDiagnostic

FieldTypeNotes
routeIdalways presentstringThe route Anis matched your call to.
methodalways presentstringThe method, as Anis saw it.
authorityalways presentstringThe host (and port, if not the default), as Anis saw it — lower-cased.
pathalways presentstringThe path, as Anis saw it.
canonicalQueryalways presentstringThe query, as Anis saw it, without its leading ?.
requestKindalways presentstringHow Anis expects this route to be signed. Values: safeRead, bodylessNonceMutation, orderMutation, enrollmentToken, public
requiredScopealways presentstringThe permission this route needs.
coveredComponentsalways presentlist of stringThe signed components this route requires, in order.
keyIdalways presentUUIDThe key id Anis found your signature under.
partnerIdalways presentUUIDThe partner that key belongs to.
applicationIdalways presentUUIDThe application that key belongs to.
policyVersionalways presentintegerThe version of your application’s permissions that applied. It goes up each time Anis staff change them.
effectiveScopesalways presentlist of stringThe permissions in force for this call.
receivedAtalways presentstring (date-time)When Anis received the call.