logo_smallAxellero.io

Google Calendar

Calendar and event management using the Google Calendar API with OAuth 2.0 authentication

Google Calendar API integration for automated calendar and event management in Axellero Workflow Designer and Agentflow Designer.

Setup Required: See the Setup Guide for authentication configuration and connector setup.

Quick Navigation

Overview

The Google Calendar node enables comprehensive calendar and event management through the Google Calendar API. It supports creating, reading, updating, and deleting events, managing calendars and calendar lists, and integrating scheduling automation into your workflows.

Key Features:

  • Event Management - Create, update, delete, and query events with full support for recurrence, attendees, reminders, and Google Meet integration
  • Calendar Operations - Create and manage secondary calendars, customize metadata and settings
  • Calendar List - Control which calendars appear in the user's list with display preferences
  • Natural Language - Create events from natural language text with quickAddEvent
  • Cross-Calendar - Move events between calendars seamlessly
  • Access Control - Manage calendar sharing with ACL rules for users, groups, and domains
  • Real-time Triggers - Receive webhook notifications when events are created, updated, or deleted
  • Availability Queries - Check free/busy status across multiple calendars

Connection Configuration

ParameterTypeRequiredDescription
accessTokenTEXTYesOAuth 2.0 access token for Google Calendar API authentication

Setup Instructions: See the Setup Guide for authentication configuration, connector creation, and getting started.

Available Operations

CategoryOperationDescription
CalendarsgetCalendarGet metadata for a specific calendar
CalendarscreateCalendarCreate a new secondary calendar
CalendarsupdateCalendarFull replacement update of calendar metadata
CalendarspatchCalendarPartial update of calendar metadata
CalendarsdeleteCalendarDelete a secondary calendar
CalendarsclearCalendarRemove all events from a calendar
Calendar ListlistCalendarsList all calendars in the user's calendar list
Calendar ListgetCalendarListEntryGet a calendar's entry from the user's list
Calendar ListinsertCalendarToListAdd a calendar to the user's list
Calendar ListupdateCalendarListEntryFull update of calendar list entry settings
Calendar ListpatchCalendarListEntryPartial update of calendar list entry
Calendar ListdeleteCalendarFromListRemove a calendar from the user's list
EventslistEventsList events with filtering by time range, search query, and pagination
EventsgetEventGet full details of a specific event by ID
EventscreateEventCreate a new calendar event with attendees, reminders, and recurrence
EventsupdateEventFull replacement update of an existing event
EventspatchEventPartial update of an event (only specified fields changed)
EventsdeleteEventDelete an event from a calendar
EventsquickAddEventCreate an event from natural language text
EventsmoveEventMove an event from one calendar to another
EventslistEventInstancesList all instances of a recurring event
EventsimportEventImport an event with a specific iCalendar UID
Access ControllistAclList access control rules for a calendar
Access ControlgetAclRuleGet a specific access control rule
Access ControlcreateAclRuleCreate an ACL rule to share a calendar
Access ControlupdateAclRuleFull replacement update of an ACL rule
Access ControlpatchAclRulePartial update of an ACL rule
Access ControldeleteAclRuleDelete an access control rule
Settings & ColorslistSettingsList all user settings for Google Calendar
Settings & ColorsgetSettingGet a specific user setting value
Settings & ColorsgetColorsGet calendar and event color definitions
AvailabilityqueryFreeBusyCheck availability of calendars in a time range

Operations Reference

Calendars

getCalendar

Get metadata for a specific calendar including summary, description, time zone, and location.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")

Configuration Example:

{
  "calendarId": "primary"
}

Note: Connector options (like accessToken) are automatically injected by the runtime. You only need to specify operation-specific parameters.

Success Response:

{
  "success": true,
  "data": {
    "id": "primary",
    "summary": "My Calendar",
    "description": "Personal calendar",
    "timeZone": "America/New_York",
    "etag": "\"abc123\""
  }
}

Error Response:

{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or expired access token"
  }
}

createCalendar

Create a new secondary calendar owned by the authenticated user.

Parameters:

ParameterTypeRequiredDescription
summaryTEXTYesTitle of the calendar
descriptionTEXTNoDescription of the calendar
locationTEXTNoGeographic location of the calendar
timeZoneTEXTNoTime zone (IANA, e.g., "America/New_York")

Configuration Example:

{
  "summary": "{{ctx.vars.calendarName}}",
  "description": "Team project calendar",
  "timeZone": "America/New_York"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "abc123@group.calendar.google.com",
    "summary": "Project Calendar",
    "timeZone": "America/New_York",
    "etag": "\"xyz789\""
  }
}

updateCalendar

Update a calendar's metadata with full replacement of all fields.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTYesCalendar ID to update
summaryTEXTYesTitle of the calendar
descriptionTEXTNoDescription of the calendar
locationTEXTNoGeographic location of the calendar
timeZoneTEXTNoTime zone (IANA, e.g., "America/New_York")

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}",
  "summary": "{{ctx.vars.newCalendarName}}",
  "description": "Updated description",
  "timeZone": "Europe/London"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "abc123@group.calendar.google.com",
    "summary": "Updated Calendar",
    "timeZone": "Europe/London",
    "etag": "\"updated123\""
  }
}

patchCalendar

Partially update a calendar's metadata. Only specified fields are modified.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTYesCalendar ID to patch
summaryTEXTNoTitle of the calendar
descriptionTEXTNoDescription of the calendar
locationTEXTNoGeographic location of the calendar
timeZoneTEXTNoTime zone (IANA, e.g., "America/New_York")

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}",
  "summary": "{{ctx.vars.newName}}"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "abc123@group.calendar.google.com",
    "summary": "New Name",
    "etag": "\"patched123\""
  }
}

deleteCalendar

Delete a secondary calendar. The primary calendar cannot be deleted.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTYesCalendar ID to delete

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}"
}

Success Response:

{
  "success": true,
  "data": {
    "deleted": true
  }
}

clearCalendar

Remove all events from a calendar. This action cannot be undone.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTYesCalendar ID to clear

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}"
}

Success Response:

{
  "success": true,
  "data": {
    "cleared": true
  }
}

Calendar List

listCalendars

List all calendars the user has subscribed to with optional filtering and pagination.

Parameters:

ParameterTypeRequiredDescription
maxResultsINTNoMaximum number of calendars to return (1-250)
minAccessRoleTEXTNoMinimum access role: freeBusyReader, reader, writer, owner
pageTokenTEXTNoPage token for pagination
showDeletedBOOLEANNoInclude deleted calendar list entries
showHiddenBOOLEANNoInclude hidden calendars
syncTokenTEXTNoSync token for incremental sync

Configuration Example:

{
  "maxResults": 50,
  "minAccessRole": "writer"
}

Success Response:

{
  "success": true,
  "data": {
    "calendars": [
      {
        "id": "primary",
        "summary": "My Calendar",
        "accessRole": "owner",
        "primary": true,
        "timeZone": "America/New_York"
      },
      {
        "id": "team@group.calendar.google.com",
        "summary": "Team Calendar",
        "accessRole": "writer",
        "timeZone": "America/New_York"
      }
    ],
    "nextPageToken": null,
    "nextSyncToken": "sync_token_123"
  }
}

getCalendarListEntry

Get a calendar's entry from the user's calendar list, including display settings and notification preferences.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTYesCalendar ID

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "team@group.calendar.google.com",
    "summary": "Team Calendar",
    "accessRole": "writer",
    "backgroundColor": "#4285f4",
    "foregroundColor": "#ffffff",
    "selected": true,
    "hidden": false
  }
}

insertCalendarToList

Add a calendar to the user's calendar list with optional display settings.

Parameters:

ParameterTypeRequiredDescription
idTEXTYesCalendar ID to add to the list
colorRgbFormatBOOLEANNoUse RGB format for colors instead of color IDs
backgroundColorTEXTNoBackground color (hex format: #ffffff)
foregroundColorTEXTNoForeground color (hex format: #000000)
hiddenBOOLEANNoHide the calendar from the list
selectedBOOLEANNoShow calendar events by default
summaryOverrideTEXTNoCustom name for the calendar
defaultRemindersOBJECTNoDefault reminders: [{method, minutes}]
notificationSettingsOBJECTNoNotification settings: {notifications: [{type, method}]}

Configuration Example:

{
  "id": "{{ctx.vars.calendarId}}",
  "backgroundColor": "#16a765",
  "selected": true,
  "summaryOverride": "My Team"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "team@group.calendar.google.com",
    "summary": "Team Calendar",
    "summaryOverride": "My Team",
    "backgroundColor": "#16a765",
    "selected": true
  }
}

updateCalendarListEntry

Update a calendar's settings in the user's calendar list with full replacement.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTYesCalendar ID
colorRgbFormatBOOLEANNoUse RGB format for colors instead of color IDs
backgroundColorTEXTNoBackground color (hex format: #ffffff)
foregroundColorTEXTNoForeground color (hex format: #000000)
hiddenBOOLEANNoHide the calendar from the list
selectedBOOLEANNoShow calendar events by default
summaryOverrideTEXTNoCustom name for the calendar
defaultRemindersOBJECTNoDefault reminders: [{method, minutes}]
notificationSettingsOBJECTNoNotification settings: {notifications: [{type, method}]}

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}",
  "backgroundColor": "#d06b64",
  "summaryOverride": "{{ctx.vars.customName}}",
  "selected": true
}

Success Response:

{
  "success": true,
  "data": {
    "id": "team@group.calendar.google.com",
    "summaryOverride": "Custom Name",
    "backgroundColor": "#d06b64",
    "selected": true
  }
}

patchCalendarListEntry

Partially update a calendar's settings in the user's calendar list. Only specified fields are modified.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTYesCalendar ID
colorRgbFormatBOOLEANNoUse RGB format for colors instead of color IDs
backgroundColorTEXTNoBackground color (hex format: #ffffff)
foregroundColorTEXTNoForeground color (hex format: #000000)
hiddenBOOLEANNoHide the calendar from the list
selectedBOOLEANNoShow calendar events by default
summaryOverrideTEXTNoCustom name for the calendar
defaultRemindersOBJECTNoDefault reminders: [{method, minutes}]
notificationSettingsOBJECTNoNotification settings: {notifications: [{type, method}]}

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}",
  "hidden": true
}

Success Response:

{
  "success": true,
  "data": {
    "id": "team@group.calendar.google.com",
    "hidden": true
  }
}

deleteCalendarFromList

Remove a calendar from the user's calendar list. This does not delete the calendar itself.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTYesCalendar ID to remove from the list

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}"
}

Success Response:

{
  "success": true,
  "data": {
    "deleted": true
  }
}

Events

listEvents

List events on a calendar with optional filtering by time range, search query, and more.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
maxResultsINTNoMaximum events to return (1-2500)
timeMinTEXTNoStart of time range (RFC3339)
timeMaxTEXTNoEnd of time range (RFC3339)
qTEXTNoFree text search query
singleEventsBOOLEANNoExpand recurring events into instances
orderByTEXTNoSort order: "startTime" or "updated"
pageTokenTEXTNoPage token for pagination
showDeletedBOOLEANNoInclude deleted events
showHiddenInvitationsBOOLEANNoInclude hidden invitations
timeZoneTEXTNoTime zone for response (IANA)
syncTokenTEXTNoSync token for incremental sync
iCalUIDTEXTNoFilter by iCalendar UID
updatedMinTEXTNoLower bound for event update time (RFC3339)

Configuration Example:

{
  "calendarId": "primary",
  "timeMin": "{{ctx.vars.startDate}}",
  "timeMax": "{{ctx.vars.endDate}}",
  "maxResults": 50,
  "singleEvents": true,
  "orderBy": "startTime"
}

Success Response:

{
  "success": true,
  "data": {
    "events": [
      {
        "id": "event123abc",
        "summary": "Team Meeting",
        "start": {
          "dateTime": "2024-01-15T10:00:00-05:00",
          "timeZone": "America/New_York"
        },
        "end": {
          "dateTime": "2024-01-15T11:00:00-05:00",
          "timeZone": "America/New_York"
        },
        "status": "confirmed"
      }
    ],
    "nextPageToken": "CiAKGjBpN...",
    "nextSyncToken": null,
    "timeZone": "America/New_York",
    "summary": "My Calendar"
  }
}

getEvent

Get a specific event by ID with full details including attendees, reminders, and conference data.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
eventIdTEXTYesThe ID of the event to retrieve
timeZoneTEXTNoTime zone for response (IANA)
maxAttendeesINTNoMaximum number of attendees to include (1-100)

Configuration Example:

{
  "eventId": "{{ctx.vars.eventId}}",
  "calendarId": "primary"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "event123abc",
    "summary": "Project Review Meeting",
    "description": "Quarterly project review",
    "location": "Conference Room A",
    "start": {
      "dateTime": "2024-01-20T14:00:00-05:00",
      "timeZone": "America/New_York"
    },
    "end": {
      "dateTime": "2024-01-20T15:00:00-05:00",
      "timeZone": "America/New_York"
    },
    "status": "confirmed",
    "attendees": [
      {"email": "john@example.com", "responseStatus": "accepted"},
      {"email": "jane@example.com", "responseStatus": "needsAction"}
    ],
    "htmlLink": "https://calendar.google.com/calendar/event?eid=...",
    "iCalUID": "event123abc@google.com"
  }
}

createEvent

Create a new calendar event with support for attendees, reminders, recurrence, and Google Meet.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
summaryTEXTNoEvent title
descriptionTEXTNoEvent description (HTML supported)
locationTEXTNoEvent location
startOBJECTYesStart time: {dateTime, date, timeZone}
endOBJECTYesEnd time: {dateTime, date, timeZone}
attendeesOBJECTNoArray of attendees: [{email, optional}]
remindersOBJECTNoReminders: {useDefault, overrides}
recurrenceOBJECTNoArray of RRULE strings
visibilityTEXTNoVisibility: default, public, private, confidential
colorIdTEXTNoEvent color (1-11)
transparencyTEXTNoShow as: opaque (busy) or transparent (free)
statusTEXTNoStatus: confirmed, tentative, cancelled
sendUpdatesTEXTNoNotification: all, externalOnly, none
conferenceDataVersionINTNoSet to 1 for Google Meet

Configuration Example:

{
  "summary": "Project Review Meeting",
  "description": "Quarterly project review with stakeholders",
  "location": "Conference Room A",
  "start": {
    "dateTime": "2024-01-20T14:00:00",
    "timeZone": "America/New_York"
  },
  "end": {
    "dateTime": "2024-01-20T15:00:00",
    "timeZone": "America/New_York"
  },
  "attendees": [
    {"email": "john@example.com"},
    {"email": "jane@example.com", "optional": true}
  ],
  "reminders": {
    "useDefault": false,
    "overrides": [
      {"method": "email", "minutes": 60},
      {"method": "popup", "minutes": 10}
    ]
  },
  "conferenceDataVersion": 1,
  "sendUpdates": "all"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "abc123xyz",
    "summary": "Project Review Meeting",
    "htmlLink": "https://calendar.google.com/calendar/event?eid=...",
    "hangoutLink": "https://meet.google.com/abc-defg-hij",
    "start": {
      "dateTime": "2024-01-20T14:00:00-05:00",
      "timeZone": "America/New_York"
    },
    "end": {
      "dateTime": "2024-01-20T15:00:00-05:00",
      "timeZone": "America/New_York"
    },
    "status": "confirmed",
    "attendees": [
      {"email": "john@example.com", "responseStatus": "needsAction"},
      {"email": "jane@example.com", "responseStatus": "needsAction", "optional": true}
    ],
    "iCalUID": "abc123xyz@google.com"
  }
}

updateEvent

Update an existing calendar event with full replacement of all fields.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
eventIdTEXTYesThe ID of the event to update
summaryTEXTNoEvent title
descriptionTEXTNoEvent description (HTML supported)
locationTEXTNoEvent location
startOBJECTYesStart time: {dateTime, date, timeZone}
endOBJECTYesEnd time: {dateTime, date, timeZone}
attendeesOBJECTNoArray of attendees: [{email, optional}]
remindersOBJECTNoReminders: {useDefault, overrides}
recurrenceOBJECTNoArray of RRULE strings
visibilityTEXTNoVisibility: default, public, private, confidential
colorIdTEXTNoEvent color (1-11)
transparencyTEXTNoShow as: opaque (busy) or transparent (free)
statusTEXTNoStatus: confirmed, tentative, cancelled
sendUpdatesTEXTNoNotification: all, externalOnly, none
conferenceDataVersionINTNoSet to 1 for Google Meet

Configuration Example:

{
  "eventId": "{{ctx.vars.eventId}}",
  "summary": "Updated Meeting Title",
  "start": {
    "dateTime": "2024-01-20T15:00:00",
    "timeZone": "America/New_York"
  },
  "end": {
    "dateTime": "2024-01-20T16:00:00",
    "timeZone": "America/New_York"
  },
  "sendUpdates": "all"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "abc123xyz",
    "summary": "Updated Meeting Title",
    "start": {
      "dateTime": "2024-01-20T15:00:00-05:00",
      "timeZone": "America/New_York"
    },
    "end": {
      "dateTime": "2024-01-20T16:00:00-05:00",
      "timeZone": "America/New_York"
    },
    "status": "confirmed",
    "etag": "\"updated456\""
  }
}

patchEvent

Partially update an event. Only specified fields are modified; unspecified fields remain unchanged.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
eventIdTEXTYesThe ID of the event to patch
summaryTEXTNoEvent title
descriptionTEXTNoEvent description (HTML supported)
locationTEXTNoEvent location
startOBJECTNoStart time: {dateTime, date, timeZone}
endOBJECTNoEnd time: {dateTime, date, timeZone}
attendeesOBJECTNoArray of attendees: [{email, optional}]
remindersOBJECTNoReminders: {useDefault, overrides}
recurrenceOBJECTNoArray of RRULE strings
visibilityTEXTNoVisibility: default, public, private, confidential
colorIdTEXTNoEvent color (1-11)
transparencyTEXTNoShow as: opaque (busy) or transparent (free)
statusTEXTNoStatus: confirmed, tentative, cancelled
sendUpdatesTEXTNoNotification: all, externalOnly, none
conferenceDataVersionINTNoSet to 1 for Google Meet

Configuration Example:

{
  "eventId": "{{ctx.vars.eventId}}",
  "summary": "{{ctx.vars.newTitle}}",
  "location": "Room B"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "abc123xyz",
    "summary": "New Title",
    "location": "Room B",
    "etag": "\"patched789\""
  }
}

deleteEvent

Delete a calendar event. Attendees can be notified of the cancellation.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
eventIdTEXTYesThe ID of the event to delete
sendUpdatesTEXTNoNotification: all, externalOnly, none

Configuration Example:

{
  "calendarId": "primary",
  "eventId": "{{ctx.vars.eventId}}",
  "sendUpdates": "all"
}

Success Response:

{
  "success": true,
  "data": {
    "deleted": true
  }
}

quickAddEvent

Create an event from a natural language text string. Google Calendar parses the text to extract event details.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
textTEXTYesNatural language event description
sendUpdatesTEXTNoNotification: all, externalOnly, none

Configuration Example:

{
  "text": "Meeting with John tomorrow at 3pm for 1 hour"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "quick123",
    "summary": "Meeting with John",
    "start": {
      "dateTime": "2024-01-16T15:00:00-05:00"
    },
    "end": {
      "dateTime": "2024-01-16T16:00:00-05:00"
    },
    "status": "confirmed",
    "htmlLink": "https://calendar.google.com/calendar/event?eid=...",
    "iCalUID": "quick123@google.com"
  }
}

moveEvent

Move an event from one calendar to another. The event ID changes after the move.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoSource calendar ID (default: "primary")
eventIdTEXTYesThe ID of the event to move
destinationTEXTYesDestination calendar ID
sendUpdatesTEXTNoNotification: all, externalOnly, none

Configuration Example:

{
  "calendarId": "primary",
  "eventId": "{{ctx.vars.eventId}}",
  "destination": "{{ctx.vars.targetCalendarId}}"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "moved_event_456",
    "summary": "Moved Meeting",
    "status": "confirmed",
    "htmlLink": "https://calendar.google.com/calendar/event?eid=..."
  }
}

listEventInstances

List all instances of a recurring event within an optional time range.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
eventIdTEXTYesThe ID of the recurring event
maxResultsINTNoMaximum instances to return (1-2500)
timeMinTEXTNoLower bound for instance start time (RFC3339)
timeMaxTEXTNoUpper bound for instance end time (RFC3339)
pageTokenTEXTNoPage token for pagination
showDeletedBOOLEANNoInclude deleted instances
timeZoneTEXTNoTime zone for response (IANA)
originalStartTEXTNoOriginal start time of a specific instance (RFC3339)

Configuration Example:

{
  "eventId": "{{ctx.vars.recurringEventId}}",
  "timeMin": "{{ctx.vars.todayStart}}",
  "timeMax": "{{ctx.vars.monthEnd}}",
  "maxResults": 10
}

Success Response:

{
  "success": true,
  "data": {
    "items": [
      {
        "id": "event123_20240115T090000Z",
        "summary": "Weekly Standup",
        "start": { "dateTime": "2024-01-15T09:00:00-05:00" },
        "end": { "dateTime": "2024-01-15T09:30:00-05:00" },
        "recurringEventId": "event123",
        "originalStartTime": { "dateTime": "2024-01-15T09:00:00-05:00" }
      }
    ],
    "nextPageToken": null
  }
}

importEvent

Import an event with a specific iCalendar UID. Useful for syncing events from external calendar systems.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
iCalUIDTEXTYesiCalendar UID (globally unique)
summaryTEXTNoEvent title
descriptionTEXTNoEvent description (HTML supported)
locationTEXTNoEvent location
startOBJECTYesStart time: {dateTime, date, timeZone}
endOBJECTYesEnd time: {dateTime, date, timeZone}
attendeesOBJECTNoArray of attendees: [{email, optional}]
remindersOBJECTNoReminders: {useDefault, overrides}
recurrenceOBJECTNoArray of RRULE strings
visibilityTEXTNoVisibility: default, public, private, confidential
colorIdTEXTNoEvent color (1-11)
transparencyTEXTNoShow as: opaque (busy) or transparent (free)
statusTEXTNoStatus: confirmed, tentative, cancelled
conferenceDataVersionINTNoSet to 1 for Google Meet

Configuration Example:

{
  "iCalUID": "external-event-123@example.com",
  "summary": "Imported Meeting",
  "start": { "dateTime": "2024-01-15T14:00:00Z" },
  "end": { "dateTime": "2024-01-15T15:00:00Z" }
}

Success Response:

{
  "success": true,
  "data": {
    "id": "imported_event_789",
    "summary": "Imported Meeting",
    "iCalUID": "external-event-123@example.com",
    "start": { "dateTime": "2024-01-15T14:00:00Z" },
    "end": { "dateTime": "2024-01-15T15:00:00Z" },
    "status": "confirmed"
  }
}

Access Control

listAcl

List access control rules for a calendar, showing who has access and their permission levels.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
maxResultsINTNoMaximum rules to return (1-250)
pageTokenTEXTNoPage token for pagination
showDeletedBOOLEANNoInclude deleted rules
syncTokenTEXTNoSync token for incremental sync

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}",
  "maxResults": 100
}

Success Response:

{
  "success": true,
  "data": {
    "items": [
      {
        "id": "user:owner@example.com",
        "scope": { "type": "user", "value": "owner@example.com" },
        "role": "owner"
      },
      {
        "id": "user:colleague@example.com",
        "scope": { "type": "user", "value": "colleague@example.com" },
        "role": "writer"
      }
    ],
    "nextSyncToken": "sync_abc123"
  }
}

getAclRule

Get a specific access control rule by its ID.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
ruleIdTEXTYesACL rule ID (e.g., "user:email@example.com")

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}",
  "ruleId": "user:colleague@example.com"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "user:colleague@example.com",
    "scope": { "type": "user", "value": "colleague@example.com" },
    "role": "writer",
    "etag": "\"acl_etag_123\""
  }
}

createAclRule

Share a calendar with a user, group, or domain by creating an access control rule.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
roleTEXTYesPermission: none, freeBusyReader, reader, writer, owner
scopeTypeTEXTYesEntity type: default, user, group, domain
scopeValueTEXTNoEmail or domain for the entity
sendNotificationsBOOLEANNoSend notification email

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}",
  "role": "reader",
  "scopeType": "user",
  "scopeValue": "{{ctx.vars.userEmail}}",
  "sendNotifications": true
}

Success Response:

{
  "success": true,
  "data": {
    "id": "user:colleague@example.com",
    "scope": { "type": "user", "value": "colleague@example.com" },
    "role": "reader",
    "etag": "\"new_acl_123\""
  }
}

updateAclRule

Update an access control rule with full replacement of all fields.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
ruleIdTEXTYesACL rule ID to update
roleTEXTYesPermission: none, freeBusyReader, reader, writer, owner
scopeTypeTEXTYesEntity type: default, user, group, domain
scopeValueTEXTNoEmail or domain for the entity
sendNotificationsBOOLEANNoSend notification email

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}",
  "ruleId": "user:colleague@example.com",
  "role": "writer",
  "scopeType": "user",
  "scopeValue": "colleague@example.com"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "user:colleague@example.com",
    "scope": { "type": "user", "value": "colleague@example.com" },
    "role": "writer",
    "etag": "\"updated_acl_456\""
  }
}

patchAclRule

Partially update an access control rule. Only specified fields are modified.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
ruleIdTEXTYesACL rule ID to patch
roleTEXTNoPermission: none, freeBusyReader, reader, writer, owner
sendNotificationsBOOLEANNoSend notification email

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}",
  "ruleId": "user:colleague@example.com",
  "role": "owner"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "user:colleague@example.com",
    "scope": { "type": "user", "value": "colleague@example.com" },
    "role": "owner",
    "etag": "\"patched_acl_789\""
  }
}

deleteAclRule

Delete an access control rule, removing calendar access for the specified entity.

Parameters:

ParameterTypeRequiredDescription
calendarIdTEXTNoCalendar ID (default: "primary")
ruleIdTEXTYesACL rule ID to delete

Configuration Example:

{
  "calendarId": "{{ctx.vars.calendarId}}",
  "ruleId": "user:colleague@example.com"
}

Success Response:

{
  "success": true,
  "data": {
    "deleted": true
  }
}

Settings & Colors

listSettings

List all user settings for Google Calendar including locale, time zone, and display preferences.

Parameters:

ParameterTypeRequiredDescription
maxResultsINTNoMaximum settings to return (1-250)
pageTokenTEXTNoPage token for pagination
syncTokenTEXTNoSync token for incremental sync

Configuration Example:

{
  "maxResults": 50
}

Success Response:

{
  "success": true,
  "data": {
    "items": [
      { "id": "timezone", "value": "America/New_York" },
      { "id": "locale", "value": "en" },
      { "id": "format24HourTime", "value": "false" },
      { "id": "weekStart", "value": "0" }
    ],
    "nextSyncToken": "settings_sync_123"
  }
}

getSetting

Get a specific user setting value from Google Calendar.

Parameters:

ParameterTypeRequiredDescription
settingTEXTYesSetting name: autoAddHangouts, dateFieldOrder, defaultEventLength, format24HourTime, hideInvitations, hideWeekends, locale, remindOnRespondedEventsOnly, showDeclinedEvents, timezone, useKeyboardShortcuts, weekStart

Configuration Example:

{
  "setting": "timezone"
}

Success Response:

{
  "success": true,
  "data": {
    "id": "timezone",
    "value": "America/New_York",
    "etag": "\"setting_etag_123\""
  }
}

getColors

Get available color definitions for calendars and events, including hex values for each color ID.

Parameters:

ParameterTypeRequiredDescription
No parameters required

Configuration Example:

{}

Success Response:

{
  "success": true,
  "data": {
    "calendar": {
      "1": { "background": "#ac725e", "foreground": "#1d1d1d" },
      "2": { "background": "#d06b64", "foreground": "#1d1d1d" }
    },
    "event": {
      "1": { "background": "#a4bdfc", "foreground": "#1d1d1d" },
      "2": { "background": "#7ae7bf", "foreground": "#1d1d1d" }
    }
  }
}

Availability

queryFreeBusy

Check availability of one or more calendars within a specified time range.

Parameters:

ParameterTypeRequiredDescription
timeMinTEXTYesStart of time range (RFC3339)
timeMaxTEXTYesEnd of time range (RFC3339)
timeZoneTEXTNoTime zone (IANA)
groupExpansionMaxINTNoMax group members to expand (1-100)
calendarExpansionMaxINTNoMax calendars to return (1-50)
itemsOBJECTNoCalendars to check: [{id: "calendar-id"}]

Configuration Example:

{
  "timeMin": "{{ctx.vars.todayStart}}",
  "timeMax": "{{ctx.vars.todayEnd}}",
  "items": [
    { "id": "primary" },
    { "id": "colleague@example.com" }
  ]
}

Success Response:

{
  "success": true,
  "data": {
    "calendars": {
      "primary": {
        "busy": [
          {
            "start": "2024-01-15T10:00:00Z",
            "end": "2024-01-15T11:00:00Z"
          }
        ]
      },
      "colleague@example.com": {
        "busy": []
      }
    }
  }
}

Triggers

Calendar Event

Receive real-time webhook notifications when events are created, updated, or deleted in Google Calendar.

Supported Events:

EventDescription
syncInitial sync notification when the webhook channel is registered
event_createdA new event was created in the watched calendar
event_updatedAn existing event was modified
event_deletedAn event was deleted from the calendar

Configuration Options:

OptionTypeRequiredDescription
calendarIdTEXTNoCalendar to watch (default: "primary")
secretTEXT (PASSWORD)NoSecret token for webhook verification (X-Goog-Channel-Token header)
eventsTEXTNoEvent types to receive

Event Payload Examples:

Event Created:

{
  "eventType": "event_created",
  "calendarId": "primary",
  "event": {
    "id": "event123",
    "summary": "New Meeting",
    "start": { "dateTime": "2024-01-15T14:00:00Z" },
    "end": { "dateTime": "2024-01-15T15:00:00Z" },
    "status": "confirmed",
    "htmlLink": "https://calendar.google.com/calendar/event?eid=..."
  }
}

Event Updated:

{
  "eventType": "event_updated",
  "calendarId": "primary",
  "event": {
    "id": "event123",
    "summary": "Updated Meeting Title",
    "start": { "dateTime": "2024-01-15T15:00:00Z" },
    "end": { "dateTime": "2024-01-15T16:00:00Z" },
    "status": "confirmed",
    "updated": "2024-01-15T12:00:00.000Z"
  }
}

Event Deleted:

{
  "eventType": "event_deleted",
  "calendarId": "primary",
  "event": {
    "id": "event123",
    "status": "cancelled"
  }
}

Use Cases

Daily Agenda Email

Send a daily summary of upcoming events via Gmail.

  1. Trigger: Schedule Trigger (daily at 7:00 AM)
  2. Action: Google Calendar listEvents - get today's events
  3. Action: Gmail sendMessage - email the agenda
{
  "calendarId": "primary",
  "timeMin": "{{ctx.vars.todayStart}}",
  "timeMax": "{{ctx.vars.todayEnd}}",
  "singleEvents": true,
  "orderBy": "startTime"
}

Meeting Scheduling via Telegram

Allow users to create calendar events through Telegram commands.

  1. Trigger: Telegram webhook for incoming messages
  2. Action: Google Calendar quickAddEvent - create event from natural language
  3. Action: Telegram sendMessage - confirm the event was created
{
  "text": "{{ctx.nodes.telegram_trigger.outputs.data.message.text}}"
}

Calendar-to-Task Sync

Create Linear issues from calendar events for project tracking.

  1. Trigger: Schedule Trigger (hourly)
  2. Action: Google Calendar listEvents - get new events
  3. Action: Linear createIssue - create task from event
{
  "title": "Meeting: {{ctx.nodes.gcalendar.outputs.data.events[0].summary}}",
  "description": "Calendar event: {{ctx.nodes.gcalendar.outputs.data.events[0].htmlLink}}",
  "teamId": "{{ctx.vars.linearTeamId}}"
}

Event Cleanup Automation

Clean up old or cancelled events periodically.

  1. Trigger: Schedule Trigger (daily at midnight)
  2. Action: Google Calendar listEvents - get past events with showDeleted: true
  3. Loop: Iterate over cancelled events
  4. Action: Google Calendar deleteEvent - remove each cancelled event

Cross-Calendar Event Migration

Move events between calendars based on criteria.

  1. Trigger: Schedule Trigger
  2. Action: Google Calendar listEvents - find events to migrate
  3. Condition: Check event properties
  4. Action: Google Calendar moveEvent - move to target calendar

Meeting Notification Bot

Send Telegram notifications when new meetings are created.

  1. Trigger: Google Calendar Calendar Event (event_created)
  2. Action: Telegram sendMessage - notify about the new meeting
{
  "chatId": "{{ctx.vars.telegramChatId}}",
  "text": "New meeting: {{ctx.nodes.gcalendar_trigger.outputs.data.event.summary}}\nTime: {{ctx.nodes.gcalendar_trigger.outputs.data.event.start.dateTime}}"
}

Availability Check Before Booking

Check calendar availability before creating a new event.

  1. Trigger: HTTP Trigger (booking request)
  2. Action: Google Calendar queryFreeBusy - check availability
  3. Condition: Check if the time slot is free
  4. Action: Google Calendar createEvent - book the meeting
{
  "timeMin": "{{ctx.nodes.http_trigger.outputs.data.startTime}}",
  "timeMax": "{{ctx.nodes.http_trigger.outputs.data.endTime}}",
  "items": [{ "id": "primary" }]
}

Resources