// 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/GTLRQuery.h"
#else
  #import "GTLRQuery.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_Calendar;
@class GTLRCalendar_CalendarListEntry;
@class GTLRCalendar_Channel;
@class GTLRCalendar_Event;
@class GTLRCalendar_FreeBusyRequest;

// 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

// ----------------------------------------------------------------------------
// Constants - For some of the query classes' properties below.

// ----------------------------------------------------------------------------
// minAccessRole

/**
 *  The user can read free/busy information.
 *
 *  Value: "freeBusyReader"
 */
GTLR_EXTERN NSString * const kGTLRCalendarMinAccessRoleFreeBusyReader;
/**
 *  The user can read and modify events and access control lists.
 *
 *  Value: "owner"
 */
GTLR_EXTERN NSString * const kGTLRCalendarMinAccessRoleOwner;
/**
 *  The user can read events that are not private.
 *
 *  Value: "reader"
 */
GTLR_EXTERN NSString * const kGTLRCalendarMinAccessRoleReader;
/**
 *  The user can read and modify events.
 *
 *  Value: "writer"
 */
GTLR_EXTERN NSString * const kGTLRCalendarMinAccessRoleWriter;

// ----------------------------------------------------------------------------
// orderBy

/**
 *  Order by the start date/time (ascending). This is only available when
 *  querying single events (i.e. the parameter singleEvents is True)
 *
 *  Value: "startTime"
 */
GTLR_EXTERN NSString * const kGTLRCalendarOrderByStartTime;
/**
 *  Order by last modification time (ascending).
 *
 *  Value: "updated"
 */
GTLR_EXTERN NSString * const kGTLRCalendarOrderByUpdated;

// ----------------------------------------------------------------------------
// Query Classes
//

/**
 *  Parent class for other Calendar query classes.
 */
@interface GTLRCalendarQuery : GTLRQuery

/** Selector specifying which fields to include in a partial response. */
@property(nonatomic, copy, nullable) NSString *fields;

@end

/**
 *  Deletes an access control rule.
 *
 *  Method: calendar.acl.delete
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_AclDelete : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForAclDeleteWithcalendarId:ruleId:]

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

/** ACL rule identifier. */
@property(nonatomic, copy, nullable) NSString *ruleId;

/**
 *  Upon successful completion, the callback's object and error parameters will
 *  be nil. This query does not fetch an object.
 *
 *  Deletes an access control rule.
 *
 *  @param calendarId 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.
 *  @param ruleId ACL rule identifier.
 *
 *  @returns GTLRCalendarQuery_AclDelete
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId
                             ruleId:(NSString *)ruleId;

@end

/**
 *  Returns an access control rule.
 *
 *  Method: calendar.acl.get
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_AclGet : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForAclGetWithcalendarId:ruleId:]

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

/** ACL rule identifier. */
@property(nonatomic, copy, nullable) NSString *ruleId;

/**
 *  Fetches a @c GTLRCalendar_AclRule.
 *
 *  Returns an access control rule.
 *
 *  @param calendarId 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.
 *  @param ruleId ACL rule identifier.
 *
 *  @returns GTLRCalendarQuery_AclGet
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId
                             ruleId:(NSString *)ruleId;

@end

/**
 *  Creates an access control rule.
 *
 *  Method: calendar.acl.insert
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_AclInsert : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForAclInsertWithObject:calendarId:]

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

/**
 *  Whether to send notifications about the calendar sharing change. Optional.
 *  The default is True.
 */
@property(nonatomic, assign) BOOL sendNotifications;

/**
 *  Fetches a @c GTLRCalendar_AclRule.
 *
 *  Creates an access control rule.
 *
 *  @param object The @c GTLRCalendar_AclRule to include in the query.
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_AclInsert
 */
+ (instancetype)queryWithObject:(GTLRCalendar_AclRule *)object
                     calendarId:(NSString *)calendarId;

@end

/**
 *  Returns the rules in the access control list for the calendar.
 *
 *  Method: calendar.acl.list
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_AclList : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForAclListWithcalendarId:]

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

/**
 *  Maximum number of entries returned on one result page. By default the value
 *  is 100 entries. The page size can never be larger than 250 entries.
 *  Optional.
 */
@property(nonatomic, assign) NSInteger maxResults;

/** Token specifying which result page to return. Optional. */
@property(nonatomic, copy, nullable) NSString *pageToken;

/**
 *  Whether to include deleted ACLs in the result. Deleted ACLs are represented
 *  by role equal to "none". Deleted ACLs will always be included if syncToken
 *  is provided. Optional. The default is False.
 */
@property(nonatomic, assign) BOOL showDeleted;

/**
 *  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 entries
 *  deleted since the previous list request will always be in the result set and
 *  it is not allowed to set showDeleted to False.
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *syncToken;

/**
 *  Fetches a @c GTLRCalendar_Acl.
 *
 *  Returns the rules in the access control list for the calendar.
 *
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_AclList
 *
 *  @note Automatic pagination will be done when @c shouldFetchNextPages is
 *        enabled. See @c shouldFetchNextPages on @c GTLRService for more
 *        information.
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId;

@end

/**
 *  Updates an access control rule. This method supports patch semantics.
 *
 *  Method: calendar.acl.patch
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_AclPatch : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForAclPatchWithObject:calendarId:ruleId:]

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

/** ACL rule identifier. */
@property(nonatomic, copy, nullable) NSString *ruleId;

/**
 *  Whether to send notifications about the calendar sharing change. Note that
 *  there are no notifications on access removal. Optional. The default is True.
 */
@property(nonatomic, assign) BOOL sendNotifications;

/**
 *  Fetches a @c GTLRCalendar_AclRule.
 *
 *  Updates an access control rule. This method supports patch semantics.
 *
 *  @param object The @c GTLRCalendar_AclRule to include in the query.
 *  @param calendarId 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.
 *  @param ruleId ACL rule identifier.
 *
 *  @returns GTLRCalendarQuery_AclPatch
 */
+ (instancetype)queryWithObject:(GTLRCalendar_AclRule *)object
                     calendarId:(NSString *)calendarId
                         ruleId:(NSString *)ruleId;

@end

/**
 *  Updates an access control rule.
 *
 *  Method: calendar.acl.update
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_AclUpdate : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForAclUpdateWithObject:calendarId:ruleId:]

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

/** ACL rule identifier. */
@property(nonatomic, copy, nullable) NSString *ruleId;

/**
 *  Whether to send notifications about the calendar sharing change. Note that
 *  there are no notifications on access removal. Optional. The default is True.
 */
@property(nonatomic, assign) BOOL sendNotifications;

/**
 *  Fetches a @c GTLRCalendar_AclRule.
 *
 *  Updates an access control rule.
 *
 *  @param object The @c GTLRCalendar_AclRule to include in the query.
 *  @param calendarId 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.
 *  @param ruleId ACL rule identifier.
 *
 *  @returns GTLRCalendarQuery_AclUpdate
 */
+ (instancetype)queryWithObject:(GTLRCalendar_AclRule *)object
                     calendarId:(NSString *)calendarId
                         ruleId:(NSString *)ruleId;

@end

/**
 *  Watch for changes to ACL resources.
 *
 *  Method: calendar.acl.watch
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_AclWatch : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForAclWatchWithObject:calendarId:]

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

/**
 *  Maximum number of entries returned on one result page. By default the value
 *  is 100 entries. The page size can never be larger than 250 entries.
 *  Optional.
 */
@property(nonatomic, assign) NSInteger maxResults;

/** Token specifying which result page to return. Optional. */
@property(nonatomic, copy, nullable) NSString *pageToken;

/**
 *  Whether to include deleted ACLs in the result. Deleted ACLs are represented
 *  by role equal to "none". Deleted ACLs will always be included if syncToken
 *  is provided. Optional. The default is False.
 */
@property(nonatomic, assign) BOOL showDeleted;

/**
 *  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 entries
 *  deleted since the previous list request will always be in the result set and
 *  it is not allowed to set showDeleted to False.
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *syncToken;

/**
 *  Fetches a @c GTLRCalendar_Channel.
 *
 *  Watch for changes to ACL resources.
 *
 *  @param object The @c GTLRCalendar_Channel to include in the query.
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_AclWatch
 */
+ (instancetype)queryWithObject:(GTLRCalendar_Channel *)object
                     calendarId:(NSString *)calendarId;

@end

/**
 *  Deletes an entry on the user's calendar list.
 *
 *  Method: calendar.calendarList.delete
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_CalendarListDelete : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForCalendarListDeleteWithcalendarId:]

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

/**
 *  Upon successful completion, the callback's object and error parameters will
 *  be nil. This query does not fetch an object.
 *
 *  Deletes an entry on the user's calendar list.
 *
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_CalendarListDelete
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId;

@end

/**
 *  Returns an entry on the user's calendar list.
 *
 *  Method: calendar.calendarList.get
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_CalendarListGet : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForCalendarListGetWithcalendarId:]

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

/**
 *  Fetches a @c GTLRCalendar_CalendarListEntry.
 *
 *  Returns an entry on the user's calendar list.
 *
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_CalendarListGet
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId;

@end

/**
 *  Adds an entry to the user's calendar list.
 *
 *  Method: calendar.calendarList.insert
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_CalendarListInsert : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForCalendarListInsertWithObject:]

/**
 *  Whether to use the foregroundColor and backgroundColor fields to write the
 *  calendar colors (RGB). If this feature is used, the index-based colorId
 *  field will be set to the best matching option automatically. Optional. The
 *  default is False.
 */
@property(nonatomic, assign) BOOL colorRgbFormat;

/**
 *  Fetches a @c GTLRCalendar_CalendarListEntry.
 *
 *  Adds an entry to the user's calendar list.
 *
 *  @param object The @c GTLRCalendar_CalendarListEntry to include in the query.
 *
 *  @returns GTLRCalendarQuery_CalendarListInsert
 */
+ (instancetype)queryWithObject:(GTLRCalendar_CalendarListEntry *)object;

@end

/**
 *  Returns entries on the user's calendar list.
 *
 *  Method: calendar.calendarList.list
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_CalendarListList : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForCalendarListList]

/**
 *  Maximum number of entries returned on one result page. By default the value
 *  is 100 entries. The page size can never be larger than 250 entries.
 *  Optional.
 */
@property(nonatomic, assign) NSInteger maxResults;

/**
 *  The minimum access role for the user in the returned entries. Optional. The
 *  default is no restriction.
 *
 *  Likely values:
 *    @arg @c kGTLRCalendarMinAccessRoleFreeBusyReader The user can read
 *        free/busy information. (Value: "freeBusyReader")
 *    @arg @c kGTLRCalendarMinAccessRoleOwner The user can read and modify
 *        events and access control lists. (Value: "owner")
 *    @arg @c kGTLRCalendarMinAccessRoleReader The user can read events that are
 *        not private. (Value: "reader")
 *    @arg @c kGTLRCalendarMinAccessRoleWriter The user can read and modify
 *        events. (Value: "writer")
 */
@property(nonatomic, copy, nullable) NSString *minAccessRole;

/** Token specifying which result page to return. Optional. */
@property(nonatomic, copy, nullable) NSString *pageToken;

/**
 *  Whether to include deleted calendar list entries in the result. Optional.
 *  The default is False.
 */
@property(nonatomic, assign) BOOL showDeleted;

/** Whether to show hidden entries. Optional. The default is False. */
@property(nonatomic, assign) BOOL showHidden;

/**
 *  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. If only read-only
 *  fields such as calendar properties or ACLs have changed, the entry won't be
 *  returned. All entries deleted and hidden since the previous list request
 *  will always be in the result set and it is not allowed to set showDeleted
 *  neither showHidden to False.
 *  To ensure client state consistency minAccessRole query parameter cannot be
 *  specified together with nextSyncToken.
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *syncToken;

/**
 *  Fetches a @c GTLRCalendar_CalendarList.
 *
 *  Returns entries on the user's calendar list.
 *
 *  @returns GTLRCalendarQuery_CalendarListList
 *
 *  @note Automatic pagination will be done when @c shouldFetchNextPages is
 *        enabled. See @c shouldFetchNextPages on @c GTLRService for more
 *        information.
 */
+ (instancetype)query;

@end

/**
 *  Updates an entry on the user's calendar list. This method supports patch
 *  semantics.
 *
 *  Method: calendar.calendarList.patch
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_CalendarListPatch : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForCalendarListPatchWithObject:calendarId:]

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

/**
 *  Whether to use the foregroundColor and backgroundColor fields to write the
 *  calendar colors (RGB). If this feature is used, the index-based colorId
 *  field will be set to the best matching option automatically. Optional. The
 *  default is False.
 */
@property(nonatomic, assign) BOOL colorRgbFormat;

/**
 *  Fetches a @c GTLRCalendar_CalendarListEntry.
 *
 *  Updates an entry on the user's calendar list. This method supports patch
 *  semantics.
 *
 *  @param object The @c GTLRCalendar_CalendarListEntry to include in the query.
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_CalendarListPatch
 */
+ (instancetype)queryWithObject:(GTLRCalendar_CalendarListEntry *)object
                     calendarId:(NSString *)calendarId;

@end

/**
 *  Updates an entry on the user's calendar list.
 *
 *  Method: calendar.calendarList.update
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_CalendarListUpdate : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForCalendarListUpdateWithObject:calendarId:]

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

/**
 *  Whether to use the foregroundColor and backgroundColor fields to write the
 *  calendar colors (RGB). If this feature is used, the index-based colorId
 *  field will be set to the best matching option automatically. Optional. The
 *  default is False.
 */
@property(nonatomic, assign) BOOL colorRgbFormat;

/**
 *  Fetches a @c GTLRCalendar_CalendarListEntry.
 *
 *  Updates an entry on the user's calendar list.
 *
 *  @param object The @c GTLRCalendar_CalendarListEntry to include in the query.
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_CalendarListUpdate
 */
+ (instancetype)queryWithObject:(GTLRCalendar_CalendarListEntry *)object
                     calendarId:(NSString *)calendarId;

@end

/**
 *  Watch for changes to CalendarList resources.
 *
 *  Method: calendar.calendarList.watch
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_CalendarListWatch : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForCalendarListWatchWithObject:]

/**
 *  Maximum number of entries returned on one result page. By default the value
 *  is 100 entries. The page size can never be larger than 250 entries.
 *  Optional.
 */
@property(nonatomic, assign) NSInteger maxResults;

/**
 *  The minimum access role for the user in the returned entries. Optional. The
 *  default is no restriction.
 *
 *  Likely values:
 *    @arg @c kGTLRCalendarMinAccessRoleFreeBusyReader The user can read
 *        free/busy information. (Value: "freeBusyReader")
 *    @arg @c kGTLRCalendarMinAccessRoleOwner The user can read and modify
 *        events and access control lists. (Value: "owner")
 *    @arg @c kGTLRCalendarMinAccessRoleReader The user can read events that are
 *        not private. (Value: "reader")
 *    @arg @c kGTLRCalendarMinAccessRoleWriter The user can read and modify
 *        events. (Value: "writer")
 */
@property(nonatomic, copy, nullable) NSString *minAccessRole;

/** Token specifying which result page to return. Optional. */
@property(nonatomic, copy, nullable) NSString *pageToken;

/**
 *  Whether to include deleted calendar list entries in the result. Optional.
 *  The default is False.
 */
@property(nonatomic, assign) BOOL showDeleted;

/** Whether to show hidden entries. Optional. The default is False. */
@property(nonatomic, assign) BOOL showHidden;

/**
 *  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. If only read-only
 *  fields such as calendar properties or ACLs have changed, the entry won't be
 *  returned. All entries deleted and hidden since the previous list request
 *  will always be in the result set and it is not allowed to set showDeleted
 *  neither showHidden to False.
 *  To ensure client state consistency minAccessRole query parameter cannot be
 *  specified together with nextSyncToken.
 *  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.
 */
@property(nonatomic, copy, nullable) NSString *syncToken;

/**
 *  Fetches a @c GTLRCalendar_Channel.
 *
 *  Watch for changes to CalendarList resources.
 *
 *  @param object The @c GTLRCalendar_Channel to include in the query.
 *
 *  @returns GTLRCalendarQuery_CalendarListWatch
 */
+ (instancetype)queryWithObject:(GTLRCalendar_Channel *)object;

@end

/**
 *  Clears a primary calendar. This operation deletes all events associated with
 *  the primary calendar of an account.
 *
 *  Method: calendar.calendars.clear
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_CalendarsClear : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForCalendarsClearWithcalendarId:]

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

/**
 *  Upon successful completion, the callback's object and error parameters will
 *  be nil. This query does not fetch an object.
 *
 *  Clears a primary calendar. This operation deletes all events associated with
 *  the primary calendar of an account.
 *
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_CalendarsClear
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId;

@end

/**
 *  Deletes a secondary calendar. Use calendars.clear for clearing all events on
 *  primary calendars.
 *
 *  Method: calendar.calendars.delete
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_CalendarsDelete : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForCalendarsDeleteWithcalendarId:]

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

/**
 *  Upon successful completion, the callback's object and error parameters will
 *  be nil. This query does not fetch an object.
 *
 *  Deletes a secondary calendar. Use calendars.clear for clearing all events on
 *  primary calendars.
 *
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_CalendarsDelete
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId;

@end

/**
 *  Returns metadata for a calendar.
 *
 *  Method: calendar.calendars.get
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_CalendarsGet : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForCalendarsGetWithcalendarId:]

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

/**
 *  Fetches a @c GTLRCalendar_Calendar.
 *
 *  Returns metadata for a calendar.
 *
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_CalendarsGet
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId;

@end

/**
 *  Creates a secondary calendar.
 *
 *  Method: calendar.calendars.insert
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_CalendarsInsert : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForCalendarsInsertWithObject:]

/**
 *  Fetches a @c GTLRCalendar_Calendar.
 *
 *  Creates a secondary calendar.
 *
 *  @param object The @c GTLRCalendar_Calendar to include in the query.
 *
 *  @returns GTLRCalendarQuery_CalendarsInsert
 */
+ (instancetype)queryWithObject:(GTLRCalendar_Calendar *)object;

@end

/**
 *  Updates metadata for a calendar. This method supports patch semantics.
 *
 *  Method: calendar.calendars.patch
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_CalendarsPatch : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForCalendarsPatchWithObject:calendarId:]

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

/**
 *  Fetches a @c GTLRCalendar_Calendar.
 *
 *  Updates metadata for a calendar. This method supports patch semantics.
 *
 *  @param object The @c GTLRCalendar_Calendar to include in the query.
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_CalendarsPatch
 */
+ (instancetype)queryWithObject:(GTLRCalendar_Calendar *)object
                     calendarId:(NSString *)calendarId;

@end

/**
 *  Updates metadata for a calendar.
 *
 *  Method: calendar.calendars.update
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_CalendarsUpdate : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForCalendarsUpdateWithObject:calendarId:]

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

/**
 *  Fetches a @c GTLRCalendar_Calendar.
 *
 *  Updates metadata for a calendar.
 *
 *  @param object The @c GTLRCalendar_Calendar to include in the query.
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_CalendarsUpdate
 */
+ (instancetype)queryWithObject:(GTLRCalendar_Calendar *)object
                     calendarId:(NSString *)calendarId;

@end

/**
 *  Stop watching resources through this channel
 *
 *  Method: calendar.channels.stop
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_ChannelsStop : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForChannelsStopWithObject:]

/**
 *  Upon successful completion, the callback's object and error parameters will
 *  be nil. This query does not fetch an object.
 *
 *  Stop watching resources through this channel
 *
 *  @param object The @c GTLRCalendar_Channel to include in the query.
 *
 *  @returns GTLRCalendarQuery_ChannelsStop
 */
+ (instancetype)queryWithObject:(GTLRCalendar_Channel *)object;

@end

/**
 *  Returns the color definitions for calendars and events.
 *
 *  Method: calendar.colors.get
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_ColorsGet : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForColorsGet]

/**
 *  Fetches a @c GTLRCalendar_Colors.
 *
 *  Returns the color definitions for calendars and events.
 *
 *  @returns GTLRCalendarQuery_ColorsGet
 */
+ (instancetype)query;

@end

/**
 *  Deletes an event.
 *
 *  Method: calendar.events.delete
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_EventsDelete : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForEventsDeleteWithcalendarId:eventId:]

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

/** Event identifier. */
@property(nonatomic, copy, nullable) NSString *eventId;

/**
 *  Whether to send notifications about the deletion of the event. Optional. The
 *  default is False.
 */
@property(nonatomic, assign) BOOL sendNotifications;

/**
 *  Upon successful completion, the callback's object and error parameters will
 *  be nil. This query does not fetch an object.
 *
 *  Deletes an event.
 *
 *  @param calendarId 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.
 *  @param eventId Event identifier.
 *
 *  @returns GTLRCalendarQuery_EventsDelete
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId
                            eventId:(NSString *)eventId;

@end

/**
 *  Returns an event.
 *
 *  Method: calendar.events.get
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_EventsGet : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForEventsGetWithcalendarId:eventId:]

/**
 *  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.
 */
@property(nonatomic, assign) BOOL alwaysIncludeEmail;

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

/** Event identifier. */
@property(nonatomic, copy, nullable) NSString *eventId;

/**
 *  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.
 */
@property(nonatomic, assign) NSInteger maxAttendees;

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

/**
 *  Fetches a @c GTLRCalendar_Event.
 *
 *  Returns an event.
 *
 *  @param calendarId 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.
 *  @param eventId Event identifier.
 *
 *  @returns GTLRCalendarQuery_EventsGet
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId
                            eventId:(NSString *)eventId;

@end

/**
 *  Imports an event. This operation is used to add a private copy of an
 *  existing event to a calendar.
 *
 *  Method: calendar.events.import
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_EventsImport : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForEventsImportWithObject:calendarId:]

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

/**
 *  Whether API client performing operation supports event attachments.
 *  Optional. The default is False.
 */
@property(nonatomic, assign) BOOL supportsAttachments;

/**
 *  Fetches a @c GTLRCalendar_Event.
 *
 *  Imports an event. This operation is used to add a private copy of an
 *  existing event to a calendar.
 *
 *  @param object The @c GTLRCalendar_Event to include in the query.
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_EventsImport
 */
+ (instancetype)queryWithObject:(GTLRCalendar_Event *)object
                     calendarId:(NSString *)calendarId;

@end

/**
 *  Creates an event.
 *
 *  Method: calendar.events.insert
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_EventsInsert : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForEventsInsertWithObject:calendarId:]

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

/**
 *  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.
 */
@property(nonatomic, assign) NSInteger maxAttendees;

/**
 *  Whether to send notifications about the creation of the new event. Optional.
 *  The default is False.
 */
@property(nonatomic, assign) BOOL sendNotifications;

/**
 *  Whether API client performing operation supports event attachments.
 *  Optional. The default is False.
 */
@property(nonatomic, assign) BOOL supportsAttachments;

/**
 *  Fetches a @c GTLRCalendar_Event.
 *
 *  Creates an event.
 *
 *  @param object The @c GTLRCalendar_Event to include in the query.
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_EventsInsert
 */
+ (instancetype)queryWithObject:(GTLRCalendar_Event *)object
                     calendarId:(NSString *)calendarId;

@end

/**
 *  Returns instances of the specified recurring event.
 *
 *  Method: calendar.events.instances
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_EventsInstances : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForEventsInstancesWithcalendarId:eventId:]

/**
 *  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.
 */
@property(nonatomic, assign) BOOL alwaysIncludeEmail;

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

/** Recurring event identifier. */
@property(nonatomic, copy, nullable) NSString *eventId;

/**
 *  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.
 */
@property(nonatomic, assign) NSInteger maxAttendees;

/**
 *  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.
 */
@property(nonatomic, assign) NSInteger maxResults;

/** The original start time of the instance in the result. Optional. */
@property(nonatomic, copy, nullable) NSString *originalStart;

/** Token specifying which result page to return. Optional. */
@property(nonatomic, copy, nullable) NSString *pageToken;

/**
 *  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.
 */
@property(nonatomic, assign) BOOL showDeleted;

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

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

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

/**
 *  Fetches a @c GTLRCalendar_Events.
 *
 *  Returns instances of the specified recurring event.
 *
 *  @param calendarId 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.
 *  @param eventId Recurring event identifier.
 *
 *  @returns GTLRCalendarQuery_EventsInstances
 *
 *  @note Automatic pagination will be done when @c shouldFetchNextPages is
 *        enabled. See @c shouldFetchNextPages on @c GTLRService for more
 *        information.
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId
                            eventId:(NSString *)eventId;

@end

/**
 *  Returns events on the specified calendar.
 *
 *  Method: calendar.events.list
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_EventsList : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForEventsListWithcalendarId:]

/**
 *  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.
 */
@property(nonatomic, assign) BOOL alwaysIncludeEmail;

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

/**
 *  Specifies event ID in the iCalendar format to be included in the response.
 *  Optional.
 */
@property(nonatomic, copy, nullable) NSString *iCalUID;

/**
 *  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.
 */
@property(nonatomic, assign) NSInteger maxAttendees;

/**
 *  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.
 *
 *  @note If not set, the documented server-side default will be 250.
 */
@property(nonatomic, assign) NSInteger maxResults;

/**
 *  The order of the events returned in the result. Optional. The default is an
 *  unspecified, stable order.
 *
 *  Likely values:
 *    @arg @c kGTLRCalendarOrderByStartTime Order by the start date/time
 *        (ascending). This is only available when querying single events (i.e.
 *        the parameter singleEvents is True) (Value: "startTime")
 *    @arg @c kGTLRCalendarOrderByUpdated Order by last modification time
 *        (ascending). (Value: "updated")
 */
@property(nonatomic, copy, nullable) NSString *orderBy;

/** Token specifying which result page to return. Optional. */
@property(nonatomic, copy, nullable) NSString *pageToken;

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

/**
 *  Free text search terms to find events that match these terms in any field,
 *  except for extended properties. Optional.
 */
@property(nonatomic, copy, nullable) NSString *q;

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

/**
 *  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.
 */
@property(nonatomic, assign) BOOL showDeleted;

/**
 *  Whether to include hidden invitations in the result. Optional. The default
 *  is False.
 */
@property(nonatomic, assign) BOOL showHiddenInvitations;

/**
 *  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.
 */
@property(nonatomic, assign) BOOL singleEvents;

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

/**
 *  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, e.g., 2011-06-03T10:00:00-07:00,
 *  2011-06-03T10:00:00Z. Milliseconds may be provided but will be ignored. If
 *  timeMin is set, timeMax must be greater than timeMin.
 */
@property(nonatomic, strong, nullable) GTLRDateTime *timeMax;

/**
 *  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, e.g., 2011-06-03T10:00:00-07:00,
 *  2011-06-03T10:00:00Z. Milliseconds may be provided but will be ignored. If
 *  timeMax is set, timeMin must be smaller than timeMax.
 */
@property(nonatomic, strong, nullable) GTLRDateTime *timeMin;

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

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

/**
 *  Fetches a @c GTLRCalendar_Events.
 *
 *  Returns events on the specified calendar.
 *
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_EventsList
 *
 *  @note Automatic pagination will be done when @c shouldFetchNextPages is
 *        enabled. See @c shouldFetchNextPages on @c GTLRService for more
 *        information.
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId;

@end

/**
 *  Moves an event to another calendar, i.e. changes an event's organizer.
 *
 *  Method: calendar.events.move
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_EventsMove : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForEventsMoveWithcalendarId:eventId:destination:]

/**
 *  Calendar identifier of the source calendar where the event currently is on.
 */
@property(nonatomic, copy, nullable) NSString *calendarId;

/**
 *  Calendar identifier of the target calendar where the event is to be moved
 *  to.
 */
@property(nonatomic, copy, nullable) NSString *destination;

/** Event identifier. */
@property(nonatomic, copy, nullable) NSString *eventId;

/**
 *  Whether to send notifications about the change of the event's organizer.
 *  Optional. The default is False.
 */
@property(nonatomic, assign) BOOL sendNotifications;

/**
 *  Fetches a @c GTLRCalendar_Event.
 *
 *  Moves an event to another calendar, i.e. changes an event's organizer.
 *
 *  @param calendarId Calendar identifier of the source calendar where the event
 *    currently is on.
 *  @param eventId Event identifier.
 *  @param destination Calendar identifier of the target calendar where the
 *    event is to be moved to.
 *
 *  @returns GTLRCalendarQuery_EventsMove
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId
                            eventId:(NSString *)eventId
                        destination:(NSString *)destination;

@end

/**
 *  Updates an event. This method supports patch semantics.
 *
 *  Method: calendar.events.patch
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_EventsPatch : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForEventsPatchWithObject:calendarId:eventId:]

/**
 *  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.
 */
@property(nonatomic, assign) BOOL alwaysIncludeEmail;

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

/** Event identifier. */
@property(nonatomic, copy, nullable) NSString *eventId;

/**
 *  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.
 */
@property(nonatomic, assign) NSInteger maxAttendees;

/**
 *  Whether to send notifications about the event update (e.g. attendee's
 *  responses, title changes, etc.). Optional. The default is False.
 */
@property(nonatomic, assign) BOOL sendNotifications;

/**
 *  Whether API client performing operation supports event attachments.
 *  Optional. The default is False.
 */
@property(nonatomic, assign) BOOL supportsAttachments;

/**
 *  Fetches a @c GTLRCalendar_Event.
 *
 *  Updates an event. This method supports patch semantics.
 *
 *  @param object The @c GTLRCalendar_Event to include in the query.
 *  @param calendarId 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.
 *  @param eventId Event identifier.
 *
 *  @returns GTLRCalendarQuery_EventsPatch
 */
+ (instancetype)queryWithObject:(GTLRCalendar_Event *)object
                     calendarId:(NSString *)calendarId
                        eventId:(NSString *)eventId;

@end

/**
 *  Creates an event based on a simple text string.
 *
 *  Method: calendar.events.quickAdd
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_EventsQuickAdd : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForEventsQuickAddWithcalendarId:text:]

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

/**
 *  Whether to send notifications about the creation of the event. Optional. The
 *  default is False.
 */
@property(nonatomic, assign) BOOL sendNotifications;

/** The text describing the event to be created. */
@property(nonatomic, copy, nullable) NSString *text;

/**
 *  Fetches a @c GTLRCalendar_Event.
 *
 *  Creates an event based on a simple text string.
 *
 *  @param calendarId 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.
 *  @param text The text describing the event to be created.
 *
 *  @returns GTLRCalendarQuery_EventsQuickAdd
 */
+ (instancetype)queryWithCalendarId:(NSString *)calendarId
                               text:(NSString *)text;

@end

/**
 *  Updates an event.
 *
 *  Method: calendar.events.update
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 */
@interface GTLRCalendarQuery_EventsUpdate : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForEventsUpdateWithObject:calendarId:eventId:]

/**
 *  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.
 */
@property(nonatomic, assign) BOOL alwaysIncludeEmail;

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

/** Event identifier. */
@property(nonatomic, copy, nullable) NSString *eventId;

/**
 *  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.
 */
@property(nonatomic, assign) NSInteger maxAttendees;

/**
 *  Whether to send notifications about the event update (e.g. attendee's
 *  responses, title changes, etc.). Optional. The default is False.
 */
@property(nonatomic, assign) BOOL sendNotifications;

/**
 *  Whether API client performing operation supports event attachments.
 *  Optional. The default is False.
 */
@property(nonatomic, assign) BOOL supportsAttachments;

/**
 *  Fetches a @c GTLRCalendar_Event.
 *
 *  Updates an event.
 *
 *  @param object The @c GTLRCalendar_Event to include in the query.
 *  @param calendarId 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.
 *  @param eventId Event identifier.
 *
 *  @returns GTLRCalendarQuery_EventsUpdate
 */
+ (instancetype)queryWithObject:(GTLRCalendar_Event *)object
                     calendarId:(NSString *)calendarId
                        eventId:(NSString *)eventId;

@end

/**
 *  Watch for changes to Events resources.
 *
 *  Method: calendar.events.watch
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_EventsWatch : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForEventsWatchWithObject:calendarId:]

/**
 *  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.
 */
@property(nonatomic, assign) BOOL alwaysIncludeEmail;

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

/**
 *  Specifies event ID in the iCalendar format to be included in the response.
 *  Optional.
 */
@property(nonatomic, copy, nullable) NSString *iCalUID;

/**
 *  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.
 */
@property(nonatomic, assign) NSInteger maxAttendees;

/**
 *  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.
 *
 *  @note If not set, the documented server-side default will be 250.
 */
@property(nonatomic, assign) NSInteger maxResults;

/**
 *  The order of the events returned in the result. Optional. The default is an
 *  unspecified, stable order.
 *
 *  Likely values:
 *    @arg @c kGTLRCalendarOrderByStartTime Order by the start date/time
 *        (ascending). This is only available when querying single events (i.e.
 *        the parameter singleEvents is True) (Value: "startTime")
 *    @arg @c kGTLRCalendarOrderByUpdated Order by last modification time
 *        (ascending). (Value: "updated")
 */
@property(nonatomic, copy, nullable) NSString *orderBy;

/** Token specifying which result page to return. Optional. */
@property(nonatomic, copy, nullable) NSString *pageToken;

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

/**
 *  Free text search terms to find events that match these terms in any field,
 *  except for extended properties. Optional.
 */
@property(nonatomic, copy, nullable) NSString *q;

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

/**
 *  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.
 */
@property(nonatomic, assign) BOOL showDeleted;

/**
 *  Whether to include hidden invitations in the result. Optional. The default
 *  is False.
 */
@property(nonatomic, assign) BOOL showHiddenInvitations;

/**
 *  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.
 */
@property(nonatomic, assign) BOOL singleEvents;

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

/**
 *  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, e.g., 2011-06-03T10:00:00-07:00,
 *  2011-06-03T10:00:00Z. Milliseconds may be provided but will be ignored. If
 *  timeMin is set, timeMax must be greater than timeMin.
 */
@property(nonatomic, strong, nullable) GTLRDateTime *timeMax;

/**
 *  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, e.g., 2011-06-03T10:00:00-07:00,
 *  2011-06-03T10:00:00Z. Milliseconds may be provided but will be ignored. If
 *  timeMax is set, timeMin must be smaller than timeMax.
 */
@property(nonatomic, strong, nullable) GTLRDateTime *timeMin;

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

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

/**
 *  Fetches a @c GTLRCalendar_Channel.
 *
 *  Watch for changes to Events resources.
 *
 *  @param object The @c GTLRCalendar_Channel to include in the query.
 *  @param calendarId 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.
 *
 *  @returns GTLRCalendarQuery_EventsWatch
 */
+ (instancetype)queryWithObject:(GTLRCalendar_Channel *)object
                     calendarId:(NSString *)calendarId;

@end

/**
 *  Returns free/busy information for a set of calendars.
 *
 *  Method: calendar.freebusy.query
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_FreebusyQuery : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForFreebusyQueryWithObject:]

/**
 *  Fetches a @c GTLRCalendar_FreeBusyResponse.
 *
 *  Returns free/busy information for a set of calendars.
 *
 *  @param object The @c GTLRCalendar_FreeBusyRequest to include in the query.
 *
 *  @returns GTLRCalendarQuery_FreebusyQuery
 */
+ (instancetype)queryWithObject:(GTLRCalendar_FreeBusyRequest *)object;

@end

/**
 *  Returns a single user setting.
 *
 *  Method: calendar.settings.get
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_SettingsGet : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForSettingsGetWithsetting:]

/** The id of the user setting. */
@property(nonatomic, copy, nullable) NSString *setting;

/**
 *  Fetches a @c GTLRCalendar_Setting.
 *
 *  Returns a single user setting.
 *
 *  @param setting The id of the user setting.
 *
 *  @returns GTLRCalendarQuery_SettingsGet
 */
+ (instancetype)queryWithSetting:(NSString *)setting;

@end

/**
 *  Returns all user settings for the authenticated user.
 *
 *  Method: calendar.settings.list
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_SettingsList : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForSettingsList]

/**
 *  Maximum number of entries returned on one result page. By default the value
 *  is 100 entries. The page size can never be larger than 250 entries.
 *  Optional.
 */
@property(nonatomic, assign) NSInteger maxResults;

/** Token specifying which result page to return. Optional. */
@property(nonatomic, copy, nullable) NSString *pageToken;

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

/**
 *  Fetches a @c GTLRCalendar_Settings.
 *
 *  Returns all user settings for the authenticated user.
 *
 *  @returns GTLRCalendarQuery_SettingsList
 *
 *  @note Automatic pagination will be done when @c shouldFetchNextPages is
 *        enabled. See @c shouldFetchNextPages on @c GTLRService for more
 *        information.
 */
+ (instancetype)query;

@end

/**
 *  Watch for changes to Settings resources.
 *
 *  Method: calendar.settings.watch
 *
 *  Authorization scope(s):
 *    @c kGTLRAuthScopeCalendar
 *    @c kGTLRAuthScopeCalendarReadonly
 */
@interface GTLRCalendarQuery_SettingsWatch : GTLRCalendarQuery
// Previous library name was
//   +[GTLQueryCalendar queryForSettingsWatchWithObject:]

/**
 *  Maximum number of entries returned on one result page. By default the value
 *  is 100 entries. The page size can never be larger than 250 entries.
 *  Optional.
 */
@property(nonatomic, assign) NSInteger maxResults;

/** Token specifying which result page to return. Optional. */
@property(nonatomic, copy, nullable) NSString *pageToken;

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

/**
 *  Fetches a @c GTLRCalendar_Channel.
 *
 *  Watch for changes to Settings resources.
 *
 *  @param object The @c GTLRCalendar_Channel to include in the query.
 *
 *  @returns GTLRCalendarQuery_SettingsWatch
 */
+ (instancetype)queryWithObject:(GTLRCalendar_Channel *)object;

@end

NS_ASSUME_NONNULL_END

#pragma clang diagnostic pop
