Errors
A failure is an RFC 9457 problem (application/problem+json): type (an anchor below), title, status, detail, and the service's code and context.
not_found 404
Nothing matches the reference given, or the path answers no operation.
method_not_allowed 405
The path answers other methods, which the Allow header lists.
not_entitled 403
The resource exists but is held back from this caller.
not_permitted 401, 403 or 429
context.reason says why: credential (401, sign in again: the token is missing, expired, revoked or used on a channel it is not bound to), scope (403, the token lacks the scope), principal (403, the token may not act on this store or row), plan (403, the plan does not include it), limit (429, see the limits guide).
conflict 409
The call clashes with the current state. context names the field, its current value and what it is blocked_by.
invalid 422
An argument is malformed. context.path points at it (["body"] for the body itself, ["headers", "idempotency-key"] for the key) and context.reason says what is wrong. A body over 16 MiB answers 413 with this type; one nesting deeper than 64 levels, or holding more than 100000 objects and arrays or 100000 values, answers 422.
internal 500
The call failed inside the service. A read, or a write sent with an Idempotency-Key, may be retried with backoff and a bounded number of attempts; any other write may have landed, so read the state back first.
unavailable 503
The service could not be reached. Retry as for internal.
client-fault 500
The API itself failed before or after calling the service, and retrying will not help. reached_core says whether the call reached the service; when it did, core_answer is what the service answered: ok means the write landed, a code means it was refused, internal leaves the outcome unknown.
No answer carries Retry-After unless the service said when to retry.