realtime-svc

realtime-svc

Realtime de styx: canal WebSocket de señales de transporte, sólo servidor→cliente, autenticado con Bearer y con admisión por Origin y topes de conexiones. ## Errores Todo error es un Problem Details (RFC 9457) servido como `application/problem+json`, con `type`, `title`, `status` y un `code` estable. Los errores de dominio añaden `retryable` y `category` (`transient`, `permanent` o `recoverable`). Los de framework son `400 parse` (JSON roto), `404 not-found` (ruta inexistente) y `422 validation` (con `on`; `property` y `detail` sólo fuera de producción). Las denegaciones del Bearer son `401 unauthenticated` o `reauth-required`, `403 forbidden` y `429 rate-limited` (con `Retry-After`). Ningún problem repite el valor recibido y un recurso de otro actor responde 404, sin oráculo.

GET
/health

Responde 200 mientras el proceso atiende peticiones; no comprueba dependencias. La usan el HEALTHCHECK de la imagen y el compose (con GET: HEAD es opt-in en Elysia 2).

Response Body

application/json

curl -X GET "https://example.com/health"
{  "status": "ok",  "timestamp": 0,  "uptime": 0,  "version": "string",  "wsClients": 0}
GET
/version

Response Body

application/json

curl -X GET "https://example.com/version"
{  "commit": "string",  "component": "string",  "train": "string",  "version": "string"}
GET
/ws

Puerta del upgrade a WebSocket: exige Bearer y la admisión comprueba Origin y los topes de conexiones. El upgrade lo hace el transporte WS sólo si esta ruta dejó pase.

Acceso: Bearer de identity con policy authenticated.

Authorization

bearerAuth
AuthorizationBearer <token>

Access token de identity-svc (JWT EdDSA, caducidad corta). Se verifica en local y después contra la sesión viva (revocation-aware).

In: header

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://example.com/ws"
{  "upgrade": "websocket"}