Skip to main content

Calendar API

epilot's calendar API.

Quick Start​

# List available operations
epilot calendar

# Call an operation
epilot calendar listUsersAbsence -p from=example -p to=example

Common Flags​

FlagDescription
-p key=valueSet a named parameter
-d '{...}'Request body JSON
-H 'Key: Value'Custom header
-t, --token <token>Bearer token for authentication
--profile <name>Use a named profile
-s, --server <url>Override server base URL
-i, --includeInclude response headers in output
--jsonOutput raw JSON (no formatting)
-v, --verboseVerbose output (show request details)
--jsonata <expr>JSONata expression to transform response
--definition <file>Override OpenAPI spec file/URL
--guidedPrompt for all parameters interactively
--no-interactiveDisable interactive prompts

Operations​

Absence

Working Hours

  • getWorkingHours β€” Get the recurring weekly working hours of a user. 404 means no record exists and the user is treated as always available
  • putWorkingHours β€” Create or fully replace the working hours of a user in the caller organization. This is a full replace, not a merge.
  • deleteWorkingHours β€” Delete the working hours of a user. The user is then treated as always available again.

Calendars

  • listCalendars β€” List calendars visible to the caller.
  • createCalendar β€” Create a native epilot calendar.
  • addOutlookCalendar β€” Registers one of the caller's Outlook calendars as an epilot calendar.
  • listOutlookCalendars β€” Lists the calling user's Outlook calendars available to import as epilot calendars.
  • deleteOutlookCalendar β€” Disconnects a previously registered Outlook calendar.
  • outlookWebhook β€” Public Microsoft Graph webhook receiver for per-user Outlook calendar
  • getCalendar β€” Get a single calendar by its epilot ID.
  • updateCalendar β€” Update local calendar details. Changes to synced calendars do not modify the provider calendar.
  • deleteCalendar β€” Delete a native epilot calendar or disconnect a synced calendar, including its locally stored events.

Calendar Events

  • listEvents β€” List events in a time window. Recurring events are returned as expanded occurrences – each instance appears as its own e
  • createEvent β€” Create a native epilot calendar event. Omit calendar_id to use the caller’s epilot default calendar.
  • getEvent β€” Get a single event by its epilot ID.
  • updateEvent β€” Update a native epilot calendar event.
  • deleteEvent β€” Delete a native epilot calendar event.
  • shareEvent β€” Share a calendar event with another user of the same organization, view-only. Owner-only: recipients of a share cannot r
  • unshareEvent β€” Revoke a per-event share. The recipient loses access immediately. Owner-only.

listUsersAbsence​

List organization users with known absence metadata in the requested time window.

GET /v1/calendar/absence/users

Parameters

NameInTypeRequiredDescription
fromquerystring (date-time)YesStart of the time window (inclusive). Maximum window: 31 days.
toquerystring (date-time)YesEnd of the time window (exclusive). Must be after from.
include_busyquerybooleanNoInclude busy inputs in addition to out-of-office absence. Defaults to false.
working_hours_granularityquery"time" | "day"NoAt what granularity working hours contribute to absence. "time" (default): all time outside a user's working windows counts as absent. "day": only full days with no working windows count as absent (wh
queryquerystringNoOptional user directory search query.
limitquerynumberNoMaximum users to return.
offsetquerynumberNoUser directory offset.

Sample Call

epilot calendar listUsersAbsence \
-p from=example \
-p to=example

With JSONata filter:

epilot calendar listUsersAbsence -p from=example -p to=example --jsonata 'results[0]'
Sample Response
{
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"hits": 0,
"results": [
{
"absent": true,
"absence_intervals": [
{
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"original_from": "1970-01-01T00:00:00.000Z",
"original_to": "1970-01-01T00:00:00.000Z",
"absent": true,
"source": "calendar_event",
"calendar_event_id": "string",
"absence_adjustment_id": "string",
"reason": "string"
}
],
"user_id": "string",
"display_name": "string",
"email": "user@example.com",
"status": "string"
}
]
}

searchAbsence​

Search known absence for candidate users in the requested time window.

POST /v1/calendar/absence:search

Request Body (required)

Sample Call

epilot calendar searchAbsence

With request body:

epilot calendar searchAbsence \
-d '{
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"user_ids": ["string"],
"include_busy": false,
"working_hours_granularity": "time"
}'

Using stdin pipe:

cat body.json | epilot calendar searchAbsence

With JSONata filter:

epilot calendar searchAbsence --jsonata 'from'
Sample Response
{
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"users": {}
}

searchNowAbsence​

Search known absence for candidate users at the current server time.

POST /v1/calendar/absence:search-now

Request Body (required)

Sample Call

epilot calendar searchNowAbsence \
-d '{"user_ids":["string"],"include_busy":false,"working_hours_granularity":"time"}'

Using stdin pipe:

cat body.json | epilot calendar searchNowAbsence

With JSONata filter:

epilot calendar searchNowAbsence --jsonata 'from'
Sample Response
{
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"users": {}
}

listAbsenceAdjustments​

List absence adjustments for a user in a time window.

GET /v1/calendar/absence/users/{user_id}/adjustments

Parameters

NameInTypeRequiredDescription
user_idpathstringYes
fromquerystring (date-time)YesStart of the time window (inclusive). Maximum window: 90 days.
toquerystring (date-time)YesEnd of the time window (exclusive). Must be after from.

Sample Call

epilot calendar listAbsenceAdjustments \
-p user_id=123e4567-e89b-12d3-a456-426614174000 \
-p from=example \
-p to=example

Using positional args for path parameters:

epilot calendar listAbsenceAdjustments 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar listAbsenceAdjustments -p user_id=123e4567-e89b-12d3-a456-426614174000 -p from=example -p to=example --jsonata 'results[0]'
Sample Response
{
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"results": [
{
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"absent": true,
"status": "oof",
"type": "string",
"reason": "string",
"adjustment_id": "string",
"user_id": "string",
"created_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z"
}
]
}

createAbsenceAdjustment​

Create a time-bound absence adjustment for a user in the caller organization.

POST /v1/calendar/absence/users/{user_id}/adjustments

Parameters

NameInTypeRequiredDescription
user_idpathstringYes

Request Body (required)

Sample Call

epilot calendar createAbsenceAdjustment \
-p user_id=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot calendar createAbsenceAdjustment \
-p user_id=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"absent": true,
"status": "oof",
"type": "string",
"reason": "string"
}'

Using positional args for path parameters:

epilot calendar createAbsenceAdjustment 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot calendar createAbsenceAdjustment -p user_id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar createAbsenceAdjustment -p user_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'from'
Sample Response
{
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"absent": true,
"status": "oof",
"type": "string",
"reason": "string",
"adjustment_id": "string",
"user_id": "string",
"created_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z"
}

getAbsenceAdjustment​

Get an absence adjustment by ID.

GET /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}

Parameters

NameInTypeRequiredDescription
user_idpathstringYes
adjustment_idpathstringYes

Sample Call

epilot calendar getAbsenceAdjustment \
-p user_id=123e4567-e89b-12d3-a456-426614174000 \
-p adjustment_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot calendar getAbsenceAdjustment 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar getAbsenceAdjustment -p user_id=123e4567-e89b-12d3-a456-426614174000 -p adjustment_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'from'
Sample Response
{
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"absent": true,
"status": "oof",
"type": "string",
"reason": "string",
"adjustment_id": "string",
"user_id": "string",
"created_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z"
}

patchAbsenceAdjustment​

Update an absence adjustment in the caller organization.

PATCH /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}

Parameters

NameInTypeRequiredDescription
user_idpathstringYes
adjustment_idpathstringYes

Request Body (required)

Sample Call

epilot calendar patchAbsenceAdjustment \
-p user_id=123e4567-e89b-12d3-a456-426614174000 \
-p adjustment_id=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot calendar patchAbsenceAdjustment \
-p user_id=123e4567-e89b-12d3-a456-426614174000 \
-p adjustment_id=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"absent": true,
"status": "oof",
"type": "string",
"reason": "string"
}'

Using positional args for path parameters:

epilot calendar patchAbsenceAdjustment 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot calendar patchAbsenceAdjustment -p user_id=123e4567-e89b-12d3-a456-426614174000 -p adjustment_id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar patchAbsenceAdjustment -p user_id=123e4567-e89b-12d3-a456-426614174000 -p adjustment_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'from'
Sample Response
{
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"absent": true,
"status": "oof",
"type": "string",
"reason": "string",
"adjustment_id": "string",
"user_id": "string",
"created_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z"
}

deleteAbsenceAdjustment​

Delete an absence adjustment.

DELETE /v1/calendar/absence/users/{user_id}/adjustments/{adjustment_id}

Parameters

NameInTypeRequiredDescription
user_idpathstringYes
adjustment_idpathstringYes

Sample Call

epilot calendar deleteAbsenceAdjustment \
-p user_id=123e4567-e89b-12d3-a456-426614174000 \
-p adjustment_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot calendar deleteAbsenceAdjustment 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar deleteAbsenceAdjustment -p user_id=123e4567-e89b-12d3-a456-426614174000 -p adjustment_id=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

getUserAbsence​

Get known absence for a user in a time window. absent=false means no known absence, not guaranteed availability.

GET /v1/calendar/absence/users/{user_id}

Parameters

NameInTypeRequiredDescription
user_idpathstringYes
fromquerystring (date-time)YesStart of the time window (inclusive). Maximum window: 31 days.
toquerystring (date-time)YesEnd of the time window (exclusive). Must be after from.
include_busyquerybooleanNoInclude busy inputs in addition to out-of-office absence. Defaults to false.
working_hours_granularityquery"time" | "day"NoAt what granularity working hours contribute to absence. "time" (default): all time outside a user's working windows counts as absent. "day": only full days with no working windows count as absent (wh

Sample Call

epilot calendar getUserAbsence \
-p user_id=123e4567-e89b-12d3-a456-426614174000 \
-p from=example \
-p to=example

Using positional args for path parameters:

epilot calendar getUserAbsence 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar getUserAbsence -p user_id=123e4567-e89b-12d3-a456-426614174000 -p from=example -p to=example --jsonata 'absent'
Sample Response
{
"absent": true,
"absence_intervals": [
{
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"original_from": "1970-01-01T00:00:00.000Z",
"original_to": "1970-01-01T00:00:00.000Z",
"absent": true,
"source": "calendar_event",
"calendar_event_id": "string",
"absence_adjustment_id": "string",
"reason": "string"
}
],
"from": "1970-01-01T00:00:00.000Z",
"to": "1970-01-01T00:00:00.000Z",
"user_id": "string",
"external_calendars": [
{
"provider": "outlook",
"last_synced_at": "1970-01-01T00:00:00.000Z"
}
]
}

getWorkingHours​

Get the recurring weekly working hours of a user. 404 means no record exists and the user is treated as always available

GET /v1/calendar/working-hours/users/{user_id}

Parameters

NameInTypeRequiredDescription
user_idpathstringYes

Sample Call

epilot calendar getWorkingHours \
-p user_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot calendar getWorkingHours 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar getWorkingHours -p user_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'monday'
Sample Response
{
"monday": [
{
"start": "string",
"end": "string"
}
],
"tuesday": [
{
"start": "string",
"end": "string"
}
],
"wednesday": [
{
"start": "string",
"end": "string"
}
],
"thursday": [
{
"start": "string",
"end": "string"
}
],
"friday": [
{
"start": "string",
"end": "string"
}
],
"saturday": [
{
"start": "string",
"end": "string"
}
],
"sunday": [
{
"start": "string",
"end": "string"
}
],
"timezone": "string",
"user_id": "string",
"updated_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z"
}

putWorkingHours​

Create or fully replace the working hours of a user in the caller organization. This is a full replace, not a merge.

PUT /v1/calendar/working-hours/users/{user_id}

Parameters

NameInTypeRequiredDescription
user_idpathstringYes

Request Body (required)

Sample Call

epilot calendar putWorkingHours \
-p user_id=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot calendar putWorkingHours \
-p user_id=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"monday": [
{
"start": "string",
"end": "string"
}
],
"tuesday": [
{
"start": "string",
"end": "string"
}
],
"wednesday": [
{
"start": "string",
"end": "string"
}
],
"thursday": [
{
"start": "string",
"end": "string"
}
],
"friday": [
{
"start": "string",
"end": "string"
}
],
"saturday": [
{
"start": "string",
"end": "string"
}
],
"sunday": [
{
"start": "string",
"end": "string"
}
],
"timezone": "Europe/Berlin"
}'

Using positional args for path parameters:

epilot calendar putWorkingHours 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot calendar putWorkingHours -p user_id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar putWorkingHours -p user_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'monday'
Sample Response
{
"monday": [
{
"start": "string",
"end": "string"
}
],
"tuesday": [
{
"start": "string",
"end": "string"
}
],
"wednesday": [
{
"start": "string",
"end": "string"
}
],
"thursday": [
{
"start": "string",
"end": "string"
}
],
"friday": [
{
"start": "string",
"end": "string"
}
],
"saturday": [
{
"start": "string",
"end": "string"
}
],
"sunday": [
{
"start": "string",
"end": "string"
}
],
"timezone": "string",
"user_id": "string",
"updated_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z"
}

deleteWorkingHours​

Delete the working hours of a user. The user is then treated as always available again.

DELETE /v1/calendar/working-hours/users/{user_id}

Parameters

NameInTypeRequiredDescription
user_idpathstringYes

Sample Call

epilot calendar deleteWorkingHours \
-p user_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot calendar deleteWorkingHours 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar deleteWorkingHours -p user_id=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

listCalendars​

List calendars visible to the caller.

GET /v1/calendar

Parameters

NameInTypeRequiredDescription
sizequerynumberNo
cursorquerystringNoOpaque cursor from a previous response

Sample Call

epilot calendar listCalendars

With JSONata filter:

epilot calendar listCalendars --jsonata 'results[0]'
Sample Response
{
"results": [
{
"_id": "string",
"_schema": "calendar",
"_org": "string",
"_title": "string",
"name": "string",
"description": "string",
"color": "string",
"is_default": true,
"is_epilot_default": true,
"read_only": true,
"owner_email": "user@example.com",
"source": {
"type": "native",
"provider": "outlook",
"provider_calendar_id": "string",
"last_synced_at": "1970-01-01T00:00:00.000Z"
},
"_created_at": "1970-01-01T00:00:00.000Z",
"_updated_at": "1970-01-01T00:00:00.000Z"
}
],
"next_cursor": "string"
}

createCalendar​

Create a native epilot calendar.

POST /v1/calendar

Request Body (required)

Sample Call

epilot calendar createCalendar \
-d '{"name":"string","description":"string","color":"string"}'

Using stdin pipe:

cat body.json | epilot calendar createCalendar

With JSONata filter:

epilot calendar createCalendar --jsonata '_id'
Sample Response
{
"_id": "string",
"_schema": "calendar",
"_org": "string",
"_title": "string",
"name": "string",
"description": "string",
"color": "string",
"is_default": true,
"is_epilot_default": true,
"read_only": true,
"owner_email": "user@example.com",
"source": {
"type": "native",
"provider": "outlook",
"provider_calendar_id": "string",
"last_synced_at": "1970-01-01T00:00:00.000Z"
},
"_created_at": "1970-01-01T00:00:00.000Z",
"_updated_at": "1970-01-01T00:00:00.000Z"
}

addOutlookCalendar​

Registers one of the caller's Outlook calendars as an epilot calendar.

POST /v1/calendar/sources/outlook

Request Body (required)

Sample Call

epilot calendar addOutlookCalendar \
-d '{"provider_calendar_id":"string","name":"string"}'

Using stdin pipe:

cat body.json | epilot calendar addOutlookCalendar

With JSONata filter:

epilot calendar addOutlookCalendar --jsonata '_id'
Sample Response
{
"_id": "string",
"_schema": "calendar",
"_org": "string",
"_title": "string",
"name": "string",
"description": "string",
"color": "string",
"is_default": true,
"is_epilot_default": true,
"read_only": true,
"owner_email": "user@example.com",
"source": {
"type": "native",
"provider": "outlook",
"provider_calendar_id": "string",
"last_synced_at": "1970-01-01T00:00:00.000Z"
},
"_created_at": "1970-01-01T00:00:00.000Z",
"_updated_at": "1970-01-01T00:00:00.000Z"
}

listOutlookCalendars​

Lists the calling user's Outlook calendars available to import as epilot calendars.

GET /v1/calendar/sources/outlook/available

Sample Call

epilot calendar listOutlookCalendars

With JSONata filter:

epilot calendar listOutlookCalendars --jsonata 'calendars'
Sample Response
{
"calendars": [
{
"provider_calendar_id": "string",
"name": "string",
"color": "string",
"is_default": true,
"can_edit": true,
"owner": "string"
}
]
}

deleteOutlookCalendar​

Disconnects a previously registered Outlook calendar.

DELETE /v1/calendar/sources/outlook/{calendar_id}

Parameters

NameInTypeRequiredDescription
calendar_idpathstringYes

Sample Call

epilot calendar deleteOutlookCalendar \
-p calendar_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot calendar deleteOutlookCalendar 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar deleteOutlookCalendar -p calendar_id=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

outlookWebhook​

Public Microsoft Graph webhook receiver for per-user Outlook calendar

POST /v1/calendar/outlook/webhook

Parameters

NameInTypeRequiredDescription
validationTokenquerystringNoSet by Graph on the subscription-validation handshake; echoed back verbatim.

Sample Call

epilot calendar outlookWebhook

With JSONata filter:

epilot calendar outlookWebhook --jsonata '$'

getCalendar​

Get a single calendar by its epilot ID.

GET /v1/calendar/{calendar_id}

Parameters

NameInTypeRequiredDescription
calendar_idpathstringYes

Sample Call

epilot calendar getCalendar \
-p calendar_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot calendar getCalendar 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar getCalendar -p calendar_id=123e4567-e89b-12d3-a456-426614174000 --jsonata '_id'
Sample Response
{
"_id": "string",
"_schema": "calendar",
"_org": "string",
"_title": "string",
"name": "string",
"description": "string",
"color": "string",
"is_default": true,
"is_epilot_default": true,
"read_only": true,
"owner_email": "user@example.com",
"source": {
"type": "native",
"provider": "outlook",
"provider_calendar_id": "string",
"last_synced_at": "1970-01-01T00:00:00.000Z"
},
"_created_at": "1970-01-01T00:00:00.000Z",
"_updated_at": "1970-01-01T00:00:00.000Z"
}

updateCalendar​

Update local calendar details. Changes to synced calendars do not modify the provider calendar.

PATCH /v1/calendar/{calendar_id}

Parameters

NameInTypeRequiredDescription
calendar_idpathstringYes

Request Body (required)

Sample Call

epilot calendar updateCalendar \
-p calendar_id=123e4567-e89b-12d3-a456-426614174000 \
-d '{"name":"string","description":"string","color":"string"}'

Using positional args for path parameters:

epilot calendar updateCalendar 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot calendar updateCalendar -p calendar_id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar updateCalendar -p calendar_id=123e4567-e89b-12d3-a456-426614174000 --jsonata '_id'
Sample Response
{
"_id": "string",
"_schema": "calendar",
"_org": "string",
"_title": "string",
"name": "string",
"description": "string",
"color": "string",
"is_default": true,
"is_epilot_default": true,
"read_only": true,
"owner_email": "user@example.com",
"source": {
"type": "native",
"provider": "outlook",
"provider_calendar_id": "string",
"last_synced_at": "1970-01-01T00:00:00.000Z"
},
"_created_at": "1970-01-01T00:00:00.000Z",
"_updated_at": "1970-01-01T00:00:00.000Z"
}

deleteCalendar​

Delete a native epilot calendar or disconnect a synced calendar, including its locally stored events.

DELETE /v1/calendar/{calendar_id}

Parameters

NameInTypeRequiredDescription
calendar_idpathstringYes

Sample Call

epilot calendar deleteCalendar \
-p calendar_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot calendar deleteCalendar 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar deleteCalendar -p calendar_id=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

listEvents​

List events in a time window. Recurring events are returned as expanded occurrences – each instance appears as its own e

GET /v1/calendar/events

Parameters

NameInTypeRequiredDescription
fromquerystring (date-time)YesStart of the time window (inclusive)
toquerystring (date-time)YesEnd of the time window (exclusive)
calendar_idquerystringNoFilter to a single calendar. Omit to query across all accessible calendars.
sizequerynumberNo
cursorquerystringNo

Sample Call

epilot calendar listEvents \
-p from=example \
-p to=example

With JSONata filter:

epilot calendar listEvents -p from=example -p to=example --jsonata 'results[0]'
Sample Response
{
"results": [
{
"_id": "string",
"_schema": "calendar_event",
"_org": "string",
"_title": "string",
"_tags": ["string"],
"calendar_id": "string",
"event_type": "singleInstance",
"description": "string",
"start_time": "1970-01-01T00:00:00.000Z",
"end_time": "1970-01-01T00:00:00.000Z",
"timezone": "string",
"is_all_day": true,
"location": "string",
"status": "free",
"busy": true,
"is_cancelled": true,
"is_draft": true,
"sensitivity": "normal",
"importance": "low",
"is_online_meeting": true,
"online_meeting_url": "https://example.com/path",
"web_link": "https://example.com/path",
"response_status": "none",
"organizer_email": "user@example.com",
"attendees": [
{
"email": "user@example.com",
"name": "string",
"response": "none",
"type": "required"
}
],
"metadata": {},
"is_recurring": true,
"series_master_id": "string",
"source": {
"type": "native",
"provider": "outlook",
"provider_event_id": "string",
"provider_event_url": "https://example.com/path",
"last_synced_at": "1970-01-01T00:00:00.000Z",
"etag": "string"
},
"_created_at": "1970-01-01T00:00:00.000Z",
"_updated_at": "1970-01-01T00:00:00.000Z"
}
],
"next_cursor": "string"
}

createEvent​

Create a native epilot calendar event. Omit calendar_id to use the caller’s epilot default calendar.

POST /v1/calendar/events

Request Body (required)

Sample Call

epilot calendar createEvent

With request body:

epilot calendar createEvent \
-d '{
"calendar_id": "string",
"description": "string",
"start_time": "1970-01-01T00:00:00.000Z",
"end_time": "1970-01-01T00:00:00.000Z",
"timezone": "string",
"is_all_day": true,
"location": "string",
"status": "free",
"sensitivity": "normal",
"metadata": {},
"_title": "string"
}'

Using stdin pipe:

cat body.json | epilot calendar createEvent

With JSONata filter:

epilot calendar createEvent --jsonata '_id'
Sample Response
{
"_id": "string",
"_schema": "calendar_event",
"_org": "string",
"_title": "string",
"_tags": ["string"],
"calendar_id": "string",
"event_type": "singleInstance",
"description": "string",
"start_time": "1970-01-01T00:00:00.000Z",
"end_time": "1970-01-01T00:00:00.000Z",
"timezone": "string",
"is_all_day": true,
"location": "string",
"status": "free",
"busy": true,
"is_cancelled": true,
"is_draft": true,
"sensitivity": "normal",
"importance": "low",
"is_online_meeting": true,
"online_meeting_url": "https://example.com/path",
"web_link": "https://example.com/path",
"response_status": "none",
"organizer_email": "user@example.com",
"attendees": [
{
"email": "user@example.com",
"name": "string",
"response": "none",
"type": "required"
}
],
"metadata": {},
"is_recurring": true,
"series_master_id": "string",
"source": {
"type": "native",
"provider": "outlook",
"provider_event_id": "string",
"provider_event_url": "https://example.com/path",
"last_synced_at": "1970-01-01T00:00:00.000Z",
"etag": "string"
},
"_created_at": "1970-01-01T00:00:00.000Z",
"_updated_at": "1970-01-01T00:00:00.000Z"
}

getEvent​

Get a single event by its epilot ID.

GET /v1/calendar/events/{event_id}

Parameters

NameInTypeRequiredDescription
event_idpathstringYes

Sample Call

epilot calendar getEvent \
-p event_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot calendar getEvent 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar getEvent -p event_id=123e4567-e89b-12d3-a456-426614174000 --jsonata '_id'
Sample Response
{
"_id": "string",
"_schema": "calendar_event",
"_org": "string",
"_title": "string",
"_tags": ["string"],
"calendar_id": "string",
"event_type": "singleInstance",
"description": "string",
"start_time": "1970-01-01T00:00:00.000Z",
"end_time": "1970-01-01T00:00:00.000Z",
"timezone": "string",
"is_all_day": true,
"location": "string",
"status": "free",
"busy": true,
"is_cancelled": true,
"is_draft": true,
"sensitivity": "normal",
"importance": "low",
"is_online_meeting": true,
"online_meeting_url": "https://example.com/path",
"web_link": "https://example.com/path",
"response_status": "none",
"organizer_email": "user@example.com",
"attendees": [
{
"email": "user@example.com",
"name": "string",
"response": "none",
"type": "required"
}
],
"metadata": {},
"is_recurring": true,
"series_master_id": "string",
"source": {
"type": "native",
"provider": "outlook",
"provider_event_id": "string",
"provider_event_url": "https://example.com/path",
"last_synced_at": "1970-01-01T00:00:00.000Z",
"etag": "string"
},
"_created_at": "1970-01-01T00:00:00.000Z",
"_updated_at": "1970-01-01T00:00:00.000Z"
}

updateEvent​

Update a native epilot calendar event.

PATCH /v1/calendar/events/{event_id}

Parameters

NameInTypeRequiredDescription
event_idpathstringYes

Request Body (required)

Sample Call

epilot calendar updateEvent \
-p event_id=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot calendar updateEvent \
-p event_id=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"description": "string",
"start_time": "1970-01-01T00:00:00.000Z",
"end_time": "1970-01-01T00:00:00.000Z",
"timezone": "string",
"is_all_day": true,
"location": "string",
"status": "free",
"is_cancelled": true,
"sensitivity": "normal",
"_title": "string"
}'

Using positional args for path parameters:

epilot calendar updateEvent 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot calendar updateEvent -p event_id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar updateEvent -p event_id=123e4567-e89b-12d3-a456-426614174000 --jsonata '_id'
Sample Response
{
"_id": "string",
"_schema": "calendar_event",
"_org": "string",
"_title": "string",
"_tags": ["string"],
"calendar_id": "string",
"event_type": "singleInstance",
"description": "string",
"start_time": "1970-01-01T00:00:00.000Z",
"end_time": "1970-01-01T00:00:00.000Z",
"timezone": "string",
"is_all_day": true,
"location": "string",
"status": "free",
"busy": true,
"is_cancelled": true,
"is_draft": true,
"sensitivity": "normal",
"importance": "low",
"is_online_meeting": true,
"online_meeting_url": "https://example.com/path",
"web_link": "https://example.com/path",
"response_status": "none",
"organizer_email": "user@example.com",
"attendees": [
{
"email": "user@example.com",
"name": "string",
"response": "none",
"type": "required"
}
],
"metadata": {},
"is_recurring": true,
"series_master_id": "string",
"source": {
"type": "native",
"provider": "outlook",
"provider_event_id": "string",
"provider_event_url": "https://example.com/path",
"last_synced_at": "1970-01-01T00:00:00.000Z",
"etag": "string"
},
"_created_at": "1970-01-01T00:00:00.000Z",
"_updated_at": "1970-01-01T00:00:00.000Z"
}

deleteEvent​

Delete a native epilot calendar event.

DELETE /v1/calendar/events/{event_id}

Parameters

NameInTypeRequiredDescription
event_idpathstringYes

Sample Call

epilot calendar deleteEvent \
-p event_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot calendar deleteEvent 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar deleteEvent -p event_id=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

shareEvent​

Share a calendar event with another user of the same organization, view-only. Owner-only: recipients of a share cannot r

POST /v1/calendar/events/{event_id}/share

Parameters

NameInTypeRequiredDescription
event_idpathstringYes

Request Body (required)

Sample Call

epilot calendar shareEvent \
-p event_id=123e4567-e89b-12d3-a456-426614174000 \
-d '{"user_id":"string"}'

Using positional args for path parameters:

epilot calendar shareEvent 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot calendar shareEvent -p event_id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar shareEvent -p event_id=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

unshareEvent​

Revoke a per-event share. The recipient loses access immediately. Owner-only.

DELETE /v1/calendar/events/{event_id}/share/{user_id}

Parameters

NameInTypeRequiredDescription
event_idpathstringYes
user_idpathstringYes

Sample Call

epilot calendar unshareEvent \
-p event_id=123e4567-e89b-12d3-a456-426614174000 \
-p user_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot calendar unshareEvent 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot calendar unshareEvent -p event_id=123e4567-e89b-12d3-a456-426614174000 -p user_id=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'