Error recovery catalog
Errors use application/problem+json with type, title, status, detail, stable code, requestId, and optional violations. The registry is docs/api/error-codes.yaml.
HTTP/1.1 412 Precondition Failed
Content-Type: application/problem+json
X-Request-Id: req_01JEXAMPLE0000000000000000
ETag: "v4"
{"type":"https://app.steadydo.example/api/docs/errors/version-conflict","title":"Resource changed","status":412,"detail":"Read the current resource and reconcile your update.","code":"version_conflict","requestId":"req_01JEXAMPLE0000000000000000"}400 means protocol structure/syntax; 401 credential failure; 403 missing scope; 404 unknown or wrong-owner without enumeration; 409 state/idempotency conflict; 412 stale aggregate version; 413 size; 415 media; 422 fields/relationships/expired confirmation; 429 throttling; 500/503 service failure. Follow retries.md.