User
GET
/api/v1/user/{system_uuid}/{system_user_id}
Read a single user by composite key. Normative internal narrative per
ADR 0026; external
contract: OpenAPI
(operationId: getUserBySystemUserId).
OpenAPI operationId (reference): getUserBySystemUserId
Request path and behavior
Same middleware stack as other protected routes (ADR 0005). Route template
/api/v1/user/{system_uuid}/{system_user_id}; path parameters validated, then
UserService.get_or_404 → repository read. No idempotency — read-only.
Success: 200 OK with user body. ETag / caching semantics (if enabled) are
described in the unified spec.
Errors
Envelope per ADR 0003.
| HTTP | Code / key | When |
|---|---|---|
404 |
USER_404 / USER_NOT_FOUND |
No row for (system_uuid, system_user_id) — get_user_not_found at
warning in UserService.get_or_404. |
422 |
Validation | Invalid path parameter shapes — logged as validation errors at warning. |
401 / 429 |
— | Middleware (ADR 0005). |
500 |
— | Uncaught: request_failed with stack. |
Logging
request_done … path=… on every completed request (info). request_id in context per
ADR 0023. UserService emits get_user_not_found at warning before
404. No idempotency replay logs on GET.
Metrics
http_requests_total / duration with path_template=/api/v1/user/{system_uuid}/{system_user_id},
method=GET, status label. See
Unified spec — Metrics.
Single-file deep spec
Page history
| Date | Change | Author |
|---|---|---|
| Added Page history section (repository baseline). | Ivan Boyarkin |