Errors
Every error from Tormoni is an application/problem+json body. Switch on
type; it is the one stable field. title is human text and may change,
status repeats the HTTP status, and detail, when present, explains this
occurrence.
{ "type": "/errors/auth/invalid-token", "title": "invalid token", "status": 401, "detail": "The token was revoked."}A 429 and a 503 carry a Retry-After header; wait that many seconds
before trying again.
The types
Section titled “The types”type |
Status | Meaning |
|---|---|---|
/errors/auth/unauthenticated |
401 | No credential was presented. |
/errors/auth/token-expired |
401 | The token’s expiry has passed. Rotate it. |
/errors/auth/invalid-token |
401 | The token is unknown or revoked. |
/errors/auth/service-credential-rejected |
401 | A service-to-service credential was refused. Our operations failure, not yours. |
/errors/auth/not-found |
404 | The thing named does not exist, or is not yours to see. |
/errors/auth/bad-request |
400 | The request to the account service was malformed. |
/errors/auth/conflict |
409 | The request contradicts current state, such as a second push of a run id with a different archive. |
/errors/auth/gone |
410 | It existed and was consumed: a device’s token was already handed out. Do not retry. |
/errors/authz/forbidden |
403 | You are signed in, and this is not yours to do. |
/errors/authz/insufficient-role |
403 | Your role on this account does not allow the action. |
/errors/bad-request |
400 | The request was malformed. |
/errors/payload-too-large |
413 | The body is over the cap. max_bytes says the cap. |
/errors/incompatible-client |
426 | The client is too old for this API. Upgrade it. |
/errors/tenant/rate-limited |
429 | Too many requests. Retry-After says when. |
/errors/tenant/cross-tenant-denied |
403 | The request reached across accounts. |
/errors/tenant/feature-off |
503 | The feature is switched off right now. Retry-After says when to ask again. |
/errors/billing/entitlement-denied |
402 | Your plan does not include this. plans_url is where it does. |
/errors/billing/plan-ceiling-reached |
429 | A plan ceiling is met. What is stored stays; the next create is what was refused. |
/errors/billing/unavailable |
503 | Billing could not be reached, and this operation needed it. |
/errors/mail/delivery-failed |
502 | A mail we had to send did not leave. |
/errors/internal/database |
500 | Our database failed. |
/errors/internal/unknown |
500 | Something else of ours failed. |