Cancel Proposal
Cancel an `accepted` proposal. Both calendar events are deleted and the underlying booking transitions to `cancelled`. The other party receives a cancellation email naming the actor. Only an existing participant can cancel. Cancellation is only valid from the `accepted` state — `proposed`, `countered`, `rejected`, `expired`, and already-`cancelled` proposals return 409. Internally the saga moves through a transient `cancelling` status while calendar deletes are in flight; if any participant's calendar delete fails, the saga rolls back to `accepted` and returns `502 calendar_unavailable`. ## Error codes - `403 forbidden` — caller is not a participant of this proposal - `404 not_found` — proposal does not exist - `409 conflict` — proposal is not in `accepted` state, or another cancel/accept is racing - `502 calendar_unavailable` — upstream calendar provider failed during the delete phase; safe to retry
Auth required: Yes
id (path, string) (required)200: Proposal cancelled401: Authentication required or invalid403: Authenticated but insufficient permissions404: Resource not found409: Resource conflict502: Upstream calendar provider unavailable. Safe to retry.Requires authentication. Pass a Bearer token (Supabase JWT) or an API key (`Authorization: Bearer vennio_sk_live_*`) in the request headers.
Base URL: https://api.vennio.app