# Google Calendar

> Create, read, update, and delete calendar events, manage attendees, and query schedules through the Google Calendar API.

Source: https://cotera.co/docs/reference/tools/individual-tools/google-calendar

---

**Authentication Type:** OAuth
**Description:** Create, read, update, and delete calendar events, manage attendees, and query schedules through the Google Calendar API.

***

## Authentication

To authenticate with Google Calendar, you need OAuth2 credentials with Calendar access scopes. This uses the same Google Workspace OAuth connection.

***

## Events

Manage calendar events including creating, reading, updating, and deleting.

### List Events

List events from a calendar with optional filtering by time range and search query.

**Operation Type:** Query (Read)

**Parameters:**

* **calendarId** `string` (nullable): Calendar ID (defaults to `"primary"`)
* **maxResults** `number` (nullable): Maximum events to return (default 10)
* **timeMin** `string` (nullable): Start of time range in RFC3339 format (e.g., `"2024-01-01T00:00:00Z"`)
* **timeMax** `string` (nullable): End of time range in RFC3339 format
* **q** `string` (nullable): Free-text search query to filter events
* **pageToken** `string` (nullable): Token for pagination

**Returns:**

* **items** `array of objects`: List of calendar events
  * **id** `string`: Event ID
  * **summary** `string` (nullable): Event title
  * **description** `string` (nullable): Event description
  * **start** `object`: Start time
    * **dateTime** `string` (nullable): RFC3339 for timed events
    * **date** `string` (nullable): YYYY-MM-DD for all-day events
    * **timeZone** `string` (nullable): Time zone
  * **end** `object`: End time (same structure as start)
  * **attendees** `array` (nullable): List of attendees with `email`, `displayName`, `responseStatus`
  * **htmlLink** `string` (nullable): Link to event in Google Calendar
  * **created** `string` (nullable): Creation timestamp
  * **updated** `string` (nullable): Last update timestamp
* **nextPageToken** `string` (nullable): Token for the next page of results

**Example Usage:**

```json
{
  "calendarId": "primary",
  "timeMin": "2024-01-01T00:00:00Z",
  "timeMax": "2024-01-31T23:59:59Z",
  "maxResults": 50
}
```

***

### Create Event

Create a new calendar event with attendees, location, and time details.

**Operation Type:** Mutation (Write)

**Parameters:**

* **calendarId** `string` (nullable): Calendar ID (defaults to `"primary"`)
* **summary** `string` (required): Event title
* **description** `string` (nullable): Event description
* **start** `object` (required): Start time
  * **dateTime** `string` (nullable): RFC3339 format for timed events
  * **date** `string` (nullable): YYYY-MM-DD for all-day events
  * **timeZone** `string` (nullable): Time zone (e.g., `"America/New_York"`)
* **end** `object` (required): End time (same structure as start)
* **attendees** `array` (nullable): List of attendees with `email` field
* **location** `string` (nullable): Event location

**Returns:**

* **id** `string`: Created event ID
* **htmlLink** `string` (nullable): Link to the event
* **summary** `string` (nullable): Event title
* **description** `string` (nullable): Event description
* **start** `object`: Start time details
* **end** `object`: End time details
* **created** `string` (nullable): Creation timestamp

**Example Usage:**

```json
{
  "summary": "Team Standup",
  "description": "Daily sync meeting",
  "start": {
    "dateTime": "2024-01-15T09:00:00-05:00",
    "timeZone": "America/New_York"
  },
  "end": {
    "dateTime": "2024-01-15T09:30:00-05:00",
    "timeZone": "America/New_York"
  },
  "attendees": [{ "email": "colleague@example.com" }],
  "location": "Conference Room A"
}
```

***

### Get Event

Retrieve detailed information about a specific calendar event.

**Operation Type:** Query (Read)

**Parameters:**

* **calendarId** `string` (nullable): Calendar ID (defaults to `"primary"`)
* **eventId** `string` (required): Event ID to retrieve

**Returns:**

* **id** `string`: Event ID
* **summary** `string` (nullable): Event title
* **description** `string` (nullable): Event description
* **start** `object`: Start time details
* **end** `object`: End time details
* **attendees** `array` (nullable): Attendees with `email`, `displayName`, `responseStatus`
* **htmlLink** `string` (nullable): Link to event
* **created** `string` (nullable): Creation timestamp
* **updated** `string` (nullable): Last update timestamp
* **status** `string` (nullable): Event status (`"confirmed"`, `"tentative"`, `"cancelled"`)
* **location** `string` (nullable): Event location
* **organizer** `object` (nullable): Event organizer
  * **email** `string` (nullable): Organizer email
  * **displayName** `string` (nullable): Organizer name

**Example Usage:**

```json
{
  "eventId": "abc123def456"
}
```

***

### Update Event

Update an existing calendar event's details, time, attendees, or location.

**Operation Type:** Mutation (Write)

**Parameters:**

* **calendarId** `string` (nullable): Calendar ID (defaults to `"primary"`)
* **eventId** `string` (required): Event ID to update
* **summary** `string` (nullable): Updated event title
* **description** `string` (nullable): Updated description
* **start** `object` (nullable): Updated start time
  * **dateTime** `string` (nullable): RFC3339 format
  * **date** `string` (nullable): YYYY-MM-DD format
  * **timeZone** `string` (nullable): Time zone
* **end** `object` (nullable): Updated end time (same structure as start)
* **attendees** `array` (nullable): Updated attendee list
* **location** `string` (nullable): Updated location

**Returns:**

* **id** `string`: Event ID
* **htmlLink** `string` (nullable): Link to event
* **summary** `string` (nullable): Event title
* **description** `string` (nullable): Event description
* **start** `object`: Start time details
* **end** `object`: End time details
* **updated** `string` (nullable): Last update timestamp

**Example Usage:**

```json
{
  "eventId": "abc123def456",
  "summary": "Updated Team Standup",
  "location": "Conference Room B"
}
```

***

### Delete Event

Delete a calendar event.

**Operation Type:** Mutation (Write)

**Parameters:**

* **calendarId** `string` (nullable): Calendar ID (defaults to `"primary"`)
* **eventId** `string` (required): Event ID to delete

**Returns:**

* **success** `boolean`: Whether the deletion was successful

**Example Usage:**

```json
{
  "eventId": "abc123def456"
}
```

***

## Common Use Cases

**Schedule Management:**

* List upcoming events across calendars to build daily or weekly agendas
* Create events programmatically from CRM deals or project milestones
* Sync meeting schedules with external tools and databases

**Event Automation:**

* Auto-create recurring events based on workflow triggers
* Update event details when project timelines change
* Clean up cancelled or outdated events automatically

**Attendee Coordination:**

* Add attendees to events from contact lists or team rosters
* Track RSVP statuses by querying event attendee details
* Manage room bookings and resource allocation through calendar events

