// NOTE: This file was generated by the ServiceGenerator.

// ----------------------------------------------------------------------------
// API:
//   Calendar API (calendar/v3)
// Description:
//   Manipulates events and other calendar data.
// Documentation:
//   https://developers.google.com/google-apps/calendar/firstapp

#if GTLR_BUILT_AS_FRAMEWORK
  #import "GTLR/GTLRObject.h"
#else
  #import "GTLRObject.h"
#endif

#if GTLR_RUNTIME_VERSION != 3000
#error This file was generated by a different version of ServiceGenerator which is incompatible with this GTLR library source.
#endif

@class GTLRCalendar_AclRule;
@class GTLRCalendar_AclRule_Scope;
@class GTLRCalendar_CalendarListEntry;
@class GTLRCalendar_CalendarListEntry_NotificationSettings;
@class GTLRCalendar_Channel_Params;
@class GTLRCalendar_ColorDefinition;
@class GTLRCalendar_Colors_Calendar;
@class GTLRCalendar_Colors_Event;
@class GTLRCalendar_Error;
@class GTLRCalendar_Event;
@class GTLRCalendar_Event_Creator;
@class GTLRCalendar_Event_ExtendedProperties;
@class GTLRCalendar_Event_ExtendedProperties_Private;
@class GTLRCalendar_Event_ExtendedProperties_Shared;
@class GTLRCalendar_Event_Gadget;
@class GTLRCalendar_Event_Gadget_Preferences;
@class GTLRCalendar_Event_Organizer;
@class GTLRCalendar_Event_Reminders;
@class GTLRCalendar_Event_Source;
@class GTLRCalendar_EventAttachment;
@class GTLRCalendar_EventAttendee;
@class GTLRCalendar_EventDateTime;
@class GTLRCalendar_EventReminder;
@class GTLRCalendar_FreeBusyCalendar;
@class GTLRCalendar_FreeBusyGroup;
@class GTLRCalendar_FreeBusyRequestItem;
@class GTLRCalendar_FreeBusyResponse_Calendars;
@class GTLRCalendar_FreeBusyResponse_Groups;
@class GTLRCalendar_Notification;
@class GTLRCalendar_Setting;
@class GTLRCalendar_TimePeriod;

// Generated comments include content from the discovery document; avoid them
// causing warnings since clang's checks are some what arbitrary.
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdocumentation"

NS_ASSUME_NONNULL_BEGIN

/**
 *  GTLRCalendar_Acl
 *
 *  @note This class supports NSFastEnumeration and indexed subscripting over
 *        its "items" property. If returned as the result of a query, it should
 *        support automatic pagination (when @c shouldFetchNextPages is
 *        enabled).
 */
@interface GTLRCalendar_Acl : GTLRCollectionObject

/** ETag of the collection. */
@property(nonatomic, copy, nullable) NSString *ETag;

/**
 *  List of rules on the access control list.
 *
 *  @note This property is used to support NSFastEnumeration and indexed
 *        subscripting on this class.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_AclRule *> *items;

/** Type of the collection ("calendar#acl"). */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  Token used to access the next page of this result. Omitted if no further
 *  results are available, in which case nextSyncToken is provided.
 */
@property(nonatomic, copy, nullable) NSString *nextPageToken;

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *nextSyncToken;

@end


/**
 *  GTLRCalendar_AclRule
 */
@interface GTLRCalendar_AclRule : GTLRObject

/** ETag of the resource. */
@property(nonatomic, copy, nullable) NSString *ETag;

/**
 *  Identifier of the ACL rule.
 *
 *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
 */
@property(nonatomic, copy, nullable) NSString *identifier;

/** Type of the resource ("calendar#aclRule"). */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  The role assigned to the scope. Possible values are:
 *  - "none" - Provides no access.
 *  - "freeBusyReader" - Provides read access to free/busy information.
 *  - "reader" - Provides read access to the calendar. Private events will
 *  appear to users with reader access, but event details will be hidden.
 *  - "writer" - Provides read and write access to the calendar. Private events
 *  will appear to users with writer access, and event details will be visible.
 *  - "owner" - Provides ownership of the calendar. This role has all of the
 *  permissions of the writer role with the additional ability to see and
 *  manipulate ACLs.
 */
@property(nonatomic, copy, nullable) NSString *role;

/** The scope of the rule. */
@property(nonatomic, strong, nullable) GTLRCalendar_AclRule_Scope *scope;

@end


/**
 *  The scope of the rule.
 */
@interface GTLRCalendar_AclRule_Scope : GTLRObject

/**
 *  The type of the scope. Possible values are:
 *  - "default" - The public scope. This is the default value.
 *  - "user" - Limits the scope to a single user.
 *  - "group" - Limits the scope to a group.
 *  - "domain" - Limits the scope to a domain. Note: The permissions granted to
 *  the "default", or public, scope apply to any user, authenticated or not.
 */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The email address of a user or group, or the name of a domain, depending on
 *  the scope type. Omitted for type "default".
 */
@property(nonatomic, copy, nullable) NSString *value;

@end


/**
 *  GTLRCalendar_Calendar
 */
@interface GTLRCalendar_Calendar : GTLRObject

/**
 *  Description of the calendar. Optional.
 *
 *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
 */
@property(nonatomic, copy, nullable) NSString *descriptionProperty;

/** ETag of the resource. */
@property(nonatomic, copy, nullable) NSString *ETag;

/**
 *  Identifier of the calendar. To retrieve IDs call the calendarList.list()
 *  method.
 *
 *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
 */
@property(nonatomic, copy, nullable) NSString *identifier;

/** Type of the resource ("calendar#calendar"). */
@property(nonatomic, copy, nullable) NSString *kind;

/** Geographic location of the calendar as free-form text. Optional. */
@property(nonatomic, copy, nullable) NSString *location;

/** Title of the calendar. */
@property(nonatomic, copy, nullable) NSString *summary;

/**
 *  The time zone of the calendar. (Formatted as an IANA Time Zone Database
 *  name, e.g. "Europe/Zurich".) Optional.
 */
@property(nonatomic, copy, nullable) NSString *timeZone;

@end


/**
 *  GTLRCalendar_CalendarList
 *
 *  @note This class supports NSFastEnumeration and indexed subscripting over
 *        its "items" property. If returned as the result of a query, it should
 *        support automatic pagination (when @c shouldFetchNextPages is
 *        enabled).
 */
@interface GTLRCalendar_CalendarList : GTLRCollectionObject

/** ETag of the collection. */
@property(nonatomic, copy, nullable) NSString *ETag;

/**
 *  Calendars that are present on the user's calendar list.
 *
 *  @note This property is used to support NSFastEnumeration and indexed
 *        subscripting on this class.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_CalendarListEntry *> *items;

/** Type of the collection ("calendar#calendarList"). */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  Token used to access the next page of this result. Omitted if no further
 *  results are available, in which case nextSyncToken is provided.
 */
@property(nonatomic, copy, nullable) NSString *nextPageToken;

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *nextSyncToken;

@end


/**
 *  GTLRCalendar_CalendarListEntry
 */
@interface GTLRCalendar_CalendarListEntry : GTLRObject

/**
 *  The effective access role that the authenticated user has on the calendar.
 *  Read-only. Possible values are:
 *  - "freeBusyReader" - Provides read access to free/busy information.
 *  - "reader" - Provides read access to the calendar. Private events will
 *  appear to users with reader access, but event details will be hidden.
 *  - "writer" - Provides read and write access to the calendar. Private events
 *  will appear to users with writer access, and event details will be visible.
 *  - "owner" - Provides ownership of the calendar. This role has all of the
 *  permissions of the writer role with the additional ability to see and
 *  manipulate ACLs.
 */
@property(nonatomic, copy, nullable) NSString *accessRole;

/**
 *  The main color of the calendar in the hexadecimal format "#0088aa". This
 *  property supersedes the index-based colorId property. To set or change this
 *  property, you need to specify colorRgbFormat=true in the parameters of the
 *  insert, update and patch methods. Optional.
 */
@property(nonatomic, copy, nullable) NSString *backgroundColor;

/**
 *  The color of the calendar. This is an ID referring to an entry in the
 *  calendar section of the colors definition (see the colors endpoint). This
 *  property is superseded by the backgroundColor and foregroundColor properties
 *  and can be ignored when using these properties. Optional.
 */
@property(nonatomic, copy, nullable) NSString *colorId;

/**
 *  The default reminders that the authenticated user has for this calendar.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_EventReminder *> *defaultReminders;

/**
 *  Whether this calendar list entry has been deleted from the calendar list.
 *  Read-only. Optional. The default is False.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *deleted;

/**
 *  Description of the calendar. Optional. Read-only.
 *
 *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
 */
@property(nonatomic, copy, nullable) NSString *descriptionProperty;

/** ETag of the resource. */
@property(nonatomic, copy, nullable) NSString *ETag;

/**
 *  The foreground color of the calendar in the hexadecimal format "#ffffff".
 *  This property supersedes the index-based colorId property. To set or change
 *  this property, you need to specify colorRgbFormat=true in the parameters of
 *  the insert, update and patch methods. Optional.
 */
@property(nonatomic, copy, nullable) NSString *foregroundColor;

/**
 *  Whether the calendar has been hidden from the list. Optional. The default is
 *  False.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *hidden;

/**
 *  Identifier of the calendar.
 *
 *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
 */
@property(nonatomic, copy, nullable) NSString *identifier;

/** Type of the resource ("calendar#calendarListEntry"). */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  Geographic location of the calendar as free-form text. Optional. Read-only.
 */
@property(nonatomic, copy, nullable) NSString *location;

/**
 *  The notifications that the authenticated user is receiving for this
 *  calendar.
 */
@property(nonatomic, strong, nullable) GTLRCalendar_CalendarListEntry_NotificationSettings *notificationSettings;

/**
 *  Whether the calendar is the primary calendar of the authenticated user.
 *  Read-only. Optional. The default is False.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *primary;

/**
 *  Whether the calendar content shows up in the calendar UI. Optional. The
 *  default is False.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *selected;

/** Title of the calendar. Read-only. */
@property(nonatomic, copy, nullable) NSString *summary;

/**
 *  The summary that the authenticated user has set for this calendar. Optional.
 */
@property(nonatomic, copy, nullable) NSString *summaryOverride;

/** The time zone of the calendar. Optional. Read-only. */
@property(nonatomic, copy, nullable) NSString *timeZone;

@end


/**
 *  The notifications that the authenticated user is receiving for this
 *  calendar.
 */
@interface GTLRCalendar_CalendarListEntry_NotificationSettings : GTLRObject

/** The list of notifications set for this calendar. */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_Notification *> *notifications;

@end


/**
 *  GTLRCalendar_Channel
 */
@interface GTLRCalendar_Channel : GTLRObject

/** The address where notifications are delivered for this channel. */
@property(nonatomic, copy, nullable) NSString *address;

/**
 *  Date and time of notification channel expiration, expressed as a Unix
 *  timestamp, in milliseconds. Optional.
 *
 *  Uses NSNumber of longLongValue.
 */
@property(nonatomic, strong, nullable) NSNumber *expiration;

/**
 *  A UUID or similar unique string that identifies this channel.
 *
 *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
 */
@property(nonatomic, copy, nullable) NSString *identifier;

/**
 *  Identifies this as a notification channel used to watch for changes to a
 *  resource. Value: the fixed string "api#channel".
 */
@property(nonatomic, copy, nullable) NSString *kind;

/** Additional parameters controlling delivery channel behavior. Optional. */
@property(nonatomic, strong, nullable) GTLRCalendar_Channel_Params *params;

/**
 *  A Boolean value to indicate whether payload is wanted. Optional.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *payload;

/**
 *  An opaque ID that identifies the resource being watched on this channel.
 *  Stable across different API versions.
 */
@property(nonatomic, copy, nullable) NSString *resourceId;

/** A version-specific identifier for the watched resource. */
@property(nonatomic, copy, nullable) NSString *resourceUri;

/**
 *  An arbitrary string delivered to the target address with each notification
 *  delivered over this channel. Optional.
 */
@property(nonatomic, copy, nullable) NSString *token;

/** The type of delivery mechanism used for this channel. */
@property(nonatomic, copy, nullable) NSString *type;

@end


/**
 *  Additional parameters controlling delivery channel behavior. Optional.
 *
 *  @note This class is documented as having more properties of NSString. Use @c
 *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
 *        of properties and then fetch them; or @c -additionalProperties to
 *        fetch them all at once.
 */
@interface GTLRCalendar_Channel_Params : GTLRObject
@end


/**
 *  GTLRCalendar_ColorDefinition
 */
@interface GTLRCalendar_ColorDefinition : GTLRObject

/** The background color associated with this color definition. */
@property(nonatomic, copy, nullable) NSString *background;

/**
 *  The foreground color that can be used to write on top of a background with
 *  'background' color.
 */
@property(nonatomic, copy, nullable) NSString *foreground;

@end


/**
 *  GTLRCalendar_Colors
 */
@interface GTLRCalendar_Colors : GTLRObject

/**
 *  A global palette of calendar colors, mapping from the color ID to its
 *  definition. A calendarListEntry resource refers to one of these color IDs in
 *  its color field. Read-only.
 */
@property(nonatomic, strong, nullable) GTLRCalendar_Colors_Calendar *calendar;

/**
 *  A global palette of event colors, mapping from the color ID to its
 *  definition. An event resource may refer to one of these color IDs in its
 *  color field. Read-only.
 */
@property(nonatomic, strong, nullable) GTLRCalendar_Colors_Event *event;

/** Type of the resource ("calendar#colors"). */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  Last modification time of the color palette (as a RFC3339 timestamp).
 *  Read-only.
 */
@property(nonatomic, strong, nullable) GTLRDateTime *updated;

@end


/**
 *  A global palette of calendar colors, mapping from the color ID to its
 *  definition. A calendarListEntry resource refers to one of these color IDs in
 *  its color field. Read-only.
 *
 *  @note This class is documented as having more properties of
 *        GTLRCalendar_ColorDefinition. Use @c -additionalJSONKeys and @c
 *        -additionalPropertyForName: to get the list of properties and then
 *        fetch them; or @c -additionalProperties to fetch them all at once.
 */
@interface GTLRCalendar_Colors_Calendar : GTLRObject
@end


/**
 *  A global palette of event colors, mapping from the color ID to its
 *  definition. An event resource may refer to one of these color IDs in its
 *  color field. Read-only.
 *
 *  @note This class is documented as having more properties of
 *        GTLRCalendar_ColorDefinition. Use @c -additionalJSONKeys and @c
 *        -additionalPropertyForName: to get the list of properties and then
 *        fetch them; or @c -additionalProperties to fetch them all at once.
 */
@interface GTLRCalendar_Colors_Event : GTLRObject
@end


/**
 *  GTLRCalendar_Error
 */
@interface GTLRCalendar_Error : GTLRObject

/** Domain, or broad category, of the error. */
@property(nonatomic, copy, nullable) NSString *domain;

/**
 *  Specific reason for the error. Some of the possible values are:
 *  - "groupTooBig" - The group of users requested is too large for a single
 *  query.
 *  - "tooManyCalendarsRequested" - The number of calendars requested is too
 *  large for a single query.
 *  - "notFound" - The requested resource was not found.
 *  - "internalError" - The API service has encountered an internal error.
 *  Additional error types may be added in the future, so clients should
 *  gracefully handle additional error statuses not included in this list.
 */
@property(nonatomic, copy, nullable) NSString *reason;

@end


/**
 *  GTLRCalendar_Event
 */
@interface GTLRCalendar_Event : GTLRObject

/**
 *  Whether anyone can invite themselves to the event (currently works for
 *  Google+ events only). Optional. The default is False.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *anyoneCanAddSelf;

/**
 *  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,
 */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_EventAttachment *> *attachments;

/**
 *  The attendees of the event. See the Events with attendees guide for more
 *  information on scheduling events with other calendar users.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_EventAttendee *> *attendees;

/**
 *  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.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *attendeesOmitted;

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *colorId;

/** Creation time of the event (as a RFC3339 timestamp). Read-only. */
@property(nonatomic, strong, nullable) GTLRDateTime *created;

/** The creator of the event. Read-only. */
@property(nonatomic, strong, nullable) GTLRCalendar_Event_Creator *creator;

/**
 *  Description of the event. Optional.
 *
 *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
 */
@property(nonatomic, copy, nullable) NSString *descriptionProperty;

/**
 *  The (exclusive) end time of the event. For a recurring event, this is the
 *  end time of the first instance.
 */
@property(nonatomic, strong, nullable) GTLRCalendar_EventDateTime *end;

/**
 *  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.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *endTimeUnspecified;

/** ETag of the resource. */
@property(nonatomic, copy, nullable) NSString *ETag;

/** Extended properties of the event. */
@property(nonatomic, strong, nullable) GTLRCalendar_Event_ExtendedProperties *extendedProperties;

/** A gadget that extends this event. */
@property(nonatomic, strong, nullable) GTLRCalendar_Event_Gadget *gadget;

/**
 *  Whether attendees other than the organizer can invite others to the event.
 *  Optional. The default is True.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *guestsCanInviteOthers;

/**
 *  Whether attendees other than the organizer can modify the event. Optional.
 *  The default is False.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *guestsCanModify;

/**
 *  Whether attendees other than the organizer can see who the event's attendees
 *  are. Optional. The default is True.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *guestsCanSeeOtherGuests;

/**
 *  An absolute link to the Google+ hangout associated with this event.
 *  Read-only.
 */
@property(nonatomic, copy, nullable) NSString *hangoutLink;

/**
 *  An absolute link to this event in the Google Calendar Web UI. Read-only.
 */
@property(nonatomic, copy, nullable) NSString *htmlLink;

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *iCalUID;

/**
 *  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.
 *
 *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
 */
@property(nonatomic, copy, nullable) NSString *identifier;

/** Type of the resource ("calendar#event"). */
@property(nonatomic, copy, nullable) NSString *kind;

/** Geographic location of the event as free-form text. Optional. */
@property(nonatomic, copy, nullable) NSString *location;

/**
 *  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.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *locked;

/**
 *  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.
 */
@property(nonatomic, strong, nullable) GTLRCalendar_Event_Organizer *organizer;

/**
 *  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. Immutable.
 */
@property(nonatomic, strong, nullable) GTLRCalendar_EventDateTime *originalStartTime;

/**
 *  Whether this is a private event copy where changes are not shared with other
 *  copies on other calendars. Optional. Immutable. The default is False.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *privateCopy;

/**
 *  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.
 */
@property(nonatomic, strong, nullable) NSArray<NSString *> *recurrence;

/**
 *  For an instance of a recurring event, this is the id of the recurring event
 *  to which this instance belongs. Immutable.
 */
@property(nonatomic, copy, nullable) NSString *recurringEventId;

/** Information about the event's reminders for the authenticated user. */
@property(nonatomic, strong, nullable) GTLRCalendar_Event_Reminders *reminders;

/**
 *  Sequence number as per iCalendar.
 *
 *  Uses NSNumber of intValue.
 */
@property(nonatomic, strong, nullable) NSNumber *sequence;

/**
 *  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.
 */
@property(nonatomic, strong, nullable) GTLRCalendar_Event_Source *source;

/**
 *  The (inclusive) start time of the event. For a recurring event, this is the
 *  start time of the first instance.
 */
@property(nonatomic, strong, nullable) GTLRCalendar_EventDateTime *start;

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *status;

/** Title of the event. */
@property(nonatomic, copy, nullable) NSString *summary;

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *transparency;

/**
 *  Last modification time of the event (as a RFC3339 timestamp). Read-only.
 */
@property(nonatomic, strong, nullable) GTLRDateTime *updated;

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *visibility;

@end


/**
 *  The creator of the event. Read-only.
 */
@interface GTLRCalendar_Event_Creator : GTLRObject

/** The creator's name, if available. */
@property(nonatomic, copy, nullable) NSString *displayName;

/** The creator's email address, if available. */
@property(nonatomic, copy, nullable) NSString *email;

/**
 *  The creator's Profile ID, if available. It corresponds to theid field in the
 *  People collection of the Google+ API
 *
 *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
 */
@property(nonatomic, copy, nullable) NSString *identifier;

/**
 *  Whether the creator corresponds to the calendar on which this copy of the
 *  event appears. Read-only. The default is False.
 *
 *  Remapped to 'selfProperty' to avoid language reserved word 'self'.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *selfProperty;

@end


/**
 *  Extended properties of the event.
 */
@interface GTLRCalendar_Event_ExtendedProperties : GTLRObject

/**
 *  Properties that are private to the copy of the event that appears on this
 *  calendar.
 *
 *  Remapped to 'privateProperty' to avoid language reserved word 'private'.
 */
@property(nonatomic, strong, nullable) GTLRCalendar_Event_ExtendedProperties_Private *privateProperty;

/**
 *  Properties that are shared between copies of the event on other attendees'
 *  calendars.
 */
@property(nonatomic, strong, nullable) GTLRCalendar_Event_ExtendedProperties_Shared *shared;

@end


/**
 *  A gadget that extends this event.
 */
@interface GTLRCalendar_Event_Gadget : GTLRObject

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *display;

/**
 *  The gadget's height in pixels. The height must be an integer greater than 0.
 *  Optional.
 *
 *  Uses NSNumber of intValue.
 */
@property(nonatomic, strong, nullable) NSNumber *height;

/** The gadget's icon URL. The URL scheme must be HTTPS. */
@property(nonatomic, copy, nullable) NSString *iconLink;

/** The gadget's URL. The URL scheme must be HTTPS. */
@property(nonatomic, copy, nullable) NSString *link;

/** Preferences. */
@property(nonatomic, strong, nullable) GTLRCalendar_Event_Gadget_Preferences *preferences;

/** The gadget's title. */
@property(nonatomic, copy, nullable) NSString *title;

/** The gadget's type. */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The gadget's width in pixels. The width must be an integer greater than 0.
 *  Optional.
 *
 *  Uses NSNumber of intValue.
 */
@property(nonatomic, strong, nullable) NSNumber *width;

@end


/**
 *  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.
 */
@interface GTLRCalendar_Event_Organizer : GTLRObject

/** The organizer's name, if available. */
@property(nonatomic, copy, nullable) NSString *displayName;

/**
 *  The organizer's email address, if available. It must be a valid email
 *  address as per RFC5322.
 */
@property(nonatomic, copy, nullable) NSString *email;

/**
 *  The organizer's Profile ID, if available. It corresponds to theid field in
 *  the People collection of the Google+ API
 *
 *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
 */
@property(nonatomic, copy, nullable) NSString *identifier;

/**
 *  Whether the organizer corresponds to the calendar on which this copy of the
 *  event appears. Read-only. The default is False.
 *
 *  Remapped to 'selfProperty' to avoid language reserved word 'self'.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *selfProperty;

@end


/**
 *  Information about the event's reminders for the authenticated user.
 */
@interface GTLRCalendar_Event_Reminders : GTLRObject

/**
 *  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.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_EventReminder *> *overrides;

/**
 *  Whether the default reminders of the calendar apply to the event.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *useDefault;

@end


/**
 *  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.
 */
@interface GTLRCalendar_Event_Source : GTLRObject

/**
 *  Title of the source; for example a title of a web page or an email subject.
 */
@property(nonatomic, copy, nullable) NSString *title;

/**
 *  URL of the source pointing to a resource. The URL scheme must be HTTP or
 *  HTTPS.
 */
@property(nonatomic, copy, nullable) NSString *url;

@end


/**
 *  Properties that are private to the copy of the event that appears on this
 *  calendar.
 *
 *  @note This class is documented as having more properties of NSString. Use @c
 *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
 *        of properties and then fetch them; or @c -additionalProperties to
 *        fetch them all at once.
 */
@interface GTLRCalendar_Event_ExtendedProperties_Private : GTLRObject
@end


/**
 *  Properties that are shared between copies of the event on other attendees'
 *  calendars.
 *
 *  @note This class is documented as having more properties of NSString. Use @c
 *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
 *        of properties and then fetch them; or @c -additionalProperties to
 *        fetch them all at once.
 */
@interface GTLRCalendar_Event_ExtendedProperties_Shared : GTLRObject
@end


/**
 *  Preferences.
 *
 *  @note This class is documented as having more properties of NSString. Use @c
 *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
 *        of properties and then fetch them; or @c -additionalProperties to
 *        fetch them all at once.
 */
@interface GTLRCalendar_Event_Gadget_Preferences : GTLRObject
@end


/**
 *  GTLRCalendar_EventAttachment
 */
@interface GTLRCalendar_EventAttachment : GTLRObject

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *fileId;

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *fileUrl;

/** URL link to the attachment's icon. Read-only. */
@property(nonatomic, copy, nullable) NSString *iconLink;

/** Internet media type (MIME type) of the attachment. */
@property(nonatomic, copy, nullable) NSString *mimeType;

/** Attachment title. */
@property(nonatomic, copy, nullable) NSString *title;

@end


/**
 *  GTLRCalendar_EventAttendee
 */
@interface GTLRCalendar_EventAttendee : GTLRObject

/**
 *  Number of additional guests. Optional. The default is 0.
 *
 *  Uses NSNumber of intValue.
 */
@property(nonatomic, strong, nullable) NSNumber *additionalGuests;

/** The attendee's response comment. Optional. */
@property(nonatomic, copy, nullable) NSString *comment;

/** The attendee's name, if available. Optional. */
@property(nonatomic, copy, nullable) NSString *displayName;

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *email;

/**
 *  The attendee's Profile ID, if available. It corresponds to theid field in
 *  the People collection of the Google+ API
 *
 *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
 */
@property(nonatomic, copy, nullable) NSString *identifier;

/**
 *  Whether this is an optional attendee. Optional. The default is False.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *optional;

/**
 *  Whether the attendee is the organizer of the event. Read-only. The default
 *  is False.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *organizer;

/**
 *  Whether the attendee is a resource. Read-only. The default is False.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *resource;

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *responseStatus;

/**
 *  Whether this entry represents the calendar on which this copy of the event
 *  appears. Read-only. The default is False.
 *
 *  Remapped to 'selfProperty' to avoid language reserved word 'self'.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *selfProperty;

@end


/**
 *  GTLRCalendar_EventDateTime
 */
@interface GTLRCalendar_EventDateTime : GTLRObject

/**
 *  The date, in the format "yyyy-mm-dd", if this is an all-day event.
 *
 *  Date only (yyyy-mm-dd).
 */
@property(nonatomic, strong, nullable) GTLRDateTime *date;

/**
 *  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.
 */
@property(nonatomic, strong, nullable) GTLRDateTime *dateTime;

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *timeZone;

@end


/**
 *  GTLRCalendar_EventReminder
 */
@interface GTLRCalendar_EventReminder : GTLRObject

/**
 *  The method used by this reminder. Possible values are:
 *  - "email" - Reminders are sent via email.
 *  - "sms" - 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.
 */
@property(nonatomic, copy, nullable) NSString *method;

/**
 *  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).
 *
 *  Uses NSNumber of intValue.
 */
@property(nonatomic, strong, nullable) NSNumber *minutes;

@end


/**
 *  GTLRCalendar_Events
 *
 *  @note This class supports NSFastEnumeration and indexed subscripting over
 *        its "items" property. If returned as the result of a query, it should
 *        support automatic pagination (when @c shouldFetchNextPages is
 *        enabled).
 */
@interface GTLRCalendar_Events : GTLRCollectionObject

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *accessRole;

/**
 *  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).
 */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_EventReminder *> *defaultReminders;

/**
 *  Description of the calendar. Read-only.
 *
 *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
 */
@property(nonatomic, copy, nullable) NSString *descriptionProperty;

/** ETag of the collection. */
@property(nonatomic, copy, nullable) NSString *ETag;

/**
 *  List of events on the calendar.
 *
 *  @note This property is used to support NSFastEnumeration and indexed
 *        subscripting on this class.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_Event *> *items;

/** Type of the collection ("calendar#events"). */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  Token used to access the next page of this result. Omitted if no further
 *  results are available, in which case nextSyncToken is provided.
 */
@property(nonatomic, copy, nullable) NSString *nextPageToken;

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *nextSyncToken;

/** Title of the calendar. Read-only. */
@property(nonatomic, copy, nullable) NSString *summary;

/** The time zone of the calendar. Read-only. */
@property(nonatomic, copy, nullable) NSString *timeZone;

/**
 *  Last modification time of the calendar (as a RFC3339 timestamp). Read-only.
 */
@property(nonatomic, strong, nullable) GTLRDateTime *updated;

@end


/**
 *  GTLRCalendar_FreeBusyCalendar
 */
@interface GTLRCalendar_FreeBusyCalendar : GTLRObject

/**
 *  List of time ranges during which this calendar should be regarded as busy.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_TimePeriod *> *busy;

/** Optional error(s) (if computation for the calendar failed). */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_Error *> *errors;

@end


/**
 *  GTLRCalendar_FreeBusyGroup
 */
@interface GTLRCalendar_FreeBusyGroup : GTLRObject

/** List of calendars' identifiers within a group. */
@property(nonatomic, strong, nullable) NSArray<NSString *> *calendars;

/** Optional error(s) (if computation for the group failed). */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_Error *> *errors;

@end


/**
 *  GTLRCalendar_FreeBusyRequest
 *
 *  @note This class supports NSFastEnumeration and indexed subscripting over
 *        its "items" property.
 */
@interface GTLRCalendar_FreeBusyRequest : GTLRCollectionObject

/**
 *  Maximal number of calendars for which FreeBusy information is to be
 *  provided. Optional.
 *
 *  Uses NSNumber of intValue.
 */
@property(nonatomic, strong, nullable) NSNumber *calendarExpansionMax;

/**
 *  Maximal number of calendar identifiers to be provided for a single group.
 *  Optional. An error will be returned for a group with more members than this
 *  value.
 *
 *  Uses NSNumber of intValue.
 */
@property(nonatomic, strong, nullable) NSNumber *groupExpansionMax;

/**
 *  List of calendars and/or groups to query.
 *
 *  @note This property is used to support NSFastEnumeration and indexed
 *        subscripting on this class.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_FreeBusyRequestItem *> *items;

/** The end of the interval for the query. */
@property(nonatomic, strong, nullable) GTLRDateTime *timeMax;

/** The start of the interval for the query. */
@property(nonatomic, strong, nullable) GTLRDateTime *timeMin;

/** Time zone used in the response. Optional. The default is UTC. */
@property(nonatomic, copy, nullable) NSString *timeZone;

@end


/**
 *  GTLRCalendar_FreeBusyRequestItem
 */
@interface GTLRCalendar_FreeBusyRequestItem : GTLRObject

/**
 *  The identifier of a calendar or a group.
 *
 *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
 */
@property(nonatomic, copy, nullable) NSString *identifier;

@end


/**
 *  GTLRCalendar_FreeBusyResponse
 */
@interface GTLRCalendar_FreeBusyResponse : GTLRObject

/** List of free/busy information for calendars. */
@property(nonatomic, strong, nullable) GTLRCalendar_FreeBusyResponse_Calendars *calendars;

/** Expansion of groups. */
@property(nonatomic, strong, nullable) GTLRCalendar_FreeBusyResponse_Groups *groups;

/** Type of the resource ("calendar#freeBusy"). */
@property(nonatomic, copy, nullable) NSString *kind;

/** The end of the interval. */
@property(nonatomic, strong, nullable) GTLRDateTime *timeMax;

/** The start of the interval. */
@property(nonatomic, strong, nullable) GTLRDateTime *timeMin;

@end


/**
 *  List of free/busy information for calendars.
 *
 *  @note This class is documented as having more properties of
 *        GTLRCalendar_FreeBusyCalendar. Use @c -additionalJSONKeys and @c
 *        -additionalPropertyForName: to get the list of properties and then
 *        fetch them; or @c -additionalProperties to fetch them all at once.
 */
@interface GTLRCalendar_FreeBusyResponse_Calendars : GTLRObject
@end


/**
 *  Expansion of groups.
 *
 *  @note This class is documented as having more properties of
 *        GTLRCalendar_FreeBusyGroup. Use @c -additionalJSONKeys and @c
 *        -additionalPropertyForName: to get the list of properties and then
 *        fetch them; or @c -additionalProperties to fetch them all at once.
 */
@interface GTLRCalendar_FreeBusyResponse_Groups : GTLRObject
@end


/**
 *  GTLRCalendar_Notification
 */
@interface GTLRCalendar_Notification : GTLRObject

/**
 *  The method used to deliver the notification. Possible values are:
 *  - "email" - Reminders are sent via email.
 *  - "sms" - Reminders are sent via SMS. This value is read-only and is ignored
 *  on inserts and updates. SMS reminders are only available for G Suite
 *  customers.
 */
@property(nonatomic, copy, nullable) NSString *method;

/**
 *  The type of notification. Possible values are:
 *  - "eventCreation" - Notification sent when a new event is put on the
 *  calendar.
 *  - "eventChange" - Notification sent when an event is changed.
 *  - "eventCancellation" - Notification sent when an event is cancelled.
 *  - "eventResponse" - Notification sent when an event is changed.
 *  - "agenda" - An agenda with the events of the day (sent out in the morning).
 */
@property(nonatomic, copy, nullable) NSString *type;

@end


/**
 *  GTLRCalendar_Setting
 */
@interface GTLRCalendar_Setting : GTLRObject

/** ETag of the resource. */
@property(nonatomic, copy, nullable) NSString *ETag;

/**
 *  The id of the user setting.
 *
 *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
 */
@property(nonatomic, copy, nullable) NSString *identifier;

/** Type of the resource ("calendar#setting"). */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  Value of the user setting. The format of the value depends on the ID of the
 *  setting. It must always be a UTF-8 string of length up to 1024 characters.
 */
@property(nonatomic, copy, nullable) NSString *value;

@end


/**
 *  GTLRCalendar_Settings
 *
 *  @note This class supports NSFastEnumeration and indexed subscripting over
 *        its "items" property. If returned as the result of a query, it should
 *        support automatic pagination (when @c shouldFetchNextPages is
 *        enabled).
 */
@interface GTLRCalendar_Settings : GTLRCollectionObject

/** Etag of the collection. */
@property(nonatomic, copy, nullable) NSString *ETag;

/**
 *  List of user settings.
 *
 *  @note This property is used to support NSFastEnumeration and indexed
 *        subscripting on this class.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRCalendar_Setting *> *items;

/** Type of the collection ("calendar#settings"). */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  Token used to access the next page of this result. Omitted if no further
 *  results are available, in which case nextSyncToken is provided.
 */
@property(nonatomic, copy, nullable) NSString *nextPageToken;

/**
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *nextSyncToken;

@end


/**
 *  GTLRCalendar_TimePeriod
 */
@interface GTLRCalendar_TimePeriod : GTLRObject

/** The (exclusive) end of the time period. */
@property(nonatomic, strong, nullable) GTLRDateTime *end;

/** The (inclusive) start of the time period. */
@property(nonatomic, strong, nullable) GTLRDateTime *start;

@end

NS_ASSUME_NONNULL_END

#pragma clang diagnostic pop
