Upsert a calendar event
POST/v2/calendar/events/upsert
Upserts a calendar event object.
Upsert key is a combination of id
and i_cal_uid
scoped to the given calendar_id
.
Bulk operations:
This endpoint is used for bulk operations, see bulk jobs for integration instructions.
Use calendar/events/upsert
as an event type, and this spec as a data spec.
This endpoint should be used directly for the time sensitive calendar event updates.
Request
- application/json
Body
required
This parameter customizes the keys used for identifying events in our database.
Default: ["id", "i_cal_uid"]
. By default, events are identified based on both :id and :i_cal_uid fields.
Example: If :upsert_key
is set to ["id"]
, events will be identified using :id & :user_guid as keys.
This will help prevent creating duplicates in cases where i_cal_uid changes during event updates.
Last modification time of the event in the ISO 8601 format with a time zone offset. The event will not be updated if the 'updated_at' timestamp from the payload is earlier than the one in the database.
Example: 2022-02-14T10:12:59+00:00
.
Transparency of the calendar event. Possible values: opaque
, transparent
.
Example: opaque
.
Title of the calendar event
Status of the calendar event. Depending on the status, the calendar event will or will not impact user's availability.
Possible values: confirmed
, tentative
, cancelled
.
Example: confirmed
.
Start time of the calendar event, as a combined date-time value in the ISO 8601 format with a time zone offset.
Example: 2022-02-14T10:12:59+00:00
.
Should be set to true
if this is one of recurring series calendar event.
List of RRULE for a recurring event, as specified in RFC5545.
This field is omitted for single events or instances of recurring events.
For recurring events, you can optionally include the 'UNTIL' key to specify the
date/time after which the recurrence rule should stop repeating.
The 'UNTIL' value must be in UTC and in the format 'YYYYMMDD'T'HHMMSS'Z'.
Example: ["RRULE:FREQ=DAILY;INTERVAL=1;UNTIL=20230731T000000Z"]
Email address of the organizer
Location of the calendar event as free-form text.
Id of the calendar event, different for each occurrence in a recurring series.
Used as an upsert key.
icalUID of the calendar event. Unique identifier for a calendar event across calendars.
Used as an upsert key.
End time of the calendar event, as a combined date-time value in the ISO 8601 format with a time zone offset.
Example: 2022-02-14T10:12:59+00:00
.
Description of the calendar event
Cancellation time of the calendar event, as a combined date-time value in the ISO 8601 format with a time zone offset.
Example: 2022-02-14T10:12:59+00:00
.
Calendar ID of the calendar event owner.
For the External Calendar connection use external_{salesloft_user_guid}
format.
Example: external_00210d1a-df8a-459f-af75-89b953b618b0
.
Should be set to true
if the user is busy during the calendar event.
Can be used in exchange with transparency param. Busy param has higher priority.
Default: true
.
List of attendees of the calendar event. Example:
{
...
"attendees": [
{
"name": "Alice",
"email": "alice@example.com",
"status": "accepted",
"organizer": true
},
{
"name": "Bob",
"email": "bob@example.com",
"status": "needsAction",
"organizer": false
}
]
}
name
: full name of the attendee
email
: email address of the attendee
status
: one of the following - needsAction, accepted, tentative, declined
organizer
: whether the attendee is the organizer of the calendar event
Should be set to true
for all day calendar events.
Responses
- 201
Success
- application/json
- Schema
- Example (from schema)
Schema
- Array [
- ]
User GUID of the user calendar.
Last modification time of the calendar event.
Title of the calendar event
Tenant ID of the user calendar
The status of the calendar event. It can be empty for non-google events.
The (inclusive) start time of the calendar event.
Specifies how often a recurring event repeats (Daily, Weekly, Monthly, Yearly). This field is omitted for single events or instances of recurring events.
Whether the calendar event is a recurring event.
List of RRULE for a recurring event, as specified in RFC5545. This field is omitted for single events or instances of recurring events.
The provider of the calendar event.
The organizer email of the calendar event.
Location of the calendar event
The timestamp of the last occurrence in a series of recurring events.
The calendar event original ID from calendar provider
Calendar event unique identifier (iCalUID)
An absolute link to this calendar event in the Google Calendar Web UI.
Extended properties of the calendar event.
The (exclusive) end time of the calendar event.
Description of the calendar event
The creator email of the calendar event.
Creation time of the calendar event.
The conference-related information, such as details of a Google Meet conference.
The canceled date of the calendar event.
Calendar ID of the user calendar.
Busy/free status of the calendar event
Raw body content from Microsoft calendar events
attendees object[]
The attendees of the calendar event.
Whether the calendar event is an all-day event.
{
"user_guid": "9ccb7701-52e7-4d3e-91b0-b142a2fef2ec",
"updated_at": "2024-06-27T22:15:58.276090Z",
"title": "Calendar event title",
"tenant_id": 1,
"status": "confirmed",
"start_time": "2024-06-27T22:15:58.275670Z",
"recurring_interval": "Daily",
"recurring": false,
"recurrence": [
"RRULE:FREQ=DAILY;INTERVAL=1"
],
"provider": "google",
"organizer": "organizer@example.com",
"location": "Event location",
"last_occurrence_at": "2024-06-27T22:15:58.276194Z",
"id": "AAMkADQ0NjE4YmY5LTc3ZDYtNDc5NC1-UlgAAAAAAENAAB3eGoN5TIDTp8dXXDpxUlgAACQlfLuAAA=",
"i_cal_uid": "1p1oilmc4mt3m6ah6rmf6ik8mm@google.com",
"html_link": "https://www.google.com/calendar/event?eid=Y2N",
"extended_properties": {},
"end_time": "2024-06-27T22:15:58.275752Z",
"description": "Calendar event description",
"creator": "creator@example.com",
"created_at": "2024-06-27T22:15:58.276028Z",
"conference_data": {},
"canceled_at": "2024-06-27T22:15:58.276141Z",
"calendar_id": "test@example.com",
"busy": false,
"body_html": "some html text",
"attendees": [
{
"status_changed": false,
"status": "accepted",
"organizer": true,
"name": "Alice",
"email": "alice@example.com",
"deleted_at": null
},
{
"status_changed": false,
"status": "accepted",
"organizer": false,
"name": "Bob",
"email": "bob@example.com",
"deleted_at": null
}
],
"all_day": false
}