Calendar Events
Tags: events, scheduling
Calendar event management
Resources
Request and response models used by the endpoints on this page.
AttendeeResponse
| Field | Type | Required | Description |
|---|---|---|---|
displayName | String | ✓ | |
email | String | ✓ | |
id | Integer | ✓ | |
memberId | Integer | ✓ | |
note | String | ✓ | |
responseAt | DateTime | ✓ | |
responseStatus | String | ✓ | |
status | String | ✓ |
Example:
{
"id": 0 // Integer,
"memberId": 0 // Integer,
"email": "string" // String,
"displayName": "string" // String,
"status": "string" // String,
"responseStatus": "string" // String,
"responseAt": "2024-01-01T00:00:00Z" // DateTime,
"note": "string" // String
}
CancelEventRequest
| Field | Type | Required | Description |
|---|---|---|---|
cancellationReason | String |
Example:
{
"cancellationReason": "string" // String, optional
}
CreateEventRequest
| Field | Type | Required | Description |
|---|---|---|---|
assignmentId | Integer | Assignment context for AI-created bookings | |
attendeeIds | Array | ✓ | |
calendarId | Integer | ✓ | |
description | String | ||
eventTypeId | Integer | ✓ | |
externalAttendees | Array | Attendees who are not workspace members, identified by email | |
location | String | ||
recurrenceRule | String | iCalendar RRULE for a recurring event (e.g. 'RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR'). Expanded at read time. | |
startTime | DateTime | ✓ | |
taskId | Integer | Task context for AI-created bookings | |
title | String | ✓ | |
workflowRevisionId | Integer | Workflow revision context for AI-created bookings |
Example:
{
"calendarId": 0 // Integer,
"eventTypeId": 0 // Integer,
"title": "string" // String,
"description": "string" // String, optional,
"location": "string" // String, optional,
"startTime": "2024-01-01T00:00:00Z" // DateTime,
"attendeeIds": 0 // Array<Integer>,
"externalAttendees": [] // Array<ExternalAttendeeData>, optional, Attendees who are not workspace members, identified by email,
"workflowRevisionId": 0 // Integer, optional, Workflow revision context for AI-created bookings,
"taskId": 0 // Integer, optional, Task context for AI-created bookings,
"assignmentId": 0 // Integer, optional, Assignment context for AI-created bookings,
"recurrenceRule": "string" // String, optional, iCalendar RRULE for a recurring event (e.g. 'RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR'). Expanded at read time.
}
EventResponse
| Field | Type | Required | Description |
|---|---|---|---|
assignmentId | Integer | ✓ | |
attendees | Array | ||
calendarId | Integer | ✓ | |
calendarName | String | ✓ | |
cancellationReason | String | ✓ | |
cancelledAt | DateTime | ✓ | |
cancelledByMemberId | Integer | ✓ | |
chatId | Integer | ✓ | |
createdAt | DateTime | ✓ | |
creatorMemberId | Integer | ✓ | |
description | String | ✓ | |
endTime | DateTime | ✓ | |
eventTypeColor | String | ✓ | |
eventTypeId | Integer | ✓ | |
eventTypeName | String | ✓ | |
id | Integer | ✓ | |
isRecurringInstance | Boolean | ✓ | |
location | String | ✓ | |
messageId | Integer | ✓ | |
originalStartTime | DateTime | ✓ | |
recurrenceRule | String | ✓ | |
recurringEventId | String | ✓ | |
remoteEventId | String | ✓ | |
startTime | DateTime | ✓ | |
status | String | ✓ | |
taskId | Integer | ✓ | |
title | String | ✓ | |
updatedAt | DateTime | ✓ | |
uuid | String | ✓ | |
workflowRevisionId | Integer | ✓ |
Example:
{
"id": 0 // Integer,
"uuid": "string" // String,
"calendarId": 0 // Integer,
"calendarName": "string" // String,
"eventTypeId": 0 // Integer,
"eventTypeName": "string" // String,
"eventTypeColor": "string" // String,
"title": "string" // String,
"description": "string" // String,
"location": "string" // String,
"startTime": "2024-01-01T00:00:00Z" // DateTime,
"endTime": "2024-01-01T00:00:00Z" // DateTime,
"status": "string" // String,
"creatorMemberId": 0 // Integer,
"workflowRevisionId": 0 // Integer,
"taskId": 0 // Integer,
"assignmentId": 0 // Integer,
"chatId": 0 // Integer,
"messageId": 0 // Integer,
"cancelledAt": "2024-01-01T00:00:00Z" // DateTime,
"cancelledByMemberId": 0 // Integer,
"cancellationReason": "string" // String,
"recurrenceRule": "string" // String,
"recurringEventId": "string" // String,
"isRecurringInstance": false // Boolean,
"originalStartTime": "2024-01-01T00:00:00Z" // DateTime,
"remoteEventId": "string" // String,
"attendees": [] // Array<AttendeeResponse>, optional, default: PydanticUndefined,
"createdAt": "2024-01-01T00:00:00Z" // DateTime,
"updatedAt": "2024-01-01T00:00:00Z" // DateTime
}
UpdateAttendeeRequest
| Field | Type | Required | Description |
|---|---|---|---|
note | String | ||
responseStatus | String | ✓ | ACCEPTED, DECLINED, or TENTATIVE |
Example:
{
"responseStatus": "string" // String, ACCEPTED, DECLINED, or TENTATIVE,
"note": "string" // String, optional
}
UpdateEventRequest
| Field | Type | Required | Description |
|---|---|---|---|
description | String | ||
endTime | DateTime | ||
location | String | ||
recurrenceRule | String | ||
startTime | DateTime | ||
status | String | ||
title | String |
Example:
{
"title": "string" // String, optional,
"description": "string" // String, optional,
"location": "string" // String, optional,
"startTime": "2024-01-01T00:00:00Z" // DateTime, optional,
"endTime": "2024-01-01T00:00:00Z" // DateTime, optional,
"status": "string" // String, optional,
"recurrenceRule": "string" // String, optional
}
Endpoints
GET /api/v2/w/{workspace_uuid}/calendar-events- ListPOST /api/v2/w/{workspace_uuid}/calendar-events- CreateDELETE /api/v2/w/{workspace_uuid}/calendar-events/{event_id}- Delete Event IdGET /api/v2/w/{workspace_uuid}/calendar-events/{event_id}- Get Event IdPUT /api/v2/w/{workspace_uuid}/calendar-events/{event_id}- Update Event IdGET /api/v2/w/{workspace_uuid}/calendar-events/{event_id}/attendees- AttendeesPUT /api/v2/w/{workspace_uuid}/calendar-events/{event_id}/attendees/{member_id}- Update AttendeesPOST /api/v2/w/{workspace_uuid}/calendar-events/{event_id}/cancel- Cancel
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:
request- See CreateEventRequest
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)
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:
event_id(Integer)request- See UpdateEventRequest
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:
event_id(Integer)member_id(Integer)request- See UpdateAttendeeRequest
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:
event_id(Integer)request- See CancelEventRequest
Response: See EventResponse