feat(render): add WAVE Render to the OpenAPI SSOT (→ codegen SDKs) - #12
Conversation
Render had no public surface anywhere in the SDK ecosystem (absent from sdk / sdks / wave-surfer-connect). This adds it to the SSOT so the existing codegen pipeline gives every language SDK a render module — no hand-written client, no drift. - Render tag + POST /render (x402-payable → `security: []`, the payment proof is the identity; unpaid → 402 + WWW-Authenticate; bad brief → 400 before charge; 413/429/451 normalized). - RenderBrief (template enum of 22 + props), RenderResult (inline dataUrl | signed url), reusing the shared Error envelope + ValidationError/RateLimitError responses. - Per-template prop shapes stay in the live contract (GET /render/openapi.json) so the enum can't drift from the renderer. Reference renderer is source-available (BSL); this contract is public. Content-policy guard: OK. OpenAPI 3.1 parses; 35 paths / 56 schemas / 14 tags. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
|
Warning Review limit reached
More reviews will be available in 1 hour, 32 minutes, and 3 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the 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. ✨ Finishing Touches🧪 Generate unit tests (beta)
✨ Simplify code
Comment |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is ON. A cloud agent has been kicked off to fix the reported issue.
Reviewed by Cursor Bugbot for commit e8a2a1a. Configure here.
…ding) The inline-delivery variant carries the MP4 as a base64 data URL, but dataUrl was optional while delivery/format/sha256/bytes/contentType were required — so a `delivery: inline` response could validate with no video payload, and codegen SDKs would treat dataUrl as nullable. Make it required so the inline variant always carries its bytes, matching the VoiceSynthesisInline pattern. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Why
WAVE Render has no public surface anywhere in the SDK ecosystem yet (absent from
sdk,sdks,wave-surfer-connect, and this SSOT). Per the org convention — one OpenAPI SSOT → codegen → every language SDK — this contributes render to the source of truth so integrators get a render module without a hand-written, drift-prone client.What
Rendertag +POST /render— x402-payable (security: []; the payment proof is the identity). Unpaid →402+WWW-Authenticatechallenge; bad brief →400before any charge;413OUTPUT_TOO_LARGE /429/451CONTENT_BLOCKED, all via the normalizedErrorenvelope.RenderBrief(aRenderTemplateenum of all 22 templates +props),RenderResult(oneOfinline-dataUrl | signed-url), reusing the sharedError+ValidationError/RateLimitErrorresponses.GET /render/openapi.json) so this enum can't drift from what the renderer accepts.Safety
Public API contract only — no business refs (content-policy guard: OK). OpenAPI 3.1 parses (35 paths / 56 schemas / 14 tags). Renderer core is source-available BSL; this contract is Apache-2.0 like the rest of the spec.
🤖 Generated with Claude Code
Note
Low Risk
Spec-only addition to the OpenAPI contract; no runtime or auth implementation changes in this diff.
Overview
Adds WAVE Render to the OpenAPI SSOT so codegen can ship a render module instead of hand-written clients.
Introduces a
Rendertag andPOST /render(renderVideo) withsecurity: []for x402 pay-per-render (402 +WWW-Authenticate, validation 400 before charge, sharedErrorfor 413/429/451). Supports optionalIdempotency-Key, binaryvideo/mp4orRenderResultviaAccept: application/json, and documents determinism viasha256.New schemas:
RenderTemplate(22 templates),RenderBrief, andRenderResult(oneOfinline vs signed URL); per-template props stay onGET /render/openapi.jsonso the enum does not drift.Reviewed by Cursor Bugbot for commit e8a2a1a. Configure here.
Summary by cubic
Adds WAVE Render to the OpenAPI single source of truth so codegen ships a render module in every SDK. Introduces a
POST /renderendpoint with x402 pay-per-render and deterministic results.New Features
POST /render(security: []) with x402 flow: unpaid → 402 +WWW-Authenticate; invalid brief → 400 before charge.Accept: application/json. 4K/alpha delivered via signed, expiring URL.Idempotency-Keyto prevent double charges.RenderBrief(template + props),RenderTemplateenum (22),RenderResult(inlineorurl).sha256(body +x-wave-sha256); standardized errors for 413 OUTPUT_TOO_LARGE, 429, 451 CONTENT_BLOCKED.Bug Fixes
dataUrlrequired inRenderResultInlineso inline responses always carry the MP4 payload and SDKs don’t treat it as nullable.Written for commit fc5bc1c. Summary will update on new commits.