<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="calendar_v3.html">Calendar API</a> . <a href="calendar_v3.events.html">events</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#delete">delete(calendarId, eventId, sendNotifications=None, sendUpdates=None)</a></code></p>
<p class="firstline">Deletes an event.</p>
<p class="toc_element">
  <code><a href="#get">get(calendarId, eventId, alwaysIncludeEmail=None, maxAttendees=None, timeZone=None)</a></code></p>
<p class="firstline">Returns an event.</p>
<p class="toc_element">
  <code><a href="#import_">import_(calendarId, body=None, conferenceDataVersion=None, supportsAttachments=None)</a></code></p>
<p class="firstline">Imports an event. This operation is used to add a private copy of an existing event to a calendar.</p>
<p class="toc_element">
  <code><a href="#insert">insert(calendarId, body=None, conferenceDataVersion=None, maxAttendees=None, sendNotifications=None, sendUpdates=None, supportsAttachments=None)</a></code></p>
<p class="firstline">Creates an event.</p>
<p class="toc_element">
  <code><a href="#instances">instances(calendarId, eventId, alwaysIncludeEmail=None, maxAttendees=None, maxResults=None, originalStart=None, pageToken=None, showDeleted=None, timeMax=None, timeMin=None, timeZone=None)</a></code></p>
<p class="firstline">Returns instances of the specified recurring event.</p>
<p class="toc_element">
  <code><a href="#instances_next">instances_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#list">list(calendarId, alwaysIncludeEmail=None, iCalUID=None, maxAttendees=None, maxResults=None, orderBy=None, pageToken=None, privateExtendedProperty=None, q=None, sharedExtendedProperty=None, showDeleted=None, showHiddenInvitations=None, singleEvents=None, syncToken=None, timeMax=None, timeMin=None, timeZone=None, updatedMin=None)</a></code></p>
<p class="firstline">Returns events on the specified calendar.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#move">move(calendarId, eventId, destination, sendNotifications=None, sendUpdates=None)</a></code></p>
<p class="firstline">Moves an event to another calendar, i.e. changes an event's organizer.</p>
<p class="toc_element">
  <code><a href="#patch">patch(calendarId, eventId, alwaysIncludeEmail=None, body=None, conferenceDataVersion=None, maxAttendees=None, sendNotifications=None, sendUpdates=None, supportsAttachments=None)</a></code></p>
<p class="firstline">Updates an event. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#quickAdd">quickAdd(calendarId, text, sendNotifications=None, sendUpdates=None)</a></code></p>
<p class="firstline">Creates an event based on a simple text string.</p>
<p class="toc_element">
  <code><a href="#update">update(calendarId, eventId, alwaysIncludeEmail=None, body=None, conferenceDataVersion=None, maxAttendees=None, sendNotifications=None, sendUpdates=None, supportsAttachments=None)</a></code></p>
<p class="firstline">Updates an event.</p>
<p class="toc_element">
  <code><a href="#watch">watch(calendarId, alwaysIncludeEmail=None, body=None, iCalUID=None, maxAttendees=None, maxResults=None, orderBy=None, pageToken=None, privateExtendedProperty=None, q=None, sharedExtendedProperty=None, showDeleted=None, showHiddenInvitations=None, singleEvents=None, syncToken=None, timeMax=None, timeMin=None, timeZone=None, updatedMin=None)</a></code></p>
<p class="firstline">Watch for changes to Events resources.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(calendarId, eventId, sendNotifications=None, sendUpdates=None)</code>
  <pre>Deletes an event.

Args:
  calendarId: string, Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the &quot;primary&quot; keyword. (required)
  eventId: string, Event identifier. (required)
  sendNotifications: boolean, Deprecated. Please use sendUpdates instead.

Whether to send notifications about the deletion of the event. Note that some emails might still be sent even if you set the value to false. The default is false.
  sendUpdates: string, Guests who should receive notifications about the deletion of the event.
    Allowed values
      all - Notifications are sent to all guests.
      externalOnly - Notifications are sent to non-Google Calendar guests only.
      none - No notifications are sent. For calendar migration tasks, consider using the Events.import method instead.
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(calendarId, eventId, alwaysIncludeEmail=None, maxAttendees=None, timeZone=None)</code>
  <pre>Returns an event.

Args:
  calendarId: string, Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the &quot;primary&quot; keyword. (required)
  eventId: string, Event identifier. (required)
  alwaysIncludeEmail: boolean, Deprecated and ignored. A value will always be returned in the email field for the organizer, creator and attendees, even if no real email address is available (i.e. a generated, non-working value will be provided).
  maxAttendees: integer, The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional.
  timeZone: string, Time zone used in the response. Optional. The default is the time zone of the calendar.

Returns:
  An object of the form:

    {
  &quot;anyoneCanAddSelf&quot;: false, # Whether anyone can invite themselves to the event (deprecated). Optional. The default is False.
  &quot;attachments&quot;: [ # File attachments for the event. Currently only Google Drive attachments are supported.
      # In order to modify attachments the supportsAttachments request parameter should be set to true.
      # There can be at most 25 attachments per event,
    {
      &quot;fileId&quot;: &quot;A String&quot;, # ID of the attached file. Read-only.
          # For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API.
      &quot;fileUrl&quot;: &quot;A String&quot;, # URL link to the attachment.
          # For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API.
          # Required when adding an attachment.
      &quot;iconLink&quot;: &quot;A String&quot;, # URL link to the attachment&#x27;s icon. Read-only.
      &quot;mimeType&quot;: &quot;A String&quot;, # Internet media type (MIME type) of the attachment.
      &quot;title&quot;: &quot;A String&quot;, # Attachment title.
    },
  ],
  &quot;attendees&quot;: [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
    {
      &quot;additionalGuests&quot;: 0, # Number of additional guests. Optional. The default is 0.
      &quot;comment&quot;: &quot;A String&quot;, # The attendee&#x27;s response comment. Optional.
      &quot;displayName&quot;: &quot;A String&quot;, # The attendee&#x27;s name, if available. Optional.
      &quot;email&quot;: &quot;A String&quot;, # The attendee&#x27;s email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
          # Required when adding an attendee.
      &quot;id&quot;: &quot;A String&quot;, # The attendee&#x27;s Profile ID, if available.
      &quot;optional&quot;: false, # Whether this is an optional attendee. Optional. The default is False.
      &quot;organizer&quot;: True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
      &quot;resource&quot;: false, # Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
      &quot;responseStatus&quot;: &quot;A String&quot;, # The attendee&#x27;s response status. Possible values are:
          # - &quot;needsAction&quot; - The attendee has not responded to the invitation.
          # - &quot;declined&quot; - The attendee has declined the invitation.
          # - &quot;tentative&quot; - The attendee has tentatively accepted the invitation.
          # - &quot;accepted&quot; - The attendee has accepted the invitation.
      &quot;self&quot;: false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
    },
  ],
  &quot;attendeesOmitted&quot;: false, # Whether attendees may have been omitted from the event&#x27;s representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant&#x27;s response. Optional. The default is False.
  &quot;colorId&quot;: &quot;A String&quot;, # The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the  colors endpoint). Optional.
  &quot;conferenceData&quot;: { # The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests.
    &quot;conferenceId&quot;: &quot;A String&quot;, # The ID of the conference.
        # Can be used by developers to keep track of conferences, should not be displayed to users.
        # The ID value is formed differently for each conference solution type:
        # - eventHangout: ID is not set. (This conference type is deprecated.)
        # - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.)
        # - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc.
        # - addOn: ID is defined by the third-party provider.  Optional.
    &quot;conferenceSolution&quot;: { # The conference solution, such as Google Meet.
        # Unset for a conference with a failed create request.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;iconUri&quot;: &quot;A String&quot;, # The user-visible icon for this solution.
      &quot;key&quot;: { # The key which can uniquely identify the conference solution for this event.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;name&quot;: &quot;A String&quot;, # The user-visible name of this solution. Not localized.
    },
    &quot;createRequest&quot;: { # A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;conferenceSolutionKey&quot;: { # The conference solution, such as Hangouts or Google Meet.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;requestId&quot;: &quot;A String&quot;, # The client-generated unique ID for this request.
          # Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored.
      &quot;status&quot;: { # The status of the conference create request.
        &quot;statusCode&quot;: &quot;A String&quot;, # The current status of the conference create request. Read-only.
            # The possible values are:
            # - &quot;pending&quot;: the conference create request is still being processed.
            # - &quot;success&quot;: the conference create request succeeded, the entry points are populated.
            # - &quot;failure&quot;: the conference create request failed, there are no entry points.
      },
    },
    &quot;entryPoints&quot;: [ # Information about individual conference entry points, such as URLs or phone numbers.
        # All of them must belong to the same conference.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      {
        &quot;accessCode&quot;: &quot;A String&quot;, # The access code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;entryPointFeatures&quot;: [ # Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point.
          &quot;A String&quot;,
        ],
        &quot;entryPointType&quot;: &quot;A String&quot;, # The type of the conference entry point.
            # Possible values are:
            # - &quot;video&quot; - joining a conference over HTTP. A conference can have zero or one video entry point.
            # - &quot;phone&quot; - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
            # - &quot;sip&quot; - joining a conference over SIP. A conference can have zero or one sip entry point.
            # - &quot;more&quot; - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference.
        &quot;label&quot;: &quot;A String&quot;, # The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters.
            # Examples:
            # - for video: meet.google.com/aaa-bbbb-ccc
            # - for phone: +1 123 268 2601
            # - for sip: 12345678@altostrat.com
            # - for more: should not be filled
            # Optional.
        &quot;meetingCode&quot;: &quot;A String&quot;, # The meeting code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;passcode&quot;: &quot;A String&quot;, # The passcode to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
        &quot;password&quot;: &quot;A String&quot;, # The password to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;pin&quot;: &quot;A String&quot;, # The PIN to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: &quot;SE&quot; for Sweden.
            # Calendar backend will populate this field only for EntryPointType.PHONE.
        &quot;uri&quot;: &quot;A String&quot;, # The URI of the entry point. The maximum length is 1300 characters.
            # Format:
            # - for video, http: or https: schema is required.
            # - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234).
            # - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com.
            # - for more, http: or https: schema is required.
      },
    ],
    &quot;notes&quot;: &quot;A String&quot;, # Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional.
    &quot;parameters&quot;: { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
      &quot;addOnParameters&quot;: { # Additional add-on specific data.
        &quot;parameters&quot;: {
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    },
    &quot;signature&quot;: &quot;A String&quot;, # The signature of the conference data.
        # Generated on server side. Must be preserved while copying the conference data between events, otherwise the conference data will not be copied.
        # Unset for a conference with a failed create request.
        # Optional for a conference with a pending create request.
  },
  &quot;created&quot;: &quot;A String&quot;, # Creation time of the event (as a RFC3339 timestamp). Read-only.
  &quot;creator&quot;: { # The creator of the event. Read-only.
    &quot;displayName&quot;: &quot;A String&quot;, # The creator&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The creator&#x27;s email address, if available.
    &quot;id&quot;: &quot;A String&quot;, # The creator&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;description&quot;: &quot;A String&quot;, # Description of the event. Can contain HTML. Optional.
  &quot;end&quot;: { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;endTimeUnspecified&quot;: false, # Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;eventType&quot;: &quot;default&quot;, # Specific type of the event. Read-only. Possible values are:
      # - &quot;default&quot; - A regular event or not further specified.
      # - &quot;outOfOffice&quot; - An out-of-office event.
  &quot;extendedProperties&quot;: { # Extended properties of the event.
    &quot;private&quot;: { # Properties that are private to the copy of the event that appears on this calendar.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the private property and the corresponding value.
    },
    &quot;shared&quot;: { # Properties that are shared between copies of the event on other attendees&#x27; calendars.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the shared property and the corresponding value.
    },
  },
  &quot;gadget&quot;: { # A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
    &quot;display&quot;: &quot;A String&quot;, # The gadget&#x27;s display mode. Deprecated. Possible values are:
        # - &quot;icon&quot; - The gadget displays next to the event&#x27;s title in the calendar view.
        # - &quot;chip&quot; - The gadget displays when the event is clicked.
    &quot;height&quot;: 42, # The gadget&#x27;s height in pixels. The height must be an integer greater than 0. Optional. Deprecated.
    &quot;iconLink&quot;: &quot;A String&quot;, # The gadget&#x27;s icon URL. The URL scheme must be HTTPS. Deprecated.
    &quot;link&quot;: &quot;A String&quot;, # The gadget&#x27;s URL. The URL scheme must be HTTPS. Deprecated.
    &quot;preferences&quot;: { # Preferences.
      &quot;a_key&quot;: &quot;A String&quot;, # The preference name and corresponding value.
    },
    &quot;title&quot;: &quot;A String&quot;, # The gadget&#x27;s title. Deprecated.
    &quot;type&quot;: &quot;A String&quot;, # The gadget&#x27;s type. Deprecated.
    &quot;width&quot;: 42, # The gadget&#x27;s width in pixels. The width must be an integer greater than 0. Optional. Deprecated.
  },
  &quot;guestsCanInviteOthers&quot;: true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
  &quot;guestsCanModify&quot;: false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
  &quot;guestsCanSeeOtherGuests&quot;: true, # Whether attendees other than the organizer can see who the event&#x27;s attendees are. Optional. The default is True.
  &quot;hangoutLink&quot;: &quot;A String&quot;, # An absolute link to the Google Hangout associated with this event. Read-only.
  &quot;htmlLink&quot;: &quot;A String&quot;, # An absolute link to this event in the Google Calendar Web UI. Read-only.
  &quot;iCalUID&quot;: &quot;A String&quot;, # Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;id&quot;: &quot;A String&quot;, # Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
      # - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938
      # - the length of the ID must be between 5 and 1024 characters
      # - the ID must be unique per calendar  Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.
      # If you do not specify an ID, it will be automatically generated by the server.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;kind&quot;: &quot;calendar#event&quot;, # Type of the resource (&quot;calendar#event&quot;).
  &quot;location&quot;: &quot;A String&quot;, # Geographic location of the event as free-form text. Optional.
  &quot;locked&quot;: false, # Whether this is a locked event copy where no changes can be made to the main event fields &quot;summary&quot;, &quot;description&quot;, &quot;location&quot;, &quot;start&quot;, &quot;end&quot; or &quot;recurrence&quot;. The default is False. Read-Only.
  &quot;organizer&quot;: { # The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
    &quot;displayName&quot;: &quot;A String&quot;, # The organizer&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The organizer&#x27;s email address, if available. It must be a valid email address as per RFC5322.
    &quot;id&quot;: &quot;A String&quot;, # The organizer&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;originalStartTime&quot;: { # For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;privateCopy&quot;: false, # If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False.
  &quot;recurrence&quot;: [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.
    &quot;A String&quot;,
  ],
  &quot;recurringEventId&quot;: &quot;A String&quot;, # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
  &quot;reminders&quot;: { # Information about the event&#x27;s reminders for the authenticated user.
    &quot;overrides&quot;: [ # If the event doesn&#x27;t use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.
      {
        &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
            # - &quot;email&quot; - Reminders are sent via email.
            # - &quot;popup&quot; - Reminders are sent via a UI popup.
            # Required when adding a reminder.
        &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
            # Required when adding a reminder.
      },
    ],
    &quot;useDefault&quot;: True or False, # Whether the default reminders of the calendar apply to the event.
  },
  &quot;sequence&quot;: 42, # Sequence number as per iCalendar.
  &quot;source&quot;: { # Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
    &quot;title&quot;: &quot;A String&quot;, # Title of the source; for example a title of a web page or an email subject.
    &quot;url&quot;: &quot;A String&quot;, # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
  },
  &quot;start&quot;: { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;status&quot;: &quot;A String&quot;, # Status of the event. Optional. Possible values are:
      # - &quot;confirmed&quot; - The event is confirmed. This is the default status.
      # - &quot;tentative&quot; - The event is tentatively confirmed.
      # - &quot;cancelled&quot; - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them.
      # A cancelled status represents two different states depending on the event type:
      # - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event.
      # Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty.
      # - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely.
      # Deleted events are only guaranteed to have the id field populated.   On the organizer&#x27;s calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details.
      # If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated.
  &quot;summary&quot;: &quot;A String&quot;, # Title of the event.
  &quot;transparency&quot;: &quot;opaque&quot;, # Whether the event blocks time on the calendar. Optional. Possible values are:
      # - &quot;opaque&quot; - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
      # - &quot;transparent&quot; - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the event (as a RFC3339 timestamp). Read-only.
  &quot;visibility&quot;: &quot;default&quot;, # Visibility of the event. Optional. Possible values are:
      # - &quot;default&quot; - Uses the default visibility for events on the calendar. This is the default value.
      # - &quot;public&quot; - The event is public and event details are visible to all readers of the calendar.
      # - &quot;private&quot; - The event is private and only event attendees may view event details.
      # - &quot;confidential&quot; - The event is private. This value is provided for compatibility reasons.
}</pre>
</div>

<div class="method">
    <code class="details" id="import_">import_(calendarId, body=None, conferenceDataVersion=None, supportsAttachments=None)</code>
  <pre>Imports an event. This operation is used to add a private copy of an existing event to a calendar.

Args:
  calendarId: string, Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the &quot;primary&quot; keyword. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;anyoneCanAddSelf&quot;: false, # Whether anyone can invite themselves to the event (deprecated). Optional. The default is False.
  &quot;attachments&quot;: [ # File attachments for the event. Currently only Google Drive attachments are supported.
      # In order to modify attachments the supportsAttachments request parameter should be set to true.
      # There can be at most 25 attachments per event,
    {
      &quot;fileId&quot;: &quot;A String&quot;, # ID of the attached file. Read-only.
          # For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API.
      &quot;fileUrl&quot;: &quot;A String&quot;, # URL link to the attachment.
          # For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API.
          # Required when adding an attachment.
      &quot;iconLink&quot;: &quot;A String&quot;, # URL link to the attachment&#x27;s icon. Read-only.
      &quot;mimeType&quot;: &quot;A String&quot;, # Internet media type (MIME type) of the attachment.
      &quot;title&quot;: &quot;A String&quot;, # Attachment title.
    },
  ],
  &quot;attendees&quot;: [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
    {
      &quot;additionalGuests&quot;: 0, # Number of additional guests. Optional. The default is 0.
      &quot;comment&quot;: &quot;A String&quot;, # The attendee&#x27;s response comment. Optional.
      &quot;displayName&quot;: &quot;A String&quot;, # The attendee&#x27;s name, if available. Optional.
      &quot;email&quot;: &quot;A String&quot;, # The attendee&#x27;s email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
          # Required when adding an attendee.
      &quot;id&quot;: &quot;A String&quot;, # The attendee&#x27;s Profile ID, if available.
      &quot;optional&quot;: false, # Whether this is an optional attendee. Optional. The default is False.
      &quot;organizer&quot;: True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
      &quot;resource&quot;: false, # Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
      &quot;responseStatus&quot;: &quot;A String&quot;, # The attendee&#x27;s response status. Possible values are:
          # - &quot;needsAction&quot; - The attendee has not responded to the invitation.
          # - &quot;declined&quot; - The attendee has declined the invitation.
          # - &quot;tentative&quot; - The attendee has tentatively accepted the invitation.
          # - &quot;accepted&quot; - The attendee has accepted the invitation.
      &quot;self&quot;: false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
    },
  ],
  &quot;attendeesOmitted&quot;: false, # Whether attendees may have been omitted from the event&#x27;s representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant&#x27;s response. Optional. The default is False.
  &quot;colorId&quot;: &quot;A String&quot;, # The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the  colors endpoint). Optional.
  &quot;conferenceData&quot;: { # The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests.
    &quot;conferenceId&quot;: &quot;A String&quot;, # The ID of the conference.
        # Can be used by developers to keep track of conferences, should not be displayed to users.
        # The ID value is formed differently for each conference solution type:
        # - eventHangout: ID is not set. (This conference type is deprecated.)
        # - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.)
        # - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc.
        # - addOn: ID is defined by the third-party provider.  Optional.
    &quot;conferenceSolution&quot;: { # The conference solution, such as Google Meet.
        # Unset for a conference with a failed create request.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;iconUri&quot;: &quot;A String&quot;, # The user-visible icon for this solution.
      &quot;key&quot;: { # The key which can uniquely identify the conference solution for this event.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;name&quot;: &quot;A String&quot;, # The user-visible name of this solution. Not localized.
    },
    &quot;createRequest&quot;: { # A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;conferenceSolutionKey&quot;: { # The conference solution, such as Hangouts or Google Meet.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;requestId&quot;: &quot;A String&quot;, # The client-generated unique ID for this request.
          # Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored.
      &quot;status&quot;: { # The status of the conference create request.
        &quot;statusCode&quot;: &quot;A String&quot;, # The current status of the conference create request. Read-only.
            # The possible values are:
            # - &quot;pending&quot;: the conference create request is still being processed.
            # - &quot;success&quot;: the conference create request succeeded, the entry points are populated.
            # - &quot;failure&quot;: the conference create request failed, there are no entry points.
      },
    },
    &quot;entryPoints&quot;: [ # Information about individual conference entry points, such as URLs or phone numbers.
        # All of them must belong to the same conference.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      {
        &quot;accessCode&quot;: &quot;A String&quot;, # The access code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;entryPointFeatures&quot;: [ # Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point.
          &quot;A String&quot;,
        ],
        &quot;entryPointType&quot;: &quot;A String&quot;, # The type of the conference entry point.
            # Possible values are:
            # - &quot;video&quot; - joining a conference over HTTP. A conference can have zero or one video entry point.
            # - &quot;phone&quot; - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
            # - &quot;sip&quot; - joining a conference over SIP. A conference can have zero or one sip entry point.
            # - &quot;more&quot; - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference.
        &quot;label&quot;: &quot;A String&quot;, # The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters.
            # Examples:
            # - for video: meet.google.com/aaa-bbbb-ccc
            # - for phone: +1 123 268 2601
            # - for sip: 12345678@altostrat.com
            # - for more: should not be filled
            # Optional.
        &quot;meetingCode&quot;: &quot;A String&quot;, # The meeting code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;passcode&quot;: &quot;A String&quot;, # The passcode to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
        &quot;password&quot;: &quot;A String&quot;, # The password to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;pin&quot;: &quot;A String&quot;, # The PIN to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: &quot;SE&quot; for Sweden.
            # Calendar backend will populate this field only for EntryPointType.PHONE.
        &quot;uri&quot;: &quot;A String&quot;, # The URI of the entry point. The maximum length is 1300 characters.
            # Format:
            # - for video, http: or https: schema is required.
            # - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234).
            # - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com.
            # - for more, http: or https: schema is required.
      },
    ],
    &quot;notes&quot;: &quot;A String&quot;, # Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional.
    &quot;parameters&quot;: { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
      &quot;addOnParameters&quot;: { # Additional add-on specific data.
        &quot;parameters&quot;: {
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    },
    &quot;signature&quot;: &quot;A String&quot;, # The signature of the conference data.
        # Generated on server side. Must be preserved while copying the conference data between events, otherwise the conference data will not be copied.
        # Unset for a conference with a failed create request.
        # Optional for a conference with a pending create request.
  },
  &quot;created&quot;: &quot;A String&quot;, # Creation time of the event (as a RFC3339 timestamp). Read-only.
  &quot;creator&quot;: { # The creator of the event. Read-only.
    &quot;displayName&quot;: &quot;A String&quot;, # The creator&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The creator&#x27;s email address, if available.
    &quot;id&quot;: &quot;A String&quot;, # The creator&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;description&quot;: &quot;A String&quot;, # Description of the event. Can contain HTML. Optional.
  &quot;end&quot;: { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;endTimeUnspecified&quot;: false, # Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;eventType&quot;: &quot;default&quot;, # Specific type of the event. Read-only. Possible values are:
      # - &quot;default&quot; - A regular event or not further specified.
      # - &quot;outOfOffice&quot; - An out-of-office event.
  &quot;extendedProperties&quot;: { # Extended properties of the event.
    &quot;private&quot;: { # Properties that are private to the copy of the event that appears on this calendar.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the private property and the corresponding value.
    },
    &quot;shared&quot;: { # Properties that are shared between copies of the event on other attendees&#x27; calendars.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the shared property and the corresponding value.
    },
  },
  &quot;gadget&quot;: { # A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
    &quot;display&quot;: &quot;A String&quot;, # The gadget&#x27;s display mode. Deprecated. Possible values are:
        # - &quot;icon&quot; - The gadget displays next to the event&#x27;s title in the calendar view.
        # - &quot;chip&quot; - The gadget displays when the event is clicked.
    &quot;height&quot;: 42, # The gadget&#x27;s height in pixels. The height must be an integer greater than 0. Optional. Deprecated.
    &quot;iconLink&quot;: &quot;A String&quot;, # The gadget&#x27;s icon URL. The URL scheme must be HTTPS. Deprecated.
    &quot;link&quot;: &quot;A String&quot;, # The gadget&#x27;s URL. The URL scheme must be HTTPS. Deprecated.
    &quot;preferences&quot;: { # Preferences.
      &quot;a_key&quot;: &quot;A String&quot;, # The preference name and corresponding value.
    },
    &quot;title&quot;: &quot;A String&quot;, # The gadget&#x27;s title. Deprecated.
    &quot;type&quot;: &quot;A String&quot;, # The gadget&#x27;s type. Deprecated.
    &quot;width&quot;: 42, # The gadget&#x27;s width in pixels. The width must be an integer greater than 0. Optional. Deprecated.
  },
  &quot;guestsCanInviteOthers&quot;: true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
  &quot;guestsCanModify&quot;: false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
  &quot;guestsCanSeeOtherGuests&quot;: true, # Whether attendees other than the organizer can see who the event&#x27;s attendees are. Optional. The default is True.
  &quot;hangoutLink&quot;: &quot;A String&quot;, # An absolute link to the Google Hangout associated with this event. Read-only.
  &quot;htmlLink&quot;: &quot;A String&quot;, # An absolute link to this event in the Google Calendar Web UI. Read-only.
  &quot;iCalUID&quot;: &quot;A String&quot;, # Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;id&quot;: &quot;A String&quot;, # Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
      # - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938
      # - the length of the ID must be between 5 and 1024 characters
      # - the ID must be unique per calendar  Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.
      # If you do not specify an ID, it will be automatically generated by the server.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;kind&quot;: &quot;calendar#event&quot;, # Type of the resource (&quot;calendar#event&quot;).
  &quot;location&quot;: &quot;A String&quot;, # Geographic location of the event as free-form text. Optional.
  &quot;locked&quot;: false, # Whether this is a locked event copy where no changes can be made to the main event fields &quot;summary&quot;, &quot;description&quot;, &quot;location&quot;, &quot;start&quot;, &quot;end&quot; or &quot;recurrence&quot;. The default is False. Read-Only.
  &quot;organizer&quot;: { # The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
    &quot;displayName&quot;: &quot;A String&quot;, # The organizer&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The organizer&#x27;s email address, if available. It must be a valid email address as per RFC5322.
    &quot;id&quot;: &quot;A String&quot;, # The organizer&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;originalStartTime&quot;: { # For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;privateCopy&quot;: false, # If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False.
  &quot;recurrence&quot;: [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.
    &quot;A String&quot;,
  ],
  &quot;recurringEventId&quot;: &quot;A String&quot;, # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
  &quot;reminders&quot;: { # Information about the event&#x27;s reminders for the authenticated user.
    &quot;overrides&quot;: [ # If the event doesn&#x27;t use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.
      {
        &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
            # - &quot;email&quot; - Reminders are sent via email.
            # - &quot;popup&quot; - Reminders are sent via a UI popup.
            # Required when adding a reminder.
        &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
            # Required when adding a reminder.
      },
    ],
    &quot;useDefault&quot;: True or False, # Whether the default reminders of the calendar apply to the event.
  },
  &quot;sequence&quot;: 42, # Sequence number as per iCalendar.
  &quot;source&quot;: { # Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
    &quot;title&quot;: &quot;A String&quot;, # Title of the source; for example a title of a web page or an email subject.
    &quot;url&quot;: &quot;A String&quot;, # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
  },
  &quot;start&quot;: { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;status&quot;: &quot;A String&quot;, # Status of the event. Optional. Possible values are:
      # - &quot;confirmed&quot; - The event is confirmed. This is the default status.
      # - &quot;tentative&quot; - The event is tentatively confirmed.
      # - &quot;cancelled&quot; - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them.
      # A cancelled status represents two different states depending on the event type:
      # - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event.
      # Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty.
      # - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely.
      # Deleted events are only guaranteed to have the id field populated.   On the organizer&#x27;s calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details.
      # If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated.
  &quot;summary&quot;: &quot;A String&quot;, # Title of the event.
  &quot;transparency&quot;: &quot;opaque&quot;, # Whether the event blocks time on the calendar. Optional. Possible values are:
      # - &quot;opaque&quot; - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
      # - &quot;transparent&quot; - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the event (as a RFC3339 timestamp). Read-only.
  &quot;visibility&quot;: &quot;default&quot;, # Visibility of the event. Optional. Possible values are:
      # - &quot;default&quot; - Uses the default visibility for events on the calendar. This is the default value.
      # - &quot;public&quot; - The event is public and event details are visible to all readers of the calendar.
      # - &quot;private&quot; - The event is private and only event attendees may view event details.
      # - &quot;confidential&quot; - The event is private. This value is provided for compatibility reasons.
}

  conferenceDataVersion: integer, Version number of conference data supported by the API client. Version 0 assumes no conference data support and ignores conference data in the event&#x27;s body. Version 1 enables support for copying of ConferenceData as well as for creating new conferences using the createRequest field of conferenceData. The default is 0.
  supportsAttachments: boolean, Whether API client performing operation supports event attachments. Optional. The default is False.

Returns:
  An object of the form:

    {
  &quot;anyoneCanAddSelf&quot;: false, # Whether anyone can invite themselves to the event (deprecated). Optional. The default is False.
  &quot;attachments&quot;: [ # File attachments for the event. Currently only Google Drive attachments are supported.
      # In order to modify attachments the supportsAttachments request parameter should be set to true.
      # There can be at most 25 attachments per event,
    {
      &quot;fileId&quot;: &quot;A String&quot;, # ID of the attached file. Read-only.
          # For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API.
      &quot;fileUrl&quot;: &quot;A String&quot;, # URL link to the attachment.
          # For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API.
          # Required when adding an attachment.
      &quot;iconLink&quot;: &quot;A String&quot;, # URL link to the attachment&#x27;s icon. Read-only.
      &quot;mimeType&quot;: &quot;A String&quot;, # Internet media type (MIME type) of the attachment.
      &quot;title&quot;: &quot;A String&quot;, # Attachment title.
    },
  ],
  &quot;attendees&quot;: [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
    {
      &quot;additionalGuests&quot;: 0, # Number of additional guests. Optional. The default is 0.
      &quot;comment&quot;: &quot;A String&quot;, # The attendee&#x27;s response comment. Optional.
      &quot;displayName&quot;: &quot;A String&quot;, # The attendee&#x27;s name, if available. Optional.
      &quot;email&quot;: &quot;A String&quot;, # The attendee&#x27;s email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
          # Required when adding an attendee.
      &quot;id&quot;: &quot;A String&quot;, # The attendee&#x27;s Profile ID, if available.
      &quot;optional&quot;: false, # Whether this is an optional attendee. Optional. The default is False.
      &quot;organizer&quot;: True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
      &quot;resource&quot;: false, # Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
      &quot;responseStatus&quot;: &quot;A String&quot;, # The attendee&#x27;s response status. Possible values are:
          # - &quot;needsAction&quot; - The attendee has not responded to the invitation.
          # - &quot;declined&quot; - The attendee has declined the invitation.
          # - &quot;tentative&quot; - The attendee has tentatively accepted the invitation.
          # - &quot;accepted&quot; - The attendee has accepted the invitation.
      &quot;self&quot;: false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
    },
  ],
  &quot;attendeesOmitted&quot;: false, # Whether attendees may have been omitted from the event&#x27;s representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant&#x27;s response. Optional. The default is False.
  &quot;colorId&quot;: &quot;A String&quot;, # The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the  colors endpoint). Optional.
  &quot;conferenceData&quot;: { # The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests.
    &quot;conferenceId&quot;: &quot;A String&quot;, # The ID of the conference.
        # Can be used by developers to keep track of conferences, should not be displayed to users.
        # The ID value is formed differently for each conference solution type:
        # - eventHangout: ID is not set. (This conference type is deprecated.)
        # - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.)
        # - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc.
        # - addOn: ID is defined by the third-party provider.  Optional.
    &quot;conferenceSolution&quot;: { # The conference solution, such as Google Meet.
        # Unset for a conference with a failed create request.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;iconUri&quot;: &quot;A String&quot;, # The user-visible icon for this solution.
      &quot;key&quot;: { # The key which can uniquely identify the conference solution for this event.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;name&quot;: &quot;A String&quot;, # The user-visible name of this solution. Not localized.
    },
    &quot;createRequest&quot;: { # A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;conferenceSolutionKey&quot;: { # The conference solution, such as Hangouts or Google Meet.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;requestId&quot;: &quot;A String&quot;, # The client-generated unique ID for this request.
          # Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored.
      &quot;status&quot;: { # The status of the conference create request.
        &quot;statusCode&quot;: &quot;A String&quot;, # The current status of the conference create request. Read-only.
            # The possible values are:
            # - &quot;pending&quot;: the conference create request is still being processed.
            # - &quot;success&quot;: the conference create request succeeded, the entry points are populated.
            # - &quot;failure&quot;: the conference create request failed, there are no entry points.
      },
    },
    &quot;entryPoints&quot;: [ # Information about individual conference entry points, such as URLs or phone numbers.
        # All of them must belong to the same conference.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      {
        &quot;accessCode&quot;: &quot;A String&quot;, # The access code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;entryPointFeatures&quot;: [ # Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point.
          &quot;A String&quot;,
        ],
        &quot;entryPointType&quot;: &quot;A String&quot;, # The type of the conference entry point.
            # Possible values are:
            # - &quot;video&quot; - joining a conference over HTTP. A conference can have zero or one video entry point.
            # - &quot;phone&quot; - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
            # - &quot;sip&quot; - joining a conference over SIP. A conference can have zero or one sip entry point.
            # - &quot;more&quot; - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference.
        &quot;label&quot;: &quot;A String&quot;, # The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters.
            # Examples:
            # - for video: meet.google.com/aaa-bbbb-ccc
            # - for phone: +1 123 268 2601
            # - for sip: 12345678@altostrat.com
            # - for more: should not be filled
            # Optional.
        &quot;meetingCode&quot;: &quot;A String&quot;, # The meeting code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;passcode&quot;: &quot;A String&quot;, # The passcode to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
        &quot;password&quot;: &quot;A String&quot;, # The password to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;pin&quot;: &quot;A String&quot;, # The PIN to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: &quot;SE&quot; for Sweden.
            # Calendar backend will populate this field only for EntryPointType.PHONE.
        &quot;uri&quot;: &quot;A String&quot;, # The URI of the entry point. The maximum length is 1300 characters.
            # Format:
            # - for video, http: or https: schema is required.
            # - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234).
            # - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com.
            # - for more, http: or https: schema is required.
      },
    ],
    &quot;notes&quot;: &quot;A String&quot;, # Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional.
    &quot;parameters&quot;: { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
      &quot;addOnParameters&quot;: { # Additional add-on specific data.
        &quot;parameters&quot;: {
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    },
    &quot;signature&quot;: &quot;A String&quot;, # The signature of the conference data.
        # Generated on server side. Must be preserved while copying the conference data between events, otherwise the conference data will not be copied.
        # Unset for a conference with a failed create request.
        # Optional for a conference with a pending create request.
  },
  &quot;created&quot;: &quot;A String&quot;, # Creation time of the event (as a RFC3339 timestamp). Read-only.
  &quot;creator&quot;: { # The creator of the event. Read-only.
    &quot;displayName&quot;: &quot;A String&quot;, # The creator&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The creator&#x27;s email address, if available.
    &quot;id&quot;: &quot;A String&quot;, # The creator&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;description&quot;: &quot;A String&quot;, # Description of the event. Can contain HTML. Optional.
  &quot;end&quot;: { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;endTimeUnspecified&quot;: false, # Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;eventType&quot;: &quot;default&quot;, # Specific type of the event. Read-only. Possible values are:
      # - &quot;default&quot; - A regular event or not further specified.
      # - &quot;outOfOffice&quot; - An out-of-office event.
  &quot;extendedProperties&quot;: { # Extended properties of the event.
    &quot;private&quot;: { # Properties that are private to the copy of the event that appears on this calendar.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the private property and the corresponding value.
    },
    &quot;shared&quot;: { # Properties that are shared between copies of the event on other attendees&#x27; calendars.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the shared property and the corresponding value.
    },
  },
  &quot;gadget&quot;: { # A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
    &quot;display&quot;: &quot;A String&quot;, # The gadget&#x27;s display mode. Deprecated. Possible values are:
        # - &quot;icon&quot; - The gadget displays next to the event&#x27;s title in the calendar view.
        # - &quot;chip&quot; - The gadget displays when the event is clicked.
    &quot;height&quot;: 42, # The gadget&#x27;s height in pixels. The height must be an integer greater than 0. Optional. Deprecated.
    &quot;iconLink&quot;: &quot;A String&quot;, # The gadget&#x27;s icon URL. The URL scheme must be HTTPS. Deprecated.
    &quot;link&quot;: &quot;A String&quot;, # The gadget&#x27;s URL. The URL scheme must be HTTPS. Deprecated.
    &quot;preferences&quot;: { # Preferences.
      &quot;a_key&quot;: &quot;A String&quot;, # The preference name and corresponding value.
    },
    &quot;title&quot;: &quot;A String&quot;, # The gadget&#x27;s title. Deprecated.
    &quot;type&quot;: &quot;A String&quot;, # The gadget&#x27;s type. Deprecated.
    &quot;width&quot;: 42, # The gadget&#x27;s width in pixels. The width must be an integer greater than 0. Optional. Deprecated.
  },
  &quot;guestsCanInviteOthers&quot;: true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
  &quot;guestsCanModify&quot;: false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
  &quot;guestsCanSeeOtherGuests&quot;: true, # Whether attendees other than the organizer can see who the event&#x27;s attendees are. Optional. The default is True.
  &quot;hangoutLink&quot;: &quot;A String&quot;, # An absolute link to the Google Hangout associated with this event. Read-only.
  &quot;htmlLink&quot;: &quot;A String&quot;, # An absolute link to this event in the Google Calendar Web UI. Read-only.
  &quot;iCalUID&quot;: &quot;A String&quot;, # Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;id&quot;: &quot;A String&quot;, # Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
      # - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938
      # - the length of the ID must be between 5 and 1024 characters
      # - the ID must be unique per calendar  Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.
      # If you do not specify an ID, it will be automatically generated by the server.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;kind&quot;: &quot;calendar#event&quot;, # Type of the resource (&quot;calendar#event&quot;).
  &quot;location&quot;: &quot;A String&quot;, # Geographic location of the event as free-form text. Optional.
  &quot;locked&quot;: false, # Whether this is a locked event copy where no changes can be made to the main event fields &quot;summary&quot;, &quot;description&quot;, &quot;location&quot;, &quot;start&quot;, &quot;end&quot; or &quot;recurrence&quot;. The default is False. Read-Only.
  &quot;organizer&quot;: { # The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
    &quot;displayName&quot;: &quot;A String&quot;, # The organizer&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The organizer&#x27;s email address, if available. It must be a valid email address as per RFC5322.
    &quot;id&quot;: &quot;A String&quot;, # The organizer&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;originalStartTime&quot;: { # For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;privateCopy&quot;: false, # If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False.
  &quot;recurrence&quot;: [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.
    &quot;A String&quot;,
  ],
  &quot;recurringEventId&quot;: &quot;A String&quot;, # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
  &quot;reminders&quot;: { # Information about the event&#x27;s reminders for the authenticated user.
    &quot;overrides&quot;: [ # If the event doesn&#x27;t use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.
      {
        &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
            # - &quot;email&quot; - Reminders are sent via email.
            # - &quot;popup&quot; - Reminders are sent via a UI popup.
            # Required when adding a reminder.
        &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
            # Required when adding a reminder.
      },
    ],
    &quot;useDefault&quot;: True or False, # Whether the default reminders of the calendar apply to the event.
  },
  &quot;sequence&quot;: 42, # Sequence number as per iCalendar.
  &quot;source&quot;: { # Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
    &quot;title&quot;: &quot;A String&quot;, # Title of the source; for example a title of a web page or an email subject.
    &quot;url&quot;: &quot;A String&quot;, # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
  },
  &quot;start&quot;: { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;status&quot;: &quot;A String&quot;, # Status of the event. Optional. Possible values are:
      # - &quot;confirmed&quot; - The event is confirmed. This is the default status.
      # - &quot;tentative&quot; - The event is tentatively confirmed.
      # - &quot;cancelled&quot; - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them.
      # A cancelled status represents two different states depending on the event type:
      # - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event.
      # Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty.
      # - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely.
      # Deleted events are only guaranteed to have the id field populated.   On the organizer&#x27;s calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details.
      # If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated.
  &quot;summary&quot;: &quot;A String&quot;, # Title of the event.
  &quot;transparency&quot;: &quot;opaque&quot;, # Whether the event blocks time on the calendar. Optional. Possible values are:
      # - &quot;opaque&quot; - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
      # - &quot;transparent&quot; - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the event (as a RFC3339 timestamp). Read-only.
  &quot;visibility&quot;: &quot;default&quot;, # Visibility of the event. Optional. Possible values are:
      # - &quot;default&quot; - Uses the default visibility for events on the calendar. This is the default value.
      # - &quot;public&quot; - The event is public and event details are visible to all readers of the calendar.
      # - &quot;private&quot; - The event is private and only event attendees may view event details.
      # - &quot;confidential&quot; - The event is private. This value is provided for compatibility reasons.
}</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(calendarId, body=None, conferenceDataVersion=None, maxAttendees=None, sendNotifications=None, sendUpdates=None, supportsAttachments=None)</code>
  <pre>Creates an event.

Args:
  calendarId: string, Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the &quot;primary&quot; keyword. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;anyoneCanAddSelf&quot;: false, # Whether anyone can invite themselves to the event (deprecated). Optional. The default is False.
  &quot;attachments&quot;: [ # File attachments for the event. Currently only Google Drive attachments are supported.
      # In order to modify attachments the supportsAttachments request parameter should be set to true.
      # There can be at most 25 attachments per event,
    {
      &quot;fileId&quot;: &quot;A String&quot;, # ID of the attached file. Read-only.
          # For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API.
      &quot;fileUrl&quot;: &quot;A String&quot;, # URL link to the attachment.
          # For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API.
          # Required when adding an attachment.
      &quot;iconLink&quot;: &quot;A String&quot;, # URL link to the attachment&#x27;s icon. Read-only.
      &quot;mimeType&quot;: &quot;A String&quot;, # Internet media type (MIME type) of the attachment.
      &quot;title&quot;: &quot;A String&quot;, # Attachment title.
    },
  ],
  &quot;attendees&quot;: [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
    {
      &quot;additionalGuests&quot;: 0, # Number of additional guests. Optional. The default is 0.
      &quot;comment&quot;: &quot;A String&quot;, # The attendee&#x27;s response comment. Optional.
      &quot;displayName&quot;: &quot;A String&quot;, # The attendee&#x27;s name, if available. Optional.
      &quot;email&quot;: &quot;A String&quot;, # The attendee&#x27;s email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
          # Required when adding an attendee.
      &quot;id&quot;: &quot;A String&quot;, # The attendee&#x27;s Profile ID, if available.
      &quot;optional&quot;: false, # Whether this is an optional attendee. Optional. The default is False.
      &quot;organizer&quot;: True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
      &quot;resource&quot;: false, # Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
      &quot;responseStatus&quot;: &quot;A String&quot;, # The attendee&#x27;s response status. Possible values are:
          # - &quot;needsAction&quot; - The attendee has not responded to the invitation.
          # - &quot;declined&quot; - The attendee has declined the invitation.
          # - &quot;tentative&quot; - The attendee has tentatively accepted the invitation.
          # - &quot;accepted&quot; - The attendee has accepted the invitation.
      &quot;self&quot;: false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
    },
  ],
  &quot;attendeesOmitted&quot;: false, # Whether attendees may have been omitted from the event&#x27;s representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant&#x27;s response. Optional. The default is False.
  &quot;colorId&quot;: &quot;A String&quot;, # The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the  colors endpoint). Optional.
  &quot;conferenceData&quot;: { # The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests.
    &quot;conferenceId&quot;: &quot;A String&quot;, # The ID of the conference.
        # Can be used by developers to keep track of conferences, should not be displayed to users.
        # The ID value is formed differently for each conference solution type:
        # - eventHangout: ID is not set. (This conference type is deprecated.)
        # - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.)
        # - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc.
        # - addOn: ID is defined by the third-party provider.  Optional.
    &quot;conferenceSolution&quot;: { # The conference solution, such as Google Meet.
        # Unset for a conference with a failed create request.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;iconUri&quot;: &quot;A String&quot;, # The user-visible icon for this solution.
      &quot;key&quot;: { # The key which can uniquely identify the conference solution for this event.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;name&quot;: &quot;A String&quot;, # The user-visible name of this solution. Not localized.
    },
    &quot;createRequest&quot;: { # A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;conferenceSolutionKey&quot;: { # The conference solution, such as Hangouts or Google Meet.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;requestId&quot;: &quot;A String&quot;, # The client-generated unique ID for this request.
          # Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored.
      &quot;status&quot;: { # The status of the conference create request.
        &quot;statusCode&quot;: &quot;A String&quot;, # The current status of the conference create request. Read-only.
            # The possible values are:
            # - &quot;pending&quot;: the conference create request is still being processed.
            # - &quot;success&quot;: the conference create request succeeded, the entry points are populated.
            # - &quot;failure&quot;: the conference create request failed, there are no entry points.
      },
    },
    &quot;entryPoints&quot;: [ # Information about individual conference entry points, such as URLs or phone numbers.
        # All of them must belong to the same conference.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      {
        &quot;accessCode&quot;: &quot;A String&quot;, # The access code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;entryPointFeatures&quot;: [ # Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point.
          &quot;A String&quot;,
        ],
        &quot;entryPointType&quot;: &quot;A String&quot;, # The type of the conference entry point.
            # Possible values are:
            # - &quot;video&quot; - joining a conference over HTTP. A conference can have zero or one video entry point.
            # - &quot;phone&quot; - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
            # - &quot;sip&quot; - joining a conference over SIP. A conference can have zero or one sip entry point.
            # - &quot;more&quot; - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference.
        &quot;label&quot;: &quot;A String&quot;, # The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters.
            # Examples:
            # - for video: meet.google.com/aaa-bbbb-ccc
            # - for phone: +1 123 268 2601
            # - for sip: 12345678@altostrat.com
            # - for more: should not be filled
            # Optional.
        &quot;meetingCode&quot;: &quot;A String&quot;, # The meeting code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;passcode&quot;: &quot;A String&quot;, # The passcode to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
        &quot;password&quot;: &quot;A String&quot;, # The password to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;pin&quot;: &quot;A String&quot;, # The PIN to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: &quot;SE&quot; for Sweden.
            # Calendar backend will populate this field only for EntryPointType.PHONE.
        &quot;uri&quot;: &quot;A String&quot;, # The URI of the entry point. The maximum length is 1300 characters.
            # Format:
            # - for video, http: or https: schema is required.
            # - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234).
            # - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com.
            # - for more, http: or https: schema is required.
      },
    ],
    &quot;notes&quot;: &quot;A String&quot;, # Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional.
    &quot;parameters&quot;: { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
      &quot;addOnParameters&quot;: { # Additional add-on specific data.
        &quot;parameters&quot;: {
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    },
    &quot;signature&quot;: &quot;A String&quot;, # The signature of the conference data.
        # Generated on server side. Must be preserved while copying the conference data between events, otherwise the conference data will not be copied.
        # Unset for a conference with a failed create request.
        # Optional for a conference with a pending create request.
  },
  &quot;created&quot;: &quot;A String&quot;, # Creation time of the event (as a RFC3339 timestamp). Read-only.
  &quot;creator&quot;: { # The creator of the event. Read-only.
    &quot;displayName&quot;: &quot;A String&quot;, # The creator&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The creator&#x27;s email address, if available.
    &quot;id&quot;: &quot;A String&quot;, # The creator&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;description&quot;: &quot;A String&quot;, # Description of the event. Can contain HTML. Optional.
  &quot;end&quot;: { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;endTimeUnspecified&quot;: false, # Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;eventType&quot;: &quot;default&quot;, # Specific type of the event. Read-only. Possible values are:
      # - &quot;default&quot; - A regular event or not further specified.
      # - &quot;outOfOffice&quot; - An out-of-office event.
  &quot;extendedProperties&quot;: { # Extended properties of the event.
    &quot;private&quot;: { # Properties that are private to the copy of the event that appears on this calendar.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the private property and the corresponding value.
    },
    &quot;shared&quot;: { # Properties that are shared between copies of the event on other attendees&#x27; calendars.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the shared property and the corresponding value.
    },
  },
  &quot;gadget&quot;: { # A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
    &quot;display&quot;: &quot;A String&quot;, # The gadget&#x27;s display mode. Deprecated. Possible values are:
        # - &quot;icon&quot; - The gadget displays next to the event&#x27;s title in the calendar view.
        # - &quot;chip&quot; - The gadget displays when the event is clicked.
    &quot;height&quot;: 42, # The gadget&#x27;s height in pixels. The height must be an integer greater than 0. Optional. Deprecated.
    &quot;iconLink&quot;: &quot;A String&quot;, # The gadget&#x27;s icon URL. The URL scheme must be HTTPS. Deprecated.
    &quot;link&quot;: &quot;A String&quot;, # The gadget&#x27;s URL. The URL scheme must be HTTPS. Deprecated.
    &quot;preferences&quot;: { # Preferences.
      &quot;a_key&quot;: &quot;A String&quot;, # The preference name and corresponding value.
    },
    &quot;title&quot;: &quot;A String&quot;, # The gadget&#x27;s title. Deprecated.
    &quot;type&quot;: &quot;A String&quot;, # The gadget&#x27;s type. Deprecated.
    &quot;width&quot;: 42, # The gadget&#x27;s width in pixels. The width must be an integer greater than 0. Optional. Deprecated.
  },
  &quot;guestsCanInviteOthers&quot;: true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
  &quot;guestsCanModify&quot;: false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
  &quot;guestsCanSeeOtherGuests&quot;: true, # Whether attendees other than the organizer can see who the event&#x27;s attendees are. Optional. The default is True.
  &quot;hangoutLink&quot;: &quot;A String&quot;, # An absolute link to the Google Hangout associated with this event. Read-only.
  &quot;htmlLink&quot;: &quot;A String&quot;, # An absolute link to this event in the Google Calendar Web UI. Read-only.
  &quot;iCalUID&quot;: &quot;A String&quot;, # Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;id&quot;: &quot;A String&quot;, # Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
      # - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938
      # - the length of the ID must be between 5 and 1024 characters
      # - the ID must be unique per calendar  Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.
      # If you do not specify an ID, it will be automatically generated by the server.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;kind&quot;: &quot;calendar#event&quot;, # Type of the resource (&quot;calendar#event&quot;).
  &quot;location&quot;: &quot;A String&quot;, # Geographic location of the event as free-form text. Optional.
  &quot;locked&quot;: false, # Whether this is a locked event copy where no changes can be made to the main event fields &quot;summary&quot;, &quot;description&quot;, &quot;location&quot;, &quot;start&quot;, &quot;end&quot; or &quot;recurrence&quot;. The default is False. Read-Only.
  &quot;organizer&quot;: { # The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
    &quot;displayName&quot;: &quot;A String&quot;, # The organizer&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The organizer&#x27;s email address, if available. It must be a valid email address as per RFC5322.
    &quot;id&quot;: &quot;A String&quot;, # The organizer&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;originalStartTime&quot;: { # For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;privateCopy&quot;: false, # If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False.
  &quot;recurrence&quot;: [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.
    &quot;A String&quot;,
  ],
  &quot;recurringEventId&quot;: &quot;A String&quot;, # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
  &quot;reminders&quot;: { # Information about the event&#x27;s reminders for the authenticated user.
    &quot;overrides&quot;: [ # If the event doesn&#x27;t use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.
      {
        &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
            # - &quot;email&quot; - Reminders are sent via email.
            # - &quot;popup&quot; - Reminders are sent via a UI popup.
            # Required when adding a reminder.
        &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
            # Required when adding a reminder.
      },
    ],
    &quot;useDefault&quot;: True or False, # Whether the default reminders of the calendar apply to the event.
  },
  &quot;sequence&quot;: 42, # Sequence number as per iCalendar.
  &quot;source&quot;: { # Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
    &quot;title&quot;: &quot;A String&quot;, # Title of the source; for example a title of a web page or an email subject.
    &quot;url&quot;: &quot;A String&quot;, # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
  },
  &quot;start&quot;: { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;status&quot;: &quot;A String&quot;, # Status of the event. Optional. Possible values are:
      # - &quot;confirmed&quot; - The event is confirmed. This is the default status.
      # - &quot;tentative&quot; - The event is tentatively confirmed.
      # - &quot;cancelled&quot; - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them.
      # A cancelled status represents two different states depending on the event type:
      # - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event.
      # Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty.
      # - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely.
      # Deleted events are only guaranteed to have the id field populated.   On the organizer&#x27;s calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details.
      # If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated.
  &quot;summary&quot;: &quot;A String&quot;, # Title of the event.
  &quot;transparency&quot;: &quot;opaque&quot;, # Whether the event blocks time on the calendar. Optional. Possible values are:
      # - &quot;opaque&quot; - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
      # - &quot;transparent&quot; - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the event (as a RFC3339 timestamp). Read-only.
  &quot;visibility&quot;: &quot;default&quot;, # Visibility of the event. Optional. Possible values are:
      # - &quot;default&quot; - Uses the default visibility for events on the calendar. This is the default value.
      # - &quot;public&quot; - The event is public and event details are visible to all readers of the calendar.
      # - &quot;private&quot; - The event is private and only event attendees may view event details.
      # - &quot;confidential&quot; - The event is private. This value is provided for compatibility reasons.
}

  conferenceDataVersion: integer, Version number of conference data supported by the API client. Version 0 assumes no conference data support and ignores conference data in the event&#x27;s body. Version 1 enables support for copying of ConferenceData as well as for creating new conferences using the createRequest field of conferenceData. The default is 0.
  maxAttendees: integer, The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional.
  sendNotifications: boolean, Deprecated. Please use sendUpdates instead.

Whether to send notifications about the creation of the new event. Note that some emails might still be sent even if you set the value to false. The default is false.
  sendUpdates: string, Whether to send notifications about the creation of the new event. Note that some emails might still be sent. The default is false.
    Allowed values
      all - Notifications are sent to all guests.
      externalOnly - Notifications are sent to non-Google Calendar guests only.
      none - No notifications are sent. For calendar migration tasks, consider using the Events.import method instead.
  supportsAttachments: boolean, Whether API client performing operation supports event attachments. Optional. The default is False.

Returns:
  An object of the form:

    {
  &quot;anyoneCanAddSelf&quot;: false, # Whether anyone can invite themselves to the event (deprecated). Optional. The default is False.
  &quot;attachments&quot;: [ # File attachments for the event. Currently only Google Drive attachments are supported.
      # In order to modify attachments the supportsAttachments request parameter should be set to true.
      # There can be at most 25 attachments per event,
    {
      &quot;fileId&quot;: &quot;A String&quot;, # ID of the attached file. Read-only.
          # For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API.
      &quot;fileUrl&quot;: &quot;A String&quot;, # URL link to the attachment.
          # For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API.
          # Required when adding an attachment.
      &quot;iconLink&quot;: &quot;A String&quot;, # URL link to the attachment&#x27;s icon. Read-only.
      &quot;mimeType&quot;: &quot;A String&quot;, # Internet media type (MIME type) of the attachment.
      &quot;title&quot;: &quot;A String&quot;, # Attachment title.
    },
  ],
  &quot;attendees&quot;: [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
    {
      &quot;additionalGuests&quot;: 0, # Number of additional guests. Optional. The default is 0.
      &quot;comment&quot;: &quot;A String&quot;, # The attendee&#x27;s response comment. Optional.
      &quot;displayName&quot;: &quot;A String&quot;, # The attendee&#x27;s name, if available. Optional.
      &quot;email&quot;: &quot;A String&quot;, # The attendee&#x27;s email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
          # Required when adding an attendee.
      &quot;id&quot;: &quot;A String&quot;, # The attendee&#x27;s Profile ID, if available.
      &quot;optional&quot;: false, # Whether this is an optional attendee. Optional. The default is False.
      &quot;organizer&quot;: True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
      &quot;resource&quot;: false, # Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
      &quot;responseStatus&quot;: &quot;A String&quot;, # The attendee&#x27;s response status. Possible values are:
          # - &quot;needsAction&quot; - The attendee has not responded to the invitation.
          # - &quot;declined&quot; - The attendee has declined the invitation.
          # - &quot;tentative&quot; - The attendee has tentatively accepted the invitation.
          # - &quot;accepted&quot; - The attendee has accepted the invitation.
      &quot;self&quot;: false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
    },
  ],
  &quot;attendeesOmitted&quot;: false, # Whether attendees may have been omitted from the event&#x27;s representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant&#x27;s response. Optional. The default is False.
  &quot;colorId&quot;: &quot;A String&quot;, # The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the  colors endpoint). Optional.
  &quot;conferenceData&quot;: { # The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests.
    &quot;conferenceId&quot;: &quot;A String&quot;, # The ID of the conference.
        # Can be used by developers to keep track of conferences, should not be displayed to users.
        # The ID value is formed differently for each conference solution type:
        # - eventHangout: ID is not set. (This conference type is deprecated.)
        # - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.)
        # - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc.
        # - addOn: ID is defined by the third-party provider.  Optional.
    &quot;conferenceSolution&quot;: { # The conference solution, such as Google Meet.
        # Unset for a conference with a failed create request.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;iconUri&quot;: &quot;A String&quot;, # The user-visible icon for this solution.
      &quot;key&quot;: { # The key which can uniquely identify the conference solution for this event.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;name&quot;: &quot;A String&quot;, # The user-visible name of this solution. Not localized.
    },
    &quot;createRequest&quot;: { # A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;conferenceSolutionKey&quot;: { # The conference solution, such as Hangouts or Google Meet.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;requestId&quot;: &quot;A String&quot;, # The client-generated unique ID for this request.
          # Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored.
      &quot;status&quot;: { # The status of the conference create request.
        &quot;statusCode&quot;: &quot;A String&quot;, # The current status of the conference create request. Read-only.
            # The possible values are:
            # - &quot;pending&quot;: the conference create request is still being processed.
            # - &quot;success&quot;: the conference create request succeeded, the entry points are populated.
            # - &quot;failure&quot;: the conference create request failed, there are no entry points.
      },
    },
    &quot;entryPoints&quot;: [ # Information about individual conference entry points, such as URLs or phone numbers.
        # All of them must belong to the same conference.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      {
        &quot;accessCode&quot;: &quot;A String&quot;, # The access code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;entryPointFeatures&quot;: [ # Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point.
          &quot;A String&quot;,
        ],
        &quot;entryPointType&quot;: &quot;A String&quot;, # The type of the conference entry point.
            # Possible values are:
            # - &quot;video&quot; - joining a conference over HTTP. A conference can have zero or one video entry point.
            # - &quot;phone&quot; - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
            # - &quot;sip&quot; - joining a conference over SIP. A conference can have zero or one sip entry point.
            # - &quot;more&quot; - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference.
        &quot;label&quot;: &quot;A String&quot;, # The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters.
            # Examples:
            # - for video: meet.google.com/aaa-bbbb-ccc
            # - for phone: +1 123 268 2601
            # - for sip: 12345678@altostrat.com
            # - for more: should not be filled
            # Optional.
        &quot;meetingCode&quot;: &quot;A String&quot;, # The meeting code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;passcode&quot;: &quot;A String&quot;, # The passcode to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
        &quot;password&quot;: &quot;A String&quot;, # The password to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;pin&quot;: &quot;A String&quot;, # The PIN to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: &quot;SE&quot; for Sweden.
            # Calendar backend will populate this field only for EntryPointType.PHONE.
        &quot;uri&quot;: &quot;A String&quot;, # The URI of the entry point. The maximum length is 1300 characters.
            # Format:
            # - for video, http: or https: schema is required.
            # - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234).
            # - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com.
            # - for more, http: or https: schema is required.
      },
    ],
    &quot;notes&quot;: &quot;A String&quot;, # Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional.
    &quot;parameters&quot;: { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
      &quot;addOnParameters&quot;: { # Additional add-on specific data.
        &quot;parameters&quot;: {
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    },
    &quot;signature&quot;: &quot;A String&quot;, # The signature of the conference data.
        # Generated on server side. Must be preserved while copying the conference data between events, otherwise the conference data will not be copied.
        # Unset for a conference with a failed create request.
        # Optional for a conference with a pending create request.
  },
  &quot;created&quot;: &quot;A String&quot;, # Creation time of the event (as a RFC3339 timestamp). Read-only.
  &quot;creator&quot;: { # The creator of the event. Read-only.
    &quot;displayName&quot;: &quot;A String&quot;, # The creator&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The creator&#x27;s email address, if available.
    &quot;id&quot;: &quot;A String&quot;, # The creator&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;description&quot;: &quot;A String&quot;, # Description of the event. Can contain HTML. Optional.
  &quot;end&quot;: { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;endTimeUnspecified&quot;: false, # Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;eventType&quot;: &quot;default&quot;, # Specific type of the event. Read-only. Possible values are:
      # - &quot;default&quot; - A regular event or not further specified.
      # - &quot;outOfOffice&quot; - An out-of-office event.
  &quot;extendedProperties&quot;: { # Extended properties of the event.
    &quot;private&quot;: { # Properties that are private to the copy of the event that appears on this calendar.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the private property and the corresponding value.
    },
    &quot;shared&quot;: { # Properties that are shared between copies of the event on other attendees&#x27; calendars.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the shared property and the corresponding value.
    },
  },
  &quot;gadget&quot;: { # A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
    &quot;display&quot;: &quot;A String&quot;, # The gadget&#x27;s display mode. Deprecated. Possible values are:
        # - &quot;icon&quot; - The gadget displays next to the event&#x27;s title in the calendar view.
        # - &quot;chip&quot; - The gadget displays when the event is clicked.
    &quot;height&quot;: 42, # The gadget&#x27;s height in pixels. The height must be an integer greater than 0. Optional. Deprecated.
    &quot;iconLink&quot;: &quot;A String&quot;, # The gadget&#x27;s icon URL. The URL scheme must be HTTPS. Deprecated.
    &quot;link&quot;: &quot;A String&quot;, # The gadget&#x27;s URL. The URL scheme must be HTTPS. Deprecated.
    &quot;preferences&quot;: { # Preferences.
      &quot;a_key&quot;: &quot;A String&quot;, # The preference name and corresponding value.
    },
    &quot;title&quot;: &quot;A String&quot;, # The gadget&#x27;s title. Deprecated.
    &quot;type&quot;: &quot;A String&quot;, # The gadget&#x27;s type. Deprecated.
    &quot;width&quot;: 42, # The gadget&#x27;s width in pixels. The width must be an integer greater than 0. Optional. Deprecated.
  },
  &quot;guestsCanInviteOthers&quot;: true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
  &quot;guestsCanModify&quot;: false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
  &quot;guestsCanSeeOtherGuests&quot;: true, # Whether attendees other than the organizer can see who the event&#x27;s attendees are. Optional. The default is True.
  &quot;hangoutLink&quot;: &quot;A String&quot;, # An absolute link to the Google Hangout associated with this event. Read-only.
  &quot;htmlLink&quot;: &quot;A String&quot;, # An absolute link to this event in the Google Calendar Web UI. Read-only.
  &quot;iCalUID&quot;: &quot;A String&quot;, # Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;id&quot;: &quot;A String&quot;, # Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
      # - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938
      # - the length of the ID must be between 5 and 1024 characters
      # - the ID must be unique per calendar  Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.
      # If you do not specify an ID, it will be automatically generated by the server.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;kind&quot;: &quot;calendar#event&quot;, # Type of the resource (&quot;calendar#event&quot;).
  &quot;location&quot;: &quot;A String&quot;, # Geographic location of the event as free-form text. Optional.
  &quot;locked&quot;: false, # Whether this is a locked event copy where no changes can be made to the main event fields &quot;summary&quot;, &quot;description&quot;, &quot;location&quot;, &quot;start&quot;, &quot;end&quot; or &quot;recurrence&quot;. The default is False. Read-Only.
  &quot;organizer&quot;: { # The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
    &quot;displayName&quot;: &quot;A String&quot;, # The organizer&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The organizer&#x27;s email address, if available. It must be a valid email address as per RFC5322.
    &quot;id&quot;: &quot;A String&quot;, # The organizer&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;originalStartTime&quot;: { # For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;privateCopy&quot;: false, # If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False.
  &quot;recurrence&quot;: [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.
    &quot;A String&quot;,
  ],
  &quot;recurringEventId&quot;: &quot;A String&quot;, # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
  &quot;reminders&quot;: { # Information about the event&#x27;s reminders for the authenticated user.
    &quot;overrides&quot;: [ # If the event doesn&#x27;t use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.
      {
        &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
            # - &quot;email&quot; - Reminders are sent via email.
            # - &quot;popup&quot; - Reminders are sent via a UI popup.
            # Required when adding a reminder.
        &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
            # Required when adding a reminder.
      },
    ],
    &quot;useDefault&quot;: True or False, # Whether the default reminders of the calendar apply to the event.
  },
  &quot;sequence&quot;: 42, # Sequence number as per iCalendar.
  &quot;source&quot;: { # Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
    &quot;title&quot;: &quot;A String&quot;, # Title of the source; for example a title of a web page or an email subject.
    &quot;url&quot;: &quot;A String&quot;, # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
  },
  &quot;start&quot;: { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;status&quot;: &quot;A String&quot;, # Status of the event. Optional. Possible values are:
      # - &quot;confirmed&quot; - The event is confirmed. This is the default status.
      # - &quot;tentative&quot; - The event is tentatively confirmed.
      # - &quot;cancelled&quot; - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them.
      # A cancelled status represents two different states depending on the event type:
      # - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event.
      # Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty.
      # - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely.
      # Deleted events are only guaranteed to have the id field populated.   On the organizer&#x27;s calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details.
      # If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated.
  &quot;summary&quot;: &quot;A String&quot;, # Title of the event.
  &quot;transparency&quot;: &quot;opaque&quot;, # Whether the event blocks time on the calendar. Optional. Possible values are:
      # - &quot;opaque&quot; - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
      # - &quot;transparent&quot; - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the event (as a RFC3339 timestamp). Read-only.
  &quot;visibility&quot;: &quot;default&quot;, # Visibility of the event. Optional. Possible values are:
      # - &quot;default&quot; - Uses the default visibility for events on the calendar. This is the default value.
      # - &quot;public&quot; - The event is public and event details are visible to all readers of the calendar.
      # - &quot;private&quot; - The event is private and only event attendees may view event details.
      # - &quot;confidential&quot; - The event is private. This value is provided for compatibility reasons.
}</pre>
</div>

<div class="method">
    <code class="details" id="instances">instances(calendarId, eventId, alwaysIncludeEmail=None, maxAttendees=None, maxResults=None, originalStart=None, pageToken=None, showDeleted=None, timeMax=None, timeMin=None, timeZone=None)</code>
  <pre>Returns instances of the specified recurring event.

Args:
  calendarId: string, Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the &quot;primary&quot; keyword. (required)
  eventId: string, Recurring event identifier. (required)
  alwaysIncludeEmail: boolean, Deprecated and ignored. A value will always be returned in the email field for the organizer, creator and attendees, even if no real email address is available (i.e. a generated, non-working value will be provided).
  maxAttendees: integer, The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional.
  maxResults: integer, Maximum number of events returned on one result page. By default the value is 250 events. The page size can never be larger than 2500 events. Optional.
  originalStart: string, The original start time of the instance in the result. Optional.
  pageToken: string, Token specifying which result page to return. Optional.
  showDeleted: boolean, Whether to include deleted events (with status equals &quot;cancelled&quot;) in the result. Cancelled instances of recurring events will still be included if singleEvents is False. Optional. The default is False.
  timeMax: string, Upper bound (exclusive) for an event&#x27;s start time to filter by. Optional. The default is not to filter by start time. Must be an RFC3339 timestamp with mandatory time zone offset.
  timeMin: string, Lower bound (inclusive) for an event&#x27;s end time to filter by. Optional. The default is not to filter by end time. Must be an RFC3339 timestamp with mandatory time zone offset.
  timeZone: string, Time zone used in the response. Optional. The default is the time zone of the calendar.

Returns:
  An object of the form:

    {
  &quot;accessRole&quot;: &quot;A String&quot;, # The user&#x27;s access role for this calendar. Read-only. Possible values are:
      # - &quot;none&quot; - The user has no access.
      # - &quot;freeBusyReader&quot; - The user has read access to free/busy information.
      # - &quot;reader&quot; - The user has read access to the calendar. Private events will appear to users with reader access, but event details will be hidden.
      # - &quot;writer&quot; - The user has read and write access to the calendar. Private events will appear to users with writer access, and event details will be visible.
      # - &quot;owner&quot; - The user has ownership of the calendar. This role has all of the permissions of the writer role with the additional ability to see and manipulate ACLs.
  &quot;defaultReminders&quot;: [ # The default reminders on the calendar for the authenticated user. These reminders apply to all events on this calendar that do not explicitly override them (i.e. do not have reminders.useDefault set to True).
    {
      &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
          # - &quot;email&quot; - Reminders are sent via email.
          # - &quot;popup&quot; - Reminders are sent via a UI popup.
          # Required when adding a reminder.
      &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
          # Required when adding a reminder.
    },
  ],
  &quot;description&quot;: &quot;A String&quot;, # Description of the calendar. Read-only.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the collection.
  &quot;items&quot;: [ # List of events on the calendar.
    {
      &quot;anyoneCanAddSelf&quot;: false, # Whether anyone can invite themselves to the event (deprecated). Optional. The default is False.
      &quot;attachments&quot;: [ # File attachments for the event. Currently only Google Drive attachments are supported.
          # In order to modify attachments the supportsAttachments request parameter should be set to true.
          # There can be at most 25 attachments per event,
        {
          &quot;fileId&quot;: &quot;A String&quot;, # ID of the attached file. Read-only.
              # For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API.
          &quot;fileUrl&quot;: &quot;A String&quot;, # URL link to the attachment.
              # For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API.
              # Required when adding an attachment.
          &quot;iconLink&quot;: &quot;A String&quot;, # URL link to the attachment&#x27;s icon. Read-only.
          &quot;mimeType&quot;: &quot;A String&quot;, # Internet media type (MIME type) of the attachment.
          &quot;title&quot;: &quot;A String&quot;, # Attachment title.
        },
      ],
      &quot;attendees&quot;: [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
        {
          &quot;additionalGuests&quot;: 0, # Number of additional guests. Optional. The default is 0.
          &quot;comment&quot;: &quot;A String&quot;, # The attendee&#x27;s response comment. Optional.
          &quot;displayName&quot;: &quot;A String&quot;, # The attendee&#x27;s name, if available. Optional.
          &quot;email&quot;: &quot;A String&quot;, # The attendee&#x27;s email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
              # Required when adding an attendee.
          &quot;id&quot;: &quot;A String&quot;, # The attendee&#x27;s Profile ID, if available.
          &quot;optional&quot;: false, # Whether this is an optional attendee. Optional. The default is False.
          &quot;organizer&quot;: True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
          &quot;resource&quot;: false, # Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
          &quot;responseStatus&quot;: &quot;A String&quot;, # The attendee&#x27;s response status. Possible values are:
              # - &quot;needsAction&quot; - The attendee has not responded to the invitation.
              # - &quot;declined&quot; - The attendee has declined the invitation.
              # - &quot;tentative&quot; - The attendee has tentatively accepted the invitation.
              # - &quot;accepted&quot; - The attendee has accepted the invitation.
          &quot;self&quot;: false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
        },
      ],
      &quot;attendeesOmitted&quot;: false, # Whether attendees may have been omitted from the event&#x27;s representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant&#x27;s response. Optional. The default is False.
      &quot;colorId&quot;: &quot;A String&quot;, # The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the  colors endpoint). Optional.
      &quot;conferenceData&quot;: { # The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests.
        &quot;conferenceId&quot;: &quot;A String&quot;, # The ID of the conference.
            # Can be used by developers to keep track of conferences, should not be displayed to users.
            # The ID value is formed differently for each conference solution type:
            # - eventHangout: ID is not set. (This conference type is deprecated.)
            # - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.)
            # - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc.
            # - addOn: ID is defined by the third-party provider.  Optional.
        &quot;conferenceSolution&quot;: { # The conference solution, such as Google Meet.
            # Unset for a conference with a failed create request.
            # Either conferenceSolution and at least one entryPoint, or createRequest is required.
          &quot;iconUri&quot;: &quot;A String&quot;, # The user-visible icon for this solution.
          &quot;key&quot;: { # The key which can uniquely identify the conference solution for this event.
            &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
                # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
                # The possible values are:
                # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
                # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
                # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
                # - &quot;addOn&quot; for 3P conference providers
          },
          &quot;name&quot;: &quot;A String&quot;, # The user-visible name of this solution. Not localized.
        },
        &quot;createRequest&quot;: { # A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field.
            # Either conferenceSolution and at least one entryPoint, or createRequest is required.
          &quot;conferenceSolutionKey&quot;: { # The conference solution, such as Hangouts or Google Meet.
            &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
                # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
                # The possible values are:
                # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
                # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
                # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
                # - &quot;addOn&quot; for 3P conference providers
          },
          &quot;requestId&quot;: &quot;A String&quot;, # The client-generated unique ID for this request.
              # Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored.
          &quot;status&quot;: { # The status of the conference create request.
            &quot;statusCode&quot;: &quot;A String&quot;, # The current status of the conference create request. Read-only.
                # The possible values are:
                # - &quot;pending&quot;: the conference create request is still being processed.
                # - &quot;success&quot;: the conference create request succeeded, the entry points are populated.
                # - &quot;failure&quot;: the conference create request failed, there are no entry points.
          },
        },
        &quot;entryPoints&quot;: [ # Information about individual conference entry points, such as URLs or phone numbers.
            # All of them must belong to the same conference.
            # Either conferenceSolution and at least one entryPoint, or createRequest is required.
          {
            &quot;accessCode&quot;: &quot;A String&quot;, # The access code to access the conference. The maximum length is 128 characters.
                # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
                # Optional.
            &quot;entryPointFeatures&quot;: [ # Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point.
              &quot;A String&quot;,
            ],
            &quot;entryPointType&quot;: &quot;A String&quot;, # The type of the conference entry point.
                # Possible values are:
                # - &quot;video&quot; - joining a conference over HTTP. A conference can have zero or one video entry point.
                # - &quot;phone&quot; - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
                # - &quot;sip&quot; - joining a conference over SIP. A conference can have zero or one sip entry point.
                # - &quot;more&quot; - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference.
            &quot;label&quot;: &quot;A String&quot;, # The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters.
                # Examples:
                # - for video: meet.google.com/aaa-bbbb-ccc
                # - for phone: +1 123 268 2601
                # - for sip: 12345678@altostrat.com
                # - for more: should not be filled
                # Optional.
            &quot;meetingCode&quot;: &quot;A String&quot;, # The meeting code to access the conference. The maximum length is 128 characters.
                # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
                # Optional.
            &quot;passcode&quot;: &quot;A String&quot;, # The passcode to access the conference. The maximum length is 128 characters.
                # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            &quot;password&quot;: &quot;A String&quot;, # The password to access the conference. The maximum length is 128 characters.
                # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
                # Optional.
            &quot;pin&quot;: &quot;A String&quot;, # The PIN to access the conference. The maximum length is 128 characters.
                # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
                # Optional.
            &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: &quot;SE&quot; for Sweden.
                # Calendar backend will populate this field only for EntryPointType.PHONE.
            &quot;uri&quot;: &quot;A String&quot;, # The URI of the entry point. The maximum length is 1300 characters.
                # Format:
                # - for video, http: or https: schema is required.
                # - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234).
                # - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com.
                # - for more, http: or https: schema is required.
          },
        ],
        &quot;notes&quot;: &quot;A String&quot;, # Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional.
        &quot;parameters&quot;: { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
          &quot;addOnParameters&quot;: { # Additional add-on specific data.
            &quot;parameters&quot;: {
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
        },
        &quot;signature&quot;: &quot;A String&quot;, # The signature of the conference data.
            # Generated on server side. Must be preserved while copying the conference data between events, otherwise the conference data will not be copied.
            # Unset for a conference with a failed create request.
            # Optional for a conference with a pending create request.
      },
      &quot;created&quot;: &quot;A String&quot;, # Creation time of the event (as a RFC3339 timestamp). Read-only.
      &quot;creator&quot;: { # The creator of the event. Read-only.
        &quot;displayName&quot;: &quot;A String&quot;, # The creator&#x27;s name, if available.
        &quot;email&quot;: &quot;A String&quot;, # The creator&#x27;s email address, if available.
        &quot;id&quot;: &quot;A String&quot;, # The creator&#x27;s Profile ID, if available.
        &quot;self&quot;: false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
      },
      &quot;description&quot;: &quot;A String&quot;, # Description of the event. Can contain HTML. Optional.
      &quot;end&quot;: { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
        &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
        &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
        &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
      },
      &quot;endTimeUnspecified&quot;: false, # Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
      &quot;eventType&quot;: &quot;default&quot;, # Specific type of the event. Read-only. Possible values are:
          # - &quot;default&quot; - A regular event or not further specified.
          # - &quot;outOfOffice&quot; - An out-of-office event.
      &quot;extendedProperties&quot;: { # Extended properties of the event.
        &quot;private&quot;: { # Properties that are private to the copy of the event that appears on this calendar.
          &quot;a_key&quot;: &quot;A String&quot;, # The name of the private property and the corresponding value.
        },
        &quot;shared&quot;: { # Properties that are shared between copies of the event on other attendees&#x27; calendars.
          &quot;a_key&quot;: &quot;A String&quot;, # The name of the shared property and the corresponding value.
        },
      },
      &quot;gadget&quot;: { # A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
        &quot;display&quot;: &quot;A String&quot;, # The gadget&#x27;s display mode. Deprecated. Possible values are:
            # - &quot;icon&quot; - The gadget displays next to the event&#x27;s title in the calendar view.
            # - &quot;chip&quot; - The gadget displays when the event is clicked.
        &quot;height&quot;: 42, # The gadget&#x27;s height in pixels. The height must be an integer greater than 0. Optional. Deprecated.
        &quot;iconLink&quot;: &quot;A String&quot;, # The gadget&#x27;s icon URL. The URL scheme must be HTTPS. Deprecated.
        &quot;link&quot;: &quot;A String&quot;, # The gadget&#x27;s URL. The URL scheme must be HTTPS. Deprecated.
        &quot;preferences&quot;: { # Preferences.
          &quot;a_key&quot;: &quot;A String&quot;, # The preference name and corresponding value.
        },
        &quot;title&quot;: &quot;A String&quot;, # The gadget&#x27;s title. Deprecated.
        &quot;type&quot;: &quot;A String&quot;, # The gadget&#x27;s type. Deprecated.
        &quot;width&quot;: 42, # The gadget&#x27;s width in pixels. The width must be an integer greater than 0. Optional. Deprecated.
      },
      &quot;guestsCanInviteOthers&quot;: true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
      &quot;guestsCanModify&quot;: false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
      &quot;guestsCanSeeOtherGuests&quot;: true, # Whether attendees other than the organizer can see who the event&#x27;s attendees are. Optional. The default is True.
      &quot;hangoutLink&quot;: &quot;A String&quot;, # An absolute link to the Google Hangout associated with this event. Read-only.
      &quot;htmlLink&quot;: &quot;A String&quot;, # An absolute link to this event in the Google Calendar Web UI. Read-only.
      &quot;iCalUID&quot;: &quot;A String&quot;, # Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.
          # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
      &quot;id&quot;: &quot;A String&quot;, # Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
          # - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938
          # - the length of the ID must be between 5 and 1024 characters
          # - the ID must be unique per calendar  Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.
          # If you do not specify an ID, it will be automatically generated by the server.
          # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
      &quot;kind&quot;: &quot;calendar#event&quot;, # Type of the resource (&quot;calendar#event&quot;).
      &quot;location&quot;: &quot;A String&quot;, # Geographic location of the event as free-form text. Optional.
      &quot;locked&quot;: false, # Whether this is a locked event copy where no changes can be made to the main event fields &quot;summary&quot;, &quot;description&quot;, &quot;location&quot;, &quot;start&quot;, &quot;end&quot; or &quot;recurrence&quot;. The default is False. Read-Only.
      &quot;organizer&quot;: { # The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
        &quot;displayName&quot;: &quot;A String&quot;, # The organizer&#x27;s name, if available.
        &quot;email&quot;: &quot;A String&quot;, # The organizer&#x27;s email address, if available. It must be a valid email address as per RFC5322.
        &quot;id&quot;: &quot;A String&quot;, # The organizer&#x27;s Profile ID, if available.
        &quot;self&quot;: false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
      },
      &quot;originalStartTime&quot;: { # For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable.
        &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
        &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
        &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
      },
      &quot;privateCopy&quot;: false, # If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False.
      &quot;recurrence&quot;: [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.
        &quot;A String&quot;,
      ],
      &quot;recurringEventId&quot;: &quot;A String&quot;, # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
      &quot;reminders&quot;: { # Information about the event&#x27;s reminders for the authenticated user.
        &quot;overrides&quot;: [ # If the event doesn&#x27;t use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.
          {
            &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
                # - &quot;email&quot; - Reminders are sent via email.
                # - &quot;popup&quot; - Reminders are sent via a UI popup.
                # Required when adding a reminder.
            &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
                # Required when adding a reminder.
          },
        ],
        &quot;useDefault&quot;: True or False, # Whether the default reminders of the calendar apply to the event.
      },
      &quot;sequence&quot;: 42, # Sequence number as per iCalendar.
      &quot;source&quot;: { # Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
        &quot;title&quot;: &quot;A String&quot;, # Title of the source; for example a title of a web page or an email subject.
        &quot;url&quot;: &quot;A String&quot;, # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
      },
      &quot;start&quot;: { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
        &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
        &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
        &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
      },
      &quot;status&quot;: &quot;A String&quot;, # Status of the event. Optional. Possible values are:
          # - &quot;confirmed&quot; - The event is confirmed. This is the default status.
          # - &quot;tentative&quot; - The event is tentatively confirmed.
          # - &quot;cancelled&quot; - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them.
          # A cancelled status represents two different states depending on the event type:
          # - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event.
          # Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty.
          # - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely.
          # Deleted events are only guaranteed to have the id field populated.   On the organizer&#x27;s calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details.
          # If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated.
      &quot;summary&quot;: &quot;A String&quot;, # Title of the event.
      &quot;transparency&quot;: &quot;opaque&quot;, # Whether the event blocks time on the calendar. Optional. Possible values are:
          # - &quot;opaque&quot; - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
          # - &quot;transparent&quot; - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
      &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the event (as a RFC3339 timestamp). Read-only.
      &quot;visibility&quot;: &quot;default&quot;, # Visibility of the event. Optional. Possible values are:
          # - &quot;default&quot; - Uses the default visibility for events on the calendar. This is the default value.
          # - &quot;public&quot; - The event is public and event details are visible to all readers of the calendar.
          # - &quot;private&quot; - The event is private and only event attendees may view event details.
          # - &quot;confidential&quot; - The event is private. This value is provided for compatibility reasons.
    },
  ],
  &quot;kind&quot;: &quot;calendar#events&quot;, # Type of the collection (&quot;calendar#events&quot;).
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token used to access the next page of this result. Omitted if no further results are available, in which case nextSyncToken is provided.
  &quot;nextSyncToken&quot;: &quot;A String&quot;, # Token used at a later point in time to retrieve only the entries that have changed since this result was returned. Omitted if further results are available, in which case nextPageToken is provided.
  &quot;summary&quot;: &quot;A String&quot;, # Title of the calendar. Read-only.
  &quot;timeZone&quot;: &quot;A String&quot;, # The time zone of the calendar. Read-only.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the calendar (as a RFC3339 timestamp). Read-only.
}</pre>
</div>

<div class="method">
    <code class="details" id="instances_next">instances_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="list">list(calendarId, alwaysIncludeEmail=None, iCalUID=None, maxAttendees=None, maxResults=None, orderBy=None, pageToken=None, privateExtendedProperty=None, q=None, sharedExtendedProperty=None, showDeleted=None, showHiddenInvitations=None, singleEvents=None, syncToken=None, timeMax=None, timeMin=None, timeZone=None, updatedMin=None)</code>
  <pre>Returns events on the specified calendar.

Args:
  calendarId: string, Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the &quot;primary&quot; keyword. (required)
  alwaysIncludeEmail: boolean, Deprecated and ignored. A value will always be returned in the email field for the organizer, creator and attendees, even if no real email address is available (i.e. a generated, non-working value will be provided).
  iCalUID: string, Specifies event ID in the iCalendar format to be included in the response. Optional.
  maxAttendees: integer, The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional.
  maxResults: integer, Maximum number of events returned on one result page. The number of events in the resulting page may be less than this value, or none at all, even if there are more events matching the query. 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. Optional.
  orderBy: string, The order of the events returned in the result. Optional. The default is an unspecified, stable order.
    Allowed values
      startTime - Order by the start date/time (ascending). This is only available when querying single events (i.e. the parameter singleEvents is True)
      updated - Order by last modification time (ascending).
  pageToken: string, Token specifying which result page to return. Optional.
  privateExtendedProperty: string, 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. (repeated)
  q: string, Free text search terms to find events that match these terms in any field, except for extended properties. Optional.
  sharedExtendedProperty: string, 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. (repeated)
  showDeleted: boolean, Whether to include deleted events (with status equals &quot;cancelled&quot;) in the result. Cancelled instances of recurring events (but not the underlying recurring event) will still be included if showDeleted and singleEvents are both False. If showDeleted and singleEvents are both True, only single instances of deleted events (but not the underlying recurring events) are returned. Optional. The default is False.
  showHiddenInvitations: boolean, Whether to include hidden invitations in the result. Optional. The default is False.
  singleEvents: boolean, Whether to expand recurring events into instances and only return single one-off events and instances of recurring events, but not the underlying recurring events themselves. Optional. The default is False.
  syncToken: string, Token obtained from the nextSyncToken field returned on the last page of results from the previous list request. It makes the result of this list request contain only entries that have changed since then. All events deleted since the previous list request will always be in the result set and it is not allowed to set showDeleted to False.
There are several query parameters that cannot be specified together with nextSyncToken to ensure consistency of the client state.

These are: 
- iCalUID 
- orderBy 
- privateExtendedProperty 
- q 
- sharedExtendedProperty 
- timeMin 
- timeMax 
- updatedMin If the syncToken expires, the server will respond with a 410 GONE response code and the client should clear its storage and perform a full synchronization without any syncToken.
Learn more about incremental synchronization.
Optional. The default is to return all entries.
  timeMax: string, Upper bound (exclusive) for an event&#x27;s start time to filter by. Optional. The default is not to filter by start time. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but are ignored. If timeMin is set, timeMax must be greater than timeMin.
  timeMin: string, Lower bound (exclusive) for an event&#x27;s end time to filter by. Optional. The default is not to filter by end time. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but are ignored. If timeMax is set, timeMin must be smaller than timeMax.
  timeZone: string, Time zone used in the response. Optional. The default is the time zone of the calendar.
  updatedMin: string, Lower bound for an event&#x27;s last modification time (as a RFC3339 timestamp) to filter by. When specified, entries deleted since this time will always be included regardless of showDeleted. Optional. The default is not to filter by last modification time.

Returns:
  An object of the form:

    {
  &quot;accessRole&quot;: &quot;A String&quot;, # The user&#x27;s access role for this calendar. Read-only. Possible values are:
      # - &quot;none&quot; - The user has no access.
      # - &quot;freeBusyReader&quot; - The user has read access to free/busy information.
      # - &quot;reader&quot; - The user has read access to the calendar. Private events will appear to users with reader access, but event details will be hidden.
      # - &quot;writer&quot; - The user has read and write access to the calendar. Private events will appear to users with writer access, and event details will be visible.
      # - &quot;owner&quot; - The user has ownership of the calendar. This role has all of the permissions of the writer role with the additional ability to see and manipulate ACLs.
  &quot;defaultReminders&quot;: [ # The default reminders on the calendar for the authenticated user. These reminders apply to all events on this calendar that do not explicitly override them (i.e. do not have reminders.useDefault set to True).
    {
      &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
          # - &quot;email&quot; - Reminders are sent via email.
          # - &quot;popup&quot; - Reminders are sent via a UI popup.
          # Required when adding a reminder.
      &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
          # Required when adding a reminder.
    },
  ],
  &quot;description&quot;: &quot;A String&quot;, # Description of the calendar. Read-only.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the collection.
  &quot;items&quot;: [ # List of events on the calendar.
    {
      &quot;anyoneCanAddSelf&quot;: false, # Whether anyone can invite themselves to the event (deprecated). Optional. The default is False.
      &quot;attachments&quot;: [ # File attachments for the event. Currently only Google Drive attachments are supported.
          # In order to modify attachments the supportsAttachments request parameter should be set to true.
          # There can be at most 25 attachments per event,
        {
          &quot;fileId&quot;: &quot;A String&quot;, # ID of the attached file. Read-only.
              # For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API.
          &quot;fileUrl&quot;: &quot;A String&quot;, # URL link to the attachment.
              # For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API.
              # Required when adding an attachment.
          &quot;iconLink&quot;: &quot;A String&quot;, # URL link to the attachment&#x27;s icon. Read-only.
          &quot;mimeType&quot;: &quot;A String&quot;, # Internet media type (MIME type) of the attachment.
          &quot;title&quot;: &quot;A String&quot;, # Attachment title.
        },
      ],
      &quot;attendees&quot;: [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
        {
          &quot;additionalGuests&quot;: 0, # Number of additional guests. Optional. The default is 0.
          &quot;comment&quot;: &quot;A String&quot;, # The attendee&#x27;s response comment. Optional.
          &quot;displayName&quot;: &quot;A String&quot;, # The attendee&#x27;s name, if available. Optional.
          &quot;email&quot;: &quot;A String&quot;, # The attendee&#x27;s email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
              # Required when adding an attendee.
          &quot;id&quot;: &quot;A String&quot;, # The attendee&#x27;s Profile ID, if available.
          &quot;optional&quot;: false, # Whether this is an optional attendee. Optional. The default is False.
          &quot;organizer&quot;: True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
          &quot;resource&quot;: false, # Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
          &quot;responseStatus&quot;: &quot;A String&quot;, # The attendee&#x27;s response status. Possible values are:
              # - &quot;needsAction&quot; - The attendee has not responded to the invitation.
              # - &quot;declined&quot; - The attendee has declined the invitation.
              # - &quot;tentative&quot; - The attendee has tentatively accepted the invitation.
              # - &quot;accepted&quot; - The attendee has accepted the invitation.
          &quot;self&quot;: false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
        },
      ],
      &quot;attendeesOmitted&quot;: false, # Whether attendees may have been omitted from the event&#x27;s representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant&#x27;s response. Optional. The default is False.
      &quot;colorId&quot;: &quot;A String&quot;, # The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the  colors endpoint). Optional.
      &quot;conferenceData&quot;: { # The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests.
        &quot;conferenceId&quot;: &quot;A String&quot;, # The ID of the conference.
            # Can be used by developers to keep track of conferences, should not be displayed to users.
            # The ID value is formed differently for each conference solution type:
            # - eventHangout: ID is not set. (This conference type is deprecated.)
            # - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.)
            # - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc.
            # - addOn: ID is defined by the third-party provider.  Optional.
        &quot;conferenceSolution&quot;: { # The conference solution, such as Google Meet.
            # Unset for a conference with a failed create request.
            # Either conferenceSolution and at least one entryPoint, or createRequest is required.
          &quot;iconUri&quot;: &quot;A String&quot;, # The user-visible icon for this solution.
          &quot;key&quot;: { # The key which can uniquely identify the conference solution for this event.
            &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
                # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
                # The possible values are:
                # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
                # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
                # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
                # - &quot;addOn&quot; for 3P conference providers
          },
          &quot;name&quot;: &quot;A String&quot;, # The user-visible name of this solution. Not localized.
        },
        &quot;createRequest&quot;: { # A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field.
            # Either conferenceSolution and at least one entryPoint, or createRequest is required.
          &quot;conferenceSolutionKey&quot;: { # The conference solution, such as Hangouts or Google Meet.
            &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
                # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
                # The possible values are:
                # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
                # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
                # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
                # - &quot;addOn&quot; for 3P conference providers
          },
          &quot;requestId&quot;: &quot;A String&quot;, # The client-generated unique ID for this request.
              # Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored.
          &quot;status&quot;: { # The status of the conference create request.
            &quot;statusCode&quot;: &quot;A String&quot;, # The current status of the conference create request. Read-only.
                # The possible values are:
                # - &quot;pending&quot;: the conference create request is still being processed.
                # - &quot;success&quot;: the conference create request succeeded, the entry points are populated.
                # - &quot;failure&quot;: the conference create request failed, there are no entry points.
          },
        },
        &quot;entryPoints&quot;: [ # Information about individual conference entry points, such as URLs or phone numbers.
            # All of them must belong to the same conference.
            # Either conferenceSolution and at least one entryPoint, or createRequest is required.
          {
            &quot;accessCode&quot;: &quot;A String&quot;, # The access code to access the conference. The maximum length is 128 characters.
                # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
                # Optional.
            &quot;entryPointFeatures&quot;: [ # Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point.
              &quot;A String&quot;,
            ],
            &quot;entryPointType&quot;: &quot;A String&quot;, # The type of the conference entry point.
                # Possible values are:
                # - &quot;video&quot; - joining a conference over HTTP. A conference can have zero or one video entry point.
                # - &quot;phone&quot; - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
                # - &quot;sip&quot; - joining a conference over SIP. A conference can have zero or one sip entry point.
                # - &quot;more&quot; - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference.
            &quot;label&quot;: &quot;A String&quot;, # The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters.
                # Examples:
                # - for video: meet.google.com/aaa-bbbb-ccc
                # - for phone: +1 123 268 2601
                # - for sip: 12345678@altostrat.com
                # - for more: should not be filled
                # Optional.
            &quot;meetingCode&quot;: &quot;A String&quot;, # The meeting code to access the conference. The maximum length is 128 characters.
                # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
                # Optional.
            &quot;passcode&quot;: &quot;A String&quot;, # The passcode to access the conference. The maximum length is 128 characters.
                # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            &quot;password&quot;: &quot;A String&quot;, # The password to access the conference. The maximum length is 128 characters.
                # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
                # Optional.
            &quot;pin&quot;: &quot;A String&quot;, # The PIN to access the conference. The maximum length is 128 characters.
                # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
                # Optional.
            &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: &quot;SE&quot; for Sweden.
                # Calendar backend will populate this field only for EntryPointType.PHONE.
            &quot;uri&quot;: &quot;A String&quot;, # The URI of the entry point. The maximum length is 1300 characters.
                # Format:
                # - for video, http: or https: schema is required.
                # - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234).
                # - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com.
                # - for more, http: or https: schema is required.
          },
        ],
        &quot;notes&quot;: &quot;A String&quot;, # Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional.
        &quot;parameters&quot;: { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
          &quot;addOnParameters&quot;: { # Additional add-on specific data.
            &quot;parameters&quot;: {
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
        },
        &quot;signature&quot;: &quot;A String&quot;, # The signature of the conference data.
            # Generated on server side. Must be preserved while copying the conference data between events, otherwise the conference data will not be copied.
            # Unset for a conference with a failed create request.
            # Optional for a conference with a pending create request.
      },
      &quot;created&quot;: &quot;A String&quot;, # Creation time of the event (as a RFC3339 timestamp). Read-only.
      &quot;creator&quot;: { # The creator of the event. Read-only.
        &quot;displayName&quot;: &quot;A String&quot;, # The creator&#x27;s name, if available.
        &quot;email&quot;: &quot;A String&quot;, # The creator&#x27;s email address, if available.
        &quot;id&quot;: &quot;A String&quot;, # The creator&#x27;s Profile ID, if available.
        &quot;self&quot;: false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
      },
      &quot;description&quot;: &quot;A String&quot;, # Description of the event. Can contain HTML. Optional.
      &quot;end&quot;: { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
        &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
        &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
        &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
      },
      &quot;endTimeUnspecified&quot;: false, # Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
      &quot;eventType&quot;: &quot;default&quot;, # Specific type of the event. Read-only. Possible values are:
          # - &quot;default&quot; - A regular event or not further specified.
          # - &quot;outOfOffice&quot; - An out-of-office event.
      &quot;extendedProperties&quot;: { # Extended properties of the event.
        &quot;private&quot;: { # Properties that are private to the copy of the event that appears on this calendar.
          &quot;a_key&quot;: &quot;A String&quot;, # The name of the private property and the corresponding value.
        },
        &quot;shared&quot;: { # Properties that are shared between copies of the event on other attendees&#x27; calendars.
          &quot;a_key&quot;: &quot;A String&quot;, # The name of the shared property and the corresponding value.
        },
      },
      &quot;gadget&quot;: { # A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
        &quot;display&quot;: &quot;A String&quot;, # The gadget&#x27;s display mode. Deprecated. Possible values are:
            # - &quot;icon&quot; - The gadget displays next to the event&#x27;s title in the calendar view.
            # - &quot;chip&quot; - The gadget displays when the event is clicked.
        &quot;height&quot;: 42, # The gadget&#x27;s height in pixels. The height must be an integer greater than 0. Optional. Deprecated.
        &quot;iconLink&quot;: &quot;A String&quot;, # The gadget&#x27;s icon URL. The URL scheme must be HTTPS. Deprecated.
        &quot;link&quot;: &quot;A String&quot;, # The gadget&#x27;s URL. The URL scheme must be HTTPS. Deprecated.
        &quot;preferences&quot;: { # Preferences.
          &quot;a_key&quot;: &quot;A String&quot;, # The preference name and corresponding value.
        },
        &quot;title&quot;: &quot;A String&quot;, # The gadget&#x27;s title. Deprecated.
        &quot;type&quot;: &quot;A String&quot;, # The gadget&#x27;s type. Deprecated.
        &quot;width&quot;: 42, # The gadget&#x27;s width in pixels. The width must be an integer greater than 0. Optional. Deprecated.
      },
      &quot;guestsCanInviteOthers&quot;: true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
      &quot;guestsCanModify&quot;: false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
      &quot;guestsCanSeeOtherGuests&quot;: true, # Whether attendees other than the organizer can see who the event&#x27;s attendees are. Optional. The default is True.
      &quot;hangoutLink&quot;: &quot;A String&quot;, # An absolute link to the Google Hangout associated with this event. Read-only.
      &quot;htmlLink&quot;: &quot;A String&quot;, # An absolute link to this event in the Google Calendar Web UI. Read-only.
      &quot;iCalUID&quot;: &quot;A String&quot;, # Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.
          # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
      &quot;id&quot;: &quot;A String&quot;, # Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
          # - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938
          # - the length of the ID must be between 5 and 1024 characters
          # - the ID must be unique per calendar  Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.
          # If you do not specify an ID, it will be automatically generated by the server.
          # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
      &quot;kind&quot;: &quot;calendar#event&quot;, # Type of the resource (&quot;calendar#event&quot;).
      &quot;location&quot;: &quot;A String&quot;, # Geographic location of the event as free-form text. Optional.
      &quot;locked&quot;: false, # Whether this is a locked event copy where no changes can be made to the main event fields &quot;summary&quot;, &quot;description&quot;, &quot;location&quot;, &quot;start&quot;, &quot;end&quot; or &quot;recurrence&quot;. The default is False. Read-Only.
      &quot;organizer&quot;: { # The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
        &quot;displayName&quot;: &quot;A String&quot;, # The organizer&#x27;s name, if available.
        &quot;email&quot;: &quot;A String&quot;, # The organizer&#x27;s email address, if available. It must be a valid email address as per RFC5322.
        &quot;id&quot;: &quot;A String&quot;, # The organizer&#x27;s Profile ID, if available.
        &quot;self&quot;: false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
      },
      &quot;originalStartTime&quot;: { # For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable.
        &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
        &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
        &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
      },
      &quot;privateCopy&quot;: false, # If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False.
      &quot;recurrence&quot;: [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.
        &quot;A String&quot;,
      ],
      &quot;recurringEventId&quot;: &quot;A String&quot;, # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
      &quot;reminders&quot;: { # Information about the event&#x27;s reminders for the authenticated user.
        &quot;overrides&quot;: [ # If the event doesn&#x27;t use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.
          {
            &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
                # - &quot;email&quot; - Reminders are sent via email.
                # - &quot;popup&quot; - Reminders are sent via a UI popup.
                # Required when adding a reminder.
            &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
                # Required when adding a reminder.
          },
        ],
        &quot;useDefault&quot;: True or False, # Whether the default reminders of the calendar apply to the event.
      },
      &quot;sequence&quot;: 42, # Sequence number as per iCalendar.
      &quot;source&quot;: { # Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
        &quot;title&quot;: &quot;A String&quot;, # Title of the source; for example a title of a web page or an email subject.
        &quot;url&quot;: &quot;A String&quot;, # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
      },
      &quot;start&quot;: { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
        &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
        &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
        &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
      },
      &quot;status&quot;: &quot;A String&quot;, # Status of the event. Optional. Possible values are:
          # - &quot;confirmed&quot; - The event is confirmed. This is the default status.
          # - &quot;tentative&quot; - The event is tentatively confirmed.
          # - &quot;cancelled&quot; - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them.
          # A cancelled status represents two different states depending on the event type:
          # - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event.
          # Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty.
          # - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely.
          # Deleted events are only guaranteed to have the id field populated.   On the organizer&#x27;s calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details.
          # If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated.
      &quot;summary&quot;: &quot;A String&quot;, # Title of the event.
      &quot;transparency&quot;: &quot;opaque&quot;, # Whether the event blocks time on the calendar. Optional. Possible values are:
          # - &quot;opaque&quot; - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
          # - &quot;transparent&quot; - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
      &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the event (as a RFC3339 timestamp). Read-only.
      &quot;visibility&quot;: &quot;default&quot;, # Visibility of the event. Optional. Possible values are:
          # - &quot;default&quot; - Uses the default visibility for events on the calendar. This is the default value.
          # - &quot;public&quot; - The event is public and event details are visible to all readers of the calendar.
          # - &quot;private&quot; - The event is private and only event attendees may view event details.
          # - &quot;confidential&quot; - The event is private. This value is provided for compatibility reasons.
    },
  ],
  &quot;kind&quot;: &quot;calendar#events&quot;, # Type of the collection (&quot;calendar#events&quot;).
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token used to access the next page of this result. Omitted if no further results are available, in which case nextSyncToken is provided.
  &quot;nextSyncToken&quot;: &quot;A String&quot;, # Token used at a later point in time to retrieve only the entries that have changed since this result was returned. Omitted if further results are available, in which case nextPageToken is provided.
  &quot;summary&quot;: &quot;A String&quot;, # Title of the calendar. Read-only.
  &quot;timeZone&quot;: &quot;A String&quot;, # The time zone of the calendar. Read-only.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the calendar (as a RFC3339 timestamp). Read-only.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="move">move(calendarId, eventId, destination, sendNotifications=None, sendUpdates=None)</code>
  <pre>Moves an event to another calendar, i.e. changes an event&#x27;s organizer.

Args:
  calendarId: string, Calendar identifier of the source calendar where the event currently is on. (required)
  eventId: string, Event identifier. (required)
  destination: string, Calendar identifier of the target calendar where the event is to be moved to. (required)
  sendNotifications: boolean, Deprecated. Please use sendUpdates instead.

Whether to send notifications about the change of the event&#x27;s organizer. Note that some emails might still be sent even if you set the value to false. The default is false.
  sendUpdates: string, Guests who should receive notifications about the change of the event&#x27;s organizer.
    Allowed values
      all - Notifications are sent to all guests.
      externalOnly - Notifications are sent to non-Google Calendar guests only.
      none - No notifications are sent. For calendar migration tasks, consider using the Events.import method instead.

Returns:
  An object of the form:

    {
  &quot;anyoneCanAddSelf&quot;: false, # Whether anyone can invite themselves to the event (deprecated). Optional. The default is False.
  &quot;attachments&quot;: [ # File attachments for the event. Currently only Google Drive attachments are supported.
      # In order to modify attachments the supportsAttachments request parameter should be set to true.
      # There can be at most 25 attachments per event,
    {
      &quot;fileId&quot;: &quot;A String&quot;, # ID of the attached file. Read-only.
          # For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API.
      &quot;fileUrl&quot;: &quot;A String&quot;, # URL link to the attachment.
          # For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API.
          # Required when adding an attachment.
      &quot;iconLink&quot;: &quot;A String&quot;, # URL link to the attachment&#x27;s icon. Read-only.
      &quot;mimeType&quot;: &quot;A String&quot;, # Internet media type (MIME type) of the attachment.
      &quot;title&quot;: &quot;A String&quot;, # Attachment title.
    },
  ],
  &quot;attendees&quot;: [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
    {
      &quot;additionalGuests&quot;: 0, # Number of additional guests. Optional. The default is 0.
      &quot;comment&quot;: &quot;A String&quot;, # The attendee&#x27;s response comment. Optional.
      &quot;displayName&quot;: &quot;A String&quot;, # The attendee&#x27;s name, if available. Optional.
      &quot;email&quot;: &quot;A String&quot;, # The attendee&#x27;s email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
          # Required when adding an attendee.
      &quot;id&quot;: &quot;A String&quot;, # The attendee&#x27;s Profile ID, if available.
      &quot;optional&quot;: false, # Whether this is an optional attendee. Optional. The default is False.
      &quot;organizer&quot;: True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
      &quot;resource&quot;: false, # Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
      &quot;responseStatus&quot;: &quot;A String&quot;, # The attendee&#x27;s response status. Possible values are:
          # - &quot;needsAction&quot; - The attendee has not responded to the invitation.
          # - &quot;declined&quot; - The attendee has declined the invitation.
          # - &quot;tentative&quot; - The attendee has tentatively accepted the invitation.
          # - &quot;accepted&quot; - The attendee has accepted the invitation.
      &quot;self&quot;: false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
    },
  ],
  &quot;attendeesOmitted&quot;: false, # Whether attendees may have been omitted from the event&#x27;s representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant&#x27;s response. Optional. The default is False.
  &quot;colorId&quot;: &quot;A String&quot;, # The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the  colors endpoint). Optional.
  &quot;conferenceData&quot;: { # The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests.
    &quot;conferenceId&quot;: &quot;A String&quot;, # The ID of the conference.
        # Can be used by developers to keep track of conferences, should not be displayed to users.
        # The ID value is formed differently for each conference solution type:
        # - eventHangout: ID is not set. (This conference type is deprecated.)
        # - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.)
        # - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc.
        # - addOn: ID is defined by the third-party provider.  Optional.
    &quot;conferenceSolution&quot;: { # The conference solution, such as Google Meet.
        # Unset for a conference with a failed create request.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;iconUri&quot;: &quot;A String&quot;, # The user-visible icon for this solution.
      &quot;key&quot;: { # The key which can uniquely identify the conference solution for this event.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;name&quot;: &quot;A String&quot;, # The user-visible name of this solution. Not localized.
    },
    &quot;createRequest&quot;: { # A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;conferenceSolutionKey&quot;: { # The conference solution, such as Hangouts or Google Meet.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;requestId&quot;: &quot;A String&quot;, # The client-generated unique ID for this request.
          # Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored.
      &quot;status&quot;: { # The status of the conference create request.
        &quot;statusCode&quot;: &quot;A String&quot;, # The current status of the conference create request. Read-only.
            # The possible values are:
            # - &quot;pending&quot;: the conference create request is still being processed.
            # - &quot;success&quot;: the conference create request succeeded, the entry points are populated.
            # - &quot;failure&quot;: the conference create request failed, there are no entry points.
      },
    },
    &quot;entryPoints&quot;: [ # Information about individual conference entry points, such as URLs or phone numbers.
        # All of them must belong to the same conference.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      {
        &quot;accessCode&quot;: &quot;A String&quot;, # The access code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;entryPointFeatures&quot;: [ # Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point.
          &quot;A String&quot;,
        ],
        &quot;entryPointType&quot;: &quot;A String&quot;, # The type of the conference entry point.
            # Possible values are:
            # - &quot;video&quot; - joining a conference over HTTP. A conference can have zero or one video entry point.
            # - &quot;phone&quot; - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
            # - &quot;sip&quot; - joining a conference over SIP. A conference can have zero or one sip entry point.
            # - &quot;more&quot; - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference.
        &quot;label&quot;: &quot;A String&quot;, # The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters.
            # Examples:
            # - for video: meet.google.com/aaa-bbbb-ccc
            # - for phone: +1 123 268 2601
            # - for sip: 12345678@altostrat.com
            # - for more: should not be filled
            # Optional.
        &quot;meetingCode&quot;: &quot;A String&quot;, # The meeting code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;passcode&quot;: &quot;A String&quot;, # The passcode to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
        &quot;password&quot;: &quot;A String&quot;, # The password to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;pin&quot;: &quot;A String&quot;, # The PIN to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: &quot;SE&quot; for Sweden.
            # Calendar backend will populate this field only for EntryPointType.PHONE.
        &quot;uri&quot;: &quot;A String&quot;, # The URI of the entry point. The maximum length is 1300 characters.
            # Format:
            # - for video, http: or https: schema is required.
            # - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234).
            # - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com.
            # - for more, http: or https: schema is required.
      },
    ],
    &quot;notes&quot;: &quot;A String&quot;, # Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional.
    &quot;parameters&quot;: { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
      &quot;addOnParameters&quot;: { # Additional add-on specific data.
        &quot;parameters&quot;: {
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    },
    &quot;signature&quot;: &quot;A String&quot;, # The signature of the conference data.
        # Generated on server side. Must be preserved while copying the conference data between events, otherwise the conference data will not be copied.
        # Unset for a conference with a failed create request.
        # Optional for a conference with a pending create request.
  },
  &quot;created&quot;: &quot;A String&quot;, # Creation time of the event (as a RFC3339 timestamp). Read-only.
  &quot;creator&quot;: { # The creator of the event. Read-only.
    &quot;displayName&quot;: &quot;A String&quot;, # The creator&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The creator&#x27;s email address, if available.
    &quot;id&quot;: &quot;A String&quot;, # The creator&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;description&quot;: &quot;A String&quot;, # Description of the event. Can contain HTML. Optional.
  &quot;end&quot;: { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;endTimeUnspecified&quot;: false, # Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;eventType&quot;: &quot;default&quot;, # Specific type of the event. Read-only. Possible values are:
      # - &quot;default&quot; - A regular event or not further specified.
      # - &quot;outOfOffice&quot; - An out-of-office event.
  &quot;extendedProperties&quot;: { # Extended properties of the event.
    &quot;private&quot;: { # Properties that are private to the copy of the event that appears on this calendar.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the private property and the corresponding value.
    },
    &quot;shared&quot;: { # Properties that are shared between copies of the event on other attendees&#x27; calendars.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the shared property and the corresponding value.
    },
  },
  &quot;gadget&quot;: { # A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
    &quot;display&quot;: &quot;A String&quot;, # The gadget&#x27;s display mode. Deprecated. Possible values are:
        # - &quot;icon&quot; - The gadget displays next to the event&#x27;s title in the calendar view.
        # - &quot;chip&quot; - The gadget displays when the event is clicked.
    &quot;height&quot;: 42, # The gadget&#x27;s height in pixels. The height must be an integer greater than 0. Optional. Deprecated.
    &quot;iconLink&quot;: &quot;A String&quot;, # The gadget&#x27;s icon URL. The URL scheme must be HTTPS. Deprecated.
    &quot;link&quot;: &quot;A String&quot;, # The gadget&#x27;s URL. The URL scheme must be HTTPS. Deprecated.
    &quot;preferences&quot;: { # Preferences.
      &quot;a_key&quot;: &quot;A String&quot;, # The preference name and corresponding value.
    },
    &quot;title&quot;: &quot;A String&quot;, # The gadget&#x27;s title. Deprecated.
    &quot;type&quot;: &quot;A String&quot;, # The gadget&#x27;s type. Deprecated.
    &quot;width&quot;: 42, # The gadget&#x27;s width in pixels. The width must be an integer greater than 0. Optional. Deprecated.
  },
  &quot;guestsCanInviteOthers&quot;: true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
  &quot;guestsCanModify&quot;: false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
  &quot;guestsCanSeeOtherGuests&quot;: true, # Whether attendees other than the organizer can see who the event&#x27;s attendees are. Optional. The default is True.
  &quot;hangoutLink&quot;: &quot;A String&quot;, # An absolute link to the Google Hangout associated with this event. Read-only.
  &quot;htmlLink&quot;: &quot;A String&quot;, # An absolute link to this event in the Google Calendar Web UI. Read-only.
  &quot;iCalUID&quot;: &quot;A String&quot;, # Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;id&quot;: &quot;A String&quot;, # Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
      # - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938
      # - the length of the ID must be between 5 and 1024 characters
      # - the ID must be unique per calendar  Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.
      # If you do not specify an ID, it will be automatically generated by the server.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;kind&quot;: &quot;calendar#event&quot;, # Type of the resource (&quot;calendar#event&quot;).
  &quot;location&quot;: &quot;A String&quot;, # Geographic location of the event as free-form text. Optional.
  &quot;locked&quot;: false, # Whether this is a locked event copy where no changes can be made to the main event fields &quot;summary&quot;, &quot;description&quot;, &quot;location&quot;, &quot;start&quot;, &quot;end&quot; or &quot;recurrence&quot;. The default is False. Read-Only.
  &quot;organizer&quot;: { # The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
    &quot;displayName&quot;: &quot;A String&quot;, # The organizer&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The organizer&#x27;s email address, if available. It must be a valid email address as per RFC5322.
    &quot;id&quot;: &quot;A String&quot;, # The organizer&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;originalStartTime&quot;: { # For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;privateCopy&quot;: false, # If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False.
  &quot;recurrence&quot;: [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.
    &quot;A String&quot;,
  ],
  &quot;recurringEventId&quot;: &quot;A String&quot;, # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
  &quot;reminders&quot;: { # Information about the event&#x27;s reminders for the authenticated user.
    &quot;overrides&quot;: [ # If the event doesn&#x27;t use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.
      {
        &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
            # - &quot;email&quot; - Reminders are sent via email.
            # - &quot;popup&quot; - Reminders are sent via a UI popup.
            # Required when adding a reminder.
        &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
            # Required when adding a reminder.
      },
    ],
    &quot;useDefault&quot;: True or False, # Whether the default reminders of the calendar apply to the event.
  },
  &quot;sequence&quot;: 42, # Sequence number as per iCalendar.
  &quot;source&quot;: { # Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
    &quot;title&quot;: &quot;A String&quot;, # Title of the source; for example a title of a web page or an email subject.
    &quot;url&quot;: &quot;A String&quot;, # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
  },
  &quot;start&quot;: { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;status&quot;: &quot;A String&quot;, # Status of the event. Optional. Possible values are:
      # - &quot;confirmed&quot; - The event is confirmed. This is the default status.
      # - &quot;tentative&quot; - The event is tentatively confirmed.
      # - &quot;cancelled&quot; - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them.
      # A cancelled status represents two different states depending on the event type:
      # - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event.
      # Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty.
      # - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely.
      # Deleted events are only guaranteed to have the id field populated.   On the organizer&#x27;s calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details.
      # If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated.
  &quot;summary&quot;: &quot;A String&quot;, # Title of the event.
  &quot;transparency&quot;: &quot;opaque&quot;, # Whether the event blocks time on the calendar. Optional. Possible values are:
      # - &quot;opaque&quot; - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
      # - &quot;transparent&quot; - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the event (as a RFC3339 timestamp). Read-only.
  &quot;visibility&quot;: &quot;default&quot;, # Visibility of the event. Optional. Possible values are:
      # - &quot;default&quot; - Uses the default visibility for events on the calendar. This is the default value.
      # - &quot;public&quot; - The event is public and event details are visible to all readers of the calendar.
      # - &quot;private&quot; - The event is private and only event attendees may view event details.
      # - &quot;confidential&quot; - The event is private. This value is provided for compatibility reasons.
}</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(calendarId, eventId, alwaysIncludeEmail=None, body=None, conferenceDataVersion=None, maxAttendees=None, sendNotifications=None, sendUpdates=None, supportsAttachments=None)</code>
  <pre>Updates an event. This method supports patch semantics.

Args:
  calendarId: string, Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the &quot;primary&quot; keyword. (required)
  eventId: string, Event identifier. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;anyoneCanAddSelf&quot;: false, # Whether anyone can invite themselves to the event (deprecated). Optional. The default is False.
  &quot;attachments&quot;: [ # File attachments for the event. Currently only Google Drive attachments are supported.
      # In order to modify attachments the supportsAttachments request parameter should be set to true.
      # There can be at most 25 attachments per event,
    {
      &quot;fileId&quot;: &quot;A String&quot;, # ID of the attached file. Read-only.
          # For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API.
      &quot;fileUrl&quot;: &quot;A String&quot;, # URL link to the attachment.
          # For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API.
          # Required when adding an attachment.
      &quot;iconLink&quot;: &quot;A String&quot;, # URL link to the attachment&#x27;s icon. Read-only.
      &quot;mimeType&quot;: &quot;A String&quot;, # Internet media type (MIME type) of the attachment.
      &quot;title&quot;: &quot;A String&quot;, # Attachment title.
    },
  ],
  &quot;attendees&quot;: [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
    {
      &quot;additionalGuests&quot;: 0, # Number of additional guests. Optional. The default is 0.
      &quot;comment&quot;: &quot;A String&quot;, # The attendee&#x27;s response comment. Optional.
      &quot;displayName&quot;: &quot;A String&quot;, # The attendee&#x27;s name, if available. Optional.
      &quot;email&quot;: &quot;A String&quot;, # The attendee&#x27;s email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
          # Required when adding an attendee.
      &quot;id&quot;: &quot;A String&quot;, # The attendee&#x27;s Profile ID, if available.
      &quot;optional&quot;: false, # Whether this is an optional attendee. Optional. The default is False.
      &quot;organizer&quot;: True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
      &quot;resource&quot;: false, # Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
      &quot;responseStatus&quot;: &quot;A String&quot;, # The attendee&#x27;s response status. Possible values are:
          # - &quot;needsAction&quot; - The attendee has not responded to the invitation.
          # - &quot;declined&quot; - The attendee has declined the invitation.
          # - &quot;tentative&quot; - The attendee has tentatively accepted the invitation.
          # - &quot;accepted&quot; - The attendee has accepted the invitation.
      &quot;self&quot;: false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
    },
  ],
  &quot;attendeesOmitted&quot;: false, # Whether attendees may have been omitted from the event&#x27;s representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant&#x27;s response. Optional. The default is False.
  &quot;colorId&quot;: &quot;A String&quot;, # The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the  colors endpoint). Optional.
  &quot;conferenceData&quot;: { # The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests.
    &quot;conferenceId&quot;: &quot;A String&quot;, # The ID of the conference.
        # Can be used by developers to keep track of conferences, should not be displayed to users.
        # The ID value is formed differently for each conference solution type:
        # - eventHangout: ID is not set. (This conference type is deprecated.)
        # - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.)
        # - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc.
        # - addOn: ID is defined by the third-party provider.  Optional.
    &quot;conferenceSolution&quot;: { # The conference solution, such as Google Meet.
        # Unset for a conference with a failed create request.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;iconUri&quot;: &quot;A String&quot;, # The user-visible icon for this solution.
      &quot;key&quot;: { # The key which can uniquely identify the conference solution for this event.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;name&quot;: &quot;A String&quot;, # The user-visible name of this solution. Not localized.
    },
    &quot;createRequest&quot;: { # A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;conferenceSolutionKey&quot;: { # The conference solution, such as Hangouts or Google Meet.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;requestId&quot;: &quot;A String&quot;, # The client-generated unique ID for this request.
          # Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored.
      &quot;status&quot;: { # The status of the conference create request.
        &quot;statusCode&quot;: &quot;A String&quot;, # The current status of the conference create request. Read-only.
            # The possible values are:
            # - &quot;pending&quot;: the conference create request is still being processed.
            # - &quot;success&quot;: the conference create request succeeded, the entry points are populated.
            # - &quot;failure&quot;: the conference create request failed, there are no entry points.
      },
    },
    &quot;entryPoints&quot;: [ # Information about individual conference entry points, such as URLs or phone numbers.
        # All of them must belong to the same conference.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      {
        &quot;accessCode&quot;: &quot;A String&quot;, # The access code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;entryPointFeatures&quot;: [ # Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point.
          &quot;A String&quot;,
        ],
        &quot;entryPointType&quot;: &quot;A String&quot;, # The type of the conference entry point.
            # Possible values are:
            # - &quot;video&quot; - joining a conference over HTTP. A conference can have zero or one video entry point.
            # - &quot;phone&quot; - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
            # - &quot;sip&quot; - joining a conference over SIP. A conference can have zero or one sip entry point.
            # - &quot;more&quot; - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference.
        &quot;label&quot;: &quot;A String&quot;, # The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters.
            # Examples:
            # - for video: meet.google.com/aaa-bbbb-ccc
            # - for phone: +1 123 268 2601
            # - for sip: 12345678@altostrat.com
            # - for more: should not be filled
            # Optional.
        &quot;meetingCode&quot;: &quot;A String&quot;, # The meeting code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;passcode&quot;: &quot;A String&quot;, # The passcode to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
        &quot;password&quot;: &quot;A String&quot;, # The password to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;pin&quot;: &quot;A String&quot;, # The PIN to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: &quot;SE&quot; for Sweden.
            # Calendar backend will populate this field only for EntryPointType.PHONE.
        &quot;uri&quot;: &quot;A String&quot;, # The URI of the entry point. The maximum length is 1300 characters.
            # Format:
            # - for video, http: or https: schema is required.
            # - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234).
            # - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com.
            # - for more, http: or https: schema is required.
      },
    ],
    &quot;notes&quot;: &quot;A String&quot;, # Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional.
    &quot;parameters&quot;: { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
      &quot;addOnParameters&quot;: { # Additional add-on specific data.
        &quot;parameters&quot;: {
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    },
    &quot;signature&quot;: &quot;A String&quot;, # The signature of the conference data.
        # Generated on server side. Must be preserved while copying the conference data between events, otherwise the conference data will not be copied.
        # Unset for a conference with a failed create request.
        # Optional for a conference with a pending create request.
  },
  &quot;created&quot;: &quot;A String&quot;, # Creation time of the event (as a RFC3339 timestamp). Read-only.
  &quot;creator&quot;: { # The creator of the event. Read-only.
    &quot;displayName&quot;: &quot;A String&quot;, # The creator&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The creator&#x27;s email address, if available.
    &quot;id&quot;: &quot;A String&quot;, # The creator&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;description&quot;: &quot;A String&quot;, # Description of the event. Can contain HTML. Optional.
  &quot;end&quot;: { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;endTimeUnspecified&quot;: false, # Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;eventType&quot;: &quot;default&quot;, # Specific type of the event. Read-only. Possible values are:
      # - &quot;default&quot; - A regular event or not further specified.
      # - &quot;outOfOffice&quot; - An out-of-office event.
  &quot;extendedProperties&quot;: { # Extended properties of the event.
    &quot;private&quot;: { # Properties that are private to the copy of the event that appears on this calendar.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the private property and the corresponding value.
    },
    &quot;shared&quot;: { # Properties that are shared between copies of the event on other attendees&#x27; calendars.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the shared property and the corresponding value.
    },
  },
  &quot;gadget&quot;: { # A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
    &quot;display&quot;: &quot;A String&quot;, # The gadget&#x27;s display mode. Deprecated. Possible values are:
        # - &quot;icon&quot; - The gadget displays next to the event&#x27;s title in the calendar view.
        # - &quot;chip&quot; - The gadget displays when the event is clicked.
    &quot;height&quot;: 42, # The gadget&#x27;s height in pixels. The height must be an integer greater than 0. Optional. Deprecated.
    &quot;iconLink&quot;: &quot;A String&quot;, # The gadget&#x27;s icon URL. The URL scheme must be HTTPS. Deprecated.
    &quot;link&quot;: &quot;A String&quot;, # The gadget&#x27;s URL. The URL scheme must be HTTPS. Deprecated.
    &quot;preferences&quot;: { # Preferences.
      &quot;a_key&quot;: &quot;A String&quot;, # The preference name and corresponding value.
    },
    &quot;title&quot;: &quot;A String&quot;, # The gadget&#x27;s title. Deprecated.
    &quot;type&quot;: &quot;A String&quot;, # The gadget&#x27;s type. Deprecated.
    &quot;width&quot;: 42, # The gadget&#x27;s width in pixels. The width must be an integer greater than 0. Optional. Deprecated.
  },
  &quot;guestsCanInviteOthers&quot;: true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
  &quot;guestsCanModify&quot;: false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
  &quot;guestsCanSeeOtherGuests&quot;: true, # Whether attendees other than the organizer can see who the event&#x27;s attendees are. Optional. The default is True.
  &quot;hangoutLink&quot;: &quot;A String&quot;, # An absolute link to the Google Hangout associated with this event. Read-only.
  &quot;htmlLink&quot;: &quot;A String&quot;, # An absolute link to this event in the Google Calendar Web UI. Read-only.
  &quot;iCalUID&quot;: &quot;A String&quot;, # Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;id&quot;: &quot;A String&quot;, # Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
      # - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938
      # - the length of the ID must be between 5 and 1024 characters
      # - the ID must be unique per calendar  Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.
      # If you do not specify an ID, it will be automatically generated by the server.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;kind&quot;: &quot;calendar#event&quot;, # Type of the resource (&quot;calendar#event&quot;).
  &quot;location&quot;: &quot;A String&quot;, # Geographic location of the event as free-form text. Optional.
  &quot;locked&quot;: false, # Whether this is a locked event copy where no changes can be made to the main event fields &quot;summary&quot;, &quot;description&quot;, &quot;location&quot;, &quot;start&quot;, &quot;end&quot; or &quot;recurrence&quot;. The default is False. Read-Only.
  &quot;organizer&quot;: { # The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
    &quot;displayName&quot;: &quot;A String&quot;, # The organizer&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The organizer&#x27;s email address, if available. It must be a valid email address as per RFC5322.
    &quot;id&quot;: &quot;A String&quot;, # The organizer&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;originalStartTime&quot;: { # For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;privateCopy&quot;: false, # If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False.
  &quot;recurrence&quot;: [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.
    &quot;A String&quot;,
  ],
  &quot;recurringEventId&quot;: &quot;A String&quot;, # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
  &quot;reminders&quot;: { # Information about the event&#x27;s reminders for the authenticated user.
    &quot;overrides&quot;: [ # If the event doesn&#x27;t use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.
      {
        &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
            # - &quot;email&quot; - Reminders are sent via email.
            # - &quot;popup&quot; - Reminders are sent via a UI popup.
            # Required when adding a reminder.
        &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
            # Required when adding a reminder.
      },
    ],
    &quot;useDefault&quot;: True or False, # Whether the default reminders of the calendar apply to the event.
  },
  &quot;sequence&quot;: 42, # Sequence number as per iCalendar.
  &quot;source&quot;: { # Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
    &quot;title&quot;: &quot;A String&quot;, # Title of the source; for example a title of a web page or an email subject.
    &quot;url&quot;: &quot;A String&quot;, # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
  },
  &quot;start&quot;: { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;status&quot;: &quot;A String&quot;, # Status of the event. Optional. Possible values are:
      # - &quot;confirmed&quot; - The event is confirmed. This is the default status.
      # - &quot;tentative&quot; - The event is tentatively confirmed.
      # - &quot;cancelled&quot; - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them.
      # A cancelled status represents two different states depending on the event type:
      # - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event.
      # Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty.
      # - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely.
      # Deleted events are only guaranteed to have the id field populated.   On the organizer&#x27;s calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details.
      # If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated.
  &quot;summary&quot;: &quot;A String&quot;, # Title of the event.
  &quot;transparency&quot;: &quot;opaque&quot;, # Whether the event blocks time on the calendar. Optional. Possible values are:
      # - &quot;opaque&quot; - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
      # - &quot;transparent&quot; - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the event (as a RFC3339 timestamp). Read-only.
  &quot;visibility&quot;: &quot;default&quot;, # Visibility of the event. Optional. Possible values are:
      # - &quot;default&quot; - Uses the default visibility for events on the calendar. This is the default value.
      # - &quot;public&quot; - The event is public and event details are visible to all readers of the calendar.
      # - &quot;private&quot; - The event is private and only event attendees may view event details.
      # - &quot;confidential&quot; - The event is private. This value is provided for compatibility reasons.
}

  alwaysIncludeEmail: boolean, Deprecated and ignored. A value will always be returned in the email field for the organizer, creator and attendees, even if no real email address is available (i.e. a generated, non-working value will be provided).
  conferenceDataVersion: integer, Version number of conference data supported by the API client. Version 0 assumes no conference data support and ignores conference data in the event&#x27;s body. Version 1 enables support for copying of ConferenceData as well as for creating new conferences using the createRequest field of conferenceData. The default is 0.
  maxAttendees: integer, The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional.
  sendNotifications: boolean, Deprecated. Please use sendUpdates instead.

Whether to send notifications about the event update (for example, description changes, etc.). Note that some emails might still be sent even if you set the value to false. The default is false.
  sendUpdates: string, Guests who should receive notifications about the event update (for example, title changes, etc.).
    Allowed values
      all - Notifications are sent to all guests.
      externalOnly - Notifications are sent to non-Google Calendar guests only.
      none - No notifications are sent. For calendar migration tasks, consider using the Events.import method instead.
  supportsAttachments: boolean, Whether API client performing operation supports event attachments. Optional. The default is False.

Returns:
  An object of the form:

    {
  &quot;anyoneCanAddSelf&quot;: false, # Whether anyone can invite themselves to the event (deprecated). Optional. The default is False.
  &quot;attachments&quot;: [ # File attachments for the event. Currently only Google Drive attachments are supported.
      # In order to modify attachments the supportsAttachments request parameter should be set to true.
      # There can be at most 25 attachments per event,
    {
      &quot;fileId&quot;: &quot;A String&quot;, # ID of the attached file. Read-only.
          # For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API.
      &quot;fileUrl&quot;: &quot;A String&quot;, # URL link to the attachment.
          # For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API.
          # Required when adding an attachment.
      &quot;iconLink&quot;: &quot;A String&quot;, # URL link to the attachment&#x27;s icon. Read-only.
      &quot;mimeType&quot;: &quot;A String&quot;, # Internet media type (MIME type) of the attachment.
      &quot;title&quot;: &quot;A String&quot;, # Attachment title.
    },
  ],
  &quot;attendees&quot;: [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
    {
      &quot;additionalGuests&quot;: 0, # Number of additional guests. Optional. The default is 0.
      &quot;comment&quot;: &quot;A String&quot;, # The attendee&#x27;s response comment. Optional.
      &quot;displayName&quot;: &quot;A String&quot;, # The attendee&#x27;s name, if available. Optional.
      &quot;email&quot;: &quot;A String&quot;, # The attendee&#x27;s email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
          # Required when adding an attendee.
      &quot;id&quot;: &quot;A String&quot;, # The attendee&#x27;s Profile ID, if available.
      &quot;optional&quot;: false, # Whether this is an optional attendee. Optional. The default is False.
      &quot;organizer&quot;: True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
      &quot;resource&quot;: false, # Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
      &quot;responseStatus&quot;: &quot;A String&quot;, # The attendee&#x27;s response status. Possible values are:
          # - &quot;needsAction&quot; - The attendee has not responded to the invitation.
          # - &quot;declined&quot; - The attendee has declined the invitation.
          # - &quot;tentative&quot; - The attendee has tentatively accepted the invitation.
          # - &quot;accepted&quot; - The attendee has accepted the invitation.
      &quot;self&quot;: false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
    },
  ],
  &quot;attendeesOmitted&quot;: false, # Whether attendees may have been omitted from the event&#x27;s representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant&#x27;s response. Optional. The default is False.
  &quot;colorId&quot;: &quot;A String&quot;, # The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the  colors endpoint). Optional.
  &quot;conferenceData&quot;: { # The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests.
    &quot;conferenceId&quot;: &quot;A String&quot;, # The ID of the conference.
        # Can be used by developers to keep track of conferences, should not be displayed to users.
        # The ID value is formed differently for each conference solution type:
        # - eventHangout: ID is not set. (This conference type is deprecated.)
        # - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.)
        # - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc.
        # - addOn: ID is defined by the third-party provider.  Optional.
    &quot;conferenceSolution&quot;: { # The conference solution, such as Google Meet.
        # Unset for a conference with a failed create request.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;iconUri&quot;: &quot;A String&quot;, # The user-visible icon for this solution.
      &quot;key&quot;: { # The key which can uniquely identify the conference solution for this event.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;name&quot;: &quot;A String&quot;, # The user-visible name of this solution. Not localized.
    },
    &quot;createRequest&quot;: { # A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;conferenceSolutionKey&quot;: { # The conference solution, such as Hangouts or Google Meet.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;requestId&quot;: &quot;A String&quot;, # The client-generated unique ID for this request.
          # Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored.
      &quot;status&quot;: { # The status of the conference create request.
        &quot;statusCode&quot;: &quot;A String&quot;, # The current status of the conference create request. Read-only.
            # The possible values are:
            # - &quot;pending&quot;: the conference create request is still being processed.
            # - &quot;success&quot;: the conference create request succeeded, the entry points are populated.
            # - &quot;failure&quot;: the conference create request failed, there are no entry points.
      },
    },
    &quot;entryPoints&quot;: [ # Information about individual conference entry points, such as URLs or phone numbers.
        # All of them must belong to the same conference.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      {
        &quot;accessCode&quot;: &quot;A String&quot;, # The access code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;entryPointFeatures&quot;: [ # Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point.
          &quot;A String&quot;,
        ],
        &quot;entryPointType&quot;: &quot;A String&quot;, # The type of the conference entry point.
            # Possible values are:
            # - &quot;video&quot; - joining a conference over HTTP. A conference can have zero or one video entry point.
            # - &quot;phone&quot; - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
            # - &quot;sip&quot; - joining a conference over SIP. A conference can have zero or one sip entry point.
            # - &quot;more&quot; - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference.
        &quot;label&quot;: &quot;A String&quot;, # The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters.
            # Examples:
            # - for video: meet.google.com/aaa-bbbb-ccc
            # - for phone: +1 123 268 2601
            # - for sip: 12345678@altostrat.com
            # - for more: should not be filled
            # Optional.
        &quot;meetingCode&quot;: &quot;A String&quot;, # The meeting code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;passcode&quot;: &quot;A String&quot;, # The passcode to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
        &quot;password&quot;: &quot;A String&quot;, # The password to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;pin&quot;: &quot;A String&quot;, # The PIN to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: &quot;SE&quot; for Sweden.
            # Calendar backend will populate this field only for EntryPointType.PHONE.
        &quot;uri&quot;: &quot;A String&quot;, # The URI of the entry point. The maximum length is 1300 characters.
            # Format:
            # - for video, http: or https: schema is required.
            # - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234).
            # - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com.
            # - for more, http: or https: schema is required.
      },
    ],
    &quot;notes&quot;: &quot;A String&quot;, # Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional.
    &quot;parameters&quot;: { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
      &quot;addOnParameters&quot;: { # Additional add-on specific data.
        &quot;parameters&quot;: {
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    },
    &quot;signature&quot;: &quot;A String&quot;, # The signature of the conference data.
        # Generated on server side. Must be preserved while copying the conference data between events, otherwise the conference data will not be copied.
        # Unset for a conference with a failed create request.
        # Optional for a conference with a pending create request.
  },
  &quot;created&quot;: &quot;A String&quot;, # Creation time of the event (as a RFC3339 timestamp). Read-only.
  &quot;creator&quot;: { # The creator of the event. Read-only.
    &quot;displayName&quot;: &quot;A String&quot;, # The creator&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The creator&#x27;s email address, if available.
    &quot;id&quot;: &quot;A String&quot;, # The creator&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;description&quot;: &quot;A String&quot;, # Description of the event. Can contain HTML. Optional.
  &quot;end&quot;: { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;endTimeUnspecified&quot;: false, # Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;eventType&quot;: &quot;default&quot;, # Specific type of the event. Read-only. Possible values are:
      # - &quot;default&quot; - A regular event or not further specified.
      # - &quot;outOfOffice&quot; - An out-of-office event.
  &quot;extendedProperties&quot;: { # Extended properties of the event.
    &quot;private&quot;: { # Properties that are private to the copy of the event that appears on this calendar.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the private property and the corresponding value.
    },
    &quot;shared&quot;: { # Properties that are shared between copies of the event on other attendees&#x27; calendars.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the shared property and the corresponding value.
    },
  },
  &quot;gadget&quot;: { # A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
    &quot;display&quot;: &quot;A String&quot;, # The gadget&#x27;s display mode. Deprecated. Possible values are:
        # - &quot;icon&quot; - The gadget displays next to the event&#x27;s title in the calendar view.
        # - &quot;chip&quot; - The gadget displays when the event is clicked.
    &quot;height&quot;: 42, # The gadget&#x27;s height in pixels. The height must be an integer greater than 0. Optional. Deprecated.
    &quot;iconLink&quot;: &quot;A String&quot;, # The gadget&#x27;s icon URL. The URL scheme must be HTTPS. Deprecated.
    &quot;link&quot;: &quot;A String&quot;, # The gadget&#x27;s URL. The URL scheme must be HTTPS. Deprecated.
    &quot;preferences&quot;: { # Preferences.
      &quot;a_key&quot;: &quot;A String&quot;, # The preference name and corresponding value.
    },
    &quot;title&quot;: &quot;A String&quot;, # The gadget&#x27;s title. Deprecated.
    &quot;type&quot;: &quot;A String&quot;, # The gadget&#x27;s type. Deprecated.
    &quot;width&quot;: 42, # The gadget&#x27;s width in pixels. The width must be an integer greater than 0. Optional. Deprecated.
  },
  &quot;guestsCanInviteOthers&quot;: true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
  &quot;guestsCanModify&quot;: false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
  &quot;guestsCanSeeOtherGuests&quot;: true, # Whether attendees other than the organizer can see who the event&#x27;s attendees are. Optional. The default is True.
  &quot;hangoutLink&quot;: &quot;A String&quot;, # An absolute link to the Google Hangout associated with this event. Read-only.
  &quot;htmlLink&quot;: &quot;A String&quot;, # An absolute link to this event in the Google Calendar Web UI. Read-only.
  &quot;iCalUID&quot;: &quot;A String&quot;, # Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;id&quot;: &quot;A String&quot;, # Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
      # - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938
      # - the length of the ID must be between 5 and 1024 characters
      # - the ID must be unique per calendar  Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.
      # If you do not specify an ID, it will be automatically generated by the server.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;kind&quot;: &quot;calendar#event&quot;, # Type of the resource (&quot;calendar#event&quot;).
  &quot;location&quot;: &quot;A String&quot;, # Geographic location of the event as free-form text. Optional.
  &quot;locked&quot;: false, # Whether this is a locked event copy where no changes can be made to the main event fields &quot;summary&quot;, &quot;description&quot;, &quot;location&quot;, &quot;start&quot;, &quot;end&quot; or &quot;recurrence&quot;. The default is False. Read-Only.
  &quot;organizer&quot;: { # The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
    &quot;displayName&quot;: &quot;A String&quot;, # The organizer&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The organizer&#x27;s email address, if available. It must be a valid email address as per RFC5322.
    &quot;id&quot;: &quot;A String&quot;, # The organizer&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;originalStartTime&quot;: { # For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;privateCopy&quot;: false, # If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False.
  &quot;recurrence&quot;: [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.
    &quot;A String&quot;,
  ],
  &quot;recurringEventId&quot;: &quot;A String&quot;, # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
  &quot;reminders&quot;: { # Information about the event&#x27;s reminders for the authenticated user.
    &quot;overrides&quot;: [ # If the event doesn&#x27;t use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.
      {
        &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
            # - &quot;email&quot; - Reminders are sent via email.
            # - &quot;popup&quot; - Reminders are sent via a UI popup.
            # Required when adding a reminder.
        &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
            # Required when adding a reminder.
      },
    ],
    &quot;useDefault&quot;: True or False, # Whether the default reminders of the calendar apply to the event.
  },
  &quot;sequence&quot;: 42, # Sequence number as per iCalendar.
  &quot;source&quot;: { # Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
    &quot;title&quot;: &quot;A String&quot;, # Title of the source; for example a title of a web page or an email subject.
    &quot;url&quot;: &quot;A String&quot;, # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
  },
  &quot;start&quot;: { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;status&quot;: &quot;A String&quot;, # Status of the event. Optional. Possible values are:
      # - &quot;confirmed&quot; - The event is confirmed. This is the default status.
      # - &quot;tentative&quot; - The event is tentatively confirmed.
      # - &quot;cancelled&quot; - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them.
      # A cancelled status represents two different states depending on the event type:
      # - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event.
      # Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty.
      # - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely.
      # Deleted events are only guaranteed to have the id field populated.   On the organizer&#x27;s calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details.
      # If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated.
  &quot;summary&quot;: &quot;A String&quot;, # Title of the event.
  &quot;transparency&quot;: &quot;opaque&quot;, # Whether the event blocks time on the calendar. Optional. Possible values are:
      # - &quot;opaque&quot; - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
      # - &quot;transparent&quot; - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the event (as a RFC3339 timestamp). Read-only.
  &quot;visibility&quot;: &quot;default&quot;, # Visibility of the event. Optional. Possible values are:
      # - &quot;default&quot; - Uses the default visibility for events on the calendar. This is the default value.
      # - &quot;public&quot; - The event is public and event details are visible to all readers of the calendar.
      # - &quot;private&quot; - The event is private and only event attendees may view event details.
      # - &quot;confidential&quot; - The event is private. This value is provided for compatibility reasons.
}</pre>
</div>

<div class="method">
    <code class="details" id="quickAdd">quickAdd(calendarId, text, sendNotifications=None, sendUpdates=None)</code>
  <pre>Creates an event based on a simple text string.

Args:
  calendarId: string, Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the &quot;primary&quot; keyword. (required)
  text: string, The text describing the event to be created. (required)
  sendNotifications: boolean, Deprecated. Please use sendUpdates instead.

Whether to send notifications about the creation of the event. Note that some emails might still be sent even if you set the value to false. The default is false.
  sendUpdates: string, Guests who should receive notifications about the creation of the new event.
    Allowed values
      all - Notifications are sent to all guests.
      externalOnly - Notifications are sent to non-Google Calendar guests only.
      none - No notifications are sent. For calendar migration tasks, consider using the Events.import method instead.

Returns:
  An object of the form:

    {
  &quot;anyoneCanAddSelf&quot;: false, # Whether anyone can invite themselves to the event (deprecated). Optional. The default is False.
  &quot;attachments&quot;: [ # File attachments for the event. Currently only Google Drive attachments are supported.
      # In order to modify attachments the supportsAttachments request parameter should be set to true.
      # There can be at most 25 attachments per event,
    {
      &quot;fileId&quot;: &quot;A String&quot;, # ID of the attached file. Read-only.
          # For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API.
      &quot;fileUrl&quot;: &quot;A String&quot;, # URL link to the attachment.
          # For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API.
          # Required when adding an attachment.
      &quot;iconLink&quot;: &quot;A String&quot;, # URL link to the attachment&#x27;s icon. Read-only.
      &quot;mimeType&quot;: &quot;A String&quot;, # Internet media type (MIME type) of the attachment.
      &quot;title&quot;: &quot;A String&quot;, # Attachment title.
    },
  ],
  &quot;attendees&quot;: [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
    {
      &quot;additionalGuests&quot;: 0, # Number of additional guests. Optional. The default is 0.
      &quot;comment&quot;: &quot;A String&quot;, # The attendee&#x27;s response comment. Optional.
      &quot;displayName&quot;: &quot;A String&quot;, # The attendee&#x27;s name, if available. Optional.
      &quot;email&quot;: &quot;A String&quot;, # The attendee&#x27;s email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
          # Required when adding an attendee.
      &quot;id&quot;: &quot;A String&quot;, # The attendee&#x27;s Profile ID, if available.
      &quot;optional&quot;: false, # Whether this is an optional attendee. Optional. The default is False.
      &quot;organizer&quot;: True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
      &quot;resource&quot;: false, # Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
      &quot;responseStatus&quot;: &quot;A String&quot;, # The attendee&#x27;s response status. Possible values are:
          # - &quot;needsAction&quot; - The attendee has not responded to the invitation.
          # - &quot;declined&quot; - The attendee has declined the invitation.
          # - &quot;tentative&quot; - The attendee has tentatively accepted the invitation.
          # - &quot;accepted&quot; - The attendee has accepted the invitation.
      &quot;self&quot;: false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
    },
  ],
  &quot;attendeesOmitted&quot;: false, # Whether attendees may have been omitted from the event&#x27;s representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant&#x27;s response. Optional. The default is False.
  &quot;colorId&quot;: &quot;A String&quot;, # The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the  colors endpoint). Optional.
  &quot;conferenceData&quot;: { # The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests.
    &quot;conferenceId&quot;: &quot;A String&quot;, # The ID of the conference.
        # Can be used by developers to keep track of conferences, should not be displayed to users.
        # The ID value is formed differently for each conference solution type:
        # - eventHangout: ID is not set. (This conference type is deprecated.)
        # - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.)
        # - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc.
        # - addOn: ID is defined by the third-party provider.  Optional.
    &quot;conferenceSolution&quot;: { # The conference solution, such as Google Meet.
        # Unset for a conference with a failed create request.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;iconUri&quot;: &quot;A String&quot;, # The user-visible icon for this solution.
      &quot;key&quot;: { # The key which can uniquely identify the conference solution for this event.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;name&quot;: &quot;A String&quot;, # The user-visible name of this solution. Not localized.
    },
    &quot;createRequest&quot;: { # A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;conferenceSolutionKey&quot;: { # The conference solution, such as Hangouts or Google Meet.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;requestId&quot;: &quot;A String&quot;, # The client-generated unique ID for this request.
          # Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored.
      &quot;status&quot;: { # The status of the conference create request.
        &quot;statusCode&quot;: &quot;A String&quot;, # The current status of the conference create request. Read-only.
            # The possible values are:
            # - &quot;pending&quot;: the conference create request is still being processed.
            # - &quot;success&quot;: the conference create request succeeded, the entry points are populated.
            # - &quot;failure&quot;: the conference create request failed, there are no entry points.
      },
    },
    &quot;entryPoints&quot;: [ # Information about individual conference entry points, such as URLs or phone numbers.
        # All of them must belong to the same conference.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      {
        &quot;accessCode&quot;: &quot;A String&quot;, # The access code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;entryPointFeatures&quot;: [ # Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point.
          &quot;A String&quot;,
        ],
        &quot;entryPointType&quot;: &quot;A String&quot;, # The type of the conference entry point.
            # Possible values are:
            # - &quot;video&quot; - joining a conference over HTTP. A conference can have zero or one video entry point.
            # - &quot;phone&quot; - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
            # - &quot;sip&quot; - joining a conference over SIP. A conference can have zero or one sip entry point.
            # - &quot;more&quot; - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference.
        &quot;label&quot;: &quot;A String&quot;, # The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters.
            # Examples:
            # - for video: meet.google.com/aaa-bbbb-ccc
            # - for phone: +1 123 268 2601
            # - for sip: 12345678@altostrat.com
            # - for more: should not be filled
            # Optional.
        &quot;meetingCode&quot;: &quot;A String&quot;, # The meeting code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;passcode&quot;: &quot;A String&quot;, # The passcode to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
        &quot;password&quot;: &quot;A String&quot;, # The password to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;pin&quot;: &quot;A String&quot;, # The PIN to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: &quot;SE&quot; for Sweden.
            # Calendar backend will populate this field only for EntryPointType.PHONE.
        &quot;uri&quot;: &quot;A String&quot;, # The URI of the entry point. The maximum length is 1300 characters.
            # Format:
            # - for video, http: or https: schema is required.
            # - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234).
            # - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com.
            # - for more, http: or https: schema is required.
      },
    ],
    &quot;notes&quot;: &quot;A String&quot;, # Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional.
    &quot;parameters&quot;: { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
      &quot;addOnParameters&quot;: { # Additional add-on specific data.
        &quot;parameters&quot;: {
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    },
    &quot;signature&quot;: &quot;A String&quot;, # The signature of the conference data.
        # Generated on server side. Must be preserved while copying the conference data between events, otherwise the conference data will not be copied.
        # Unset for a conference with a failed create request.
        # Optional for a conference with a pending create request.
  },
  &quot;created&quot;: &quot;A String&quot;, # Creation time of the event (as a RFC3339 timestamp). Read-only.
  &quot;creator&quot;: { # The creator of the event. Read-only.
    &quot;displayName&quot;: &quot;A String&quot;, # The creator&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The creator&#x27;s email address, if available.
    &quot;id&quot;: &quot;A String&quot;, # The creator&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;description&quot;: &quot;A String&quot;, # Description of the event. Can contain HTML. Optional.
  &quot;end&quot;: { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;endTimeUnspecified&quot;: false, # Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;eventType&quot;: &quot;default&quot;, # Specific type of the event. Read-only. Possible values are:
      # - &quot;default&quot; - A regular event or not further specified.
      # - &quot;outOfOffice&quot; - An out-of-office event.
  &quot;extendedProperties&quot;: { # Extended properties of the event.
    &quot;private&quot;: { # Properties that are private to the copy of the event that appears on this calendar.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the private property and the corresponding value.
    },
    &quot;shared&quot;: { # Properties that are shared between copies of the event on other attendees&#x27; calendars.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the shared property and the corresponding value.
    },
  },
  &quot;gadget&quot;: { # A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
    &quot;display&quot;: &quot;A String&quot;, # The gadget&#x27;s display mode. Deprecated. Possible values are:
        # - &quot;icon&quot; - The gadget displays next to the event&#x27;s title in the calendar view.
        # - &quot;chip&quot; - The gadget displays when the event is clicked.
    &quot;height&quot;: 42, # The gadget&#x27;s height in pixels. The height must be an integer greater than 0. Optional. Deprecated.
    &quot;iconLink&quot;: &quot;A String&quot;, # The gadget&#x27;s icon URL. The URL scheme must be HTTPS. Deprecated.
    &quot;link&quot;: &quot;A String&quot;, # The gadget&#x27;s URL. The URL scheme must be HTTPS. Deprecated.
    &quot;preferences&quot;: { # Preferences.
      &quot;a_key&quot;: &quot;A String&quot;, # The preference name and corresponding value.
    },
    &quot;title&quot;: &quot;A String&quot;, # The gadget&#x27;s title. Deprecated.
    &quot;type&quot;: &quot;A String&quot;, # The gadget&#x27;s type. Deprecated.
    &quot;width&quot;: 42, # The gadget&#x27;s width in pixels. The width must be an integer greater than 0. Optional. Deprecated.
  },
  &quot;guestsCanInviteOthers&quot;: true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
  &quot;guestsCanModify&quot;: false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
  &quot;guestsCanSeeOtherGuests&quot;: true, # Whether attendees other than the organizer can see who the event&#x27;s attendees are. Optional. The default is True.
  &quot;hangoutLink&quot;: &quot;A String&quot;, # An absolute link to the Google Hangout associated with this event. Read-only.
  &quot;htmlLink&quot;: &quot;A String&quot;, # An absolute link to this event in the Google Calendar Web UI. Read-only.
  &quot;iCalUID&quot;: &quot;A String&quot;, # Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;id&quot;: &quot;A String&quot;, # Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
      # - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938
      # - the length of the ID must be between 5 and 1024 characters
      # - the ID must be unique per calendar  Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.
      # If you do not specify an ID, it will be automatically generated by the server.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;kind&quot;: &quot;calendar#event&quot;, # Type of the resource (&quot;calendar#event&quot;).
  &quot;location&quot;: &quot;A String&quot;, # Geographic location of the event as free-form text. Optional.
  &quot;locked&quot;: false, # Whether this is a locked event copy where no changes can be made to the main event fields &quot;summary&quot;, &quot;description&quot;, &quot;location&quot;, &quot;start&quot;, &quot;end&quot; or &quot;recurrence&quot;. The default is False. Read-Only.
  &quot;organizer&quot;: { # The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
    &quot;displayName&quot;: &quot;A String&quot;, # The organizer&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The organizer&#x27;s email address, if available. It must be a valid email address as per RFC5322.
    &quot;id&quot;: &quot;A String&quot;, # The organizer&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;originalStartTime&quot;: { # For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;privateCopy&quot;: false, # If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False.
  &quot;recurrence&quot;: [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.
    &quot;A String&quot;,
  ],
  &quot;recurringEventId&quot;: &quot;A String&quot;, # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
  &quot;reminders&quot;: { # Information about the event&#x27;s reminders for the authenticated user.
    &quot;overrides&quot;: [ # If the event doesn&#x27;t use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.
      {
        &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
            # - &quot;email&quot; - Reminders are sent via email.
            # - &quot;popup&quot; - Reminders are sent via a UI popup.
            # Required when adding a reminder.
        &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
            # Required when adding a reminder.
      },
    ],
    &quot;useDefault&quot;: True or False, # Whether the default reminders of the calendar apply to the event.
  },
  &quot;sequence&quot;: 42, # Sequence number as per iCalendar.
  &quot;source&quot;: { # Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
    &quot;title&quot;: &quot;A String&quot;, # Title of the source; for example a title of a web page or an email subject.
    &quot;url&quot;: &quot;A String&quot;, # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
  },
  &quot;start&quot;: { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;status&quot;: &quot;A String&quot;, # Status of the event. Optional. Possible values are:
      # - &quot;confirmed&quot; - The event is confirmed. This is the default status.
      # - &quot;tentative&quot; - The event is tentatively confirmed.
      # - &quot;cancelled&quot; - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them.
      # A cancelled status represents two different states depending on the event type:
      # - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event.
      # Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty.
      # - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely.
      # Deleted events are only guaranteed to have the id field populated.   On the organizer&#x27;s calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details.
      # If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated.
  &quot;summary&quot;: &quot;A String&quot;, # Title of the event.
  &quot;transparency&quot;: &quot;opaque&quot;, # Whether the event blocks time on the calendar. Optional. Possible values are:
      # - &quot;opaque&quot; - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
      # - &quot;transparent&quot; - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the event (as a RFC3339 timestamp). Read-only.
  &quot;visibility&quot;: &quot;default&quot;, # Visibility of the event. Optional. Possible values are:
      # - &quot;default&quot; - Uses the default visibility for events on the calendar. This is the default value.
      # - &quot;public&quot; - The event is public and event details are visible to all readers of the calendar.
      # - &quot;private&quot; - The event is private and only event attendees may view event details.
      # - &quot;confidential&quot; - The event is private. This value is provided for compatibility reasons.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(calendarId, eventId, alwaysIncludeEmail=None, body=None, conferenceDataVersion=None, maxAttendees=None, sendNotifications=None, sendUpdates=None, supportsAttachments=None)</code>
  <pre>Updates an event.

Args:
  calendarId: string, Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the &quot;primary&quot; keyword. (required)
  eventId: string, Event identifier. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;anyoneCanAddSelf&quot;: false, # Whether anyone can invite themselves to the event (deprecated). Optional. The default is False.
  &quot;attachments&quot;: [ # File attachments for the event. Currently only Google Drive attachments are supported.
      # In order to modify attachments the supportsAttachments request parameter should be set to true.
      # There can be at most 25 attachments per event,
    {
      &quot;fileId&quot;: &quot;A String&quot;, # ID of the attached file. Read-only.
          # For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API.
      &quot;fileUrl&quot;: &quot;A String&quot;, # URL link to the attachment.
          # For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API.
          # Required when adding an attachment.
      &quot;iconLink&quot;: &quot;A String&quot;, # URL link to the attachment&#x27;s icon. Read-only.
      &quot;mimeType&quot;: &quot;A String&quot;, # Internet media type (MIME type) of the attachment.
      &quot;title&quot;: &quot;A String&quot;, # Attachment title.
    },
  ],
  &quot;attendees&quot;: [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
    {
      &quot;additionalGuests&quot;: 0, # Number of additional guests. Optional. The default is 0.
      &quot;comment&quot;: &quot;A String&quot;, # The attendee&#x27;s response comment. Optional.
      &quot;displayName&quot;: &quot;A String&quot;, # The attendee&#x27;s name, if available. Optional.
      &quot;email&quot;: &quot;A String&quot;, # The attendee&#x27;s email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
          # Required when adding an attendee.
      &quot;id&quot;: &quot;A String&quot;, # The attendee&#x27;s Profile ID, if available.
      &quot;optional&quot;: false, # Whether this is an optional attendee. Optional. The default is False.
      &quot;organizer&quot;: True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
      &quot;resource&quot;: false, # Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
      &quot;responseStatus&quot;: &quot;A String&quot;, # The attendee&#x27;s response status. Possible values are:
          # - &quot;needsAction&quot; - The attendee has not responded to the invitation.
          # - &quot;declined&quot; - The attendee has declined the invitation.
          # - &quot;tentative&quot; - The attendee has tentatively accepted the invitation.
          # - &quot;accepted&quot; - The attendee has accepted the invitation.
      &quot;self&quot;: false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
    },
  ],
  &quot;attendeesOmitted&quot;: false, # Whether attendees may have been omitted from the event&#x27;s representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant&#x27;s response. Optional. The default is False.
  &quot;colorId&quot;: &quot;A String&quot;, # The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the  colors endpoint). Optional.
  &quot;conferenceData&quot;: { # The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests.
    &quot;conferenceId&quot;: &quot;A String&quot;, # The ID of the conference.
        # Can be used by developers to keep track of conferences, should not be displayed to users.
        # The ID value is formed differently for each conference solution type:
        # - eventHangout: ID is not set. (This conference type is deprecated.)
        # - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.)
        # - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc.
        # - addOn: ID is defined by the third-party provider.  Optional.
    &quot;conferenceSolution&quot;: { # The conference solution, such as Google Meet.
        # Unset for a conference with a failed create request.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;iconUri&quot;: &quot;A String&quot;, # The user-visible icon for this solution.
      &quot;key&quot;: { # The key which can uniquely identify the conference solution for this event.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;name&quot;: &quot;A String&quot;, # The user-visible name of this solution. Not localized.
    },
    &quot;createRequest&quot;: { # A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;conferenceSolutionKey&quot;: { # The conference solution, such as Hangouts or Google Meet.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;requestId&quot;: &quot;A String&quot;, # The client-generated unique ID for this request.
          # Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored.
      &quot;status&quot;: { # The status of the conference create request.
        &quot;statusCode&quot;: &quot;A String&quot;, # The current status of the conference create request. Read-only.
            # The possible values are:
            # - &quot;pending&quot;: the conference create request is still being processed.
            # - &quot;success&quot;: the conference create request succeeded, the entry points are populated.
            # - &quot;failure&quot;: the conference create request failed, there are no entry points.
      },
    },
    &quot;entryPoints&quot;: [ # Information about individual conference entry points, such as URLs or phone numbers.
        # All of them must belong to the same conference.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      {
        &quot;accessCode&quot;: &quot;A String&quot;, # The access code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;entryPointFeatures&quot;: [ # Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point.
          &quot;A String&quot;,
        ],
        &quot;entryPointType&quot;: &quot;A String&quot;, # The type of the conference entry point.
            # Possible values are:
            # - &quot;video&quot; - joining a conference over HTTP. A conference can have zero or one video entry point.
            # - &quot;phone&quot; - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
            # - &quot;sip&quot; - joining a conference over SIP. A conference can have zero or one sip entry point.
            # - &quot;more&quot; - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference.
        &quot;label&quot;: &quot;A String&quot;, # The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters.
            # Examples:
            # - for video: meet.google.com/aaa-bbbb-ccc
            # - for phone: +1 123 268 2601
            # - for sip: 12345678@altostrat.com
            # - for more: should not be filled
            # Optional.
        &quot;meetingCode&quot;: &quot;A String&quot;, # The meeting code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;passcode&quot;: &quot;A String&quot;, # The passcode to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
        &quot;password&quot;: &quot;A String&quot;, # The password to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;pin&quot;: &quot;A String&quot;, # The PIN to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: &quot;SE&quot; for Sweden.
            # Calendar backend will populate this field only for EntryPointType.PHONE.
        &quot;uri&quot;: &quot;A String&quot;, # The URI of the entry point. The maximum length is 1300 characters.
            # Format:
            # - for video, http: or https: schema is required.
            # - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234).
            # - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com.
            # - for more, http: or https: schema is required.
      },
    ],
    &quot;notes&quot;: &quot;A String&quot;, # Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional.
    &quot;parameters&quot;: { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
      &quot;addOnParameters&quot;: { # Additional add-on specific data.
        &quot;parameters&quot;: {
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    },
    &quot;signature&quot;: &quot;A String&quot;, # The signature of the conference data.
        # Generated on server side. Must be preserved while copying the conference data between events, otherwise the conference data will not be copied.
        # Unset for a conference with a failed create request.
        # Optional for a conference with a pending create request.
  },
  &quot;created&quot;: &quot;A String&quot;, # Creation time of the event (as a RFC3339 timestamp). Read-only.
  &quot;creator&quot;: { # The creator of the event. Read-only.
    &quot;displayName&quot;: &quot;A String&quot;, # The creator&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The creator&#x27;s email address, if available.
    &quot;id&quot;: &quot;A String&quot;, # The creator&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;description&quot;: &quot;A String&quot;, # Description of the event. Can contain HTML. Optional.
  &quot;end&quot;: { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;endTimeUnspecified&quot;: false, # Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;eventType&quot;: &quot;default&quot;, # Specific type of the event. Read-only. Possible values are:
      # - &quot;default&quot; - A regular event or not further specified.
      # - &quot;outOfOffice&quot; - An out-of-office event.
  &quot;extendedProperties&quot;: { # Extended properties of the event.
    &quot;private&quot;: { # Properties that are private to the copy of the event that appears on this calendar.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the private property and the corresponding value.
    },
    &quot;shared&quot;: { # Properties that are shared between copies of the event on other attendees&#x27; calendars.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the shared property and the corresponding value.
    },
  },
  &quot;gadget&quot;: { # A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
    &quot;display&quot;: &quot;A String&quot;, # The gadget&#x27;s display mode. Deprecated. Possible values are:
        # - &quot;icon&quot; - The gadget displays next to the event&#x27;s title in the calendar view.
        # - &quot;chip&quot; - The gadget displays when the event is clicked.
    &quot;height&quot;: 42, # The gadget&#x27;s height in pixels. The height must be an integer greater than 0. Optional. Deprecated.
    &quot;iconLink&quot;: &quot;A String&quot;, # The gadget&#x27;s icon URL. The URL scheme must be HTTPS. Deprecated.
    &quot;link&quot;: &quot;A String&quot;, # The gadget&#x27;s URL. The URL scheme must be HTTPS. Deprecated.
    &quot;preferences&quot;: { # Preferences.
      &quot;a_key&quot;: &quot;A String&quot;, # The preference name and corresponding value.
    },
    &quot;title&quot;: &quot;A String&quot;, # The gadget&#x27;s title. Deprecated.
    &quot;type&quot;: &quot;A String&quot;, # The gadget&#x27;s type. Deprecated.
    &quot;width&quot;: 42, # The gadget&#x27;s width in pixels. The width must be an integer greater than 0. Optional. Deprecated.
  },
  &quot;guestsCanInviteOthers&quot;: true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
  &quot;guestsCanModify&quot;: false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
  &quot;guestsCanSeeOtherGuests&quot;: true, # Whether attendees other than the organizer can see who the event&#x27;s attendees are. Optional. The default is True.
  &quot;hangoutLink&quot;: &quot;A String&quot;, # An absolute link to the Google Hangout associated with this event. Read-only.
  &quot;htmlLink&quot;: &quot;A String&quot;, # An absolute link to this event in the Google Calendar Web UI. Read-only.
  &quot;iCalUID&quot;: &quot;A String&quot;, # Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;id&quot;: &quot;A String&quot;, # Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
      # - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938
      # - the length of the ID must be between 5 and 1024 characters
      # - the ID must be unique per calendar  Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.
      # If you do not specify an ID, it will be automatically generated by the server.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;kind&quot;: &quot;calendar#event&quot;, # Type of the resource (&quot;calendar#event&quot;).
  &quot;location&quot;: &quot;A String&quot;, # Geographic location of the event as free-form text. Optional.
  &quot;locked&quot;: false, # Whether this is a locked event copy where no changes can be made to the main event fields &quot;summary&quot;, &quot;description&quot;, &quot;location&quot;, &quot;start&quot;, &quot;end&quot; or &quot;recurrence&quot;. The default is False. Read-Only.
  &quot;organizer&quot;: { # The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
    &quot;displayName&quot;: &quot;A String&quot;, # The organizer&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The organizer&#x27;s email address, if available. It must be a valid email address as per RFC5322.
    &quot;id&quot;: &quot;A String&quot;, # The organizer&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;originalStartTime&quot;: { # For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;privateCopy&quot;: false, # If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False.
  &quot;recurrence&quot;: [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.
    &quot;A String&quot;,
  ],
  &quot;recurringEventId&quot;: &quot;A String&quot;, # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
  &quot;reminders&quot;: { # Information about the event&#x27;s reminders for the authenticated user.
    &quot;overrides&quot;: [ # If the event doesn&#x27;t use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.
      {
        &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
            # - &quot;email&quot; - Reminders are sent via email.
            # - &quot;popup&quot; - Reminders are sent via a UI popup.
            # Required when adding a reminder.
        &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
            # Required when adding a reminder.
      },
    ],
    &quot;useDefault&quot;: True or False, # Whether the default reminders of the calendar apply to the event.
  },
  &quot;sequence&quot;: 42, # Sequence number as per iCalendar.
  &quot;source&quot;: { # Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
    &quot;title&quot;: &quot;A String&quot;, # Title of the source; for example a title of a web page or an email subject.
    &quot;url&quot;: &quot;A String&quot;, # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
  },
  &quot;start&quot;: { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;status&quot;: &quot;A String&quot;, # Status of the event. Optional. Possible values are:
      # - &quot;confirmed&quot; - The event is confirmed. This is the default status.
      # - &quot;tentative&quot; - The event is tentatively confirmed.
      # - &quot;cancelled&quot; - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them.
      # A cancelled status represents two different states depending on the event type:
      # - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event.
      # Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty.
      # - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely.
      # Deleted events are only guaranteed to have the id field populated.   On the organizer&#x27;s calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details.
      # If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated.
  &quot;summary&quot;: &quot;A String&quot;, # Title of the event.
  &quot;transparency&quot;: &quot;opaque&quot;, # Whether the event blocks time on the calendar. Optional. Possible values are:
      # - &quot;opaque&quot; - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
      # - &quot;transparent&quot; - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the event (as a RFC3339 timestamp). Read-only.
  &quot;visibility&quot;: &quot;default&quot;, # Visibility of the event. Optional. Possible values are:
      # - &quot;default&quot; - Uses the default visibility for events on the calendar. This is the default value.
      # - &quot;public&quot; - The event is public and event details are visible to all readers of the calendar.
      # - &quot;private&quot; - The event is private and only event attendees may view event details.
      # - &quot;confidential&quot; - The event is private. This value is provided for compatibility reasons.
}

  alwaysIncludeEmail: boolean, Deprecated and ignored. A value will always be returned in the email field for the organizer, creator and attendees, even if no real email address is available (i.e. a generated, non-working value will be provided).
  conferenceDataVersion: integer, Version number of conference data supported by the API client. Version 0 assumes no conference data support and ignores conference data in the event&#x27;s body. Version 1 enables support for copying of ConferenceData as well as for creating new conferences using the createRequest field of conferenceData. The default is 0.
  maxAttendees: integer, The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional.
  sendNotifications: boolean, Deprecated. Please use sendUpdates instead.

Whether to send notifications about the event update (for example, description changes, etc.). Note that some emails might still be sent even if you set the value to false. The default is false.
  sendUpdates: string, Guests who should receive notifications about the event update (for example, title changes, etc.).
    Allowed values
      all - Notifications are sent to all guests.
      externalOnly - Notifications are sent to non-Google Calendar guests only.
      none - No notifications are sent. For calendar migration tasks, consider using the Events.import method instead.
  supportsAttachments: boolean, Whether API client performing operation supports event attachments. Optional. The default is False.

Returns:
  An object of the form:

    {
  &quot;anyoneCanAddSelf&quot;: false, # Whether anyone can invite themselves to the event (deprecated). Optional. The default is False.
  &quot;attachments&quot;: [ # File attachments for the event. Currently only Google Drive attachments are supported.
      # In order to modify attachments the supportsAttachments request parameter should be set to true.
      # There can be at most 25 attachments per event,
    {
      &quot;fileId&quot;: &quot;A String&quot;, # ID of the attached file. Read-only.
          # For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API.
      &quot;fileUrl&quot;: &quot;A String&quot;, # URL link to the attachment.
          # For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API.
          # Required when adding an attachment.
      &quot;iconLink&quot;: &quot;A String&quot;, # URL link to the attachment&#x27;s icon. Read-only.
      &quot;mimeType&quot;: &quot;A String&quot;, # Internet media type (MIME type) of the attachment.
      &quot;title&quot;: &quot;A String&quot;, # Attachment title.
    },
  ],
  &quot;attendees&quot;: [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list.
    {
      &quot;additionalGuests&quot;: 0, # Number of additional guests. Optional. The default is 0.
      &quot;comment&quot;: &quot;A String&quot;, # The attendee&#x27;s response comment. Optional.
      &quot;displayName&quot;: &quot;A String&quot;, # The attendee&#x27;s name, if available. Optional.
      &quot;email&quot;: &quot;A String&quot;, # The attendee&#x27;s email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322.
          # Required when adding an attendee.
      &quot;id&quot;: &quot;A String&quot;, # The attendee&#x27;s Profile ID, if available.
      &quot;optional&quot;: false, # Whether this is an optional attendee. Optional. The default is False.
      &quot;organizer&quot;: True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
      &quot;resource&quot;: false, # Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False.
      &quot;responseStatus&quot;: &quot;A String&quot;, # The attendee&#x27;s response status. Possible values are:
          # - &quot;needsAction&quot; - The attendee has not responded to the invitation.
          # - &quot;declined&quot; - The attendee has declined the invitation.
          # - &quot;tentative&quot; - The attendee has tentatively accepted the invitation.
          # - &quot;accepted&quot; - The attendee has accepted the invitation.
      &quot;self&quot;: false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
    },
  ],
  &quot;attendeesOmitted&quot;: false, # Whether attendees may have been omitted from the event&#x27;s representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant&#x27;s response. Optional. The default is False.
  &quot;colorId&quot;: &quot;A String&quot;, # The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the  colors endpoint). Optional.
  &quot;conferenceData&quot;: { # The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests.
    &quot;conferenceId&quot;: &quot;A String&quot;, # The ID of the conference.
        # Can be used by developers to keep track of conferences, should not be displayed to users.
        # The ID value is formed differently for each conference solution type:
        # - eventHangout: ID is not set. (This conference type is deprecated.)
        # - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.)
        # - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc.
        # - addOn: ID is defined by the third-party provider.  Optional.
    &quot;conferenceSolution&quot;: { # The conference solution, such as Google Meet.
        # Unset for a conference with a failed create request.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;iconUri&quot;: &quot;A String&quot;, # The user-visible icon for this solution.
      &quot;key&quot;: { # The key which can uniquely identify the conference solution for this event.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;name&quot;: &quot;A String&quot;, # The user-visible name of this solution. Not localized.
    },
    &quot;createRequest&quot;: { # A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      &quot;conferenceSolutionKey&quot;: { # The conference solution, such as Hangouts or Google Meet.
        &quot;type&quot;: &quot;A String&quot;, # The conference solution type.
            # If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications.
            # The possible values are:
            # - &quot;eventHangout&quot; for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;eventNamedHangout&quot; for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created)
            # - &quot;hangoutsMeet&quot; for Google Meet (http://meet.google.com)
            # - &quot;addOn&quot; for 3P conference providers
      },
      &quot;requestId&quot;: &quot;A String&quot;, # The client-generated unique ID for this request.
          # Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored.
      &quot;status&quot;: { # The status of the conference create request.
        &quot;statusCode&quot;: &quot;A String&quot;, # The current status of the conference create request. Read-only.
            # The possible values are:
            # - &quot;pending&quot;: the conference create request is still being processed.
            # - &quot;success&quot;: the conference create request succeeded, the entry points are populated.
            # - &quot;failure&quot;: the conference create request failed, there are no entry points.
      },
    },
    &quot;entryPoints&quot;: [ # Information about individual conference entry points, such as URLs or phone numbers.
        # All of them must belong to the same conference.
        # Either conferenceSolution and at least one entryPoint, or createRequest is required.
      {
        &quot;accessCode&quot;: &quot;A String&quot;, # The access code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;entryPointFeatures&quot;: [ # Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point.
          &quot;A String&quot;,
        ],
        &quot;entryPointType&quot;: &quot;A String&quot;, # The type of the conference entry point.
            # Possible values are:
            # - &quot;video&quot; - joining a conference over HTTP. A conference can have zero or one video entry point.
            # - &quot;phone&quot; - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
            # - &quot;sip&quot; - joining a conference over SIP. A conference can have zero or one sip entry point.
            # - &quot;more&quot; - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference.
        &quot;label&quot;: &quot;A String&quot;, # The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters.
            # Examples:
            # - for video: meet.google.com/aaa-bbbb-ccc
            # - for phone: +1 123 268 2601
            # - for sip: 12345678@altostrat.com
            # - for more: should not be filled
            # Optional.
        &quot;meetingCode&quot;: &quot;A String&quot;, # The meeting code to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;passcode&quot;: &quot;A String&quot;, # The passcode to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
        &quot;password&quot;: &quot;A String&quot;, # The password to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;pin&quot;: &quot;A String&quot;, # The PIN to access the conference. The maximum length is 128 characters.
            # When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed.
            # Optional.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: &quot;SE&quot; for Sweden.
            # Calendar backend will populate this field only for EntryPointType.PHONE.
        &quot;uri&quot;: &quot;A String&quot;, # The URI of the entry point. The maximum length is 1300 characters.
            # Format:
            # - for video, http: or https: schema is required.
            # - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234).
            # - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com.
            # - for more, http: or https: schema is required.
      },
    ],
    &quot;notes&quot;: &quot;A String&quot;, # Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional.
    &quot;parameters&quot;: { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
      &quot;addOnParameters&quot;: { # Additional add-on specific data.
        &quot;parameters&quot;: {
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    },
    &quot;signature&quot;: &quot;A String&quot;, # The signature of the conference data.
        # Generated on server side. Must be preserved while copying the conference data between events, otherwise the conference data will not be copied.
        # Unset for a conference with a failed create request.
        # Optional for a conference with a pending create request.
  },
  &quot;created&quot;: &quot;A String&quot;, # Creation time of the event (as a RFC3339 timestamp). Read-only.
  &quot;creator&quot;: { # The creator of the event. Read-only.
    &quot;displayName&quot;: &quot;A String&quot;, # The creator&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The creator&#x27;s email address, if available.
    &quot;id&quot;: &quot;A String&quot;, # The creator&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;description&quot;: &quot;A String&quot;, # Description of the event. Can contain HTML. Optional.
  &quot;end&quot;: { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;endTimeUnspecified&quot;: false, # Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the resource.
  &quot;eventType&quot;: &quot;default&quot;, # Specific type of the event. Read-only. Possible values are:
      # - &quot;default&quot; - A regular event or not further specified.
      # - &quot;outOfOffice&quot; - An out-of-office event.
  &quot;extendedProperties&quot;: { # Extended properties of the event.
    &quot;private&quot;: { # Properties that are private to the copy of the event that appears on this calendar.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the private property and the corresponding value.
    },
    &quot;shared&quot;: { # Properties that are shared between copies of the event on other attendees&#x27; calendars.
      &quot;a_key&quot;: &quot;A String&quot;, # The name of the shared property and the corresponding value.
    },
  },
  &quot;gadget&quot;: { # A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata.
    &quot;display&quot;: &quot;A String&quot;, # The gadget&#x27;s display mode. Deprecated. Possible values are:
        # - &quot;icon&quot; - The gadget displays next to the event&#x27;s title in the calendar view.
        # - &quot;chip&quot; - The gadget displays when the event is clicked.
    &quot;height&quot;: 42, # The gadget&#x27;s height in pixels. The height must be an integer greater than 0. Optional. Deprecated.
    &quot;iconLink&quot;: &quot;A String&quot;, # The gadget&#x27;s icon URL. The URL scheme must be HTTPS. Deprecated.
    &quot;link&quot;: &quot;A String&quot;, # The gadget&#x27;s URL. The URL scheme must be HTTPS. Deprecated.
    &quot;preferences&quot;: { # Preferences.
      &quot;a_key&quot;: &quot;A String&quot;, # The preference name and corresponding value.
    },
    &quot;title&quot;: &quot;A String&quot;, # The gadget&#x27;s title. Deprecated.
    &quot;type&quot;: &quot;A String&quot;, # The gadget&#x27;s type. Deprecated.
    &quot;width&quot;: 42, # The gadget&#x27;s width in pixels. The width must be an integer greater than 0. Optional. Deprecated.
  },
  &quot;guestsCanInviteOthers&quot;: true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
  &quot;guestsCanModify&quot;: false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
  &quot;guestsCanSeeOtherGuests&quot;: true, # Whether attendees other than the organizer can see who the event&#x27;s attendees are. Optional. The default is True.
  &quot;hangoutLink&quot;: &quot;A String&quot;, # An absolute link to the Google Hangout associated with this event. Read-only.
  &quot;htmlLink&quot;: &quot;A String&quot;, # An absolute link to this event in the Google Calendar Web UI. Read-only.
  &quot;iCalUID&quot;: &quot;A String&quot;, # Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;id&quot;: &quot;A String&quot;, # Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
      # - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938
      # - the length of the ID must be between 5 and 1024 characters
      # - the ID must be unique per calendar  Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.
      # If you do not specify an ID, it will be automatically generated by the server.
      # Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.
  &quot;kind&quot;: &quot;calendar#event&quot;, # Type of the resource (&quot;calendar#event&quot;).
  &quot;location&quot;: &quot;A String&quot;, # Geographic location of the event as free-form text. Optional.
  &quot;locked&quot;: false, # Whether this is a locked event copy where no changes can be made to the main event fields &quot;summary&quot;, &quot;description&quot;, &quot;location&quot;, &quot;start&quot;, &quot;end&quot; or &quot;recurrence&quot;. The default is False. Read-Only.
  &quot;organizer&quot;: { # The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.
    &quot;displayName&quot;: &quot;A String&quot;, # The organizer&#x27;s name, if available.
    &quot;email&quot;: &quot;A String&quot;, # The organizer&#x27;s email address, if available. It must be a valid email address as per RFC5322.
    &quot;id&quot;: &quot;A String&quot;, # The organizer&#x27;s Profile ID, if available.
    &quot;self&quot;: false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
  },
  &quot;originalStartTime&quot;: { # For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;privateCopy&quot;: false, # If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False.
  &quot;recurrence&quot;: [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.
    &quot;A String&quot;,
  ],
  &quot;recurringEventId&quot;: &quot;A String&quot;, # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
  &quot;reminders&quot;: { # Information about the event&#x27;s reminders for the authenticated user.
    &quot;overrides&quot;: [ # If the event doesn&#x27;t use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.
      {
        &quot;method&quot;: &quot;A String&quot;, # The method used by this reminder. Possible values are:
            # - &quot;email&quot; - Reminders are sent via email.
            # - &quot;popup&quot; - Reminders are sent via a UI popup.
            # Required when adding a reminder.
        &quot;minutes&quot;: 42, # Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes).
            # Required when adding a reminder.
      },
    ],
    &quot;useDefault&quot;: True or False, # Whether the default reminders of the calendar apply to the event.
  },
  &quot;sequence&quot;: 42, # Sequence number as per iCalendar.
  &quot;source&quot;: { # Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.
    &quot;title&quot;: &quot;A String&quot;, # Title of the source; for example a title of a web page or an email subject.
    &quot;url&quot;: &quot;A String&quot;, # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
  },
  &quot;start&quot;: { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
    &quot;date&quot;: &quot;A String&quot;, # The date, in the format &quot;yyyy-mm-dd&quot;, if this is an all-day event.
    &quot;dateTime&quot;: &quot;A String&quot;, # The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone.
    &quot;timeZone&quot;: &quot;A String&quot;, # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. &quot;Europe/Zurich&quot;.) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end.
  },
  &quot;status&quot;: &quot;A String&quot;, # Status of the event. Optional. Possible values are:
      # - &quot;confirmed&quot; - The event is confirmed. This is the default status.
      # - &quot;tentative&quot; - The event is tentatively confirmed.
      # - &quot;cancelled&quot; - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them.
      # A cancelled status represents two different states depending on the event type:
      # - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event.
      # Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty.
      # - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely.
      # Deleted events are only guaranteed to have the id field populated.   On the organizer&#x27;s calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details.
      # If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated.
  &quot;summary&quot;: &quot;A String&quot;, # Title of the event.
  &quot;transparency&quot;: &quot;opaque&quot;, # Whether the event blocks time on the calendar. Optional. Possible values are:
      # - &quot;opaque&quot; - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
      # - &quot;transparent&quot; - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
  &quot;updated&quot;: &quot;A String&quot;, # Last modification time of the event (as a RFC3339 timestamp). Read-only.
  &quot;visibility&quot;: &quot;default&quot;, # Visibility of the event. Optional. Possible values are:
      # - &quot;default&quot; - Uses the default visibility for events on the calendar. This is the default value.
      # - &quot;public&quot; - The event is public and event details are visible to all readers of the calendar.
      # - &quot;private&quot; - The event is private and only event attendees may view event details.
      # - &quot;confidential&quot; - The event is private. This value is provided for compatibility reasons.
}</pre>
</div>

<div class="method">
    <code class="details" id="watch">watch(calendarId, alwaysIncludeEmail=None, body=None, iCalUID=None, maxAttendees=None, maxResults=None, orderBy=None, pageToken=None, privateExtendedProperty=None, q=None, sharedExtendedProperty=None, showDeleted=None, showHiddenInvitations=None, singleEvents=None, syncToken=None, timeMax=None, timeMin=None, timeZone=None, updatedMin=None)</code>
  <pre>Watch for changes to Events resources.

Args:
  calendarId: string, Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the &quot;primary&quot; keyword. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;address&quot;: &quot;A String&quot;, # The address where notifications are delivered for this channel.
  &quot;expiration&quot;: &quot;A String&quot;, # Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. Optional.
  &quot;id&quot;: &quot;A String&quot;, # A UUID or similar unique string that identifies this channel.
  &quot;kind&quot;: &quot;api#channel&quot;, # Identifies this as a notification channel used to watch for changes to a resource, which is &quot;api#channel&quot;.
  &quot;params&quot;: { # Additional parameters controlling delivery channel behavior. Optional.
    &quot;a_key&quot;: &quot;A String&quot;, # Declares a new parameter by name.
  },
  &quot;payload&quot;: True or False, # A Boolean value to indicate whether payload is wanted. Optional.
  &quot;resourceId&quot;: &quot;A String&quot;, # An opaque ID that identifies the resource being watched on this channel. Stable across different API versions.
  &quot;resourceUri&quot;: &quot;A String&quot;, # A version-specific identifier for the watched resource.
  &quot;token&quot;: &quot;A String&quot;, # An arbitrary string delivered to the target address with each notification delivered over this channel. Optional.
  &quot;type&quot;: &quot;A String&quot;, # The type of delivery mechanism used for this channel. Valid values are &quot;web_hook&quot; (or &quot;webhook&quot;). Both values refer to a channel where Http requests are used to deliver messages.
}

  alwaysIncludeEmail: boolean, Deprecated and ignored. A value will always be returned in the email field for the organizer, creator and attendees, even if no real email address is available (i.e. a generated, non-working value will be provided).
  iCalUID: string, Specifies event ID in the iCalendar format to be included in the response. Optional.
  maxAttendees: integer, The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional.
  maxResults: integer, Maximum number of events returned on one result page. The number of events in the resulting page may be less than this value, or none at all, even if there are more events matching the query. 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. Optional.
  orderBy: string, The order of the events returned in the result. Optional. The default is an unspecified, stable order.
    Allowed values
      startTime - Order by the start date/time (ascending). This is only available when querying single events (i.e. the parameter singleEvents is True)
      updated - Order by last modification time (ascending).
  pageToken: string, Token specifying which result page to return. Optional.
  privateExtendedProperty: string, 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. (repeated)
  q: string, Free text search terms to find events that match these terms in any field, except for extended properties. Optional.
  sharedExtendedProperty: string, 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. (repeated)
  showDeleted: boolean, Whether to include deleted events (with status equals &quot;cancelled&quot;) in the result. Cancelled instances of recurring events (but not the underlying recurring event) will still be included if showDeleted and singleEvents are both False. If showDeleted and singleEvents are both True, only single instances of deleted events (but not the underlying recurring events) are returned. Optional. The default is False.
  showHiddenInvitations: boolean, Whether to include hidden invitations in the result. Optional. The default is False.
  singleEvents: boolean, Whether to expand recurring events into instances and only return single one-off events and instances of recurring events, but not the underlying recurring events themselves. Optional. The default is False.
  syncToken: string, Token obtained from the nextSyncToken field returned on the last page of results from the previous list request. It makes the result of this list request contain only entries that have changed since then. All events deleted since the previous list request will always be in the result set and it is not allowed to set showDeleted to False.
There are several query parameters that cannot be specified together with nextSyncToken to ensure consistency of the client state.

These are: 
- iCalUID 
- orderBy 
- privateExtendedProperty 
- q 
- sharedExtendedProperty 
- timeMin 
- timeMax 
- updatedMin If the syncToken expires, the server will respond with a 410 GONE response code and the client should clear its storage and perform a full synchronization without any syncToken.
Learn more about incremental synchronization.
Optional. The default is to return all entries.
  timeMax: string, Upper bound (exclusive) for an event&#x27;s start time to filter by. Optional. The default is not to filter by start time. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but are ignored. If timeMin is set, timeMax must be greater than timeMin.
  timeMin: string, Lower bound (exclusive) for an event&#x27;s end time to filter by. Optional. The default is not to filter by end time. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but are ignored. If timeMax is set, timeMin must be smaller than timeMax.
  timeZone: string, Time zone used in the response. Optional. The default is the time zone of the calendar.
  updatedMin: string, Lower bound for an event&#x27;s last modification time (as a RFC3339 timestamp) to filter by. When specified, entries deleted since this time will always be included regardless of showDeleted. Optional. The default is not to filter by last modification time.

Returns:
  An object of the form:

    {
  &quot;address&quot;: &quot;A String&quot;, # The address where notifications are delivered for this channel.
  &quot;expiration&quot;: &quot;A String&quot;, # Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. Optional.
  &quot;id&quot;: &quot;A String&quot;, # A UUID or similar unique string that identifies this channel.
  &quot;kind&quot;: &quot;api#channel&quot;, # Identifies this as a notification channel used to watch for changes to a resource, which is &quot;api#channel&quot;.
  &quot;params&quot;: { # Additional parameters controlling delivery channel behavior. Optional.
    &quot;a_key&quot;: &quot;A String&quot;, # Declares a new parameter by name.
  },
  &quot;payload&quot;: True or False, # A Boolean value to indicate whether payload is wanted. Optional.
  &quot;resourceId&quot;: &quot;A String&quot;, # An opaque ID that identifies the resource being watched on this channel. Stable across different API versions.
  &quot;resourceUri&quot;: &quot;A String&quot;, # A version-specific identifier for the watched resource.
  &quot;token&quot;: &quot;A String&quot;, # An arbitrary string delivered to the target address with each notification delivered over this channel. Optional.
  &quot;type&quot;: &quot;A String&quot;, # The type of delivery mechanism used for this channel. Valid values are &quot;web_hook&quot; (or &quot;webhook&quot;). Both values refer to a channel where Http requests are used to deliver messages.
}</pre>
</div>

</body></html>