Open Morse

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/livekit

This — 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/stripe

Delivery 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: …"