Events

Change an event status

Same service as the app's status menu: archived events refused, custom stage checked against the workspace's stages, loss and cancellation reasons stored (cleared by any other status), the other option events of a group lost when one is confirmed (with sibling_loss_reason), event_confirmed notification, Slack and calendar sync. Fires the event.status_changed / event.stage_changed webhooks. Role permission: events.manage.

post/events/{id}/status

Request

  • Base URL: https://joinways.app/api/v1
  • URL: https://joinways.app/api/v1/events/{id}/status
  • Auth: one of:
    • HTTP bearer
    • OAuth 2 (authorization code, authorization URL https://joinways.app/oauth/authorize, token URL https://joinways.app/api/oauth/token, scopes: mcp.write)

Headers

Idempotency-Keystring

Optional client-generated key (1 to 255 characters, e.g. a UUID v4) that makes the request idempotent for 24 hours: a retry with the same key replays the recorded response (marked Idempotency-Replayed: true) instead of executing the operation again. Same key with another body: 422 idempotency_key_reuse; while the first request runs: 409 idempotency_conflict. See the Idempotency section.

Request body

status'option' | 'confirmed' | 'lost' | 'cancelled' required

option = pending / tentative, confirmed = booked, lost = did not convert, cancelled = cancelled after booking.

stage_idstring uuid nullable

Custom stage under status (workspace stages); null clears it.

loss_reason'insufficient_budget' | 'competitor_selected' | 'no_availability' | 'postponed' | 'venue_unsuitable' | 'venue_not_selected' | 'duplicate_booking' | 'location_mismatch' | 'client_unresponsive'
loss_reason_detailstring
cancellation_reason'client_request' | 'force_majeure' | 'health_safety' | 'venue_unavailable' | 'insufficient_attendees' | 'budget_cut' | 'date_conflict' | 'duplicate_booking' | 'internal_decision' | 'other'
cancellation_reason_detailstring
sibling_loss_reason'insufficient_budget' | 'competitor_selected' | 'no_availability' | 'postponed' | 'venue_unsuitable' | 'venue_not_selected' | 'duplicate_booking' | 'location_mismatch' | 'client_unresponsive'
sibling_loss_reason_detailstring

Confirming an event of a group marks its other option events lost with this reason. Omitted: they stay as they are.

Example request

{
  "status": "confirmed"
}

Response

The new status.

idstring uuid
status'option' | 'confirmed' | 'lost' | 'cancelled'

option = pending / tentative, confirmed = booked, lost = did not convert, cancelled = cancelled after booking.

venue_idstring uuid nullable
stage_idstring uuid nullable
status_changed_atstring date-time nullable
loss_reasonstring nullable
loss_reason_detailstring nullable
cancellation_reasonstring nullable
cancellation_reason_detailstring nullable

Example response

{
  "status": "confirmed"
}

Changes

No recorded changes to this operation across all 1 revision of this API.