API HTTPrealtime-svc

GET /ws

Canal WebSocket de señales de transporte (sólo servidor→cliente)

ImplementadoSin versión del tren todavía· generada desde apps/docs/generated/openapi/realtime-svc.json

Página generada desde apps/realtime-svc/src/app.aot.ts. No se edita a mano: bun run docs:gen la regenera y bun run docs:check falla si difiere.

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.

CampoValor
Serviciorealtime-svc
operationIdgetWs
Policy (dec-0118 §3)authenticated
Tagsrealtime

Respuestas

200

Response for status 200

application/json

{
  "type": "object",
  "required": [
    "upgrade"
  ],
  "properties": {
    "upgrade": {
      "type": "string",
      "const": "websocket"
    }
  }
}

401

Problem Details (RFC 9457), status 401. Códigos: unauthenticated, reauth-required.

application/problem+json

{
  "type": "object",
  "required": [
    "type",
    "title",
    "status",
    "code"
  ],
  "properties": {
    "type": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "status": {
      "type": "number",
      "const": 401
    },
    "code": {
      "type": "string",
      "enum": [
        "unauthenticated",
        "reauth-required"
      ]
    },
    "detail": {
      "type": "string"
    }
  },
  "x-styx-media-type": "application/problem+json"
}

403

Problem Details (RFC 9457), status 403. Códigos: forbidden, REALTIME_WS_ORIGIN_FORBIDDEN.

application/problem+json

{
  "anyOf": [
    {
      "type": "object",
      "required": [
        "type",
        "title",
        "status",
        "code"
      ],
      "properties": {
        "type": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "status": {
          "type": "number",
          "const": 403
        },
        "code": {
          "type": "string",
          "const": "forbidden"
        },
        "detail": {
          "type": "string"
        }
      },
      "x-styx-media-type": "application/problem+json"
    },
    {
      "type": "object",
      "required": [
        "type",
        "title",
        "status",
        "code",
        "retryable",
        "category"
      ],
      "properties": {
        "type": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "status": {
          "type": "number",
          "const": 403
        },
        "code": {
          "type": "string",
          "const": "REALTIME_WS_ORIGIN_FORBIDDEN"
        },
        "detail": {
          "type": "string"
        },
        "instance": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        },
        "category": {
          "type": "string",
          "enum": [
            "transient",
            "permanent",
            "recoverable"
          ]
        }
      },
      "x-styx-media-type": "application/problem+json"
    }
  ]
}

429

Problem Details (RFC 9457), status 429. Códigos: rate-limited, REALTIME_WS_TOO_MANY_CONNECTIONS.

application/problem+json

{
  "anyOf": [
    {
      "type": "object",
      "required": [
        "type",
        "title",
        "status",
        "code"
      ],
      "properties": {
        "type": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "status": {
          "type": "number",
          "const": 429
        },
        "code": {
          "type": "string",
          "const": "rate-limited"
        },
        "detail": {
          "type": "string"
        }
      },
      "x-styx-media-type": "application/problem+json"
    },
    {
      "type": "object",
      "required": [
        "type",
        "title",
        "status",
        "code",
        "retryable",
        "category"
      ],
      "properties": {
        "type": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "status": {
          "type": "number",
          "const": 429
        },
        "code": {
          "type": "string",
          "const": "REALTIME_WS_TOO_MANY_CONNECTIONS"
        },
        "detail": {
          "type": "string"
        },
        "instance": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        },
        "category": {
          "type": "string",
          "enum": [
            "transient",
            "permanent",
            "recoverable"
          ]
        }
      },
      "x-styx-media-type": "application/problem+json"
    }
  ]
}