: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()

      Retrieves connection to Google Calendar.

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


   .. py:method:: get_events(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(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



