:py:mod:`airflow.providers.google.suite.hooks.calendar`
=======================================================

.. py:module:: airflow.providers.google.suite.hooks.calendar

.. autoapi-nested-parse::

   This module contains a Google Calendar API hook



Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.suite.hooks.calendar.GoogleCalendarHook




.. py:class:: GoogleCalendarHook(api_version, gcp_conn_id = 'google_cloud_default', delegate_to = None, impersonation_chain = None)

   Bases: :py:obj:`airflow.providers.google.common.hooks.base_google.GoogleBaseHook`

   Interact with Google Calendar via Google Cloud connection
   Reading and writing cells in Google Sheet:
   https://developers.google.com/calendar/api/v3/reference

   :param gcp_conn_id: The connection ID to use when fetching connection info.
   :param api_version: API Version. For example v3
   :param delegate_to: The account to impersonate using domain-wide delegation of authority,
       if any. For this to work, the service account making the request must have
       domain-wide delegation enabled.
   :param impersonation_chain: Optional service account to impersonate using short-term
       credentials, or chained list of accounts required to get the access_token
       of the last account in the list, which will be impersonated in the request.
       If set as a string, the account must grant the originating account
       the Service Account Token Creator IAM role.
       If set as a sequence, the identities from the list must grant
       Service Account Token Creator IAM role to the directly preceding identity, with first
       account from the list granting this role to the originating account.

   .. py:method:: get_conn(self)

      Retrieves connection to Google Calendar.

      :return: Google Calendar services object.
      :rtype: Any


   .. py:method:: get_events(self, calendar_id = 'primary', i_cal_uid = None, max_attendees = None, max_results = None, order_by = None, private_extended_property = None, q = None, shared_extended_property = None, show_deleted = False, show_hidden_invitation = False, single_events = False, sync_token = None, time_max = None, time_min = None, time_zone = None, updated_min = None)

      Gets events from Google Calendar from a single calendar_id
      https://developers.google.com/calendar/api/v3/reference/events/list

      :param calendar_id: The Google Calendar ID to interact with
      :param i_cal_uid: Optional. Specifies event ID in the ``iCalendar`` format in the response.
      :param max_attendees: Optional. If there are more than the specified number of attendees,
          only the participant is returned.
      :param max_results: Optional. Maximum number of events returned on one result page.
          Incomplete pages can be detected by a non-empty ``nextPageToken`` field in the response.
          By default the value is 250 events. The page size can never be larger than 2500 events
      :param order_by: Optional. Acceptable values are ``"startTime"`` or "updated"
      :param private_extended_property: Optional. Extended properties constraint specified as
          ``propertyName=value``. Matches only private properties. This parameter might be repeated
          multiple times to return events that match all given constraints.
      :param q: Optional. Free text search.
      :param shared_extended_property: Optional. Extended properties constraint specified as
          ``propertyName=value``. Matches only shared properties. This parameter might be repeated
          multiple times to return events that match all given constraints.
      :param show_deleted: Optional. False by default
      :param show_hidden_invitation: Optional. False by default
      :param single_events: Optional. False by default
      :param sync_token: Optional. Token obtained from the ``nextSyncToken`` field returned
      :param time_max: Optional. Upper bound (exclusive) for an event's start time to filter by.
          Default is no filter
      :param time_min: Optional. Lower bound (exclusive) for an event's end time to filter by.
          Default is no filter
      :param time_zone: Optional. Time zone used in response. Default is calendars time zone.
      :param updated_min: Optional. Lower bound for an event's last modification time
      :rtype: List


   .. py:method:: create_event(self, event, calendar_id = 'primary', conference_data_version = 0, max_attendees = None, send_notifications = False, send_updates = 'false', supports_attachments = False)

      Create event on the specified calendar
      https://developers.google.com/calendar/api/v3/reference/events/insert

      :param calendar_id: The Google Calendar ID to interact with
      :param conference_data_version: Optional. Version number of conference data
          supported by the API client.
      :param max_attendees: Optional. If there are more than the specified number of attendees,
          only the participant is returned.
      :param send_notifications: Optional. Default is False
      :param send_updates: Optional. Default is "false". Acceptable values as "all", "none",
          ``"externalOnly"``
          https://developers.google.com/calendar/api/v3/reference/events#resource
      :rtype: Dict



