diff --git a/generated/api-types.d.ts b/generated/api-types.d.ts index f9321cc..ff70365 100644 --- a/generated/api-types.d.ts +++ b/generated/api-types.d.ts @@ -1159,7 +1159,7 @@ export interface paths { }; /** * Subscribe to a channel (WebSocket) - * @description Open a WebSocket to subscribe to a channel. This is a WebSocket upgrade (HTTP 101), not a normal GET — clients send `Upgrade: websocket`. Browser/SDK clients that cannot set headers may pass the key as `?access_token=`. On connect the server sends a `welcome` frame (current presence + recent history), then live frames: `message` (a published event), `join`/`leave` (presence), `presence` (full list). The real path is `/v1/connect?channel=`. + * @description Open a WebSocket to subscribe to a channel. This is a WebSocket upgrade (HTTP 101), not a normal GET — clients send `Upgrade: websocket`. Browser/SDK clients that cannot set headers may pass the key as `?access_token=`. On connect the server sends a `welcome` frame (current presence + recent history), then live frames: `message` (a published event), `join`/`leave` (presence), `presence` (full list). */ get: operations["realtimeConnect"]; put?: never; @@ -1181,7 +1181,7 @@ export interface paths { put?: never; /** * Publish an event to a channel - * @description Producer endpoint — publish one event to every subscriber of a channel. The real path is `/v1/channels/{channel}/publish`. + * @description Producer endpoint — publish one event to every subscriber of a channel. */ post: operations["realtimePublish"]; delete?: never; @@ -1199,7 +1199,7 @@ export interface paths { }; /** * Current presence for a channel - * @description The real path is `/v1/channels/{channel}/presence`. + * @description Current presence membership for a channel. */ get: operations["realtimePresence"]; put?: never; @@ -1219,7 +1219,7 @@ export interface paths { }; /** * Recent event history for a channel - * @description Last-N events (≤50). The real path is `/v1/channels/{channel}/history`. + * @description Last-N events (≤50). */ get: operations["realtimeHistory"]; put?: never; diff --git a/openapi.yaml b/openapi.yaml index 9eea3f0..8751831 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -81,8 +81,11 @@ tags: - name: Realtime description: >- Live control & event plane — presence, pub/sub broadcast, and the streaming-event bus the WAVE - AI products push into. Served at realtime.wave.online (not the api host); subscribe over one - WebSocket, producers publish over REST. Auth federates to the gateway. + AI products push into. Served at https://api.wave.online/v1/realtime/* like every other /v1 + route; subscribe over one WebSocket, producers publish over REST. GA-CONTRACT-001 (2026-09-28): + these four operations previously carried a per-operation `servers` override to the bare host + `realtime.wave.online`, which does not resolve (NXDOMAIN) — removed below; the live route is + /v1/realtime/*, not a separate host. - name: AV Mux/Demux description: >- Synchronous container-transform for local IP video + Dante/AES67 audio: mux separate RTP H.264 @@ -3462,8 +3465,16 @@ paths: schema: $ref: '#/components/schemas/SearchAnalyticsResponse' - # Realtime API — served at realtime.wave.online (per-operation server override). WebSocket subscribe - # is documented descriptively (OpenAPI has no native WS); REST publish/presence/history are first-class. + # Realtime API — GA-CONTRACT-001 (2026-09-28): served at https://api.wave.online/v1/realtime/* + # (no per-operation server override — these four operations use the document's default server + # like every other /v1 route). The four operations below previously carried a `servers` override + # to the bare host `realtime.wave.online`, which does not resolve (NXDOMAIN, confirmed via dig + # against 1.1.1.1 and 8.8.8.8 2026-09-28) — removed. The internal forwarding path is NOT this + # contract's concern and is no longer named in these descriptions, which previously read "the + # real path is /v1/connect..." — true of the internal forward target, misleading as advice to a + # caller of this API, who must call the documented /v1/realtime/* path exactly as declared. + # WebSocket subscribe is documented descriptively (OpenAPI has no native WS); REST + # publish/presence/history are first-class. /realtime/connect: get: tags: [Realtime] @@ -3474,10 +3485,7 @@ paths: GET — clients send `Upgrade: websocket`. Browser/SDK clients that cannot set headers may pass the key as `?access_token=`. On connect the server sends a `welcome` frame (current presence + recent history), then live frames: `message` (a published event), `join`/`leave` (presence), - `presence` (full list). The real path is `/v1/connect?channel=`. - servers: - - url: https://realtime.wave.online - description: WAVE Realtime edge + `presence` (full list). parameters: - name: channel in: query @@ -3499,10 +3507,7 @@ paths: tags: [Realtime] summary: Publish an event to a channel operationId: realtimePublish - description: Producer endpoint — publish one event to every subscriber of a channel. The real path is `/v1/channels/{channel}/publish`. - servers: - - url: https://realtime.wave.online - description: WAVE Realtime edge + description: Producer endpoint — publish one event to every subscriber of a channel. parameters: - name: channel in: path @@ -3537,10 +3542,7 @@ paths: tags: [Realtime] summary: Current presence for a channel operationId: realtimePresence - description: The real path is `/v1/channels/{channel}/presence`. - servers: - - url: https://realtime.wave.online - description: WAVE Realtime edge + description: Current presence membership for a channel. parameters: - name: channel in: path @@ -3566,10 +3568,7 @@ paths: tags: [Realtime] summary: Recent event history for a channel operationId: realtimeHistory - description: Last-N events (≤50). The real path is `/v1/channels/{channel}/history`. - servers: - - url: https://realtime.wave.online - description: WAVE Realtime edge + description: Last-N events (≤50). parameters: - name: channel in: path