Google Calendar

Google Calendar logo

Google Calendar

Connect your Google Calendar data to Airweave

Overview

The Google Calendar connector allows you to sync data from Google Calendar into Airweave, making it available for search and retrieval by your agents.

Configuration

GoogleCalendarSource

Google Calendar source implementation (read-only).

Retrieves and yields Google Calendar objects (CalendarList entries, Calendars, Events, and Free/Busy data) as entity schemas defined in entities/google_calendar.py.

Authentication

This connector uses OAuth 2.0 with refresh token.

You can connect through the Airweave UI, which will guide you through the OAuth flow.

Entities

The following data models are available for this connector:

Schema for a Google Calendar object (the underlying calendar resource).

See: https://developers.google.com/calendar/api/v3/reference/calendars

FieldTypeDescription
calendar_idstrUnique identifier for the calendar.
summaryOptional[str]Title of the calendar.
descriptionOptional[str]Description of the calendar.
locationOptional[str]Geographic location of the calendar.
time_zoneOptional[str]The time zone of the calendar.

Schema for a CalendarList entry, i.e., how the user sees a calendar.

See: https://developers.google.com/calendar/api/v3/reference/calendarList

FieldTypeDescription
calendar_idstrUnique identifier for the calendar.
summaryOptional[str]Title of the calendar.
summary_overrideOptional[str]User-defined name for the calendar, if set.
color_idOptional[str]Color ID reference for the calendar.
background_colorOptional[str]Background color in HEX.
foreground_colorOptional[str]Foreground color in HEX.
hiddenboolWhether the calendar is hidden from the UI.
selectedboolIndicates if the calendar is selected in the UI.
access_roleOptional[str]The effective access role that the authenticated user has on the calendar. E.g., ‘owner’, ‘reader’, ‘writer’.
primaryboolFlag to indicate if this is the primary calendar.
deletedboolFlag to indicate if this calendar has been deleted.

Schema for a Google Calendar Event.

See: https://developers.google.com/calendar/api/v3/reference/events

FieldTypeDescription
event_idstrUnique identifier for the event.
statusOptional[str]Status of the event (e.g., ‘confirmed’).
html_linkOptional[str]An absolute link to the event in the Google Calendar UI.
created_atOptional[datetime]When the event was created.
updated_atOptional[datetime]When the event was last modified.
summaryOptional[str]Title of the event.
descriptionOptional[str]Description of the event.
locationOptional[str]Geographic location of the event.
color_idOptional[str]Color ID for this event.
start_datetimeOptional[datetime]Start datetime if the event has a specific datetime. (DateTime from ‘start’ if ‘dateTime’ is present.)
start_dateOptional[str]Start date if the event is an all-day event. (Date from ‘start’ if ‘date’ is present.)
end_datetimeOptional[datetime]End datetime if the event has a specific datetime. (DateTime from ‘end’ if ‘dateTime’ is present.)
end_dateOptional[str]End date if the event is an all-day event. (Date from ‘end’ if ‘date’ is present.)
recurrenceOptional[List[str]]List of RRULE, EXRULE, RDATE, EXDATE lines for recurring events.
recurring_event_idOptional[str]For recurring events, identifies the event ID of the recurring series.
organizerOptional[Dict[str, Any]]The organizer of the event. Usually contains ‘email’ and ‘displayName’.
creatorOptional[Dict[str, Any]]The creator of the event. Usually contains ‘email’ and ‘displayName’.
attendeesOptional[List[Dict[str, Any]]]The attendees of the event (each dict typically has ‘email’, ‘responseStatus’, etc.).
transparencyOptional[str]Specifies whether the event blocks time on the calendar (‘opaque’) or not (‘transparent’).
visibilityOptional[str]Visibility of the event (e.g., ‘default’, ‘public’).
conference_dataOptional[Dict[str, Any]]Conference data associated with the event, e.g., hangout or meet link.
event_typeOptional[str]Event type. E.g., ‘default’ or ‘focus’.

Schema for a FreeBusy response entity for a given calendar.

See: https://developers.google.com/calendar/api/v3/reference/freebusy

FieldTypeDescription
calendar_idstrID of the calendar for which free/busy is returned.
busyList[Dict[str, str]]List of time ranges during which this calendar is busy.

Integrate Airweave with Google APIs on localhost

This guide will walk you through connecting Google Workspace APIs to Airweave when running locally. Google provides extensive documentation on setting up your workspace. Below is a streamlined process for connecting Google APIs to Airweave.

  1. Create a Google Cloud project for your Google Workspace (if you don’t already have one)
  2. Enable the Google Workspace APIs for Gmail, Google Calendar, and Google Drive
  3. Configure Google OAuth 2.0 consent screen
  4. Under Audience, select Make external and add test users
  5. Under Data Access, add the following scopes:
https://www.googleapis.com/auth/docs
https://www.googleapis.com/auth/drive.photos.readonly
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/drive.readonly
https://www.googleapis.com/auth/drive.metadata
https://www.googleapis.com/auth/drive.metadata.readonly
https://www.googleapis.com/auth/gmail.readonly
https://www.googleapis.com/auth/calendar.events.public.readonly
https://www.googleapis.com/auth/calendar.freebusy
https://www.googleapis.com/auth/calendar.readonly
https://www.googleapis.com/auth/calendar.calendars.readonly
https://www.googleapis.com/auth/calendar.events.owned.readonly
https://www.googleapis.com/auth/calendar.events.readonly
  1. Create OAuth client ID credentials
  2. Under “Authorized redirect URIs,” click ”+ Add URI” and add the following URIs:
    http://localhost:8080/auth/callback/gmail
    http://localhost:8080/auth/callback/google_calendar
    http://localhost:8080/auth/callback/google_drive
  3. Locate the client ID and client secret from your newly created OAuth client. Add these credentials to the dev.integrations.yml file to enable Google API integration.