<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="#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, timeZone=None, maxAttendees=None)</a></code></p>
<p class="firstline">Returns an event.</p>
<p class="toc_element">
  <code><a href="#import_">import_(calendarId, body, supportsAttachments=None, conferenceDataVersion=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, sendNotifications=None, supportsAttachments=None, sendUpdates=None, conferenceDataVersion=None, maxAttendees=None)</a></code></p>
<p class="firstline">Creates an event.</p>
<p class="toc_element">
  <code><a href="#instances">instances(calendarId, eventId, timeMin=None, showDeleted=None, alwaysIncludeEmail=None, pageToken=None, maxAttendees=None, maxResults=None, timeMax=None, timeZone=None, originalStart=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, orderBy=None, showHiddenInvitations=None, timeMin=None, privateExtendedProperty=None, pageToken=None, updatedMin=None, singleEvents=None, alwaysIncludeEmail=None, showDeleted=None, sharedExtendedProperty=None, maxAttendees=None, syncToken=None, iCalUID=None, maxResults=None, timeMax=None, q=None, timeZone=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, body, sendNotifications=None, alwaysIncludeEmail=None, supportsAttachments=None, maxAttendees=None, conferenceDataVersion=None, sendUpdates=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, body, sendNotifications=None, alwaysIncludeEmail=None, supportsAttachments=None, maxAttendees=None, conferenceDataVersion=None, sendUpdates=None)</a></code></p>
<p class="firstline">Updates an event.</p>
<p class="toc_element">
  <code><a href="#watch">watch(calendarId, body, orderBy=None, showHiddenInvitations=None, timeMin=None, privateExtendedProperty=None, pageToken=None, updatedMin=None, singleEvents=None, alwaysIncludeEmail=None, showDeleted=None, sharedExtendedProperty=None, maxAttendees=None, syncToken=None, iCalUID=None, maxResults=None, timeMax=None, q=None, timeZone=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="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 "primary" 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. This value should only be used for migration use cases (note that in most migration cases the import method should be used).
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(calendarId, eventId, alwaysIncludeEmail=None, timeZone=None, maxAttendees=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 "primary" keyword. (required)
  eventId: string, Event identifier. (required)
  alwaysIncludeEmail: boolean, Whether to always include a value in the email field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False.
  timeZone: string, Time zone used in the response. Optional. The default is the time zone of the calendar.
  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.

Returns:
  An object of the form:

    {
      "attachments": [ # 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,
        {
          "mimeType": "A String", # Internet media type (MIME type) of the attachment.
          "title": "A String", # Attachment title.
          "fileUrl": "A String", # 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.
          "iconLink": "A String", # URL link to the attachment's icon. Read-only.
          "fileId": "A String", # 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.
        },
      ],
      "creator": { # The creator of the event. Read-only.
        "self": false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The creator's name, if available.
        "email": "A String", # The creator's email address, if available.
        "id": "A String", # The creator's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "organizer": { # 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.
        "self": false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The organizer's name, if available.
        "email": "A String", # The organizer's email address, if available. It must be a valid email address as per RFC5322.
        "id": "A String", # The organizer's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "summary": "A String", # Title of the event.
      "id": "A String", # 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.
      "hangoutLink": "A String", # An absolute link to the Google+ hangout associated with this event. Read-only.
      "attendees": [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.
        {
          "comment": "A String", # The attendee's response comment. Optional.
          "displayName": "A String", # The attendee's name, if available. Optional.
          "responseStatus": "A String", # The attendee's response status. Possible values are:
              # - "needsAction" - The attendee has not responded to the invitation.
              # - "declined" - The attendee has declined the invitation.
              # - "tentative" - The attendee has tentatively accepted the invitation.
              # - "accepted" - The attendee has accepted the invitation.
          "self": false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
          "id": "A String", # The attendee's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
          "additionalGuests": 0, # Number of additional guests. Optional. The default is 0.
          "resource": 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.
          "organizer": True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
          "optional": false, # Whether this is an optional attendee. Optional. The default is False.
          "email": "A String", # The attendee'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.
        },
      ],
      "start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
      "recurrence": [ # 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.
        "A String",
      ],
      "source": { # 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.
        "url": "A String", # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
        "title": "A String", # Title of the source; for example a title of a web page or an email subject.
      },
      "etag": "A String", # ETag of the resource.
      "location": "A String", # Geographic location of the event as free-form text. Optional.
      "recurringEventId": "A String", # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
      "gadget": { # A gadget that extends this event.
        "preferences": { # Preferences.
          "a_key": "A String", # The preference name and corresponding value.
        },
        "title": "A String", # The gadget's title.
        "height": 42, # The gadget's height in pixels. The height must be an integer greater than 0. Optional.
        "width": 42, # The gadget's width in pixels. The width must be an integer greater than 0. Optional.
        "link": "A String", # The gadget's URL. The URL scheme must be HTTPS.
        "type": "A String", # The gadget's type.
        "display": "A String", # The gadget's display mode. Optional. Possible values are:
            # - "icon" - The gadget displays next to the event's title in the calendar view.
            # - "chip" - The gadget displays when the event is clicked.
        "iconLink": "A String", # The gadget's icon URL. The URL scheme must be HTTPS.
      },
      "status": "A String", # Status of the event. Optional. Possible values are:
          # - "confirmed" - The event is confirmed. This is the default status.
          # - "tentative" - The event is tentatively confirmed.
          # - "cancelled" - 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'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.
      "updated": "A String", # Last modification time of the event (as a RFC3339 timestamp). Read-only.
      "description": "A String", # Description of the event. Optional.
      "iCalUID": "A String", # 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.
      "extendedProperties": { # Extended properties of the event.
        "shared": { # Properties that are shared between copies of the event on other attendees' calendars.
          "a_key": "A String", # The name of the shared property and the corresponding value.
        },
        "private": { # Properties that are private to the copy of the event that appears on this calendar.
          "a_key": "A String", # The name of the private property and the corresponding value.
        },
      },
      "endTimeUnspecified": 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.
      "sequence": 42, # Sequence number as per iCalendar.
      "visibility": "default", # Visibility of the event. Optional. Possible values are:
          # - "default" - Uses the default visibility for events on the calendar. This is the default value.
          # - "public" - The event is public and event details are visible to all readers of the calendar.
          # - "private" - The event is private and only event attendees may view event details.
          # - "confidential" - The event is private. This value is provided for compatibility reasons.
      "guestsCanModify": false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
      "end": { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "attendeesOmitted": false, # Whether attendees may have been omitted from the event'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's response. Optional. The default is False.
      "kind": "calendar#event", # Type of the resource ("calendar#event").
      "locked": false, # Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only.
      "anyoneCanAddSelf": false, # Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.
      "colorId": "A String", # 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.
      "created": "A String", # Creation time of the event (as a RFC3339 timestamp). Read-only.
      "reminders": { # Information about the event's reminders for the authenticated user.
        "overrides": [ # If the event doesn'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.
          {
            "minutes": 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.
            "method": "A String", # The method used by this reminder. Possible values are:
                # - "email" - Reminders are sent via email.
                # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
                # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
                # - "popup" - Reminders are sent via a UI popup.
                # Required when adding a reminder.
          },
        ],
        "useDefault": True or False, # Whether the default reminders of the calendar apply to the event.
      },
      "guestsCanSeeOtherGuests": true, # Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.
      "originalStartTime": { # 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.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "guestsCanInviteOthers": true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
      "transparency": "opaque", # Whether the event blocks time on the calendar. Optional. Possible values are:
          # - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
          # - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
      "privateCopy": false, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
      "conferenceData": { # The conference-related information, such as details of a Hangouts 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.
        "entryPoints": [ # 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.
          {
            "password": "A String", # 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.
            "meetingCode": "A String", # 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.
            "pin": "A String", # 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.
            "uri": "A String", # 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.
            "entryPointFeatures": [ # 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.
              "A String",
            ],
            "label": "A String", # 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.
            "entryPointType": "A String", # The type of the conference entry point.
                # Possible values are:
                # - "video" - joining a conference over HTTP. A conference can have zero or one video entry point.
                # - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
                # - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point.
                # - "more" - 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.
            "regionCode": "A String", # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden.
                # Calendar backend will populate this field only for EntryPointType.PHONE.
            "passcode": "A String", # 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.
            "accessCode": "A String", # 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.
          },
        ],
        "parameters": { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
          "addOnParameters": { # Additional add-on specific data.
            "parameters": {
              "a_key": "A String",
            },
          },
        },
        "notes": "A String", # 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.
        "conferenceId": "A String", # The ID of the conference.
            # Can be used by developers to keep track of conferences, should not be displayed to users.
            # Values for solution types:
            # - "eventHangout": unset.
            # - "eventNamedHangout": the name of the Hangout.
            # - "hangoutsMeet": the 10-letter meeting code, for example "aaa-bbbb-ccc".  Optional.
        "createRequest": { # 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.
          "status": { # The status of the conference create request.
            "statusCode": "A String", # The current status of the conference create request. Read-only.
                # The possible values are:
                # - "pending": the conference create request is still being processed.
                # - "success": the conference create request succeeded, the entry points are populated.
                # - "failure": the conference create request failed, there are no entry points.
          },
          "conferenceSolutionKey": { # The conference solution, such as Hangouts or Hangouts Meet.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
          "requestId": "A String", # 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.
        },
        "conferenceSolution": { # The conference solution, such as Hangouts or Hangouts Meet.
            # Unset for a conference with a failed create request.
            # Either conferenceSolution and at least one entryPoint, or createRequest is required.
          "iconUri": "A String", # The user-visible icon for this solution.
          "name": "A String", # The user-visible name of this solution. Not localized.
          "key": { # The key which can uniquely identify the conference solution for this event.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
        },
        "signature": "A String", # 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.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="import_">import_(calendarId, body, supportsAttachments=None, conferenceDataVersion=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 "primary" keyword. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "attachments": [ # 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,
      {
        "mimeType": "A String", # Internet media type (MIME type) of the attachment.
        "title": "A String", # Attachment title.
        "fileUrl": "A String", # 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.
        "iconLink": "A String", # URL link to the attachment's icon. Read-only.
        "fileId": "A String", # 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.
      },
    ],
    "creator": { # The creator of the event. Read-only.
      "self": false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
      "displayName": "A String", # The creator's name, if available.
      "email": "A String", # The creator's email address, if available.
      "id": "A String", # The creator's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
    },
    "organizer": { # 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.
      "self": false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
      "displayName": "A String", # The organizer's name, if available.
      "email": "A String", # The organizer's email address, if available. It must be a valid email address as per RFC5322.
      "id": "A String", # The organizer's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
    },
    "summary": "A String", # Title of the event.
    "id": "A String", # 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.
    "hangoutLink": "A String", # An absolute link to the Google+ hangout associated with this event. Read-only.
    "attendees": [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.
      {
        "comment": "A String", # The attendee's response comment. Optional.
        "displayName": "A String", # The attendee's name, if available. Optional.
        "responseStatus": "A String", # The attendee's response status. Possible values are:
            # - "needsAction" - The attendee has not responded to the invitation.
            # - "declined" - The attendee has declined the invitation.
            # - "tentative" - The attendee has tentatively accepted the invitation.
            # - "accepted" - The attendee has accepted the invitation.
        "self": false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
        "id": "A String", # The attendee's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
        "additionalGuests": 0, # Number of additional guests. Optional. The default is 0.
        "resource": 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.
        "organizer": True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
        "optional": false, # Whether this is an optional attendee. Optional. The default is False.
        "email": "A String", # The attendee'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.
      },
    ],
    "start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
      "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
      "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
      "dateTime": "A String", # 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.
    },
    "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
    "recurrence": [ # 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.
      "A String",
    ],
    "source": { # 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.
      "url": "A String", # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
      "title": "A String", # Title of the source; for example a title of a web page or an email subject.
    },
    "etag": "A String", # ETag of the resource.
    "location": "A String", # Geographic location of the event as free-form text. Optional.
    "recurringEventId": "A String", # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
    "gadget": { # A gadget that extends this event.
      "preferences": { # Preferences.
        "a_key": "A String", # The preference name and corresponding value.
      },
      "title": "A String", # The gadget's title.
      "height": 42, # The gadget's height in pixels. The height must be an integer greater than 0. Optional.
      "width": 42, # The gadget's width in pixels. The width must be an integer greater than 0. Optional.
      "link": "A String", # The gadget's URL. The URL scheme must be HTTPS.
      "type": "A String", # The gadget's type.
      "display": "A String", # The gadget's display mode. Optional. Possible values are:
          # - "icon" - The gadget displays next to the event's title in the calendar view.
          # - "chip" - The gadget displays when the event is clicked.
      "iconLink": "A String", # The gadget's icon URL. The URL scheme must be HTTPS.
    },
    "status": "A String", # Status of the event. Optional. Possible values are:
        # - "confirmed" - The event is confirmed. This is the default status.
        # - "tentative" - The event is tentatively confirmed.
        # - "cancelled" - 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'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.
    "updated": "A String", # Last modification time of the event (as a RFC3339 timestamp). Read-only.
    "description": "A String", # Description of the event. Optional.
    "iCalUID": "A String", # 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.
    "extendedProperties": { # Extended properties of the event.
      "shared": { # Properties that are shared between copies of the event on other attendees' calendars.
        "a_key": "A String", # The name of the shared property and the corresponding value.
      },
      "private": { # Properties that are private to the copy of the event that appears on this calendar.
        "a_key": "A String", # The name of the private property and the corresponding value.
      },
    },
    "endTimeUnspecified": 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.
    "sequence": 42, # Sequence number as per iCalendar.
    "visibility": "default", # Visibility of the event. Optional. Possible values are:
        # - "default" - Uses the default visibility for events on the calendar. This is the default value.
        # - "public" - The event is public and event details are visible to all readers of the calendar.
        # - "private" - The event is private and only event attendees may view event details.
        # - "confidential" - The event is private. This value is provided for compatibility reasons.
    "guestsCanModify": false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
    "end": { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
      "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
      "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
      "dateTime": "A String", # 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.
    },
    "attendeesOmitted": false, # Whether attendees may have been omitted from the event'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's response. Optional. The default is False.
    "kind": "calendar#event", # Type of the resource ("calendar#event").
    "locked": false, # Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only.
    "anyoneCanAddSelf": false, # Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.
    "colorId": "A String", # 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.
    "created": "A String", # Creation time of the event (as a RFC3339 timestamp). Read-only.
    "reminders": { # Information about the event's reminders for the authenticated user.
      "overrides": [ # If the event doesn'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.
        {
          "minutes": 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.
          "method": "A String", # The method used by this reminder. Possible values are:
              # - "email" - Reminders are sent via email.
              # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
              # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
              # - "popup" - Reminders are sent via a UI popup.
              # Required when adding a reminder.
        },
      ],
      "useDefault": True or False, # Whether the default reminders of the calendar apply to the event.
    },
    "guestsCanSeeOtherGuests": true, # Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.
    "originalStartTime": { # 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.
      "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
      "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
      "dateTime": "A String", # 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.
    },
    "guestsCanInviteOthers": true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
    "transparency": "opaque", # Whether the event blocks time on the calendar. Optional. Possible values are:
        # - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
        # - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
    "privateCopy": false, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
    "conferenceData": { # The conference-related information, such as details of a Hangouts 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.
      "entryPoints": [ # 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.
        {
          "password": "A String", # 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.
          "meetingCode": "A String", # 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.
          "pin": "A String", # 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.
          "uri": "A String", # 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.
          "entryPointFeatures": [ # 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.
            "A String",
          ],
          "label": "A String", # 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.
          "entryPointType": "A String", # The type of the conference entry point.
              # Possible values are:
              # - "video" - joining a conference over HTTP. A conference can have zero or one video entry point.
              # - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
              # - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point.
              # - "more" - 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.
          "regionCode": "A String", # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden.
              # Calendar backend will populate this field only for EntryPointType.PHONE.
          "passcode": "A String", # 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.
          "accessCode": "A String", # 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.
        },
      ],
      "parameters": { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
        "addOnParameters": { # Additional add-on specific data.
          "parameters": {
            "a_key": "A String",
          },
        },
      },
      "notes": "A String", # 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.
      "conferenceId": "A String", # The ID of the conference.
          # Can be used by developers to keep track of conferences, should not be displayed to users.
          # Values for solution types:
          # - "eventHangout": unset.
          # - "eventNamedHangout": the name of the Hangout.
          # - "hangoutsMeet": the 10-letter meeting code, for example "aaa-bbbb-ccc".  Optional.
      "createRequest": { # 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.
        "status": { # The status of the conference create request.
          "statusCode": "A String", # The current status of the conference create request. Read-only.
              # The possible values are:
              # - "pending": the conference create request is still being processed.
              # - "success": the conference create request succeeded, the entry points are populated.
              # - "failure": the conference create request failed, there are no entry points.
        },
        "conferenceSolutionKey": { # The conference solution, such as Hangouts or Hangouts Meet.
          "type": "A String", # 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:
              # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
              # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
              # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
        },
        "requestId": "A String", # 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.
      },
      "conferenceSolution": { # The conference solution, such as Hangouts or Hangouts Meet.
          # Unset for a conference with a failed create request.
          # Either conferenceSolution and at least one entryPoint, or createRequest is required.
        "iconUri": "A String", # The user-visible icon for this solution.
        "name": "A String", # The user-visible name of this solution. Not localized.
        "key": { # The key which can uniquely identify the conference solution for this event.
          "type": "A String", # 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:
              # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
              # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
              # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
        },
      },
      "signature": "A String", # 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.
    },
  }

  supportsAttachments: boolean, Whether API client performing operation supports event attachments. Optional. The default is False.
  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'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.

Returns:
  An object of the form:

    {
      "attachments": [ # 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,
        {
          "mimeType": "A String", # Internet media type (MIME type) of the attachment.
          "title": "A String", # Attachment title.
          "fileUrl": "A String", # 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.
          "iconLink": "A String", # URL link to the attachment's icon. Read-only.
          "fileId": "A String", # 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.
        },
      ],
      "creator": { # The creator of the event. Read-only.
        "self": false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The creator's name, if available.
        "email": "A String", # The creator's email address, if available.
        "id": "A String", # The creator's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "organizer": { # 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.
        "self": false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The organizer's name, if available.
        "email": "A String", # The organizer's email address, if available. It must be a valid email address as per RFC5322.
        "id": "A String", # The organizer's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "summary": "A String", # Title of the event.
      "id": "A String", # 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.
      "hangoutLink": "A String", # An absolute link to the Google+ hangout associated with this event. Read-only.
      "attendees": [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.
        {
          "comment": "A String", # The attendee's response comment. Optional.
          "displayName": "A String", # The attendee's name, if available. Optional.
          "responseStatus": "A String", # The attendee's response status. Possible values are:
              # - "needsAction" - The attendee has not responded to the invitation.
              # - "declined" - The attendee has declined the invitation.
              # - "tentative" - The attendee has tentatively accepted the invitation.
              # - "accepted" - The attendee has accepted the invitation.
          "self": false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
          "id": "A String", # The attendee's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
          "additionalGuests": 0, # Number of additional guests. Optional. The default is 0.
          "resource": 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.
          "organizer": True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
          "optional": false, # Whether this is an optional attendee. Optional. The default is False.
          "email": "A String", # The attendee'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.
        },
      ],
      "start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
      "recurrence": [ # 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.
        "A String",
      ],
      "source": { # 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.
        "url": "A String", # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
        "title": "A String", # Title of the source; for example a title of a web page or an email subject.
      },
      "etag": "A String", # ETag of the resource.
      "location": "A String", # Geographic location of the event as free-form text. Optional.
      "recurringEventId": "A String", # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
      "gadget": { # A gadget that extends this event.
        "preferences": { # Preferences.
          "a_key": "A String", # The preference name and corresponding value.
        },
        "title": "A String", # The gadget's title.
        "height": 42, # The gadget's height in pixels. The height must be an integer greater than 0. Optional.
        "width": 42, # The gadget's width in pixels. The width must be an integer greater than 0. Optional.
        "link": "A String", # The gadget's URL. The URL scheme must be HTTPS.
        "type": "A String", # The gadget's type.
        "display": "A String", # The gadget's display mode. Optional. Possible values are:
            # - "icon" - The gadget displays next to the event's title in the calendar view.
            # - "chip" - The gadget displays when the event is clicked.
        "iconLink": "A String", # The gadget's icon URL. The URL scheme must be HTTPS.
      },
      "status": "A String", # Status of the event. Optional. Possible values are:
          # - "confirmed" - The event is confirmed. This is the default status.
          # - "tentative" - The event is tentatively confirmed.
          # - "cancelled" - 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'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.
      "updated": "A String", # Last modification time of the event (as a RFC3339 timestamp). Read-only.
      "description": "A String", # Description of the event. Optional.
      "iCalUID": "A String", # 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.
      "extendedProperties": { # Extended properties of the event.
        "shared": { # Properties that are shared between copies of the event on other attendees' calendars.
          "a_key": "A String", # The name of the shared property and the corresponding value.
        },
        "private": { # Properties that are private to the copy of the event that appears on this calendar.
          "a_key": "A String", # The name of the private property and the corresponding value.
        },
      },
      "endTimeUnspecified": 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.
      "sequence": 42, # Sequence number as per iCalendar.
      "visibility": "default", # Visibility of the event. Optional. Possible values are:
          # - "default" - Uses the default visibility for events on the calendar. This is the default value.
          # - "public" - The event is public and event details are visible to all readers of the calendar.
          # - "private" - The event is private and only event attendees may view event details.
          # - "confidential" - The event is private. This value is provided for compatibility reasons.
      "guestsCanModify": false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
      "end": { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "attendeesOmitted": false, # Whether attendees may have been omitted from the event'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's response. Optional. The default is False.
      "kind": "calendar#event", # Type of the resource ("calendar#event").
      "locked": false, # Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only.
      "anyoneCanAddSelf": false, # Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.
      "colorId": "A String", # 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.
      "created": "A String", # Creation time of the event (as a RFC3339 timestamp). Read-only.
      "reminders": { # Information about the event's reminders for the authenticated user.
        "overrides": [ # If the event doesn'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.
          {
            "minutes": 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.
            "method": "A String", # The method used by this reminder. Possible values are:
                # - "email" - Reminders are sent via email.
                # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
                # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
                # - "popup" - Reminders are sent via a UI popup.
                # Required when adding a reminder.
          },
        ],
        "useDefault": True or False, # Whether the default reminders of the calendar apply to the event.
      },
      "guestsCanSeeOtherGuests": true, # Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.
      "originalStartTime": { # 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.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "guestsCanInviteOthers": true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
      "transparency": "opaque", # Whether the event blocks time on the calendar. Optional. Possible values are:
          # - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
          # - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
      "privateCopy": false, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
      "conferenceData": { # The conference-related information, such as details of a Hangouts 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.
        "entryPoints": [ # 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.
          {
            "password": "A String", # 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.
            "meetingCode": "A String", # 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.
            "pin": "A String", # 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.
            "uri": "A String", # 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.
            "entryPointFeatures": [ # 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.
              "A String",
            ],
            "label": "A String", # 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.
            "entryPointType": "A String", # The type of the conference entry point.
                # Possible values are:
                # - "video" - joining a conference over HTTP. A conference can have zero or one video entry point.
                # - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
                # - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point.
                # - "more" - 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.
            "regionCode": "A String", # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden.
                # Calendar backend will populate this field only for EntryPointType.PHONE.
            "passcode": "A String", # 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.
            "accessCode": "A String", # 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.
          },
        ],
        "parameters": { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
          "addOnParameters": { # Additional add-on specific data.
            "parameters": {
              "a_key": "A String",
            },
          },
        },
        "notes": "A String", # 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.
        "conferenceId": "A String", # The ID of the conference.
            # Can be used by developers to keep track of conferences, should not be displayed to users.
            # Values for solution types:
            # - "eventHangout": unset.
            # - "eventNamedHangout": the name of the Hangout.
            # - "hangoutsMeet": the 10-letter meeting code, for example "aaa-bbbb-ccc".  Optional.
        "createRequest": { # 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.
          "status": { # The status of the conference create request.
            "statusCode": "A String", # The current status of the conference create request. Read-only.
                # The possible values are:
                # - "pending": the conference create request is still being processed.
                # - "success": the conference create request succeeded, the entry points are populated.
                # - "failure": the conference create request failed, there are no entry points.
          },
          "conferenceSolutionKey": { # The conference solution, such as Hangouts or Hangouts Meet.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
          "requestId": "A String", # 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.
        },
        "conferenceSolution": { # The conference solution, such as Hangouts or Hangouts Meet.
            # Unset for a conference with a failed create request.
            # Either conferenceSolution and at least one entryPoint, or createRequest is required.
          "iconUri": "A String", # The user-visible icon for this solution.
          "name": "A String", # The user-visible name of this solution. Not localized.
          "key": { # The key which can uniquely identify the conference solution for this event.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
        },
        "signature": "A String", # 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.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(calendarId, body, sendNotifications=None, supportsAttachments=None, sendUpdates=None, conferenceDataVersion=None, maxAttendees=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 "primary" keyword. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "attachments": [ # 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,
      {
        "mimeType": "A String", # Internet media type (MIME type) of the attachment.
        "title": "A String", # Attachment title.
        "fileUrl": "A String", # 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.
        "iconLink": "A String", # URL link to the attachment's icon. Read-only.
        "fileId": "A String", # 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.
      },
    ],
    "creator": { # The creator of the event. Read-only.
      "self": false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
      "displayName": "A String", # The creator's name, if available.
      "email": "A String", # The creator's email address, if available.
      "id": "A String", # The creator's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
    },
    "organizer": { # 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.
      "self": false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
      "displayName": "A String", # The organizer's name, if available.
      "email": "A String", # The organizer's email address, if available. It must be a valid email address as per RFC5322.
      "id": "A String", # The organizer's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
    },
    "summary": "A String", # Title of the event.
    "id": "A String", # 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.
    "hangoutLink": "A String", # An absolute link to the Google+ hangout associated with this event. Read-only.
    "attendees": [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.
      {
        "comment": "A String", # The attendee's response comment. Optional.
        "displayName": "A String", # The attendee's name, if available. Optional.
        "responseStatus": "A String", # The attendee's response status. Possible values are:
            # - "needsAction" - The attendee has not responded to the invitation.
            # - "declined" - The attendee has declined the invitation.
            # - "tentative" - The attendee has tentatively accepted the invitation.
            # - "accepted" - The attendee has accepted the invitation.
        "self": false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
        "id": "A String", # The attendee's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
        "additionalGuests": 0, # Number of additional guests. Optional. The default is 0.
        "resource": 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.
        "organizer": True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
        "optional": false, # Whether this is an optional attendee. Optional. The default is False.
        "email": "A String", # The attendee'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.
      },
    ],
    "start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
      "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
      "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
      "dateTime": "A String", # 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.
    },
    "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
    "recurrence": [ # 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.
      "A String",
    ],
    "source": { # 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.
      "url": "A String", # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
      "title": "A String", # Title of the source; for example a title of a web page or an email subject.
    },
    "etag": "A String", # ETag of the resource.
    "location": "A String", # Geographic location of the event as free-form text. Optional.
    "recurringEventId": "A String", # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
    "gadget": { # A gadget that extends this event.
      "preferences": { # Preferences.
        "a_key": "A String", # The preference name and corresponding value.
      },
      "title": "A String", # The gadget's title.
      "height": 42, # The gadget's height in pixels. The height must be an integer greater than 0. Optional.
      "width": 42, # The gadget's width in pixels. The width must be an integer greater than 0. Optional.
      "link": "A String", # The gadget's URL. The URL scheme must be HTTPS.
      "type": "A String", # The gadget's type.
      "display": "A String", # The gadget's display mode. Optional. Possible values are:
          # - "icon" - The gadget displays next to the event's title in the calendar view.
          # - "chip" - The gadget displays when the event is clicked.
      "iconLink": "A String", # The gadget's icon URL. The URL scheme must be HTTPS.
    },
    "status": "A String", # Status of the event. Optional. Possible values are:
        # - "confirmed" - The event is confirmed. This is the default status.
        # - "tentative" - The event is tentatively confirmed.
        # - "cancelled" - 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'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.
    "updated": "A String", # Last modification time of the event (as a RFC3339 timestamp). Read-only.
    "description": "A String", # Description of the event. Optional.
    "iCalUID": "A String", # 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.
    "extendedProperties": { # Extended properties of the event.
      "shared": { # Properties that are shared between copies of the event on other attendees' calendars.
        "a_key": "A String", # The name of the shared property and the corresponding value.
      },
      "private": { # Properties that are private to the copy of the event that appears on this calendar.
        "a_key": "A String", # The name of the private property and the corresponding value.
      },
    },
    "endTimeUnspecified": 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.
    "sequence": 42, # Sequence number as per iCalendar.
    "visibility": "default", # Visibility of the event. Optional. Possible values are:
        # - "default" - Uses the default visibility for events on the calendar. This is the default value.
        # - "public" - The event is public and event details are visible to all readers of the calendar.
        # - "private" - The event is private and only event attendees may view event details.
        # - "confidential" - The event is private. This value is provided for compatibility reasons.
    "guestsCanModify": false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
    "end": { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
      "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
      "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
      "dateTime": "A String", # 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.
    },
    "attendeesOmitted": false, # Whether attendees may have been omitted from the event'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's response. Optional. The default is False.
    "kind": "calendar#event", # Type of the resource ("calendar#event").
    "locked": false, # Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only.
    "anyoneCanAddSelf": false, # Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.
    "colorId": "A String", # 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.
    "created": "A String", # Creation time of the event (as a RFC3339 timestamp). Read-only.
    "reminders": { # Information about the event's reminders for the authenticated user.
      "overrides": [ # If the event doesn'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.
        {
          "minutes": 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.
          "method": "A String", # The method used by this reminder. Possible values are:
              # - "email" - Reminders are sent via email.
              # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
              # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
              # - "popup" - Reminders are sent via a UI popup.
              # Required when adding a reminder.
        },
      ],
      "useDefault": True or False, # Whether the default reminders of the calendar apply to the event.
    },
    "guestsCanSeeOtherGuests": true, # Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.
    "originalStartTime": { # 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.
      "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
      "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
      "dateTime": "A String", # 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.
    },
    "guestsCanInviteOthers": true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
    "transparency": "opaque", # Whether the event blocks time on the calendar. Optional. Possible values are:
        # - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
        # - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
    "privateCopy": false, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
    "conferenceData": { # The conference-related information, such as details of a Hangouts 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.
      "entryPoints": [ # 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.
        {
          "password": "A String", # 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.
          "meetingCode": "A String", # 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.
          "pin": "A String", # 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.
          "uri": "A String", # 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.
          "entryPointFeatures": [ # 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.
            "A String",
          ],
          "label": "A String", # 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.
          "entryPointType": "A String", # The type of the conference entry point.
              # Possible values are:
              # - "video" - joining a conference over HTTP. A conference can have zero or one video entry point.
              # - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
              # - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point.
              # - "more" - 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.
          "regionCode": "A String", # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden.
              # Calendar backend will populate this field only for EntryPointType.PHONE.
          "passcode": "A String", # 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.
          "accessCode": "A String", # 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.
        },
      ],
      "parameters": { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
        "addOnParameters": { # Additional add-on specific data.
          "parameters": {
            "a_key": "A String",
          },
        },
      },
      "notes": "A String", # 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.
      "conferenceId": "A String", # The ID of the conference.
          # Can be used by developers to keep track of conferences, should not be displayed to users.
          # Values for solution types:
          # - "eventHangout": unset.
          # - "eventNamedHangout": the name of the Hangout.
          # - "hangoutsMeet": the 10-letter meeting code, for example "aaa-bbbb-ccc".  Optional.
      "createRequest": { # 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.
        "status": { # The status of the conference create request.
          "statusCode": "A String", # The current status of the conference create request. Read-only.
              # The possible values are:
              # - "pending": the conference create request is still being processed.
              # - "success": the conference create request succeeded, the entry points are populated.
              # - "failure": the conference create request failed, there are no entry points.
        },
        "conferenceSolutionKey": { # The conference solution, such as Hangouts or Hangouts Meet.
          "type": "A String", # 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:
              # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
              # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
              # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
        },
        "requestId": "A String", # 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.
      },
      "conferenceSolution": { # The conference solution, such as Hangouts or Hangouts Meet.
          # Unset for a conference with a failed create request.
          # Either conferenceSolution and at least one entryPoint, or createRequest is required.
        "iconUri": "A String", # The user-visible icon for this solution.
        "name": "A String", # The user-visible name of this solution. Not localized.
        "key": { # The key which can uniquely identify the conference solution for this event.
          "type": "A String", # 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:
              # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
              # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
              # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
        },
      },
      "signature": "A String", # 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.
    },
  }

  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.
  supportsAttachments: boolean, Whether API client performing operation supports event attachments. Optional. 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. This value should only be used for migration use cases (note that in most migration cases the import method should be used).
  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'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.

Returns:
  An object of the form:

    {
      "attachments": [ # 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,
        {
          "mimeType": "A String", # Internet media type (MIME type) of the attachment.
          "title": "A String", # Attachment title.
          "fileUrl": "A String", # 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.
          "iconLink": "A String", # URL link to the attachment's icon. Read-only.
          "fileId": "A String", # 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.
        },
      ],
      "creator": { # The creator of the event. Read-only.
        "self": false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The creator's name, if available.
        "email": "A String", # The creator's email address, if available.
        "id": "A String", # The creator's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "organizer": { # 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.
        "self": false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The organizer's name, if available.
        "email": "A String", # The organizer's email address, if available. It must be a valid email address as per RFC5322.
        "id": "A String", # The organizer's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "summary": "A String", # Title of the event.
      "id": "A String", # 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.
      "hangoutLink": "A String", # An absolute link to the Google+ hangout associated with this event. Read-only.
      "attendees": [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.
        {
          "comment": "A String", # The attendee's response comment. Optional.
          "displayName": "A String", # The attendee's name, if available. Optional.
          "responseStatus": "A String", # The attendee's response status. Possible values are:
              # - "needsAction" - The attendee has not responded to the invitation.
              # - "declined" - The attendee has declined the invitation.
              # - "tentative" - The attendee has tentatively accepted the invitation.
              # - "accepted" - The attendee has accepted the invitation.
          "self": false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
          "id": "A String", # The attendee's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
          "additionalGuests": 0, # Number of additional guests. Optional. The default is 0.
          "resource": 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.
          "organizer": True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
          "optional": false, # Whether this is an optional attendee. Optional. The default is False.
          "email": "A String", # The attendee'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.
        },
      ],
      "start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
      "recurrence": [ # 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.
        "A String",
      ],
      "source": { # 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.
        "url": "A String", # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
        "title": "A String", # Title of the source; for example a title of a web page or an email subject.
      },
      "etag": "A String", # ETag of the resource.
      "location": "A String", # Geographic location of the event as free-form text. Optional.
      "recurringEventId": "A String", # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
      "gadget": { # A gadget that extends this event.
        "preferences": { # Preferences.
          "a_key": "A String", # The preference name and corresponding value.
        },
        "title": "A String", # The gadget's title.
        "height": 42, # The gadget's height in pixels. The height must be an integer greater than 0. Optional.
        "width": 42, # The gadget's width in pixels. The width must be an integer greater than 0. Optional.
        "link": "A String", # The gadget's URL. The URL scheme must be HTTPS.
        "type": "A String", # The gadget's type.
        "display": "A String", # The gadget's display mode. Optional. Possible values are:
            # - "icon" - The gadget displays next to the event's title in the calendar view.
            # - "chip" - The gadget displays when the event is clicked.
        "iconLink": "A String", # The gadget's icon URL. The URL scheme must be HTTPS.
      },
      "status": "A String", # Status of the event. Optional. Possible values are:
          # - "confirmed" - The event is confirmed. This is the default status.
          # - "tentative" - The event is tentatively confirmed.
          # - "cancelled" - 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'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.
      "updated": "A String", # Last modification time of the event (as a RFC3339 timestamp). Read-only.
      "description": "A String", # Description of the event. Optional.
      "iCalUID": "A String", # 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.
      "extendedProperties": { # Extended properties of the event.
        "shared": { # Properties that are shared between copies of the event on other attendees' calendars.
          "a_key": "A String", # The name of the shared property and the corresponding value.
        },
        "private": { # Properties that are private to the copy of the event that appears on this calendar.
          "a_key": "A String", # The name of the private property and the corresponding value.
        },
      },
      "endTimeUnspecified": 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.
      "sequence": 42, # Sequence number as per iCalendar.
      "visibility": "default", # Visibility of the event. Optional. Possible values are:
          # - "default" - Uses the default visibility for events on the calendar. This is the default value.
          # - "public" - The event is public and event details are visible to all readers of the calendar.
          # - "private" - The event is private and only event attendees may view event details.
          # - "confidential" - The event is private. This value is provided for compatibility reasons.
      "guestsCanModify": false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
      "end": { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "attendeesOmitted": false, # Whether attendees may have been omitted from the event'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's response. Optional. The default is False.
      "kind": "calendar#event", # Type of the resource ("calendar#event").
      "locked": false, # Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only.
      "anyoneCanAddSelf": false, # Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.
      "colorId": "A String", # 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.
      "created": "A String", # Creation time of the event (as a RFC3339 timestamp). Read-only.
      "reminders": { # Information about the event's reminders for the authenticated user.
        "overrides": [ # If the event doesn'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.
          {
            "minutes": 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.
            "method": "A String", # The method used by this reminder. Possible values are:
                # - "email" - Reminders are sent via email.
                # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
                # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
                # - "popup" - Reminders are sent via a UI popup.
                # Required when adding a reminder.
          },
        ],
        "useDefault": True or False, # Whether the default reminders of the calendar apply to the event.
      },
      "guestsCanSeeOtherGuests": true, # Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.
      "originalStartTime": { # 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.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "guestsCanInviteOthers": true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
      "transparency": "opaque", # Whether the event blocks time on the calendar. Optional. Possible values are:
          # - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
          # - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
      "privateCopy": false, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
      "conferenceData": { # The conference-related information, such as details of a Hangouts 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.
        "entryPoints": [ # 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.
          {
            "password": "A String", # 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.
            "meetingCode": "A String", # 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.
            "pin": "A String", # 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.
            "uri": "A String", # 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.
            "entryPointFeatures": [ # 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.
              "A String",
            ],
            "label": "A String", # 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.
            "entryPointType": "A String", # The type of the conference entry point.
                # Possible values are:
                # - "video" - joining a conference over HTTP. A conference can have zero or one video entry point.
                # - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
                # - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point.
                # - "more" - 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.
            "regionCode": "A String", # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden.
                # Calendar backend will populate this field only for EntryPointType.PHONE.
            "passcode": "A String", # 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.
            "accessCode": "A String", # 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.
          },
        ],
        "parameters": { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
          "addOnParameters": { # Additional add-on specific data.
            "parameters": {
              "a_key": "A String",
            },
          },
        },
        "notes": "A String", # 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.
        "conferenceId": "A String", # The ID of the conference.
            # Can be used by developers to keep track of conferences, should not be displayed to users.
            # Values for solution types:
            # - "eventHangout": unset.
            # - "eventNamedHangout": the name of the Hangout.
            # - "hangoutsMeet": the 10-letter meeting code, for example "aaa-bbbb-ccc".  Optional.
        "createRequest": { # 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.
          "status": { # The status of the conference create request.
            "statusCode": "A String", # The current status of the conference create request. Read-only.
                # The possible values are:
                # - "pending": the conference create request is still being processed.
                # - "success": the conference create request succeeded, the entry points are populated.
                # - "failure": the conference create request failed, there are no entry points.
          },
          "conferenceSolutionKey": { # The conference solution, such as Hangouts or Hangouts Meet.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
          "requestId": "A String", # 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.
        },
        "conferenceSolution": { # The conference solution, such as Hangouts or Hangouts Meet.
            # Unset for a conference with a failed create request.
            # Either conferenceSolution and at least one entryPoint, or createRequest is required.
          "iconUri": "A String", # The user-visible icon for this solution.
          "name": "A String", # The user-visible name of this solution. Not localized.
          "key": { # The key which can uniquely identify the conference solution for this event.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
        },
        "signature": "A String", # 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.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="instances">instances(calendarId, eventId, timeMin=None, showDeleted=None, alwaysIncludeEmail=None, pageToken=None, maxAttendees=None, maxResults=None, timeMax=None, timeZone=None, originalStart=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 "primary" keyword. (required)
  eventId: string, Recurring event identifier. (required)
  timeMin: string, Lower bound (inclusive) for an event'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.
  showDeleted: boolean, Whether to include deleted events (with status equals "cancelled") in the result. Cancelled instances of recurring events will still be included if singleEvents is False. Optional. The default is False.
  alwaysIncludeEmail: boolean, Whether to always include a value in the email field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False.
  pageToken: string, Token specifying which result page to return. 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. By default the value is 250 events. The page size can never be larger than 2500 events. Optional.
  timeMax: string, Upper bound (exclusive) for an event'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.
  timeZone: string, Time zone used in the response. Optional. The default is the time zone of the calendar.
  originalStart: string, The original start time of the instance in the result. Optional.

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # Token used to access the next page of this result. Omitted if no further results are available, in which case nextSyncToken is provided.
    "kind": "calendar#events", # Type of the collection ("calendar#events").
    "defaultReminders": [ # 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).
      {
        "minutes": 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.
        "method": "A String", # The method used by this reminder. Possible values are:
            # - "email" - Reminders are sent via email.
            # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
            # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
            # - "popup" - Reminders are sent via a UI popup.
            # Required when adding a reminder.
      },
    ],
    "description": "A String", # Description of the calendar. Read-only.
    "items": [ # List of events on the calendar.
      {
          "attachments": [ # 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,
            {
              "mimeType": "A String", # Internet media type (MIME type) of the attachment.
              "title": "A String", # Attachment title.
              "fileUrl": "A String", # 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.
              "iconLink": "A String", # URL link to the attachment's icon. Read-only.
              "fileId": "A String", # 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.
            },
          ],
          "creator": { # The creator of the event. Read-only.
            "self": false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
            "displayName": "A String", # The creator's name, if available.
            "email": "A String", # The creator's email address, if available.
            "id": "A String", # The creator's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
          },
          "organizer": { # 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.
            "self": false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
            "displayName": "A String", # The organizer's name, if available.
            "email": "A String", # The organizer's email address, if available. It must be a valid email address as per RFC5322.
            "id": "A String", # The organizer's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
          },
          "summary": "A String", # Title of the event.
          "id": "A String", # 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.
          "hangoutLink": "A String", # An absolute link to the Google+ hangout associated with this event. Read-only.
          "attendees": [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.
            {
              "comment": "A String", # The attendee's response comment. Optional.
              "displayName": "A String", # The attendee's name, if available. Optional.
              "responseStatus": "A String", # The attendee's response status. Possible values are:
                  # - "needsAction" - The attendee has not responded to the invitation.
                  # - "declined" - The attendee has declined the invitation.
                  # - "tentative" - The attendee has tentatively accepted the invitation.
                  # - "accepted" - The attendee has accepted the invitation.
              "self": false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
              "id": "A String", # The attendee's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
              "additionalGuests": 0, # Number of additional guests. Optional. The default is 0.
              "resource": 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.
              "organizer": True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
              "optional": false, # Whether this is an optional attendee. Optional. The default is False.
              "email": "A String", # The attendee'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.
            },
          ],
          "start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
            "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
            "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
            "dateTime": "A String", # 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.
          },
          "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
          "recurrence": [ # 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.
            "A String",
          ],
          "source": { # 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.
            "url": "A String", # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
            "title": "A String", # Title of the source; for example a title of a web page or an email subject.
          },
          "etag": "A String", # ETag of the resource.
          "location": "A String", # Geographic location of the event as free-form text. Optional.
          "recurringEventId": "A String", # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
          "gadget": { # A gadget that extends this event.
            "preferences": { # Preferences.
              "a_key": "A String", # The preference name and corresponding value.
            },
            "title": "A String", # The gadget's title.
            "height": 42, # The gadget's height in pixels. The height must be an integer greater than 0. Optional.
            "width": 42, # The gadget's width in pixels. The width must be an integer greater than 0. Optional.
            "link": "A String", # The gadget's URL. The URL scheme must be HTTPS.
            "type": "A String", # The gadget's type.
            "display": "A String", # The gadget's display mode. Optional. Possible values are:
                # - "icon" - The gadget displays next to the event's title in the calendar view.
                # - "chip" - The gadget displays when the event is clicked.
            "iconLink": "A String", # The gadget's icon URL. The URL scheme must be HTTPS.
          },
          "status": "A String", # Status of the event. Optional. Possible values are:
              # - "confirmed" - The event is confirmed. This is the default status.
              # - "tentative" - The event is tentatively confirmed.
              # - "cancelled" - 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'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.
          "updated": "A String", # Last modification time of the event (as a RFC3339 timestamp). Read-only.
          "description": "A String", # Description of the event. Optional.
          "iCalUID": "A String", # 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.
          "extendedProperties": { # Extended properties of the event.
            "shared": { # Properties that are shared between copies of the event on other attendees' calendars.
              "a_key": "A String", # The name of the shared property and the corresponding value.
            },
            "private": { # Properties that are private to the copy of the event that appears on this calendar.
              "a_key": "A String", # The name of the private property and the corresponding value.
            },
          },
          "endTimeUnspecified": 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.
          "sequence": 42, # Sequence number as per iCalendar.
          "visibility": "default", # Visibility of the event. Optional. Possible values are:
              # - "default" - Uses the default visibility for events on the calendar. This is the default value.
              # - "public" - The event is public and event details are visible to all readers of the calendar.
              # - "private" - The event is private and only event attendees may view event details.
              # - "confidential" - The event is private. This value is provided for compatibility reasons.
          "guestsCanModify": false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
          "end": { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
            "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
            "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
            "dateTime": "A String", # 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.
          },
          "attendeesOmitted": false, # Whether attendees may have been omitted from the event'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's response. Optional. The default is False.
          "kind": "calendar#event", # Type of the resource ("calendar#event").
          "locked": false, # Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only.
          "anyoneCanAddSelf": false, # Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.
          "colorId": "A String", # 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.
          "created": "A String", # Creation time of the event (as a RFC3339 timestamp). Read-only.
          "reminders": { # Information about the event's reminders for the authenticated user.
            "overrides": [ # If the event doesn'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.
              {
                "minutes": 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.
                "method": "A String", # The method used by this reminder. Possible values are:
                    # - "email" - Reminders are sent via email.
                    # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
                    # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
                    # - "popup" - Reminders are sent via a UI popup.
                    # Required when adding a reminder.
              },
            ],
            "useDefault": True or False, # Whether the default reminders of the calendar apply to the event.
          },
          "guestsCanSeeOtherGuests": true, # Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.
          "originalStartTime": { # 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.
            "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
            "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
            "dateTime": "A String", # 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.
          },
          "guestsCanInviteOthers": true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
          "transparency": "opaque", # Whether the event blocks time on the calendar. Optional. Possible values are:
              # - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
              # - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
          "privateCopy": false, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
          "conferenceData": { # The conference-related information, such as details of a Hangouts 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.
            "entryPoints": [ # 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.
              {
                "password": "A String", # 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.
                "meetingCode": "A String", # 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.
                "pin": "A String", # 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.
                "uri": "A String", # 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.
                "entryPointFeatures": [ # 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.
                  "A String",
                ],
                "label": "A String", # 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.
                "entryPointType": "A String", # The type of the conference entry point.
                    # Possible values are:
                    # - "video" - joining a conference over HTTP. A conference can have zero or one video entry point.
                    # - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
                    # - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point.
                    # - "more" - 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.
                "regionCode": "A String", # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden.
                    # Calendar backend will populate this field only for EntryPointType.PHONE.
                "passcode": "A String", # 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.
                "accessCode": "A String", # 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.
              },
            ],
            "parameters": { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
              "addOnParameters": { # Additional add-on specific data.
                "parameters": {
                  "a_key": "A String",
                },
              },
            },
            "notes": "A String", # 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.
            "conferenceId": "A String", # The ID of the conference.
                # Can be used by developers to keep track of conferences, should not be displayed to users.
                # Values for solution types:
                # - "eventHangout": unset.
                # - "eventNamedHangout": the name of the Hangout.
                # - "hangoutsMeet": the 10-letter meeting code, for example "aaa-bbbb-ccc".  Optional.
            "createRequest": { # 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.
              "status": { # The status of the conference create request.
                "statusCode": "A String", # The current status of the conference create request. Read-only.
                    # The possible values are:
                    # - "pending": the conference create request is still being processed.
                    # - "success": the conference create request succeeded, the entry points are populated.
                    # - "failure": the conference create request failed, there are no entry points.
              },
              "conferenceSolutionKey": { # The conference solution, such as Hangouts or Hangouts Meet.
                "type": "A String", # 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:
                    # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                    # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                    # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
              },
              "requestId": "A String", # 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.
            },
            "conferenceSolution": { # The conference solution, such as Hangouts or Hangouts Meet.
                # Unset for a conference with a failed create request.
                # Either conferenceSolution and at least one entryPoint, or createRequest is required.
              "iconUri": "A String", # The user-visible icon for this solution.
              "name": "A String", # The user-visible name of this solution. Not localized.
              "key": { # The key which can uniquely identify the conference solution for this event.
                "type": "A String", # 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:
                    # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                    # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                    # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
              },
            },
            "signature": "A String", # 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.
          },
        },
    ],
    "updated": "A String", # Last modification time of the calendar (as a RFC3339 timestamp). Read-only.
    "summary": "A String", # Title of the calendar. Read-only.
    "etag": "A String", # ETag of the collection.
    "timeZone": "A String", # The time zone of the calendar. Read-only.
    "nextSyncToken": "A String", # 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.
    "accessRole": "A String", # The user's access role for this calendar. Read-only. Possible values are:
        # - "none" - The user has no access.
        # - "freeBusyReader" - The user has read access to free/busy information.
        # - "reader" - The user has read access to the calendar. Private events will appear to users with reader access, but event details will be hidden.
        # - "writer" - 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.
        # - "owner" - 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.
  }</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 'execute()' 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, orderBy=None, showHiddenInvitations=None, timeMin=None, privateExtendedProperty=None, pageToken=None, updatedMin=None, singleEvents=None, alwaysIncludeEmail=None, showDeleted=None, sharedExtendedProperty=None, maxAttendees=None, syncToken=None, iCalUID=None, maxResults=None, timeMax=None, q=None, timeZone=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 "primary" keyword. (required)
  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).
  showHiddenInvitations: boolean, Whether to include hidden invitations in the result. Optional. The default is False.
  timeMin: string, Lower bound (exclusive) for an event'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.
  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)
  pageToken: string, Token specifying which result page to return. Optional.
  updatedMin: string, Lower bound for an event'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.
  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.
  alwaysIncludeEmail: boolean, Whether to always include a value in the email field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False.
  showDeleted: boolean, Whether to include deleted events (with status equals "cancelled") 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.
  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)
  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.
  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.
  iCalUID: string, Specifies event ID in the iCalendar format to be included in the response. 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.
  timeMax: string, Upper bound (exclusive) for an event'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.
  q: string, Free text search terms to find events that match these terms in any field, except for extended properties. 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:

    {
    "nextPageToken": "A String", # Token used to access the next page of this result. Omitted if no further results are available, in which case nextSyncToken is provided.
    "kind": "calendar#events", # Type of the collection ("calendar#events").
    "defaultReminders": [ # 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).
      {
        "minutes": 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.
        "method": "A String", # The method used by this reminder. Possible values are:
            # - "email" - Reminders are sent via email.
            # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
            # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
            # - "popup" - Reminders are sent via a UI popup.
            # Required when adding a reminder.
      },
    ],
    "description": "A String", # Description of the calendar. Read-only.
    "items": [ # List of events on the calendar.
      {
          "attachments": [ # 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,
            {
              "mimeType": "A String", # Internet media type (MIME type) of the attachment.
              "title": "A String", # Attachment title.
              "fileUrl": "A String", # 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.
              "iconLink": "A String", # URL link to the attachment's icon. Read-only.
              "fileId": "A String", # 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.
            },
          ],
          "creator": { # The creator of the event. Read-only.
            "self": false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
            "displayName": "A String", # The creator's name, if available.
            "email": "A String", # The creator's email address, if available.
            "id": "A String", # The creator's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
          },
          "organizer": { # 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.
            "self": false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
            "displayName": "A String", # The organizer's name, if available.
            "email": "A String", # The organizer's email address, if available. It must be a valid email address as per RFC5322.
            "id": "A String", # The organizer's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
          },
          "summary": "A String", # Title of the event.
          "id": "A String", # 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.
          "hangoutLink": "A String", # An absolute link to the Google+ hangout associated with this event. Read-only.
          "attendees": [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.
            {
              "comment": "A String", # The attendee's response comment. Optional.
              "displayName": "A String", # The attendee's name, if available. Optional.
              "responseStatus": "A String", # The attendee's response status. Possible values are:
                  # - "needsAction" - The attendee has not responded to the invitation.
                  # - "declined" - The attendee has declined the invitation.
                  # - "tentative" - The attendee has tentatively accepted the invitation.
                  # - "accepted" - The attendee has accepted the invitation.
              "self": false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
              "id": "A String", # The attendee's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
              "additionalGuests": 0, # Number of additional guests. Optional. The default is 0.
              "resource": 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.
              "organizer": True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
              "optional": false, # Whether this is an optional attendee. Optional. The default is False.
              "email": "A String", # The attendee'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.
            },
          ],
          "start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
            "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
            "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
            "dateTime": "A String", # 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.
          },
          "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
          "recurrence": [ # 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.
            "A String",
          ],
          "source": { # 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.
            "url": "A String", # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
            "title": "A String", # Title of the source; for example a title of a web page or an email subject.
          },
          "etag": "A String", # ETag of the resource.
          "location": "A String", # Geographic location of the event as free-form text. Optional.
          "recurringEventId": "A String", # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
          "gadget": { # A gadget that extends this event.
            "preferences": { # Preferences.
              "a_key": "A String", # The preference name and corresponding value.
            },
            "title": "A String", # The gadget's title.
            "height": 42, # The gadget's height in pixels. The height must be an integer greater than 0. Optional.
            "width": 42, # The gadget's width in pixels. The width must be an integer greater than 0. Optional.
            "link": "A String", # The gadget's URL. The URL scheme must be HTTPS.
            "type": "A String", # The gadget's type.
            "display": "A String", # The gadget's display mode. Optional. Possible values are:
                # - "icon" - The gadget displays next to the event's title in the calendar view.
                # - "chip" - The gadget displays when the event is clicked.
            "iconLink": "A String", # The gadget's icon URL. The URL scheme must be HTTPS.
          },
          "status": "A String", # Status of the event. Optional. Possible values are:
              # - "confirmed" - The event is confirmed. This is the default status.
              # - "tentative" - The event is tentatively confirmed.
              # - "cancelled" - 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'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.
          "updated": "A String", # Last modification time of the event (as a RFC3339 timestamp). Read-only.
          "description": "A String", # Description of the event. Optional.
          "iCalUID": "A String", # 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.
          "extendedProperties": { # Extended properties of the event.
            "shared": { # Properties that are shared between copies of the event on other attendees' calendars.
              "a_key": "A String", # The name of the shared property and the corresponding value.
            },
            "private": { # Properties that are private to the copy of the event that appears on this calendar.
              "a_key": "A String", # The name of the private property and the corresponding value.
            },
          },
          "endTimeUnspecified": 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.
          "sequence": 42, # Sequence number as per iCalendar.
          "visibility": "default", # Visibility of the event. Optional. Possible values are:
              # - "default" - Uses the default visibility for events on the calendar. This is the default value.
              # - "public" - The event is public and event details are visible to all readers of the calendar.
              # - "private" - The event is private and only event attendees may view event details.
              # - "confidential" - The event is private. This value is provided for compatibility reasons.
          "guestsCanModify": false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
          "end": { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
            "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
            "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
            "dateTime": "A String", # 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.
          },
          "attendeesOmitted": false, # Whether attendees may have been omitted from the event'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's response. Optional. The default is False.
          "kind": "calendar#event", # Type of the resource ("calendar#event").
          "locked": false, # Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only.
          "anyoneCanAddSelf": false, # Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.
          "colorId": "A String", # 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.
          "created": "A String", # Creation time of the event (as a RFC3339 timestamp). Read-only.
          "reminders": { # Information about the event's reminders for the authenticated user.
            "overrides": [ # If the event doesn'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.
              {
                "minutes": 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.
                "method": "A String", # The method used by this reminder. Possible values are:
                    # - "email" - Reminders are sent via email.
                    # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
                    # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
                    # - "popup" - Reminders are sent via a UI popup.
                    # Required when adding a reminder.
              },
            ],
            "useDefault": True or False, # Whether the default reminders of the calendar apply to the event.
          },
          "guestsCanSeeOtherGuests": true, # Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.
          "originalStartTime": { # 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.
            "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
            "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
            "dateTime": "A String", # 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.
          },
          "guestsCanInviteOthers": true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
          "transparency": "opaque", # Whether the event blocks time on the calendar. Optional. Possible values are:
              # - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
              # - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
          "privateCopy": false, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
          "conferenceData": { # The conference-related information, such as details of a Hangouts 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.
            "entryPoints": [ # 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.
              {
                "password": "A String", # 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.
                "meetingCode": "A String", # 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.
                "pin": "A String", # 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.
                "uri": "A String", # 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.
                "entryPointFeatures": [ # 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.
                  "A String",
                ],
                "label": "A String", # 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.
                "entryPointType": "A String", # The type of the conference entry point.
                    # Possible values are:
                    # - "video" - joining a conference over HTTP. A conference can have zero or one video entry point.
                    # - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
                    # - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point.
                    # - "more" - 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.
                "regionCode": "A String", # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden.
                    # Calendar backend will populate this field only for EntryPointType.PHONE.
                "passcode": "A String", # 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.
                "accessCode": "A String", # 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.
              },
            ],
            "parameters": { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
              "addOnParameters": { # Additional add-on specific data.
                "parameters": {
                  "a_key": "A String",
                },
              },
            },
            "notes": "A String", # 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.
            "conferenceId": "A String", # The ID of the conference.
                # Can be used by developers to keep track of conferences, should not be displayed to users.
                # Values for solution types:
                # - "eventHangout": unset.
                # - "eventNamedHangout": the name of the Hangout.
                # - "hangoutsMeet": the 10-letter meeting code, for example "aaa-bbbb-ccc".  Optional.
            "createRequest": { # 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.
              "status": { # The status of the conference create request.
                "statusCode": "A String", # The current status of the conference create request. Read-only.
                    # The possible values are:
                    # - "pending": the conference create request is still being processed.
                    # - "success": the conference create request succeeded, the entry points are populated.
                    # - "failure": the conference create request failed, there are no entry points.
              },
              "conferenceSolutionKey": { # The conference solution, such as Hangouts or Hangouts Meet.
                "type": "A String", # 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:
                    # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                    # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                    # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
              },
              "requestId": "A String", # 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.
            },
            "conferenceSolution": { # The conference solution, such as Hangouts or Hangouts Meet.
                # Unset for a conference with a failed create request.
                # Either conferenceSolution and at least one entryPoint, or createRequest is required.
              "iconUri": "A String", # The user-visible icon for this solution.
              "name": "A String", # The user-visible name of this solution. Not localized.
              "key": { # The key which can uniquely identify the conference solution for this event.
                "type": "A String", # 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:
                    # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                    # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                    # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
              },
            },
            "signature": "A String", # 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.
          },
        },
    ],
    "updated": "A String", # Last modification time of the calendar (as a RFC3339 timestamp). Read-only.
    "summary": "A String", # Title of the calendar. Read-only.
    "etag": "A String", # ETag of the collection.
    "timeZone": "A String", # The time zone of the calendar. Read-only.
    "nextSyncToken": "A String", # 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.
    "accessRole": "A String", # The user's access role for this calendar. Read-only. Possible values are:
        # - "none" - The user has no access.
        # - "freeBusyReader" - The user has read access to free/busy information.
        # - "reader" - The user has read access to the calendar. Private events will appear to users with reader access, but event details will be hidden.
        # - "writer" - 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.
        # - "owner" - 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.
  }</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 'execute()' 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'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'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'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. This value should only be used for migration use cases (note that in most migration cases the import method should be used).

Returns:
  An object of the form:

    {
      "attachments": [ # 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,
        {
          "mimeType": "A String", # Internet media type (MIME type) of the attachment.
          "title": "A String", # Attachment title.
          "fileUrl": "A String", # 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.
          "iconLink": "A String", # URL link to the attachment's icon. Read-only.
          "fileId": "A String", # 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.
        },
      ],
      "creator": { # The creator of the event. Read-only.
        "self": false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The creator's name, if available.
        "email": "A String", # The creator's email address, if available.
        "id": "A String", # The creator's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "organizer": { # 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.
        "self": false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The organizer's name, if available.
        "email": "A String", # The organizer's email address, if available. It must be a valid email address as per RFC5322.
        "id": "A String", # The organizer's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "summary": "A String", # Title of the event.
      "id": "A String", # 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.
      "hangoutLink": "A String", # An absolute link to the Google+ hangout associated with this event. Read-only.
      "attendees": [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.
        {
          "comment": "A String", # The attendee's response comment. Optional.
          "displayName": "A String", # The attendee's name, if available. Optional.
          "responseStatus": "A String", # The attendee's response status. Possible values are:
              # - "needsAction" - The attendee has not responded to the invitation.
              # - "declined" - The attendee has declined the invitation.
              # - "tentative" - The attendee has tentatively accepted the invitation.
              # - "accepted" - The attendee has accepted the invitation.
          "self": false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
          "id": "A String", # The attendee's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
          "additionalGuests": 0, # Number of additional guests. Optional. The default is 0.
          "resource": 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.
          "organizer": True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
          "optional": false, # Whether this is an optional attendee. Optional. The default is False.
          "email": "A String", # The attendee'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.
        },
      ],
      "start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
      "recurrence": [ # 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.
        "A String",
      ],
      "source": { # 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.
        "url": "A String", # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
        "title": "A String", # Title of the source; for example a title of a web page or an email subject.
      },
      "etag": "A String", # ETag of the resource.
      "location": "A String", # Geographic location of the event as free-form text. Optional.
      "recurringEventId": "A String", # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
      "gadget": { # A gadget that extends this event.
        "preferences": { # Preferences.
          "a_key": "A String", # The preference name and corresponding value.
        },
        "title": "A String", # The gadget's title.
        "height": 42, # The gadget's height in pixels. The height must be an integer greater than 0. Optional.
        "width": 42, # The gadget's width in pixels. The width must be an integer greater than 0. Optional.
        "link": "A String", # The gadget's URL. The URL scheme must be HTTPS.
        "type": "A String", # The gadget's type.
        "display": "A String", # The gadget's display mode. Optional. Possible values are:
            # - "icon" - The gadget displays next to the event's title in the calendar view.
            # - "chip" - The gadget displays when the event is clicked.
        "iconLink": "A String", # The gadget's icon URL. The URL scheme must be HTTPS.
      },
      "status": "A String", # Status of the event. Optional. Possible values are:
          # - "confirmed" - The event is confirmed. This is the default status.
          # - "tentative" - The event is tentatively confirmed.
          # - "cancelled" - 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'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.
      "updated": "A String", # Last modification time of the event (as a RFC3339 timestamp). Read-only.
      "description": "A String", # Description of the event. Optional.
      "iCalUID": "A String", # 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.
      "extendedProperties": { # Extended properties of the event.
        "shared": { # Properties that are shared between copies of the event on other attendees' calendars.
          "a_key": "A String", # The name of the shared property and the corresponding value.
        },
        "private": { # Properties that are private to the copy of the event that appears on this calendar.
          "a_key": "A String", # The name of the private property and the corresponding value.
        },
      },
      "endTimeUnspecified": 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.
      "sequence": 42, # Sequence number as per iCalendar.
      "visibility": "default", # Visibility of the event. Optional. Possible values are:
          # - "default" - Uses the default visibility for events on the calendar. This is the default value.
          # - "public" - The event is public and event details are visible to all readers of the calendar.
          # - "private" - The event is private and only event attendees may view event details.
          # - "confidential" - The event is private. This value is provided for compatibility reasons.
      "guestsCanModify": false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
      "end": { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "attendeesOmitted": false, # Whether attendees may have been omitted from the event'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's response. Optional. The default is False.
      "kind": "calendar#event", # Type of the resource ("calendar#event").
      "locked": false, # Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only.
      "anyoneCanAddSelf": false, # Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.
      "colorId": "A String", # 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.
      "created": "A String", # Creation time of the event (as a RFC3339 timestamp). Read-only.
      "reminders": { # Information about the event's reminders for the authenticated user.
        "overrides": [ # If the event doesn'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.
          {
            "minutes": 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.
            "method": "A String", # The method used by this reminder. Possible values are:
                # - "email" - Reminders are sent via email.
                # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
                # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
                # - "popup" - Reminders are sent via a UI popup.
                # Required when adding a reminder.
          },
        ],
        "useDefault": True or False, # Whether the default reminders of the calendar apply to the event.
      },
      "guestsCanSeeOtherGuests": true, # Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.
      "originalStartTime": { # 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.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "guestsCanInviteOthers": true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
      "transparency": "opaque", # Whether the event blocks time on the calendar. Optional. Possible values are:
          # - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
          # - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
      "privateCopy": false, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
      "conferenceData": { # The conference-related information, such as details of a Hangouts 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.
        "entryPoints": [ # 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.
          {
            "password": "A String", # 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.
            "meetingCode": "A String", # 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.
            "pin": "A String", # 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.
            "uri": "A String", # 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.
            "entryPointFeatures": [ # 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.
              "A String",
            ],
            "label": "A String", # 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.
            "entryPointType": "A String", # The type of the conference entry point.
                # Possible values are:
                # - "video" - joining a conference over HTTP. A conference can have zero or one video entry point.
                # - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
                # - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point.
                # - "more" - 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.
            "regionCode": "A String", # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden.
                # Calendar backend will populate this field only for EntryPointType.PHONE.
            "passcode": "A String", # 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.
            "accessCode": "A String", # 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.
          },
        ],
        "parameters": { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
          "addOnParameters": { # Additional add-on specific data.
            "parameters": {
              "a_key": "A String",
            },
          },
        },
        "notes": "A String", # 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.
        "conferenceId": "A String", # The ID of the conference.
            # Can be used by developers to keep track of conferences, should not be displayed to users.
            # Values for solution types:
            # - "eventHangout": unset.
            # - "eventNamedHangout": the name of the Hangout.
            # - "hangoutsMeet": the 10-letter meeting code, for example "aaa-bbbb-ccc".  Optional.
        "createRequest": { # 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.
          "status": { # The status of the conference create request.
            "statusCode": "A String", # The current status of the conference create request. Read-only.
                # The possible values are:
                # - "pending": the conference create request is still being processed.
                # - "success": the conference create request succeeded, the entry points are populated.
                # - "failure": the conference create request failed, there are no entry points.
          },
          "conferenceSolutionKey": { # The conference solution, such as Hangouts or Hangouts Meet.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
          "requestId": "A String", # 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.
        },
        "conferenceSolution": { # The conference solution, such as Hangouts or Hangouts Meet.
            # Unset for a conference with a failed create request.
            # Either conferenceSolution and at least one entryPoint, or createRequest is required.
          "iconUri": "A String", # The user-visible icon for this solution.
          "name": "A String", # The user-visible name of this solution. Not localized.
          "key": { # The key which can uniquely identify the conference solution for this event.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
        },
        "signature": "A String", # 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.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(calendarId, eventId, body, sendNotifications=None, alwaysIncludeEmail=None, supportsAttachments=None, maxAttendees=None, conferenceDataVersion=None, sendUpdates=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 "primary" keyword. (required)
  eventId: string, Event identifier. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "attachments": [ # 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,
      {
        "mimeType": "A String", # Internet media type (MIME type) of the attachment.
        "title": "A String", # Attachment title.
        "fileUrl": "A String", # 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.
        "iconLink": "A String", # URL link to the attachment's icon. Read-only.
        "fileId": "A String", # 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.
      },
    ],
    "creator": { # The creator of the event. Read-only.
      "self": false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
      "displayName": "A String", # The creator's name, if available.
      "email": "A String", # The creator's email address, if available.
      "id": "A String", # The creator's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
    },
    "organizer": { # 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.
      "self": false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
      "displayName": "A String", # The organizer's name, if available.
      "email": "A String", # The organizer's email address, if available. It must be a valid email address as per RFC5322.
      "id": "A String", # The organizer's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
    },
    "summary": "A String", # Title of the event.
    "id": "A String", # 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.
    "hangoutLink": "A String", # An absolute link to the Google+ hangout associated with this event. Read-only.
    "attendees": [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.
      {
        "comment": "A String", # The attendee's response comment. Optional.
        "displayName": "A String", # The attendee's name, if available. Optional.
        "responseStatus": "A String", # The attendee's response status. Possible values are:
            # - "needsAction" - The attendee has not responded to the invitation.
            # - "declined" - The attendee has declined the invitation.
            # - "tentative" - The attendee has tentatively accepted the invitation.
            # - "accepted" - The attendee has accepted the invitation.
        "self": false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
        "id": "A String", # The attendee's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
        "additionalGuests": 0, # Number of additional guests. Optional. The default is 0.
        "resource": 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.
        "organizer": True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
        "optional": false, # Whether this is an optional attendee. Optional. The default is False.
        "email": "A String", # The attendee'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.
      },
    ],
    "start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
      "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
      "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
      "dateTime": "A String", # 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.
    },
    "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
    "recurrence": [ # 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.
      "A String",
    ],
    "source": { # 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.
      "url": "A String", # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
      "title": "A String", # Title of the source; for example a title of a web page or an email subject.
    },
    "etag": "A String", # ETag of the resource.
    "location": "A String", # Geographic location of the event as free-form text. Optional.
    "recurringEventId": "A String", # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
    "gadget": { # A gadget that extends this event.
      "preferences": { # Preferences.
        "a_key": "A String", # The preference name and corresponding value.
      },
      "title": "A String", # The gadget's title.
      "height": 42, # The gadget's height in pixels. The height must be an integer greater than 0. Optional.
      "width": 42, # The gadget's width in pixels. The width must be an integer greater than 0. Optional.
      "link": "A String", # The gadget's URL. The URL scheme must be HTTPS.
      "type": "A String", # The gadget's type.
      "display": "A String", # The gadget's display mode. Optional. Possible values are:
          # - "icon" - The gadget displays next to the event's title in the calendar view.
          # - "chip" - The gadget displays when the event is clicked.
      "iconLink": "A String", # The gadget's icon URL. The URL scheme must be HTTPS.
    },
    "status": "A String", # Status of the event. Optional. Possible values are:
        # - "confirmed" - The event is confirmed. This is the default status.
        # - "tentative" - The event is tentatively confirmed.
        # - "cancelled" - 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'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.
    "updated": "A String", # Last modification time of the event (as a RFC3339 timestamp). Read-only.
    "description": "A String", # Description of the event. Optional.
    "iCalUID": "A String", # 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.
    "extendedProperties": { # Extended properties of the event.
      "shared": { # Properties that are shared between copies of the event on other attendees' calendars.
        "a_key": "A String", # The name of the shared property and the corresponding value.
      },
      "private": { # Properties that are private to the copy of the event that appears on this calendar.
        "a_key": "A String", # The name of the private property and the corresponding value.
      },
    },
    "endTimeUnspecified": 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.
    "sequence": 42, # Sequence number as per iCalendar.
    "visibility": "default", # Visibility of the event. Optional. Possible values are:
        # - "default" - Uses the default visibility for events on the calendar. This is the default value.
        # - "public" - The event is public and event details are visible to all readers of the calendar.
        # - "private" - The event is private and only event attendees may view event details.
        # - "confidential" - The event is private. This value is provided for compatibility reasons.
    "guestsCanModify": false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
    "end": { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
      "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
      "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
      "dateTime": "A String", # 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.
    },
    "attendeesOmitted": false, # Whether attendees may have been omitted from the event'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's response. Optional. The default is False.
    "kind": "calendar#event", # Type of the resource ("calendar#event").
    "locked": false, # Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only.
    "anyoneCanAddSelf": false, # Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.
    "colorId": "A String", # 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.
    "created": "A String", # Creation time of the event (as a RFC3339 timestamp). Read-only.
    "reminders": { # Information about the event's reminders for the authenticated user.
      "overrides": [ # If the event doesn'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.
        {
          "minutes": 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.
          "method": "A String", # The method used by this reminder. Possible values are:
              # - "email" - Reminders are sent via email.
              # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
              # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
              # - "popup" - Reminders are sent via a UI popup.
              # Required when adding a reminder.
        },
      ],
      "useDefault": True or False, # Whether the default reminders of the calendar apply to the event.
    },
    "guestsCanSeeOtherGuests": true, # Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.
    "originalStartTime": { # 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.
      "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
      "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
      "dateTime": "A String", # 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.
    },
    "guestsCanInviteOthers": true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
    "transparency": "opaque", # Whether the event blocks time on the calendar. Optional. Possible values are:
        # - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
        # - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
    "privateCopy": false, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
    "conferenceData": { # The conference-related information, such as details of a Hangouts 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.
      "entryPoints": [ # 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.
        {
          "password": "A String", # 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.
          "meetingCode": "A String", # 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.
          "pin": "A String", # 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.
          "uri": "A String", # 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.
          "entryPointFeatures": [ # 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.
            "A String",
          ],
          "label": "A String", # 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.
          "entryPointType": "A String", # The type of the conference entry point.
              # Possible values are:
              # - "video" - joining a conference over HTTP. A conference can have zero or one video entry point.
              # - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
              # - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point.
              # - "more" - 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.
          "regionCode": "A String", # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden.
              # Calendar backend will populate this field only for EntryPointType.PHONE.
          "passcode": "A String", # 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.
          "accessCode": "A String", # 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.
        },
      ],
      "parameters": { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
        "addOnParameters": { # Additional add-on specific data.
          "parameters": {
            "a_key": "A String",
          },
        },
      },
      "notes": "A String", # 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.
      "conferenceId": "A String", # The ID of the conference.
          # Can be used by developers to keep track of conferences, should not be displayed to users.
          # Values for solution types:
          # - "eventHangout": unset.
          # - "eventNamedHangout": the name of the Hangout.
          # - "hangoutsMeet": the 10-letter meeting code, for example "aaa-bbbb-ccc".  Optional.
      "createRequest": { # 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.
        "status": { # The status of the conference create request.
          "statusCode": "A String", # The current status of the conference create request. Read-only.
              # The possible values are:
              # - "pending": the conference create request is still being processed.
              # - "success": the conference create request succeeded, the entry points are populated.
              # - "failure": the conference create request failed, there are no entry points.
        },
        "conferenceSolutionKey": { # The conference solution, such as Hangouts or Hangouts Meet.
          "type": "A String", # 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:
              # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
              # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
              # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
        },
        "requestId": "A String", # 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.
      },
      "conferenceSolution": { # The conference solution, such as Hangouts or Hangouts Meet.
          # Unset for a conference with a failed create request.
          # Either conferenceSolution and at least one entryPoint, or createRequest is required.
        "iconUri": "A String", # The user-visible icon for this solution.
        "name": "A String", # The user-visible name of this solution. Not localized.
        "key": { # The key which can uniquely identify the conference solution for this event.
          "type": "A String", # 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:
              # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
              # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
              # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
        },
      },
      "signature": "A String", # 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.
    },
  }

  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.
  alwaysIncludeEmail: boolean, Whether to always include a value in the email field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False.
  supportsAttachments: boolean, Whether API client performing operation supports event attachments. Optional. The default is False.
  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.
  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'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.
  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. This value should only be used for migration use cases (note that in most migration cases the import method should be used).

Returns:
  An object of the form:

    {
      "attachments": [ # 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,
        {
          "mimeType": "A String", # Internet media type (MIME type) of the attachment.
          "title": "A String", # Attachment title.
          "fileUrl": "A String", # 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.
          "iconLink": "A String", # URL link to the attachment's icon. Read-only.
          "fileId": "A String", # 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.
        },
      ],
      "creator": { # The creator of the event. Read-only.
        "self": false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The creator's name, if available.
        "email": "A String", # The creator's email address, if available.
        "id": "A String", # The creator's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "organizer": { # 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.
        "self": false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The organizer's name, if available.
        "email": "A String", # The organizer's email address, if available. It must be a valid email address as per RFC5322.
        "id": "A String", # The organizer's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "summary": "A String", # Title of the event.
      "id": "A String", # 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.
      "hangoutLink": "A String", # An absolute link to the Google+ hangout associated with this event. Read-only.
      "attendees": [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.
        {
          "comment": "A String", # The attendee's response comment. Optional.
          "displayName": "A String", # The attendee's name, if available. Optional.
          "responseStatus": "A String", # The attendee's response status. Possible values are:
              # - "needsAction" - The attendee has not responded to the invitation.
              # - "declined" - The attendee has declined the invitation.
              # - "tentative" - The attendee has tentatively accepted the invitation.
              # - "accepted" - The attendee has accepted the invitation.
          "self": false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
          "id": "A String", # The attendee's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
          "additionalGuests": 0, # Number of additional guests. Optional. The default is 0.
          "resource": 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.
          "organizer": True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
          "optional": false, # Whether this is an optional attendee. Optional. The default is False.
          "email": "A String", # The attendee'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.
        },
      ],
      "start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
      "recurrence": [ # 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.
        "A String",
      ],
      "source": { # 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.
        "url": "A String", # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
        "title": "A String", # Title of the source; for example a title of a web page or an email subject.
      },
      "etag": "A String", # ETag of the resource.
      "location": "A String", # Geographic location of the event as free-form text. Optional.
      "recurringEventId": "A String", # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
      "gadget": { # A gadget that extends this event.
        "preferences": { # Preferences.
          "a_key": "A String", # The preference name and corresponding value.
        },
        "title": "A String", # The gadget's title.
        "height": 42, # The gadget's height in pixels. The height must be an integer greater than 0. Optional.
        "width": 42, # The gadget's width in pixels. The width must be an integer greater than 0. Optional.
        "link": "A String", # The gadget's URL. The URL scheme must be HTTPS.
        "type": "A String", # The gadget's type.
        "display": "A String", # The gadget's display mode. Optional. Possible values are:
            # - "icon" - The gadget displays next to the event's title in the calendar view.
            # - "chip" - The gadget displays when the event is clicked.
        "iconLink": "A String", # The gadget's icon URL. The URL scheme must be HTTPS.
      },
      "status": "A String", # Status of the event. Optional. Possible values are:
          # - "confirmed" - The event is confirmed. This is the default status.
          # - "tentative" - The event is tentatively confirmed.
          # - "cancelled" - 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'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.
      "updated": "A String", # Last modification time of the event (as a RFC3339 timestamp). Read-only.
      "description": "A String", # Description of the event. Optional.
      "iCalUID": "A String", # 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.
      "extendedProperties": { # Extended properties of the event.
        "shared": { # Properties that are shared between copies of the event on other attendees' calendars.
          "a_key": "A String", # The name of the shared property and the corresponding value.
        },
        "private": { # Properties that are private to the copy of the event that appears on this calendar.
          "a_key": "A String", # The name of the private property and the corresponding value.
        },
      },
      "endTimeUnspecified": 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.
      "sequence": 42, # Sequence number as per iCalendar.
      "visibility": "default", # Visibility of the event. Optional. Possible values are:
          # - "default" - Uses the default visibility for events on the calendar. This is the default value.
          # - "public" - The event is public and event details are visible to all readers of the calendar.
          # - "private" - The event is private and only event attendees may view event details.
          # - "confidential" - The event is private. This value is provided for compatibility reasons.
      "guestsCanModify": false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
      "end": { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "attendeesOmitted": false, # Whether attendees may have been omitted from the event'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's response. Optional. The default is False.
      "kind": "calendar#event", # Type of the resource ("calendar#event").
      "locked": false, # Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only.
      "anyoneCanAddSelf": false, # Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.
      "colorId": "A String", # 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.
      "created": "A String", # Creation time of the event (as a RFC3339 timestamp). Read-only.
      "reminders": { # Information about the event's reminders for the authenticated user.
        "overrides": [ # If the event doesn'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.
          {
            "minutes": 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.
            "method": "A String", # The method used by this reminder. Possible values are:
                # - "email" - Reminders are sent via email.
                # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
                # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
                # - "popup" - Reminders are sent via a UI popup.
                # Required when adding a reminder.
          },
        ],
        "useDefault": True or False, # Whether the default reminders of the calendar apply to the event.
      },
      "guestsCanSeeOtherGuests": true, # Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.
      "originalStartTime": { # 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.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "guestsCanInviteOthers": true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
      "transparency": "opaque", # Whether the event blocks time on the calendar. Optional. Possible values are:
          # - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
          # - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
      "privateCopy": false, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
      "conferenceData": { # The conference-related information, such as details of a Hangouts 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.
        "entryPoints": [ # 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.
          {
            "password": "A String", # 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.
            "meetingCode": "A String", # 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.
            "pin": "A String", # 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.
            "uri": "A String", # 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.
            "entryPointFeatures": [ # 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.
              "A String",
            ],
            "label": "A String", # 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.
            "entryPointType": "A String", # The type of the conference entry point.
                # Possible values are:
                # - "video" - joining a conference over HTTP. A conference can have zero or one video entry point.
                # - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
                # - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point.
                # - "more" - 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.
            "regionCode": "A String", # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden.
                # Calendar backend will populate this field only for EntryPointType.PHONE.
            "passcode": "A String", # 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.
            "accessCode": "A String", # 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.
          },
        ],
        "parameters": { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
          "addOnParameters": { # Additional add-on specific data.
            "parameters": {
              "a_key": "A String",
            },
          },
        },
        "notes": "A String", # 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.
        "conferenceId": "A String", # The ID of the conference.
            # Can be used by developers to keep track of conferences, should not be displayed to users.
            # Values for solution types:
            # - "eventHangout": unset.
            # - "eventNamedHangout": the name of the Hangout.
            # - "hangoutsMeet": the 10-letter meeting code, for example "aaa-bbbb-ccc".  Optional.
        "createRequest": { # 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.
          "status": { # The status of the conference create request.
            "statusCode": "A String", # The current status of the conference create request. Read-only.
                # The possible values are:
                # - "pending": the conference create request is still being processed.
                # - "success": the conference create request succeeded, the entry points are populated.
                # - "failure": the conference create request failed, there are no entry points.
          },
          "conferenceSolutionKey": { # The conference solution, such as Hangouts or Hangouts Meet.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
          "requestId": "A String", # 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.
        },
        "conferenceSolution": { # The conference solution, such as Hangouts or Hangouts Meet.
            # Unset for a conference with a failed create request.
            # Either conferenceSolution and at least one entryPoint, or createRequest is required.
          "iconUri": "A String", # The user-visible icon for this solution.
          "name": "A String", # The user-visible name of this solution. Not localized.
          "key": { # The key which can uniquely identify the conference solution for this event.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
        },
        "signature": "A String", # 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.
      },
    }</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 "primary" 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. This value should only be used for migration use cases (note that in most migration cases the import method should be used).

Returns:
  An object of the form:

    {
      "attachments": [ # 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,
        {
          "mimeType": "A String", # Internet media type (MIME type) of the attachment.
          "title": "A String", # Attachment title.
          "fileUrl": "A String", # 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.
          "iconLink": "A String", # URL link to the attachment's icon. Read-only.
          "fileId": "A String", # 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.
        },
      ],
      "creator": { # The creator of the event. Read-only.
        "self": false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The creator's name, if available.
        "email": "A String", # The creator's email address, if available.
        "id": "A String", # The creator's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "organizer": { # 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.
        "self": false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The organizer's name, if available.
        "email": "A String", # The organizer's email address, if available. It must be a valid email address as per RFC5322.
        "id": "A String", # The organizer's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "summary": "A String", # Title of the event.
      "id": "A String", # 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.
      "hangoutLink": "A String", # An absolute link to the Google+ hangout associated with this event. Read-only.
      "attendees": [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.
        {
          "comment": "A String", # The attendee's response comment. Optional.
          "displayName": "A String", # The attendee's name, if available. Optional.
          "responseStatus": "A String", # The attendee's response status. Possible values are:
              # - "needsAction" - The attendee has not responded to the invitation.
              # - "declined" - The attendee has declined the invitation.
              # - "tentative" - The attendee has tentatively accepted the invitation.
              # - "accepted" - The attendee has accepted the invitation.
          "self": false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
          "id": "A String", # The attendee's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
          "additionalGuests": 0, # Number of additional guests. Optional. The default is 0.
          "resource": 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.
          "organizer": True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
          "optional": false, # Whether this is an optional attendee. Optional. The default is False.
          "email": "A String", # The attendee'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.
        },
      ],
      "start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
      "recurrence": [ # 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.
        "A String",
      ],
      "source": { # 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.
        "url": "A String", # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
        "title": "A String", # Title of the source; for example a title of a web page or an email subject.
      },
      "etag": "A String", # ETag of the resource.
      "location": "A String", # Geographic location of the event as free-form text. Optional.
      "recurringEventId": "A String", # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
      "gadget": { # A gadget that extends this event.
        "preferences": { # Preferences.
          "a_key": "A String", # The preference name and corresponding value.
        },
        "title": "A String", # The gadget's title.
        "height": 42, # The gadget's height in pixels. The height must be an integer greater than 0. Optional.
        "width": 42, # The gadget's width in pixels. The width must be an integer greater than 0. Optional.
        "link": "A String", # The gadget's URL. The URL scheme must be HTTPS.
        "type": "A String", # The gadget's type.
        "display": "A String", # The gadget's display mode. Optional. Possible values are:
            # - "icon" - The gadget displays next to the event's title in the calendar view.
            # - "chip" - The gadget displays when the event is clicked.
        "iconLink": "A String", # The gadget's icon URL. The URL scheme must be HTTPS.
      },
      "status": "A String", # Status of the event. Optional. Possible values are:
          # - "confirmed" - The event is confirmed. This is the default status.
          # - "tentative" - The event is tentatively confirmed.
          # - "cancelled" - 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'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.
      "updated": "A String", # Last modification time of the event (as a RFC3339 timestamp). Read-only.
      "description": "A String", # Description of the event. Optional.
      "iCalUID": "A String", # 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.
      "extendedProperties": { # Extended properties of the event.
        "shared": { # Properties that are shared between copies of the event on other attendees' calendars.
          "a_key": "A String", # The name of the shared property and the corresponding value.
        },
        "private": { # Properties that are private to the copy of the event that appears on this calendar.
          "a_key": "A String", # The name of the private property and the corresponding value.
        },
      },
      "endTimeUnspecified": 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.
      "sequence": 42, # Sequence number as per iCalendar.
      "visibility": "default", # Visibility of the event. Optional. Possible values are:
          # - "default" - Uses the default visibility for events on the calendar. This is the default value.
          # - "public" - The event is public and event details are visible to all readers of the calendar.
          # - "private" - The event is private and only event attendees may view event details.
          # - "confidential" - The event is private. This value is provided for compatibility reasons.
      "guestsCanModify": false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
      "end": { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "attendeesOmitted": false, # Whether attendees may have been omitted from the event'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's response. Optional. The default is False.
      "kind": "calendar#event", # Type of the resource ("calendar#event").
      "locked": false, # Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only.
      "anyoneCanAddSelf": false, # Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.
      "colorId": "A String", # 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.
      "created": "A String", # Creation time of the event (as a RFC3339 timestamp). Read-only.
      "reminders": { # Information about the event's reminders for the authenticated user.
        "overrides": [ # If the event doesn'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.
          {
            "minutes": 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.
            "method": "A String", # The method used by this reminder. Possible values are:
                # - "email" - Reminders are sent via email.
                # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
                # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
                # - "popup" - Reminders are sent via a UI popup.
                # Required when adding a reminder.
          },
        ],
        "useDefault": True or False, # Whether the default reminders of the calendar apply to the event.
      },
      "guestsCanSeeOtherGuests": true, # Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.
      "originalStartTime": { # 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.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "guestsCanInviteOthers": true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
      "transparency": "opaque", # Whether the event blocks time on the calendar. Optional. Possible values are:
          # - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
          # - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
      "privateCopy": false, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
      "conferenceData": { # The conference-related information, such as details of a Hangouts 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.
        "entryPoints": [ # 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.
          {
            "password": "A String", # 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.
            "meetingCode": "A String", # 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.
            "pin": "A String", # 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.
            "uri": "A String", # 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.
            "entryPointFeatures": [ # 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.
              "A String",
            ],
            "label": "A String", # 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.
            "entryPointType": "A String", # The type of the conference entry point.
                # Possible values are:
                # - "video" - joining a conference over HTTP. A conference can have zero or one video entry point.
                # - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
                # - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point.
                # - "more" - 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.
            "regionCode": "A String", # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden.
                # Calendar backend will populate this field only for EntryPointType.PHONE.
            "passcode": "A String", # 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.
            "accessCode": "A String", # 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.
          },
        ],
        "parameters": { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
          "addOnParameters": { # Additional add-on specific data.
            "parameters": {
              "a_key": "A String",
            },
          },
        },
        "notes": "A String", # 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.
        "conferenceId": "A String", # The ID of the conference.
            # Can be used by developers to keep track of conferences, should not be displayed to users.
            # Values for solution types:
            # - "eventHangout": unset.
            # - "eventNamedHangout": the name of the Hangout.
            # - "hangoutsMeet": the 10-letter meeting code, for example "aaa-bbbb-ccc".  Optional.
        "createRequest": { # 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.
          "status": { # The status of the conference create request.
            "statusCode": "A String", # The current status of the conference create request. Read-only.
                # The possible values are:
                # - "pending": the conference create request is still being processed.
                # - "success": the conference create request succeeded, the entry points are populated.
                # - "failure": the conference create request failed, there are no entry points.
          },
          "conferenceSolutionKey": { # The conference solution, such as Hangouts or Hangouts Meet.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
          "requestId": "A String", # 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.
        },
        "conferenceSolution": { # The conference solution, such as Hangouts or Hangouts Meet.
            # Unset for a conference with a failed create request.
            # Either conferenceSolution and at least one entryPoint, or createRequest is required.
          "iconUri": "A String", # The user-visible icon for this solution.
          "name": "A String", # The user-visible name of this solution. Not localized.
          "key": { # The key which can uniquely identify the conference solution for this event.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
        },
        "signature": "A String", # 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.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(calendarId, eventId, body, sendNotifications=None, alwaysIncludeEmail=None, supportsAttachments=None, maxAttendees=None, conferenceDataVersion=None, sendUpdates=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 "primary" keyword. (required)
  eventId: string, Event identifier. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "attachments": [ # 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,
      {
        "mimeType": "A String", # Internet media type (MIME type) of the attachment.
        "title": "A String", # Attachment title.
        "fileUrl": "A String", # 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.
        "iconLink": "A String", # URL link to the attachment's icon. Read-only.
        "fileId": "A String", # 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.
      },
    ],
    "creator": { # The creator of the event. Read-only.
      "self": false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
      "displayName": "A String", # The creator's name, if available.
      "email": "A String", # The creator's email address, if available.
      "id": "A String", # The creator's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
    },
    "organizer": { # 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.
      "self": false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
      "displayName": "A String", # The organizer's name, if available.
      "email": "A String", # The organizer's email address, if available. It must be a valid email address as per RFC5322.
      "id": "A String", # The organizer's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
    },
    "summary": "A String", # Title of the event.
    "id": "A String", # 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.
    "hangoutLink": "A String", # An absolute link to the Google+ hangout associated with this event. Read-only.
    "attendees": [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.
      {
        "comment": "A String", # The attendee's response comment. Optional.
        "displayName": "A String", # The attendee's name, if available. Optional.
        "responseStatus": "A String", # The attendee's response status. Possible values are:
            # - "needsAction" - The attendee has not responded to the invitation.
            # - "declined" - The attendee has declined the invitation.
            # - "tentative" - The attendee has tentatively accepted the invitation.
            # - "accepted" - The attendee has accepted the invitation.
        "self": false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
        "id": "A String", # The attendee's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
        "additionalGuests": 0, # Number of additional guests. Optional. The default is 0.
        "resource": 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.
        "organizer": True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
        "optional": false, # Whether this is an optional attendee. Optional. The default is False.
        "email": "A String", # The attendee'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.
      },
    ],
    "start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
      "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
      "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
      "dateTime": "A String", # 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.
    },
    "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
    "recurrence": [ # 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.
      "A String",
    ],
    "source": { # 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.
      "url": "A String", # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
      "title": "A String", # Title of the source; for example a title of a web page or an email subject.
    },
    "etag": "A String", # ETag of the resource.
    "location": "A String", # Geographic location of the event as free-form text. Optional.
    "recurringEventId": "A String", # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
    "gadget": { # A gadget that extends this event.
      "preferences": { # Preferences.
        "a_key": "A String", # The preference name and corresponding value.
      },
      "title": "A String", # The gadget's title.
      "height": 42, # The gadget's height in pixels. The height must be an integer greater than 0. Optional.
      "width": 42, # The gadget's width in pixels. The width must be an integer greater than 0. Optional.
      "link": "A String", # The gadget's URL. The URL scheme must be HTTPS.
      "type": "A String", # The gadget's type.
      "display": "A String", # The gadget's display mode. Optional. Possible values are:
          # - "icon" - The gadget displays next to the event's title in the calendar view.
          # - "chip" - The gadget displays when the event is clicked.
      "iconLink": "A String", # The gadget's icon URL. The URL scheme must be HTTPS.
    },
    "status": "A String", # Status of the event. Optional. Possible values are:
        # - "confirmed" - The event is confirmed. This is the default status.
        # - "tentative" - The event is tentatively confirmed.
        # - "cancelled" - 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'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.
    "updated": "A String", # Last modification time of the event (as a RFC3339 timestamp). Read-only.
    "description": "A String", # Description of the event. Optional.
    "iCalUID": "A String", # 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.
    "extendedProperties": { # Extended properties of the event.
      "shared": { # Properties that are shared between copies of the event on other attendees' calendars.
        "a_key": "A String", # The name of the shared property and the corresponding value.
      },
      "private": { # Properties that are private to the copy of the event that appears on this calendar.
        "a_key": "A String", # The name of the private property and the corresponding value.
      },
    },
    "endTimeUnspecified": 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.
    "sequence": 42, # Sequence number as per iCalendar.
    "visibility": "default", # Visibility of the event. Optional. Possible values are:
        # - "default" - Uses the default visibility for events on the calendar. This is the default value.
        # - "public" - The event is public and event details are visible to all readers of the calendar.
        # - "private" - The event is private and only event attendees may view event details.
        # - "confidential" - The event is private. This value is provided for compatibility reasons.
    "guestsCanModify": false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
    "end": { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
      "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
      "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
      "dateTime": "A String", # 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.
    },
    "attendeesOmitted": false, # Whether attendees may have been omitted from the event'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's response. Optional. The default is False.
    "kind": "calendar#event", # Type of the resource ("calendar#event").
    "locked": false, # Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only.
    "anyoneCanAddSelf": false, # Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.
    "colorId": "A String", # 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.
    "created": "A String", # Creation time of the event (as a RFC3339 timestamp). Read-only.
    "reminders": { # Information about the event's reminders for the authenticated user.
      "overrides": [ # If the event doesn'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.
        {
          "minutes": 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.
          "method": "A String", # The method used by this reminder. Possible values are:
              # - "email" - Reminders are sent via email.
              # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
              # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
              # - "popup" - Reminders are sent via a UI popup.
              # Required when adding a reminder.
        },
      ],
      "useDefault": True or False, # Whether the default reminders of the calendar apply to the event.
    },
    "guestsCanSeeOtherGuests": true, # Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.
    "originalStartTime": { # 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.
      "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
      "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
      "dateTime": "A String", # 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.
    },
    "guestsCanInviteOthers": true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
    "transparency": "opaque", # Whether the event blocks time on the calendar. Optional. Possible values are:
        # - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
        # - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
    "privateCopy": false, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
    "conferenceData": { # The conference-related information, such as details of a Hangouts 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.
      "entryPoints": [ # 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.
        {
          "password": "A String", # 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.
          "meetingCode": "A String", # 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.
          "pin": "A String", # 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.
          "uri": "A String", # 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.
          "entryPointFeatures": [ # 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.
            "A String",
          ],
          "label": "A String", # 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.
          "entryPointType": "A String", # The type of the conference entry point.
              # Possible values are:
              # - "video" - joining a conference over HTTP. A conference can have zero or one video entry point.
              # - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
              # - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point.
              # - "more" - 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.
          "regionCode": "A String", # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden.
              # Calendar backend will populate this field only for EntryPointType.PHONE.
          "passcode": "A String", # 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.
          "accessCode": "A String", # 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.
        },
      ],
      "parameters": { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
        "addOnParameters": { # Additional add-on specific data.
          "parameters": {
            "a_key": "A String",
          },
        },
      },
      "notes": "A String", # 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.
      "conferenceId": "A String", # The ID of the conference.
          # Can be used by developers to keep track of conferences, should not be displayed to users.
          # Values for solution types:
          # - "eventHangout": unset.
          # - "eventNamedHangout": the name of the Hangout.
          # - "hangoutsMeet": the 10-letter meeting code, for example "aaa-bbbb-ccc".  Optional.
      "createRequest": { # 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.
        "status": { # The status of the conference create request.
          "statusCode": "A String", # The current status of the conference create request. Read-only.
              # The possible values are:
              # - "pending": the conference create request is still being processed.
              # - "success": the conference create request succeeded, the entry points are populated.
              # - "failure": the conference create request failed, there are no entry points.
        },
        "conferenceSolutionKey": { # The conference solution, such as Hangouts or Hangouts Meet.
          "type": "A String", # 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:
              # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
              # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
              # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
        },
        "requestId": "A String", # 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.
      },
      "conferenceSolution": { # The conference solution, such as Hangouts or Hangouts Meet.
          # Unset for a conference with a failed create request.
          # Either conferenceSolution and at least one entryPoint, or createRequest is required.
        "iconUri": "A String", # The user-visible icon for this solution.
        "name": "A String", # The user-visible name of this solution. Not localized.
        "key": { # The key which can uniquely identify the conference solution for this event.
          "type": "A String", # 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:
              # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
              # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
              # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
        },
      },
      "signature": "A String", # 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.
    },
  }

  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.
  alwaysIncludeEmail: boolean, Whether to always include a value in the email field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False.
  supportsAttachments: boolean, Whether API client performing operation supports event attachments. Optional. The default is False.
  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.
  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'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.
  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. This value should only be used for migration use cases (note that in most migration cases the import method should be used).

Returns:
  An object of the form:

    {
      "attachments": [ # 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,
        {
          "mimeType": "A String", # Internet media type (MIME type) of the attachment.
          "title": "A String", # Attachment title.
          "fileUrl": "A String", # 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.
          "iconLink": "A String", # URL link to the attachment's icon. Read-only.
          "fileId": "A String", # 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.
        },
      ],
      "creator": { # The creator of the event. Read-only.
        "self": false, # Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The creator's name, if available.
        "email": "A String", # The creator's email address, if available.
        "id": "A String", # The creator's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "organizer": { # 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.
        "self": false, # Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.
        "displayName": "A String", # The organizer's name, if available.
        "email": "A String", # The organizer's email address, if available. It must be a valid email address as per RFC5322.
        "id": "A String", # The organizer's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
      },
      "summary": "A String", # Title of the event.
      "id": "A String", # 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.
      "hangoutLink": "A String", # An absolute link to the Google+ hangout associated with this event. Read-only.
      "attendees": [ # The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.
        {
          "comment": "A String", # The attendee's response comment. Optional.
          "displayName": "A String", # The attendee's name, if available. Optional.
          "responseStatus": "A String", # The attendee's response status. Possible values are:
              # - "needsAction" - The attendee has not responded to the invitation.
              # - "declined" - The attendee has declined the invitation.
              # - "tentative" - The attendee has tentatively accepted the invitation.
              # - "accepted" - The attendee has accepted the invitation.
          "self": false, # Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False.
          "id": "A String", # The attendee's Profile ID, if available. It corresponds to the id field in the People collection of the Google+ API
          "additionalGuests": 0, # Number of additional guests. Optional. The default is 0.
          "resource": 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.
          "organizer": True or False, # Whether the attendee is the organizer of the event. Read-only. The default is False.
          "optional": false, # Whether this is an optional attendee. Optional. The default is False.
          "email": "A String", # The attendee'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.
        },
      ],
      "start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
      "recurrence": [ # 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.
        "A String",
      ],
      "source": { # 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.
        "url": "A String", # URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS.
        "title": "A String", # Title of the source; for example a title of a web page or an email subject.
      },
      "etag": "A String", # ETag of the resource.
      "location": "A String", # Geographic location of the event as free-form text. Optional.
      "recurringEventId": "A String", # For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable.
      "gadget": { # A gadget that extends this event.
        "preferences": { # Preferences.
          "a_key": "A String", # The preference name and corresponding value.
        },
        "title": "A String", # The gadget's title.
        "height": 42, # The gadget's height in pixels. The height must be an integer greater than 0. Optional.
        "width": 42, # The gadget's width in pixels. The width must be an integer greater than 0. Optional.
        "link": "A String", # The gadget's URL. The URL scheme must be HTTPS.
        "type": "A String", # The gadget's type.
        "display": "A String", # The gadget's display mode. Optional. Possible values are:
            # - "icon" - The gadget displays next to the event's title in the calendar view.
            # - "chip" - The gadget displays when the event is clicked.
        "iconLink": "A String", # The gadget's icon URL. The URL scheme must be HTTPS.
      },
      "status": "A String", # Status of the event. Optional. Possible values are:
          # - "confirmed" - The event is confirmed. This is the default status.
          # - "tentative" - The event is tentatively confirmed.
          # - "cancelled" - 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'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.
      "updated": "A String", # Last modification time of the event (as a RFC3339 timestamp). Read-only.
      "description": "A String", # Description of the event. Optional.
      "iCalUID": "A String", # 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.
      "extendedProperties": { # Extended properties of the event.
        "shared": { # Properties that are shared between copies of the event on other attendees' calendars.
          "a_key": "A String", # The name of the shared property and the corresponding value.
        },
        "private": { # Properties that are private to the copy of the event that appears on this calendar.
          "a_key": "A String", # The name of the private property and the corresponding value.
        },
      },
      "endTimeUnspecified": 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.
      "sequence": 42, # Sequence number as per iCalendar.
      "visibility": "default", # Visibility of the event. Optional. Possible values are:
          # - "default" - Uses the default visibility for events on the calendar. This is the default value.
          # - "public" - The event is public and event details are visible to all readers of the calendar.
          # - "private" - The event is private and only event attendees may view event details.
          # - "confidential" - The event is private. This value is provided for compatibility reasons.
      "guestsCanModify": false, # Whether attendees other than the organizer can modify the event. Optional. The default is False.
      "end": { # The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "attendeesOmitted": false, # Whether attendees may have been omitted from the event'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's response. Optional. The default is False.
      "kind": "calendar#event", # Type of the resource ("calendar#event").
      "locked": false, # Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only.
      "anyoneCanAddSelf": false, # Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.
      "colorId": "A String", # 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.
      "created": "A String", # Creation time of the event (as a RFC3339 timestamp). Read-only.
      "reminders": { # Information about the event's reminders for the authenticated user.
        "overrides": [ # If the event doesn'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.
          {
            "minutes": 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.
            "method": "A String", # The method used by this reminder. Possible values are:
                # - "email" - Reminders are sent via email.
                # - "sms" - Deprecated. Once this feature is shutdown, the API will no longer return reminders using this method. Any newly added SMS reminders will be ignored. See  Google Calendar SMS notifications to be removed for more information.
                # Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS reminders for other account types are ignored.
                # - "popup" - Reminders are sent via a UI popup.
                # Required when adding a reminder.
          },
        ],
        "useDefault": True or False, # Whether the default reminders of the calendar apply to the event.
      },
      "guestsCanSeeOtherGuests": true, # Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.
      "originalStartTime": { # 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.
        "date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
        "timeZone": "A String", # The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) 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.
        "dateTime": "A String", # 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.
      },
      "guestsCanInviteOthers": true, # Whether attendees other than the organizer can invite others to the event. Optional. The default is True.
      "transparency": "opaque", # Whether the event blocks time on the calendar. Optional. Possible values are:
          # - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI.
          # - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI.
      "privateCopy": false, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
      "conferenceData": { # The conference-related information, such as details of a Hangouts 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.
        "entryPoints": [ # 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.
          {
            "password": "A String", # 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.
            "meetingCode": "A String", # 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.
            "pin": "A String", # 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.
            "uri": "A String", # 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.
            "entryPointFeatures": [ # 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.
              "A String",
            ],
            "label": "A String", # 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.
            "entryPointType": "A String", # The type of the conference entry point.
                # Possible values are:
                # - "video" - joining a conference over HTTP. A conference can have zero or one video entry point.
                # - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points.
                # - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point.
                # - "more" - 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.
            "regionCode": "A String", # The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden.
                # Calendar backend will populate this field only for EntryPointType.PHONE.
            "passcode": "A String", # 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.
            "accessCode": "A String", # 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.
          },
        ],
        "parameters": { # Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming.
          "addOnParameters": { # Additional add-on specific data.
            "parameters": {
              "a_key": "A String",
            },
          },
        },
        "notes": "A String", # 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.
        "conferenceId": "A String", # The ID of the conference.
            # Can be used by developers to keep track of conferences, should not be displayed to users.
            # Values for solution types:
            # - "eventHangout": unset.
            # - "eventNamedHangout": the name of the Hangout.
            # - "hangoutsMeet": the 10-letter meeting code, for example "aaa-bbbb-ccc".  Optional.
        "createRequest": { # 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.
          "status": { # The status of the conference create request.
            "statusCode": "A String", # The current status of the conference create request. Read-only.
                # The possible values are:
                # - "pending": the conference create request is still being processed.
                # - "success": the conference create request succeeded, the entry points are populated.
                # - "failure": the conference create request failed, there are no entry points.
          },
          "conferenceSolutionKey": { # The conference solution, such as Hangouts or Hangouts Meet.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
          "requestId": "A String", # 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.
        },
        "conferenceSolution": { # The conference solution, such as Hangouts or Hangouts Meet.
            # Unset for a conference with a failed create request.
            # Either conferenceSolution and at least one entryPoint, or createRequest is required.
          "iconUri": "A String", # The user-visible icon for this solution.
          "name": "A String", # The user-visible name of this solution. Not localized.
          "key": { # The key which can uniquely identify the conference solution for this event.
            "type": "A String", # 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:
                # - "eventHangout" for Hangouts for consumers (http://hangouts.google.com)
                # - "eventNamedHangout" for classic Hangouts for G Suite users (http://hangouts.google.com)
                # - "hangoutsMeet" for Hangouts Meet (http://meet.google.com)
          },
        },
        "signature": "A String", # 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.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="watch">watch(calendarId, body, orderBy=None, showHiddenInvitations=None, timeMin=None, privateExtendedProperty=None, pageToken=None, updatedMin=None, singleEvents=None, alwaysIncludeEmail=None, showDeleted=None, sharedExtendedProperty=None, maxAttendees=None, syncToken=None, iCalUID=None, maxResults=None, timeMax=None, q=None, timeZone=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 "primary" keyword. (required)
  body: object, The request body. (required)
    The object takes the form of:

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

  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).
  showHiddenInvitations: boolean, Whether to include hidden invitations in the result. Optional. The default is False.
  timeMin: string, Lower bound (exclusive) for an event'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.
  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)
  pageToken: string, Token specifying which result page to return. Optional.
  updatedMin: string, Lower bound for an event'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.
  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.
  alwaysIncludeEmail: boolean, Whether to always include a value in the email field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False.
  showDeleted: boolean, Whether to include deleted events (with status equals "cancelled") 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.
  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)
  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.
  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.
  iCalUID: string, Specifies event ID in the iCalendar format to be included in the response. 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.
  timeMax: string, Upper bound (exclusive) for an event'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.
  q: string, Free text search terms to find events that match these terms in any field, except for extended properties. 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:

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

</body></html>