Skip to content

feat(openapi): document the Realtime control/event plane (#113) - #4

Merged
yakimoto merged 1 commit into
mainfrom
feat/realtime-openapi
Jun 4, 2026
Merged

feat(openapi): document the Realtime control/event plane (#113)#4
yakimoto merged 1 commit into
mainfrom
feat/realtime-openapi

Conversation

@yakimoto

@yakimoto yakimoto commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Adds the Realtime tag + paths to the canonical OpenAPI so agents discover the live plane via the spec (it's already self-described at realtime.wave.online/openapi.json; this brings it into the central contract).

  • /realtime/connect — WS subscribe (documented descriptively; OpenAPI 3.1 has no native WebSocket).
  • /realtime/channels/{channel}/publish · /presence · /history — REST.
  • Each op uses a per-operation servers overridehttps://realtime.wave.online (the plane is off the api host) + the real /v1/* path in its description.
  • Validates clean (redocly: valid; pre-existing unused-component warnings only).

Mirrors wave-realtime-edge#5 + the SDK client @wave-av/sdk#15. Part of P1 (#115) and agent discovery (P8).

🤖 Generated with Claude Code


Summary by cubic

Adds the Realtime plane to the canonical OpenAPI so clients can discover live pub/sub. Introduces a Realtime tag with per-operation servers pointing to https://realtime.wave.online.

  • New Features
    • /realtime/connect documented as a WebSocket upgrade (101); frames: welcome, message, join/leave, presence (real path /v1/connect).
    • REST endpoints: /realtime/channels/{channel}/publish, /presence, /history (limit ≤50).
    • Includes real /v1/* paths in descriptions for parity with the edge; spec validates clean.
    • Aligns with the SDK and supports P1 (#115) and agent discovery (P8).

Written for commit 9cc83b4. Summary will update on new commits.

Review in cubic

Adds the Realtime tag + paths to the canonical OpenAPI so agents discover the live plane via the spec:
  /realtime/connect (WS subscribe — documented descriptively; OpenAPI has no native WS),
  /realtime/channels/{channel}/publish | /presence | /history (REST).
Each op carries a per-operation server override to https://realtime.wave.online (the plane is served
off the api host) + the real /v1/* path in its description. Validates clean (redocly). Mirrors
wave-realtime-edge#5 + the SDK client (@wave-av/sdk#15). Part of P1 (#115) / agent discovery (P8).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 1, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@yakimoto, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 29 minutes and 51 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: c37a65e0-75bd-48ae-92b9-a2c4dcca03ce

📥 Commits

Reviewing files that changed from the base of the PR and between 1cb4ad4 and 9cc83b4.

📒 Files selected for processing (1)
  • openapi.yaml
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/realtime-openapi
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch feat/realtime-openapi

Comment @coderabbitai help to get the list of available commands and usage tips.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 1 file

Re-trigger cubic

Comment thread openapi.yaml
@yakimoto
yakimoto merged commit 023ed0e into main Jun 4, 2026
8 checks passed
@yakimoto
yakimoto deleted the feat/realtime-openapi branch June 4, 2026 03:47
yakimoto added a commit that referenced this pull request Sep 6, 2026
fix(drift): derive publication from live behaviour, and run the drift gate on pull requests (GA false-green #4)
yakimoto added a commit that referenced this pull request Sep 8, 2026
…same-run pinned supplementary receipt

Addresses the 27 open review threads on PR #93 without altering any previously measured
output, status, SHA or command. Every addition is grounded in one anonymous live run at
2026-09-08T15:58:01Z whose /healthz reported commit ef1cf411b64e at both its start and end.

API-001.md
- Reproduction heading no longer calls every check "read-only": #4 sends an unpaid DELETE and
  the paywall-before-routing assumption is stated; a HEAD variant (402) is shown.
- #2 keeps the grep and adds a strict JSON-parse form asserting error_detail.code is present
  and error is a string (not an object carrying .code).
- #5 is narrowed to the declared Pagination envelope and explicitly does not claim to exercise
  concurrent writes; #5b sweeps every schema property and operation parameter for cursor-style
  names (NONE; only limit/offset in use).
- #6 is scoped to gateway.wave.online/healthz; the header is read on three more public routes
  (constant on the two that emit it, absent on the two that do not).
- The HTTP 401/402 trailer lines after bare `curl -sS` are explained as harness-appended and the
  literal `curl -w` form is shown with its output.
- The private-repo revision comparison is labelled owner-only; /healthz is the public check.
- Transcript fence gets a `text` language (MD040).

PROTO-001.md
- The three-dialect claim is now shown, not asserted: a second command keeps the response body,
  and crosscheck.py decodes the V1 JSON body, the V2 payment-required header and the MPP
  www-authenticate request= parameter from one response and compares amount/asset/payTo/network.
- The V1/V2 field-name divergence (maxAmountRequired + network:base vs amount + eip155:8453) is
  documented and tied to the gateway's own public payments.json wire.v1/wire.v2 declaration,
  which is read back anonymously (norm.py) as the reproducible base -> eip155:8453 normalization.
- The abridged www-authenticate transcript is annotated with the elided request=/expires=/
  description= parameters so the amount row of the cross-check table is verifiable.
- The 05:14Z receipt is marked unpinned (no same-run /healthz); the 15:58:01Z run is pinned.
- Transcript fence gets a `text` language (MD040).

Guard: public-repo-guard content policy OK; no private repo names, no on-chain addresses.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant