Kiosk problem types
Every error Kiosk puts on the wire is an RFC 9457 problem document, and its type member is one of the URIs below — https://kiosk.tech/problems/<code>, one per vocabulary entry. These pages are what those URIs dereference to.
The URI is a name, not the contract. An AI assistant MUST branch on the problem document’s code member and MUST NOT parse type to recover it. The normative definition of every code is the error vocabulary in the specification and §9 of the formal spec; these pages restate it for a human who pasted the URI into a browser.
The vocabulary is closed: these seventeen codes are the whole of it, and a schema-validating client rejects anything else. Adding one is a wire change, and the spec goes first.
| type | HTTP | title |
|---|---|---|
bad_request | 400 | Malformed request |
unauthenticated | 401 | Not authenticated |
pow_required | 402 | Proof-of-work required |
payment_setup_required | 402 | Payment setup required |
payment_failed | 402 | Payment failed |
forbidden | 403 | Forbidden |
rls_denied | 403 | Row-level security denied the statement |
spending_cap_exceeded | 403 | Spending cap exceeded |
kyc_required | 403 | KYC attestation required |
verb_not_found | 404 | No such verb |
not_found | 404 | Not found |
method_not_allowed | 405 | Method not allowed |
conflict | 409 | State conflict |
quota_exceeded | 429 | Quota exceeded |
action_failed | 500 | Action failed |
internal_error | 500 | Internal error |
module_not_served | 501 | Module not served |