WordloopWordloop
WorkMeeting RecordingTechnical Design DocContracts

Contracts

API contract reference for the Meeting Recording bet — organised by entity, covering REST, WebSocket, and Pub/Sub.

Contracts

These contracts define the complete API surface for the Meeting Recording bet. Each page covers one entity end-to-end: its resource shape, REST operations, WebSocket events, ML integration, and Pub/Sub triggers — so you can understand how a single concept works across all protocols without jumping between files.

For shared concerns that apply across all entities — connection semantics, authentication, error format, CloudEvents envelope, Pub/Sub configuration, and failure modes — see Infrastructure.

Specification alignment: existing machine-readable specs live in specs/core-openapi.json, specs/ml-openapi.json, specs/core-asyncapi-ws.yaml, and specs/core-asyncapi-pubsub.yaml. These contract pages describe the ideal-state surface — both existing endpoints and new additions for live recording. New endpoints and fields introduced by this bet are marked with New.


Entity Pages

EntityWhat it covers
MeetingTop-level resource. CRUD, expand parameter, speaker-label assignment, audio playback URL.
RecordingLive recording lifecycle. WebSocket commands and events, ML session management, OPFS gap repair, Pub/Sub drain.
AudioBinary audio transport. Frame formats (browser→Core, Core→ML), chunk storage, acknowledgement, backpressure.
TranscriptionTranscript segments. CRUD, live streaming events, batch processing, ML write-back, Pub/Sub trigger.
SynthesisML-generated artefacts. Summary, topics, talking points. Read endpoints and ML write-back.
TaskAction items. Full CRUD with sub-task nesting. User-created and system-generated (ML).
PersonSpeaker identity. CRUD, speaker identification pipeline, voice profiles, ML matching events.

ML → Core Write-Back Summary

ML writes durable meeting artefacts to Core REST, not to the browser and not directly to Core's database. Each write-back endpoint is documented on its entity page.

ML outputCore REST targetEntity page
HeadlinePATCH /meetings/{id}Meeting
Live transcript appendPOST /transcriptions/{id}/segmentsTranscription
Batch transcript replacementPUT /transcriptions/{id}/segmentsTranscription
Transcription lifecyclePATCH /transcriptions/{id}/statusTranscription
Live talking pointPOST /meetings/{id}/talking-pointsSynthesis
Final synthesisPUT /meetings/{id}/synthesisSynthesis
System-generated tasksPOST /tasksTask

Open Problem: ML→Core Write-Back Resilience

If Core is unavailable when ML finishes post-meeting processing, ML cannot deliver results (transcript segments, synthesis, status updates). Today, ML retries with exponential backoff against Core REST. If Core remains down beyond the retry budget, the results are lost.

This is documented as a separate problem statement for a future bet. Potential approaches include ML publishing results to Pub/Sub as a durable fallback, or persisting results to its own store for later delivery.

On this page