2.0 KiB
2.0 KiB
type, title, description, tags, timestamp, story_id, status
| type | title | description | tags | timestamp | story_id | status | ||||
|---|---|---|---|---|---|---|---|---|---|---|
| User Story | Receive standardized API errors | Application-owned HTTP APIs expose RFC 9457 Problem Details matching game-ingest-server conventions. |
|
2026-08-01T18:43:58Z | US-014 | verified |
User Story
As an API consumer, I want errors returned as standardized Problem Details, so that failures can be handled consistently across game services.
Acceptance Criteria
- Error responses use
application/problem+json. - Responses require
type,title, andstatusand optionally includedetail,instance, andextensions. - Invalid Velocity payloads include machine-readable Zod issues under
extensions.issues. - Missing credentials, expired requests, replays, unsupported media, unsupported methods, unknown routes, and service failures have stable
urn:error:*types. - Unexpected application-owned Velocity errors are converted to safe
503problems without internal details. - A normal whitelist denial remains a successful
200authorization decision. - Browser form redirects remain accessible HTML flows and OAuth protocol responses remain owned by NextAuth.
Implementation
packages/contracts/src/index.tsapps/web/src/lib/problem-response.tsapps/web/src/app/api/velocity/access/route.tsdocs/api-errors.md
Validation
packages/contracts/test/problem-details.test.tsapps/web/src/app/api/velocity/access/route.test.ts- Unknown-route and response-helper tests in the web workspace.