Reference
Webhooks
2 routes, generated from Morse’s own OpenAPI document. Every path below hangs off the base URL, and every one needs the bearer header.
The examples are built from each route’s schema, so the shapes and types are exactly what the API declares. The values are illustrative, and no one has run them.
LiveKit delivers at-least-once, so every handler here is idempotent (invariant 7).
POST
/webhooks/livekitThis — not a client calling /end — is what reliably marks a meeting completed: browsers get closed, laptops get shut.
POST/webhooks/livekit
curl -X POST "$MORSE/webhooks/livekit" \
-H "Authorization: Bearer $MORSE_TOKEN" \
-H "authorization: …"Stripe is the source of truth and these rows are a projection (F1), so this is the only place any of them is written.
POST
/webhooks/stripeDelivery is at-least-once and
unordered, which is what the claim below and the upsert behind
apply_subscription are for.
POST/webhooks/stripe
curl -X POST "$MORSE/webhooks/stripe" \
-H "Authorization: Bearer $MORSE_TOKEN" \
-H "stripe-signature: …"