Skip to main content

Calendar Events

Tags: events, scheduling

Calendar event management

Resources​

Request and response models used by the endpoints on this page.

AttendeeResponse​

FieldTypeRequiredDescription
displayNameString✓
emailString✓
idInteger✓
memberIdInteger✓
noteString✓
responseAtDateTime✓
responseStatusString✓
statusString✓

Example:

{
"id": 0,
"memberId": 0,
"email": "string",
"displayName": "string",
"status": "string",
"responseStatus": "string",
"responseAt": "2024-01-01T00:00:00Z",
"note": "string"
}

CancelEventRequest​

FieldTypeRequiredDescription
cancellationReasonString

Example:

{}

CreateEventRequest​

FieldTypeRequiredDescription
assignmentIdIntegerAssignment context for AI-created bookings
attendeeIdsArray✓
calendarIdInteger✓
descriptionString
eventTypeIdInteger✓
externalAttendeesArray<ExternalAttendeeData> | nullAttendees who are not workspace members, identified by email
locationString
recurrenceRuleStringiCalendar RRULE for a recurring event (e.g. 'RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR'). Expanded at read time.
startTimeDateTime✓
taskIdIntegerTask context for AI-created bookings
titleString✓
workflowIdIntegerSTABLE workflow root id. Resolves to that workflow's active revision for the booking context. Prefer this when the caller only has a root id (MCP, list_workflows).
workflowRevisionIdIntegerExplicit workflow revision pin. When both this and workflowId are set they must refer to the same workflow.

Example:

{
"calendarId": 0,
"eventTypeId": 0,
"title": "string",
"startTime": "2024-01-01T00:00:00Z",
"attendeeIds": []
}

EventResponse​

FieldTypeRequiredDescription
assignmentIdInteger✓
attendeesArray<AttendeeResponse>
calendarIdInteger✓
calendarNameString✓
cancellationReasonString✓
cancelledAtDateTime✓
cancelledByMemberIdInteger✓
chatIdInteger✓
createdAtDateTime✓
creatorMemberIdInteger✓
descriptionString✓
endTimeDateTime✓
eventTypeColorString✓
eventTypeIdInteger✓
eventTypeNameString✓
idInteger✓
isRecurringInstanceBoolean✓
locationString✓
messageIdInteger✓
originalStartTimeDateTime✓
recurrenceRuleString✓
recurringEventIdString✓
remoteEventIdString✓
startTimeDateTime✓
statusString✓
taskIdInteger✓
titleString✓
updatedAtDateTime✓
uuidString✓
workflowRevisionIdInteger✓

Example:

{
"id": 0,
"uuid": "string",
"calendarId": 0,
"calendarName": "string",
"eventTypeId": 0,
"eventTypeName": "string",
"eventTypeColor": "string",
"title": "string",
"description": "string",
"location": "string",
"startTime": "2024-01-01T00:00:00Z",
"endTime": "2024-01-01T00:00:00Z",
"status": "string",
"creatorMemberId": 0,
"workflowRevisionId": 0,
"taskId": 0,
"assignmentId": 0,
"chatId": 0,
"messageId": 0,
"cancelledAt": "2024-01-01T00:00:00Z",
"cancelledByMemberId": 0,
"cancellationReason": "string",
"recurrenceRule": "string",
"recurringEventId": "string",
"isRecurringInstance": false,
"originalStartTime": "2024-01-01T00:00:00Z",
"remoteEventId": "string",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}

ExternalAttendeeData​

FieldTypeRequiredDescription
displayNameString
emailEmailStr✓

Example:

{
"email": "user@example.com"
}

PaginatedResponse[EventResponse]​

FieldTypeRequiredDescription
itemsArray<EventResponse>✓
pageInteger✓
pageSizeInteger✓
totalInteger✓
totalPagesInteger✓

Example:

{
"items": [],
"total": 0,
"page": 0,
"pageSize": 0,
"totalPages": 0
}

UpdateAttendeeRequest​

FieldTypeRequiredDescription
noteString
responseStatusString✓ACCEPTED, DECLINED, or TENTATIVE

Example:

{
"responseStatus": "string"
}

UpdateEventRequest​

FieldTypeRequiredDescription
descriptionString
endTimeDateTime
locationString
recurrenceRuleString
startTimeDateTime
statusString
titleString

Example:

{}

Endpoints​

List​

GET /api/v2/w/{workspace_uuid}/calendar-events

Description:

List calendar events with optional filtering.

Authorization: Requires calendars:read scope

Parameters:

  • calendarId (Integer)
  • startDate (datetime)
  • endDate (datetime)
  • status (String)
  • page (Integer)
  • pageSize (Integer)
  • sortBy (CalendarEventSortField)
  • sortOrder (SortOrder)

Response: See PaginatedResponse[EventResponse]


Create​

POST /api/v2/w/{workspace_uuid}/calendar-events

Description:

Create a new calendar event (booking).

This endpoint validates availability and attendee limits before creating the booking. If the calendar is linked to Google Calendar, the event will be synced automatically.

The startTime parameter should be timezone-aware (ISO 8601 with timezone). If it's timezone-naive, it will be interpreted as being in the calendar's timezone.

Event rules and Google Calendar sync run after the event is saved.

Authorization: Requires calendars:write scope

Parameters:

Response: See EventResponse


Delete Event Id​

DELETE /api/v2/w/{workspace_uuid}/calendar-events/{event_id}

Description:

Delete a calendar event (hard delete). Also deletes from Google Calendar if linked.

Event rules and Google Calendar sync run after the local delete commits.

Authorization: Requires calendars:admin scope

Parameters:

  • event_id (Integer)

Response: Object


Get Event Id​

GET /api/v2/w/{workspace_uuid}/calendar-events/{event_id}

Description:

Get a specific calendar event by ID.

Authorization: Requires calendars:read scope

Parameters:

  • event_id (Integer)

Response: See EventResponse


Update Event Id​

PUT /api/v2/w/{workspace_uuid}/calendar-events/{event_id}

Description:

Update an existing calendar event.

The startTime and endTime parameters should be timezone-aware (ISO 8601 with timezone). If they're timezone-naive, they will be interpreted as being in the calendar's timezone.

Event rules and Google Calendar sync run after the event is updated.

Authorization: Requires calendars:write scope

Parameters:

Response: See EventResponse


Attendees​

GET /api/v2/w/{workspace_uuid}/calendar-events/{event_id}/attendees

Description:

List all attendees for an event.

Authorization: Requires calendars:read scope

Parameters:

  • event_id (Integer)

Response: List of AttendeeResponse


Update Attendees​

PUT /api/v2/w/{workspace_uuid}/calendar-events/{event_id}/attendees/{member_id}

Description:

Update an attendee's response to an event invitation.

Authorization: Requires calendars:write scope

Parameters:

Response: See AttendeeResponse


Cancel​

POST /api/v2/w/{workspace_uuid}/calendar-events/{event_id}/cancel

Description:

Cancel a calendar event.

Event rules and Google Calendar sync run after the cancellation is saved.

Authorization: Requires calendars:write scope

Parameters:

Response: See EventResponse