-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google Calendar SDK.
--   
--   Manipulates events and other calendar data.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>v3</tt> of the API.
@package gogol-apps-calendar
@version 0.3.0


module Network.Google.AppsCalendar.Types

-- | Default request referring to version <tt>v3</tt> of the Calendar API.
--   This contains the host and root path used as a starting point for
--   constructing service requests.
appsCalendarService :: ServiceConfig

-- | Manage your calendars
calendarScope :: Proxy '["https://www.googleapis.com/auth/calendar"]

-- | View your calendars
calendarReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/calendar.readonly"]
data CalendarListEntry

-- | Creates a value of <a>CalendarListEntry</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cleSummary</a></li>
--   <li><a>cleEtag</a></li>
--   <li><a>cleLocation</a></li>
--   <li><a>cleKind</a></li>
--   <li><a>cleNotificationSettings</a></li>
--   <li><a>cleBackgRoundColor</a></li>
--   <li><a>cleForegRoundColor</a></li>
--   <li><a>cleDefaultReminders</a></li>
--   <li><a>cleSelected</a></li>
--   <li><a>clePrimary</a></li>
--   <li><a>cleHidden</a></li>
--   <li><a>cleId</a></li>
--   <li><a>cleDeleted</a></li>
--   <li><a>cleAccessRole</a></li>
--   <li><a>cleSummaryOverride</a></li>
--   <li><a>cleColorId</a></li>
--   <li><a>cleTimeZone</a></li>
--   <li><a>cleDescription</a></li>
--   </ul>
calendarListEntry :: CalendarListEntry

-- | Title of the calendar. Read-only.
cleSummary :: Lens' CalendarListEntry (Maybe Text)

-- | ETag of the resource.
cleEtag :: Lens' CalendarListEntry (Maybe Text)

-- | Geographic location of the calendar as free-form text. Optional.
--   Read-only.
cleLocation :: Lens' CalendarListEntry (Maybe Text)

-- | Type of the resource ("calendar#calendarListEntry").
cleKind :: Lens' CalendarListEntry Text

-- | The notifications that the authenticated user is receiving for this
--   calendar.
cleNotificationSettings :: Lens' CalendarListEntry (Maybe CalendarListEntryNotificationSettings)

-- | 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.
cleBackgRoundColor :: Lens' CalendarListEntry (Maybe Text)

-- | 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.
cleForegRoundColor :: Lens' CalendarListEntry (Maybe Text)

-- | The default reminders that the authenticated user has for this
--   calendar.
cleDefaultReminders :: Lens' CalendarListEntry [EventReminder]

-- | Whether the calendar content shows up in the calendar UI. Optional.
--   The default is False.
cleSelected :: Lens' CalendarListEntry Bool

-- | Whether the calendar is the primary calendar of the authenticated
--   user. Read-only. Optional. The default is False.
clePrimary :: Lens' CalendarListEntry Bool

-- | Whether the calendar has been hidden from the list. Optional. The
--   default is False.
cleHidden :: Lens' CalendarListEntry Bool

-- | Identifier of the calendar.
cleId :: Lens' CalendarListEntry (Maybe Text)

-- | Whether this calendar list entry has been deleted from the calendar
--   list. Read-only. Optional. The default is False.
cleDeleted :: Lens' CalendarListEntry Bool

-- | 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.
cleAccessRole :: Lens' CalendarListEntry (Maybe Text)

-- | The summary that the authenticated user has set for this calendar.
--   Optional.
cleSummaryOverride :: Lens' CalendarListEntry (Maybe Text)

-- | 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.
cleColorId :: Lens' CalendarListEntry (Maybe Text)

-- | The time zone of the calendar. Optional. Read-only.
cleTimeZone :: Lens' CalendarListEntry (Maybe Text)

-- | Description of the calendar. Optional. Read-only.
cleDescription :: Lens' CalendarListEntry (Maybe Text)
data Event

-- | Creates a value of <a>Event</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eSummary</a></li>
--   <li><a>eOriginalStartTime</a></li>
--   <li><a>eCreator</a></li>
--   <li><a>eStatus</a></li>
--   <li><a>eGuestsCanModify</a></li>
--   <li><a>eEtag</a></li>
--   <li><a>eAttachments</a></li>
--   <li><a>eLocked</a></li>
--   <li><a>eLocation</a></li>
--   <li><a>eAttendees</a></li>
--   <li><a>eReminders</a></li>
--   <li><a>eKind</a></li>
--   <li><a>eCreated</a></li>
--   <li><a>eTransparency</a></li>
--   <li><a>eRecurringEventId</a></li>
--   <li><a>eStart</a></li>
--   <li><a>ePrivateCopy</a></li>
--   <li><a>eEndTimeUnspecified</a></li>
--   <li><a>eExtendedProperties</a></li>
--   <li><a>eVisibility</a></li>
--   <li><a>eGuestsCanInviteOthers</a></li>
--   <li><a>eRecurrence</a></li>
--   <li><a>eGadget</a></li>
--   <li><a>eSequence</a></li>
--   <li><a>eICalUId</a></li>
--   <li><a>eEnd</a></li>
--   <li><a>eAttendeesOmitted</a></li>
--   <li><a>eSource</a></li>
--   <li><a>eId</a></li>
--   <li><a>eHTMLLink</a></li>
--   <li><a>eUpdated</a></li>
--   <li><a>eColorId</a></li>
--   <li><a>eAnyoneCanAddSelf</a></li>
--   <li><a>eGuestsCanSeeOtherGuests</a></li>
--   <li><a>eHangoutLink</a></li>
--   <li><a>eDescription</a></li>
--   <li><a>eOrganizer</a></li>
--   </ul>
event :: Event

-- | Title of the event.
eSummary :: Lens' Event (Maybe Text)

-- | 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.
eOriginalStartTime :: Lens' Event (Maybe EventDateTime)

-- | The creator of the event. Read-only.
eCreator :: Lens' Event (Maybe EventCreator)

-- | 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.
eStatus :: Lens' Event (Maybe Text)

-- | Whether attendees other than the organizer can modify the event.
--   Optional. The default is False.
eGuestsCanModify :: Lens' Event Bool

-- | ETag of the resource.
eEtag :: Lens' Event (Maybe Text)

-- | 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,
eAttachments :: Lens' Event [EventAttachment]

-- | 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.
eLocked :: Lens' Event Bool

-- | Geographic location of the event as free-form text. Optional.
eLocation :: Lens' Event (Maybe Text)

-- | The attendees of the event. See the Events with attendees guide for
--   more information on scheduling events with other calendar users.
eAttendees :: Lens' Event [EventAttendee]

-- | Information about the event's reminders for the authenticated user.
eReminders :: Lens' Event (Maybe EventReminders)

-- | Type of the resource ("calendar#event").
eKind :: Lens' Event Text

-- | Creation time of the event (as a RFC3339 timestamp). Read-only.
eCreated :: Lens' Event (Maybe UTCTime)

-- | Whether the event blocks time on the calendar. Optional. Possible
--   values are: - "opaque" - The event blocks time on the calendar. This
--   is the default value. - "transparent" - The event does not block time
--   on the calendar.
eTransparency :: Lens' Event Text

-- | For an instance of a recurring event, this is the id of the recurring
--   event to which this instance belongs. Immutable.
eRecurringEventId :: Lens' Event (Maybe Text)

-- | The (inclusive) start time of the event. For a recurring event, this
--   is the start time of the first instance.
eStart :: Lens' Event (Maybe EventDateTime)

-- | Whether this is a private event copy where changes are not shared with
--   other copies on other calendars. Optional. Immutable. The default is
--   False.
ePrivateCopy :: Lens' Event Bool

-- | 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.
eEndTimeUnspecified :: Lens' Event Bool

-- | Extended properties of the event.
eExtendedProperties :: Lens' Event (Maybe EventExtendedProperties)

-- | 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.
eVisibility :: Lens' Event Text

-- | Whether attendees other than the organizer can invite others to the
--   event. Optional. The default is True.
eGuestsCanInviteOthers :: Lens' Event Bool

-- | 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.
eRecurrence :: Lens' Event [Text]

-- | A gadget that extends this event.
eGadget :: Lens' Event (Maybe EventGadget)

-- | Sequence number as per iCalendar.
eSequence :: Lens' Event (Maybe Int32)

-- | 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.
eICalUId :: Lens' Event (Maybe Text)

-- | The (exclusive) end time of the event. For a recurring event, this is
--   the end time of the first instance.
eEnd :: Lens' Event (Maybe EventDateTime)

-- | 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.
eAttendeesOmitted :: Lens' Event Bool

-- | 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.
eSource :: Lens' Event (Maybe EventSource)

-- | 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.
eId :: Lens' Event (Maybe Text)

-- | An absolute link to this event in the Google Calendar Web UI.
--   Read-only.
eHTMLLink :: Lens' Event (Maybe Text)

-- | Last modification time of the event (as a RFC3339 timestamp).
--   Read-only.
eUpdated :: Lens' Event (Maybe UTCTime)

-- | 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.
eColorId :: Lens' Event (Maybe Text)

-- | Whether anyone can invite themselves to the event (currently works for
--   Google+ events only). Optional. The default is False.
eAnyoneCanAddSelf :: Lens' Event Bool

-- | Whether attendees other than the organizer can see who the event's
--   attendees are. Optional. The default is True.
eGuestsCanSeeOtherGuests :: Lens' Event Bool

-- | An absolute link to the Google+ hangout associated with this event.
--   Read-only.
eHangoutLink :: Lens' Event (Maybe Text)

-- | Description of the event. Optional.
eDescription :: Lens' Event (Maybe Text)

-- | 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.
eOrganizer :: Lens' Event (Maybe EventOrganizer)

-- | The notifications that the authenticated user is receiving for this
--   calendar.
--   
--   <i>See:</i> <a>calendarListEntryNotificationSettings</a> smart
--   constructor.
data CalendarListEntryNotificationSettings

-- | Creates a value of <a>CalendarListEntryNotificationSettings</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clensNotifications</a></li>
--   </ul>
calendarListEntryNotificationSettings :: CalendarListEntryNotificationSettings

-- | The list of notifications set for this calendar.
clensNotifications :: Lens' CalendarListEntryNotificationSettings [CalendarNotification]

-- | The scope of the rule.
--   
--   <i>See:</i> <a>aclRuleScope</a> smart constructor.
data ACLRuleScope

-- | Creates a value of <a>ACLRuleScope</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>arsValue</a></li>
--   <li><a>arsType</a></li>
--   </ul>
aclRuleScope :: ACLRuleScope

-- | The email address of a user or group, or the name of a domain,
--   depending on the scope type. Omitted for type "default".
arsValue :: Lens' ACLRuleScope (Maybe Text)

-- | 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.
arsType :: Lens' ACLRuleScope (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>colorsEvent</a> smart constructor.
data ColorsEvent

-- | Creates a value of <a>ColorsEvent</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ceAddtional</a></li>
--   </ul>
colorsEvent :: HashMap Text ColorDefinition -> ColorsEvent

-- | An event color definition.
ceAddtional :: Lens' ColorsEvent (HashMap Text ColorDefinition)
data Settings

-- | Creates a value of <a>Settings</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sEtag</a></li>
--   <li><a>sNextPageToken</a></li>
--   <li><a>sKind</a></li>
--   <li><a>sItems</a></li>
--   <li><a>sNextSyncToken</a></li>
--   </ul>
settings :: Settings

-- | Etag of the collection.
sEtag :: Lens' Settings (Maybe Text)

-- | Token used to access the next page of this result. Omitted if no
--   further results are available, in which case nextSyncToken is
--   provided.
sNextPageToken :: Lens' Settings (Maybe Text)

-- | Type of the collection ("calendar#settings").
sKind :: Lens' Settings Text

-- | List of user settings.
sItems :: Lens' Settings [Setting]

-- | 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.
sNextSyncToken :: Lens' Settings (Maybe Text)
data FreeBusyRequestItem

-- | Creates a value of <a>FreeBusyRequestItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbriId</a></li>
--   </ul>
freeBusyRequestItem :: FreeBusyRequestItem

-- | The identifier of a calendar or a group.
fbriId :: Lens' FreeBusyRequestItem (Maybe Text)
data EventAttachment

-- | Creates a value of <a>EventAttachment</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eaFileURL</a></li>
--   <li><a>eaIconLink</a></li>
--   <li><a>eaMimeType</a></li>
--   <li><a>eaTitle</a></li>
--   <li><a>eaFileId</a></li>
--   </ul>
eventAttachment :: EventAttachment

-- | 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.
eaFileURL :: Lens' EventAttachment (Maybe Text)

-- | URL link to the attachment's icon. Read-only.
eaIconLink :: Lens' EventAttachment (Maybe Text)

-- | Internet media type (MIME type) of the attachment.
eaMimeType :: Lens' EventAttachment (Maybe Text)

-- | Attachment title.
eaTitle :: Lens' EventAttachment (Maybe Text)

-- | 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.
eaFileId :: Lens' EventAttachment (Maybe Text)
data TimePeriod

-- | Creates a value of <a>TimePeriod</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpStart</a></li>
--   <li><a>tpEnd</a></li>
--   </ul>
timePeriod :: TimePeriod

-- | The (inclusive) start of the time period.
tpStart :: Lens' TimePeriod (Maybe UTCTime)

-- | The (exclusive) end of the time period.
tpEnd :: Lens' TimePeriod (Maybe UTCTime)

-- | The creator of the event. Read-only.
--   
--   <i>See:</i> <a>eventCreator</a> smart constructor.
data EventCreator

-- | Creates a value of <a>EventCreator</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ecEmail</a></li>
--   <li><a>ecSelf</a></li>
--   <li><a>ecDisplayName</a></li>
--   <li><a>ecId</a></li>
--   </ul>
eventCreator :: EventCreator

-- | The creator's email address, if available.
ecEmail :: Lens' EventCreator (Maybe Text)

-- | Whether the creator corresponds to the calendar on which this copy of
--   the event appears. Read-only. The default is False.
ecSelf :: Lens' EventCreator Bool

-- | The creator's name, if available.
ecDisplayName :: Lens' EventCreator (Maybe Text)

-- | The creator's Profile ID, if available. It corresponds to theid field
--   in the People collection of the Google+ API
ecId :: Lens' EventCreator (Maybe Text)
data Error'

-- | Creates a value of <a>Error</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eDomain</a></li>
--   <li><a>eReason</a></li>
--   </ul>
error' :: Error'

-- | Domain, or broad category, of the error.
eDomain :: Lens' Error' (Maybe Text)

-- | 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.
eReason :: Lens' Error' (Maybe Text)
data ColorDefinition

-- | Creates a value of <a>ColorDefinition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdForegRound</a></li>
--   <li><a>cdBackgRound</a></li>
--   </ul>
colorDefinition :: ColorDefinition

-- | The foreground color that can be used to write on top of a background
--   with 'background' color.
cdForegRound :: Lens' ColorDefinition (Maybe Text)

-- | The background color associated with this color definition.
cdBackgRound :: Lens' ColorDefinition (Maybe Text)

-- | The order of the events returned in the result. Optional. The default
--   is an unspecified, stable order.
data EventsListOrderBy

-- | <tt>startTime</tt> Order by the start date/time (ascending). This is
--   only available when querying single events (i.e. the parameter
--   singleEvents is True)
StartTime :: EventsListOrderBy

-- | <tt>updated</tt> Order by last modification time (ascending).
Updated :: EventsListOrderBy
data Channel

-- | Creates a value of <a>Channel</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cResourceURI</a></li>
--   <li><a>cResourceId</a></li>
--   <li><a>cKind</a></li>
--   <li><a>cExpiration</a></li>
--   <li><a>cToken</a></li>
--   <li><a>cAddress</a></li>
--   <li><a>cPayload</a></li>
--   <li><a>cParams</a></li>
--   <li><a>cId</a></li>
--   <li><a>cType</a></li>
--   </ul>
channel :: Channel

-- | A version-specific identifier for the watched resource.
cResourceURI :: Lens' Channel (Maybe Text)

-- | An opaque ID that identifies the resource being watched on this
--   channel. Stable across different API versions.
cResourceId :: Lens' Channel (Maybe Text)

-- | Identifies this as a notification channel used to watch for changes to
--   a resource. Value: the fixed string "api#channel".
cKind :: Lens' Channel Text

-- | Date and time of notification channel expiration, expressed as a Unix
--   timestamp, in milliseconds. Optional.
cExpiration :: Lens' Channel (Maybe Int64)

-- | An arbitrary string delivered to the target address with each
--   notification delivered over this channel. Optional.
cToken :: Lens' Channel (Maybe Text)

-- | The address where notifications are delivered for this channel.
cAddress :: Lens' Channel (Maybe Text)

-- | A Boolean value to indicate whether payload is wanted. Optional.
cPayload :: Lens' Channel (Maybe Bool)

-- | Additional parameters controlling delivery channel behavior. Optional.
cParams :: Lens' Channel (Maybe ChannelParams)

-- | A UUID or similar unique string that identifies this channel.
cId :: Lens' Channel (Maybe Text)

-- | The type of delivery mechanism used for this channel.
cType :: Lens' Channel (Maybe Text)
data FreeBusyCalendar

-- | Creates a value of <a>FreeBusyCalendar</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbcBusy</a></li>
--   <li><a>fbcErrors</a></li>
--   </ul>
freeBusyCalendar :: FreeBusyCalendar

-- | List of time ranges during which this calendar should be regarded as
--   busy.
fbcBusy :: Lens' FreeBusyCalendar [TimePeriod]

-- | Optional error(s) (if computation for the calendar failed).
fbcErrors :: Lens' FreeBusyCalendar [Error']
data Setting

-- | Creates a value of <a>Setting</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>setEtag</a></li>
--   <li><a>setKind</a></li>
--   <li><a>setValue</a></li>
--   <li><a>setId</a></li>
--   </ul>
setting :: Setting

-- | ETag of the resource.
setEtag :: Lens' Setting (Maybe Text)

-- | Type of the resource ("calendar#setting").
setKind :: Lens' Setting Text

-- | 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.
setValue :: Lens' Setting (Maybe Text)

-- | The id of the user setting.
setId :: Lens' Setting (Maybe Text)

-- | Expansion of groups.
--   
--   <i>See:</i> <a>freeBusyResponseGroups</a> smart constructor.
data FreeBusyResponseGroups

-- | Creates a value of <a>FreeBusyResponseGroups</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbrgAddtional</a></li>
--   </ul>
freeBusyResponseGroups :: HashMap Text FreeBusyGroup -> FreeBusyResponseGroups

-- | List of calendars that are members of this group.
fbrgAddtional :: Lens' FreeBusyResponseGroups (HashMap Text FreeBusyGroup)

-- | Information about the event's reminders for the authenticated user.
--   
--   <i>See:</i> <a>eventReminders</a> smart constructor.
data EventReminders

-- | Creates a value of <a>EventReminders</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>erOverrides</a></li>
--   <li><a>erUseDefault</a></li>
--   </ul>
eventReminders :: EventReminders

-- | 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.
erOverrides :: Lens' EventReminders [EventReminder]

-- | Whether the default reminders of the calendar apply to the event.
erUseDefault :: Lens' EventReminders (Maybe Bool)

-- | 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.
--   
--   <i>See:</i> <a>colorsCalendar</a> smart constructor.
data ColorsCalendar

-- | Creates a value of <a>ColorsCalendar</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccAddtional</a></li>
--   </ul>
colorsCalendar :: HashMap Text ColorDefinition -> ColorsCalendar

-- | A calendar color defintion.
ccAddtional :: Lens' ColorsCalendar (HashMap Text ColorDefinition)
data CalendarNotification

-- | Creates a value of <a>CalendarNotification</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cnMethod</a></li>
--   <li><a>cnType</a></li>
--   </ul>
calendarNotification :: CalendarNotification

-- | 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 Google Apps for Work,
--   Education, and Government customers.
cnMethod :: Lens' CalendarNotification (Maybe Text)

-- | 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).
cnType :: Lens' CalendarNotification (Maybe Text)

-- | Properties that are private to the copy of the event that appears on
--   this calendar.
--   
--   <i>See:</i> <a>eventExtendedPropertiesPrivate</a> smart constructor.
data EventExtendedPropertiesPrivate

-- | Creates a value of <a>EventExtendedPropertiesPrivate</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eeppAddtional</a></li>
--   </ul>
eventExtendedPropertiesPrivate :: HashMap Text Text -> EventExtendedPropertiesPrivate

-- | The name of the private property and the corresponding value.
eeppAddtional :: Lens' EventExtendedPropertiesPrivate (HashMap Text Text)

-- | Additional parameters controlling delivery channel behavior. Optional.
--   
--   <i>See:</i> <a>channelParams</a> smart constructor.
data ChannelParams

-- | Creates a value of <a>ChannelParams</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpAddtional</a></li>
--   </ul>
channelParams :: HashMap Text Text -> ChannelParams

-- | Declares a new parameter by name.
cpAddtional :: Lens' ChannelParams (HashMap Text Text)
data Events

-- | Creates a value of <a>Events</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eveSummary</a></li>
--   <li><a>eveEtag</a></li>
--   <li><a>eveNextPageToken</a></li>
--   <li><a>eveKind</a></li>
--   <li><a>eveItems</a></li>
--   <li><a>eveDefaultReminders</a></li>
--   <li><a>eveUpdated</a></li>
--   <li><a>eveAccessRole</a></li>
--   <li><a>eveTimeZone</a></li>
--   <li><a>eveNextSyncToken</a></li>
--   <li><a>eveDescription</a></li>
--   </ul>
events :: Events

-- | Title of the calendar. Read-only.
eveSummary :: Lens' Events (Maybe Text)

-- | ETag of the collection.
eveEtag :: Lens' Events (Maybe Text)

-- | Token used to access the next page of this result. Omitted if no
--   further results are available, in which case nextSyncToken is
--   provided.
eveNextPageToken :: Lens' Events (Maybe Text)

-- | Type of the collection ("calendar#events").
eveKind :: Lens' Events Text

-- | List of events on the calendar.
eveItems :: Lens' Events [Event]

-- | 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).
eveDefaultReminders :: Lens' Events [EventReminder]

-- | Last modification time of the calendar (as a RFC3339 timestamp).
--   Read-only.
eveUpdated :: Lens' Events (Maybe UTCTime)

-- | 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.
eveAccessRole :: Lens' Events (Maybe Text)

-- | The time zone of the calendar. Read-only.
eveTimeZone :: Lens' Events (Maybe Text)

-- | 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.
eveNextSyncToken :: Lens' Events (Maybe Text)

-- | Description of the calendar. Read-only.
eveDescription :: Lens' Events (Maybe Text)
data EventAttendee

-- | Creates a value of <a>EventAttendee</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eaEmail</a></li>
--   <li><a>eaResponseStatus</a></li>
--   <li><a>eaSelf</a></li>
--   <li><a>eaResource</a></li>
--   <li><a>eaAdditionalGuests</a></li>
--   <li><a>eaDisplayName</a></li>
--   <li><a>eaId</a></li>
--   <li><a>eaComment</a></li>
--   <li><a>eaOptional</a></li>
--   <li><a>eaOrganizer</a></li>
--   </ul>
eventAttendee :: EventAttendee

-- | 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.
eaEmail :: Lens' EventAttendee (Maybe Text)

-- | 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.
eaResponseStatus :: Lens' EventAttendee (Maybe Text)

-- | Whether this entry represents the calendar on which this copy of the
--   event appears. Read-only. The default is False.
eaSelf :: Lens' EventAttendee Bool

-- | Whether the attendee is a resource. Read-only. The default is False.
eaResource :: Lens' EventAttendee Bool

-- | Number of additional guests. Optional. The default is 0.
eaAdditionalGuests :: Lens' EventAttendee Int32

-- | The attendee's name, if available. Optional.
eaDisplayName :: Lens' EventAttendee (Maybe Text)

-- | The attendee's Profile ID, if available. It corresponds to theid field
--   in the People collection of the Google+ API
eaId :: Lens' EventAttendee (Maybe Text)

-- | The attendee's response comment. Optional.
eaComment :: Lens' EventAttendee (Maybe Text)

-- | Whether this is an optional attendee. Optional. The default is False.
eaOptional :: Lens' EventAttendee Bool

-- | Whether the attendee is the organizer of the event. Read-only. The
--   default is False.
eaOrganizer :: Lens' EventAttendee (Maybe Bool)
data Calendar

-- | Creates a value of <a>Calendar</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>calSummary</a></li>
--   <li><a>calEtag</a></li>
--   <li><a>calLocation</a></li>
--   <li><a>calKind</a></li>
--   <li><a>calId</a></li>
--   <li><a>calTimeZone</a></li>
--   <li><a>calDescription</a></li>
--   </ul>
calendar :: Calendar

-- | Title of the calendar.
calSummary :: Lens' Calendar (Maybe Text)

-- | ETag of the resource.
calEtag :: Lens' Calendar (Maybe Text)

-- | Geographic location of the calendar as free-form text. Optional.
calLocation :: Lens' Calendar (Maybe Text)

-- | Type of the resource ("calendar#calendar").
calKind :: Lens' Calendar Text

-- | Identifier of the calendar. To retrieve IDs call the
--   calendarList.list() method.
calId :: Lens' Calendar (Maybe Text)

-- | The time zone of the calendar. (Formatted as an IANA Time Zone
--   Database name, e.g. "Europe/Zurich".) Optional.
calTimeZone :: Lens' Calendar (Maybe Text)

-- | Description of the calendar. Optional.
calDescription :: Lens' Calendar (Maybe Text)
data FreeBusyResponse

-- | Creates a value of <a>FreeBusyResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbrGroups</a></li>
--   <li><a>fbrTimeMin</a></li>
--   <li><a>fbrKind</a></li>
--   <li><a>fbrCalendars</a></li>
--   <li><a>fbrTimeMax</a></li>
--   </ul>
freeBusyResponse :: FreeBusyResponse

-- | Expansion of groups.
fbrGroups :: Lens' FreeBusyResponse (Maybe FreeBusyResponseGroups)

-- | The start of the interval.
fbrTimeMin :: Lens' FreeBusyResponse (Maybe UTCTime)

-- | Type of the resource ("calendar#freeBusy").
fbrKind :: Lens' FreeBusyResponse Text

-- | List of free/busy information for calendars.
fbrCalendars :: Lens' FreeBusyResponse (Maybe FreeBusyResponseCalendars)

-- | The end of the interval.
fbrTimeMax :: Lens' FreeBusyResponse (Maybe UTCTime)
data EventReminder

-- | Creates a value of <a>EventReminder</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>erMethod</a></li>
--   <li><a>erMinutes</a></li>
--   </ul>
eventReminder :: EventReminder

-- | 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 Google Apps for Work, Education, and
--   Government customers. Requests to set SMS reminders for other account
--   types are ignored. - "popup" - Reminders are sent via a UI popup.
erMethod :: Lens' EventReminder (Maybe Text)

-- | 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).
erMinutes :: Lens' EventReminder (Maybe Int32)

-- | Extended properties of the event.
--   
--   <i>See:</i> <a>eventExtendedProperties</a> smart constructor.
data EventExtendedProperties

-- | Creates a value of <a>EventExtendedProperties</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eepPrivate</a></li>
--   <li><a>eepShared</a></li>
--   </ul>
eventExtendedProperties :: EventExtendedProperties

-- | Properties that are private to the copy of the event that appears on
--   this calendar.
eepPrivate :: Lens' EventExtendedProperties (Maybe EventExtendedPropertiesPrivate)

-- | Properties that are shared between copies of the event on other
--   attendees' calendars.
eepShared :: Lens' EventExtendedProperties (Maybe EventExtendedPropertiesShared)
data EventDateTime

-- | Creates a value of <a>EventDateTime</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>edtDate</a></li>
--   <li><a>edtTimeZone</a></li>
--   <li><a>edtDateTime</a></li>
--   </ul>
eventDateTime :: EventDateTime

-- | The date, in the format "yyyy-mm-dd", if this is an all-day event.
edtDate :: Lens' EventDateTime (Maybe Day)

-- | 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.
edtTimeZone :: Lens' EventDateTime (Maybe Text)

-- | 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.
edtDateTime :: Lens' EventDateTime (Maybe UTCTime)

-- | 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.
--   
--   <i>See:</i> <a>eventOrganizer</a> smart constructor.
data EventOrganizer

-- | Creates a value of <a>EventOrganizer</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eoEmail</a></li>
--   <li><a>eoSelf</a></li>
--   <li><a>eoDisplayName</a></li>
--   <li><a>eoId</a></li>
--   </ul>
eventOrganizer :: EventOrganizer

-- | The organizer's email address, if available. It must be a valid email
--   address as per RFC5322.
eoEmail :: Lens' EventOrganizer (Maybe Text)

-- | Whether the organizer corresponds to the calendar on which this copy
--   of the event appears. Read-only. The default is False.
eoSelf :: Lens' EventOrganizer Bool

-- | The organizer's name, if available.
eoDisplayName :: Lens' EventOrganizer (Maybe Text)

-- | The organizer's Profile ID, if available. It corresponds to theid
--   field in the People collection of the Google+ API
eoId :: Lens' EventOrganizer (Maybe Text)
data CalendarList

-- | Creates a value of <a>CalendarList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clEtag</a></li>
--   <li><a>clNextPageToken</a></li>
--   <li><a>clKind</a></li>
--   <li><a>clItems</a></li>
--   <li><a>clNextSyncToken</a></li>
--   </ul>
calendarList :: CalendarList

-- | ETag of the collection.
clEtag :: Lens' CalendarList (Maybe Text)

-- | Token used to access the next page of this result. Omitted if no
--   further results are available, in which case nextSyncToken is
--   provided.
clNextPageToken :: Lens' CalendarList (Maybe Text)

-- | Type of the collection ("calendar#calendarList").
clKind :: Lens' CalendarList Text

-- | Calendars that are present on the user's calendar list.
clItems :: Lens' CalendarList [CalendarListEntry]

-- | 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.
clNextSyncToken :: Lens' CalendarList (Maybe Text)

-- | The minimum access role for the user in the returned entries.
--   Optional. The default is no restriction.
data CalendarListListMinAccessRole

-- | <tt>freeBusyReader</tt> The user can read free/busy information.
FreeBusyReader :: CalendarListListMinAccessRole

-- | <tt>owner</tt> The user can read and modify events and access control
--   lists.
Owner :: CalendarListListMinAccessRole

-- | <tt>reader</tt> The user can read events that are not private.
Reader :: CalendarListListMinAccessRole

-- | <tt>writer</tt> The user can read and modify events.
Writer :: CalendarListListMinAccessRole

-- | A gadget that extends this event.
--   
--   <i>See:</i> <a>eventGadget</a> smart constructor.
data EventGadget

-- | Creates a value of <a>EventGadget</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>egHeight</a></li>
--   <li><a>egDisplay</a></li>
--   <li><a>egPreferences</a></li>
--   <li><a>egLink</a></li>
--   <li><a>egIconLink</a></li>
--   <li><a>egWidth</a></li>
--   <li><a>egTitle</a></li>
--   <li><a>egType</a></li>
--   </ul>
eventGadget :: EventGadget

-- | The gadget's height in pixels. The height must be an integer greater
--   than 0. Optional.
egHeight :: Lens' EventGadget (Maybe Int32)

-- | 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.
egDisplay :: Lens' EventGadget (Maybe Text)

-- | Preferences.
egPreferences :: Lens' EventGadget (Maybe EventGadgetPreferences)

-- | The gadget's URL. The URL scheme must be HTTPS.
egLink :: Lens' EventGadget (Maybe Text)

-- | The gadget's icon URL. The URL scheme must be HTTPS.
egIconLink :: Lens' EventGadget (Maybe Text)

-- | The gadget's width in pixels. The width must be an integer greater
--   than 0. Optional.
egWidth :: Lens' EventGadget (Maybe Int32)

-- | The gadget's title.
egTitle :: Lens' EventGadget (Maybe Text)

-- | The gadget's type.
egType :: Lens' EventGadget (Maybe Text)

-- | Preferences.
--   
--   <i>See:</i> <a>eventGadgetPreferences</a> smart constructor.
data EventGadgetPreferences

-- | Creates a value of <a>EventGadgetPreferences</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>egpAddtional</a></li>
--   </ul>
eventGadgetPreferences :: HashMap Text Text -> EventGadgetPreferences

-- | The preference name and corresponding value.
egpAddtional :: Lens' EventGadgetPreferences (HashMap Text Text)
data FreeBusyRequest

-- | Creates a value of <a>FreeBusyRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fCalendarExpansionMax</a></li>
--   <li><a>fTimeMin</a></li>
--   <li><a>fItems</a></li>
--   <li><a>fGroupExpansionMax</a></li>
--   <li><a>fTimeZone</a></li>
--   <li><a>fTimeMax</a></li>
--   </ul>
freeBusyRequest :: FreeBusyRequest

-- | Maximal number of calendars for which FreeBusy information is to be
--   provided. Optional.
fCalendarExpansionMax :: Lens' FreeBusyRequest (Maybe Int32)

-- | The start of the interval for the query.
fTimeMin :: Lens' FreeBusyRequest (Maybe UTCTime)

-- | List of calendars and/or groups to query.
fItems :: Lens' FreeBusyRequest [FreeBusyRequestItem]

-- | 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.
fGroupExpansionMax :: Lens' FreeBusyRequest (Maybe Int32)

-- | Time zone used in the response. Optional. The default is UTC.
fTimeZone :: Lens' FreeBusyRequest Text

-- | The end of the interval for the query.
fTimeMax :: Lens' FreeBusyRequest (Maybe UTCTime)
data ACLRule

-- | Creates a value of <a>ACLRule</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>arEtag</a></li>
--   <li><a>arKind</a></li>
--   <li><a>arRole</a></li>
--   <li><a>arScope</a></li>
--   <li><a>arId</a></li>
--   </ul>
aclRule :: ACLRule

-- | ETag of the resource.
arEtag :: Lens' ACLRule (Maybe Text)

-- | Type of the resource ("calendar#aclRule").
arKind :: Lens' ACLRule Text

-- | 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.
arRole :: Lens' ACLRule (Maybe Text)

-- | The scope of the rule.
arScope :: Lens' ACLRule (Maybe ACLRuleScope)

-- | Identifier of the ACL rule.
arId :: Lens' ACLRule (Maybe Text)

-- | The order of the events returned in the result. Optional. The default
--   is an unspecified, stable order.
data EventsWatchOrderBy

-- | <tt>startTime</tt> Order by the start date/time (ascending). This is
--   only available when querying single events (i.e. the parameter
--   singleEvents is True)
EWOBStartTime :: EventsWatchOrderBy

-- | <tt>updated</tt> Order by last modification time (ascending).
EWOBUpdated :: EventsWatchOrderBy

-- | Properties that are shared between copies of the event on other
--   attendees' calendars.
--   
--   <i>See:</i> <a>eventExtendedPropertiesShared</a> smart constructor.
data EventExtendedPropertiesShared

-- | Creates a value of <a>EventExtendedPropertiesShared</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eepsAddtional</a></li>
--   </ul>
eventExtendedPropertiesShared :: HashMap Text Text -> EventExtendedPropertiesShared

-- | The name of the shared property and the corresponding value.
eepsAddtional :: Lens' EventExtendedPropertiesShared (HashMap Text Text)

-- | The minimum access role for the user in the returned entries.
--   Optional. The default is no restriction.
data CalendarListWatchMinAccessRole

-- | <tt>freeBusyReader</tt> The user can read free/busy information.
CLWMARFreeBusyReader :: CalendarListWatchMinAccessRole

-- | <tt>owner</tt> The user can read and modify events and access control
--   lists.
CLWMAROwner :: CalendarListWatchMinAccessRole

-- | <tt>reader</tt> The user can read events that are not private.
CLWMARReader :: CalendarListWatchMinAccessRole

-- | <tt>writer</tt> The user can read and modify events.
CLWMARWriter :: CalendarListWatchMinAccessRole

-- | List of free/busy information for calendars.
--   
--   <i>See:</i> <a>freeBusyResponseCalendars</a> smart constructor.
data FreeBusyResponseCalendars

-- | Creates a value of <a>FreeBusyResponseCalendars</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbrcAddtional</a></li>
--   </ul>
freeBusyResponseCalendars :: HashMap Text FreeBusyCalendar -> FreeBusyResponseCalendars

-- | Free/busy expansions for a single calendar.
fbrcAddtional :: Lens' FreeBusyResponseCalendars (HashMap Text FreeBusyCalendar)
data ACL

-- | Creates a value of <a>ACL</a> with the minimum fields required to make
--   a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aEtag</a></li>
--   <li><a>aNextPageToken</a></li>
--   <li><a>aKind</a></li>
--   <li><a>aItems</a></li>
--   <li><a>aNextSyncToken</a></li>
--   </ul>
acl :: ACL

-- | ETag of the collection.
aEtag :: Lens' ACL (Maybe Text)

-- | Token used to access the next page of this result. Omitted if no
--   further results are available, in which case nextSyncToken is
--   provided.
aNextPageToken :: Lens' ACL (Maybe Text)

-- | Type of the collection ("calendar#acl").
aKind :: Lens' ACL Text

-- | List of rules on the access control list.
aItems :: Lens' ACL [ACLRule]

-- | 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.
aNextSyncToken :: Lens' ACL (Maybe Text)
data Colors

-- | Creates a value of <a>Colors</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>colEvent</a></li>
--   <li><a>colKind</a></li>
--   <li><a>colCalendar</a></li>
--   <li><a>colUpdated</a></li>
--   </ul>
colors :: Colors

-- | 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.
colEvent :: Lens' Colors (Maybe ColorsEvent)

-- | Type of the resource ("calendar#colors").
colKind :: Lens' Colors Text

-- | 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.
colCalendar :: Lens' Colors (Maybe ColorsCalendar)

-- | Last modification time of the color palette (as a RFC3339 timestamp).
--   Read-only.
colUpdated :: Lens' Colors (Maybe UTCTime)
data FreeBusyGroup

-- | Creates a value of <a>FreeBusyGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbgCalendars</a></li>
--   <li><a>fbgErrors</a></li>
--   </ul>
freeBusyGroup :: FreeBusyGroup

-- | List of calendars' identifiers within a group.
fbgCalendars :: Lens' FreeBusyGroup [Text]

-- | Optional error(s) (if computation for the group failed).
fbgErrors :: Lens' FreeBusyGroup [Error']

-- | 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.
--   
--   <i>See:</i> <a>eventSource</a> smart constructor.
data EventSource

-- | Creates a value of <a>EventSource</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>esURL</a></li>
--   <li><a>esTitle</a></li>
--   </ul>
eventSource :: EventSource

-- | URL of the source pointing to a resource. The URL scheme must be HTTP
--   or HTTPS.
esURL :: Lens' EventSource (Maybe Text)

-- | Title of the source; for example a title of a web page or an email
--   subject.
esTitle :: Lens' EventSource (Maybe Text)


-- | Deletes an access control rule.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.acl.delete</tt>.
module Network.Google.Resource.Calendar.ACL.Delete

-- | A resource alias for <tt>calendar.acl.delete</tt> method which the
--   <a>ACLDelete</a> request conforms to.
type ACLDeleteResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("acl" :> (Capture "ruleId" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>ACLDelete</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adCalendarId</a></li>
--   <li><a>adRuleId</a></li>
--   </ul>
aclDelete :: Text -> Text -> ACLDelete

-- | Deletes an access control rule.
--   
--   <i>See:</i> <a>aclDelete</a> smart constructor.
data ACLDelete

-- | 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.
adCalendarId :: Lens' ACLDelete Text

-- | ACL rule identifier.
adRuleId :: Lens' ACLDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.ACL.Delete.ACLDelete
instance Data.Data.Data Network.Google.Resource.Calendar.ACL.Delete.ACLDelete
instance GHC.Show.Show Network.Google.Resource.Calendar.ACL.Delete.ACLDelete
instance GHC.Classes.Eq Network.Google.Resource.Calendar.ACL.Delete.ACLDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.ACL.Delete.ACLDelete


-- | Returns an access control rule.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.acl.get</tt>.
module Network.Google.Resource.Calendar.ACL.Get

-- | A resource alias for <tt>calendar.acl.get</tt> method which the
--   <a>ACLGet</a> request conforms to.
type ACLGetResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("acl" :> (Capture "ruleId" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ACLRule))))))

-- | Creates a value of <a>ACLGet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>agCalendarId</a></li>
--   <li><a>agRuleId</a></li>
--   </ul>
aclGet :: Text -> Text -> ACLGet

-- | Returns an access control rule.
--   
--   <i>See:</i> <a>aclGet</a> smart constructor.
data ACLGet

-- | 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.
agCalendarId :: Lens' ACLGet Text

-- | ACL rule identifier.
agRuleId :: Lens' ACLGet Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.ACL.Get.ACLGet
instance Data.Data.Data Network.Google.Resource.Calendar.ACL.Get.ACLGet
instance GHC.Show.Show Network.Google.Resource.Calendar.ACL.Get.ACLGet
instance GHC.Classes.Eq Network.Google.Resource.Calendar.ACL.Get.ACLGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.ACL.Get.ACLGet


-- | Creates an access control rule.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.acl.insert</tt>.
module Network.Google.Resource.Calendar.ACL.Insert

-- | A resource alias for <tt>calendar.acl.insert</tt> method which the
--   <a>ACLInsert</a> request conforms to.
type ACLInsertResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("acl" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ACLRule :> Post '[JSON] ACLRule))))))

-- | Creates a value of <a>ACLInsert</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aiCalendarId</a></li>
--   <li><a>aiPayload</a></li>
--   </ul>
aclInsert :: Text -> ACLRule -> ACLInsert

-- | Creates an access control rule.
--   
--   <i>See:</i> <a>aclInsert</a> smart constructor.
data ACLInsert

-- | 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.
aiCalendarId :: Lens' ACLInsert Text

-- | Multipart request metadata.
aiPayload :: Lens' ACLInsert ACLRule
instance GHC.Generics.Generic Network.Google.Resource.Calendar.ACL.Insert.ACLInsert
instance Data.Data.Data Network.Google.Resource.Calendar.ACL.Insert.ACLInsert
instance GHC.Show.Show Network.Google.Resource.Calendar.ACL.Insert.ACLInsert
instance GHC.Classes.Eq Network.Google.Resource.Calendar.ACL.Insert.ACLInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.ACL.Insert.ACLInsert


-- | Returns the rules in the access control list for the calendar.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.acl.list</tt>.
module Network.Google.Resource.Calendar.ACL.List

-- | A resource alias for <tt>calendar.acl.list</tt> method which the
--   <a>ACLList</a> request conforms to.
type ACLListResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("acl" :> (QueryParam "syncToken" Text :> (QueryParam "showDeleted" Bool :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ACL)))))))))

-- | Creates a value of <a>ACLList</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>alSyncToken</a></li>
--   <li><a>alCalendarId</a></li>
--   <li><a>alShowDeleted</a></li>
--   <li><a>alPageToken</a></li>
--   <li><a>alMaxResults</a></li>
--   </ul>
aclList :: Text -> ACLList

-- | Returns the rules in the access control list for the calendar.
--   
--   <i>See:</i> <a>aclList</a> smart constructor.
data ACLList

-- | 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.
alSyncToken :: Lens' ACLList (Maybe 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.
alCalendarId :: Lens' ACLList Text

-- | 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.
alShowDeleted :: Lens' ACLList (Maybe Bool)

-- | Token specifying which result page to return. Optional.
alPageToken :: Lens' ACLList (Maybe Text)

-- | 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.
alMaxResults :: Lens' ACLList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.ACL.List.ACLList
instance Data.Data.Data Network.Google.Resource.Calendar.ACL.List.ACLList
instance GHC.Show.Show Network.Google.Resource.Calendar.ACL.List.ACLList
instance GHC.Classes.Eq Network.Google.Resource.Calendar.ACL.List.ACLList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.ACL.List.ACLList


-- | Updates an access control rule. This method supports patch semantics.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.acl.patch</tt>.
module Network.Google.Resource.Calendar.ACL.Patch

-- | A resource alias for <tt>calendar.acl.patch</tt> method which the
--   <a>ACLPatch</a> request conforms to.
type ACLPatchResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("acl" :> (Capture "ruleId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ACLRule :> Patch '[JSON] ACLRule)))))))

-- | Creates a value of <a>ACLPatch</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apCalendarId</a></li>
--   <li><a>apRuleId</a></li>
--   <li><a>apPayload</a></li>
--   </ul>
aclPatch :: Text -> Text -> ACLRule -> ACLPatch

-- | Updates an access control rule. This method supports patch semantics.
--   
--   <i>See:</i> <a>aclPatch</a> smart constructor.
data ACLPatch

-- | 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.
apCalendarId :: Lens' ACLPatch Text

-- | ACL rule identifier.
apRuleId :: Lens' ACLPatch Text

-- | Multipart request metadata.
apPayload :: Lens' ACLPatch ACLRule
instance GHC.Generics.Generic Network.Google.Resource.Calendar.ACL.Patch.ACLPatch
instance Data.Data.Data Network.Google.Resource.Calendar.ACL.Patch.ACLPatch
instance GHC.Show.Show Network.Google.Resource.Calendar.ACL.Patch.ACLPatch
instance GHC.Classes.Eq Network.Google.Resource.Calendar.ACL.Patch.ACLPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.ACL.Patch.ACLPatch


-- | Updates an access control rule.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.acl.update</tt>.
module Network.Google.Resource.Calendar.ACL.Update

-- | A resource alias for <tt>calendar.acl.update</tt> method which the
--   <a>ACLUpdate</a> request conforms to.
type ACLUpdateResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("acl" :> (Capture "ruleId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ACLRule :> Put '[JSON] ACLRule)))))))

-- | Creates a value of <a>ACLUpdate</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>auCalendarId</a></li>
--   <li><a>auRuleId</a></li>
--   <li><a>auPayload</a></li>
--   </ul>
aclUpdate :: Text -> Text -> ACLRule -> ACLUpdate

-- | Updates an access control rule.
--   
--   <i>See:</i> <a>aclUpdate</a> smart constructor.
data ACLUpdate

-- | 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.
auCalendarId :: Lens' ACLUpdate Text

-- | ACL rule identifier.
auRuleId :: Lens' ACLUpdate Text

-- | Multipart request metadata.
auPayload :: Lens' ACLUpdate ACLRule
instance GHC.Generics.Generic Network.Google.Resource.Calendar.ACL.Update.ACLUpdate
instance Data.Data.Data Network.Google.Resource.Calendar.ACL.Update.ACLUpdate
instance GHC.Show.Show Network.Google.Resource.Calendar.ACL.Update.ACLUpdate
instance GHC.Classes.Eq Network.Google.Resource.Calendar.ACL.Update.ACLUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.ACL.Update.ACLUpdate


-- | Watch for changes to ACL resources.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.acl.watch</tt>.
module Network.Google.Resource.Calendar.ACL.Watch

-- | A resource alias for <tt>calendar.acl.watch</tt> method which the
--   <a>ACLWatch</a> request conforms to.
type ACLWatchResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("acl" :> ("watch" :> (QueryParam "syncToken" Text :> (QueryParam "showDeleted" Bool :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Channel :> Post '[JSON] Channel)))))))))))

-- | Creates a value of <a>ACLWatch</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>awSyncToken</a></li>
--   <li><a>awCalendarId</a></li>
--   <li><a>awShowDeleted</a></li>
--   <li><a>awPayload</a></li>
--   <li><a>awPageToken</a></li>
--   <li><a>awMaxResults</a></li>
--   </ul>
aclWatch :: Text -> Channel -> ACLWatch

-- | Watch for changes to ACL resources.
--   
--   <i>See:</i> <a>aclWatch</a> smart constructor.
data ACLWatch

-- | 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.
awSyncToken :: Lens' ACLWatch (Maybe 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.
awCalendarId :: Lens' ACLWatch Text

-- | 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.
awShowDeleted :: Lens' ACLWatch (Maybe Bool)

-- | Multipart request metadata.
awPayload :: Lens' ACLWatch Channel

-- | Token specifying which result page to return. Optional.
awPageToken :: Lens' ACLWatch (Maybe Text)

-- | 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.
awMaxResults :: Lens' ACLWatch (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.ACL.Watch.ACLWatch
instance Data.Data.Data Network.Google.Resource.Calendar.ACL.Watch.ACLWatch
instance GHC.Show.Show Network.Google.Resource.Calendar.ACL.Watch.ACLWatch
instance GHC.Classes.Eq Network.Google.Resource.Calendar.ACL.Watch.ACLWatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.ACL.Watch.ACLWatch


-- | Deletes an entry on the user's calendar list.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.calendarList.delete</tt>.
module Network.Google.Resource.Calendar.CalendarList.Delete

-- | A resource alias for <tt>calendar.calendarList.delete</tt> method
--   which the <a>CalendarListDelete</a> request conforms to.
type CalendarListDeleteResource = "calendar" :> ("v3" :> ("users" :> ("me" :> ("calendarList" :> (Capture "calendarId" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>CalendarListDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cldCalendarId</a></li>
--   </ul>
calendarListDelete :: Text -> CalendarListDelete

-- | Deletes an entry on the user's calendar list.
--   
--   <i>See:</i> <a>calendarListDelete</a> smart constructor.
data CalendarListDelete

-- | 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.
cldCalendarId :: Lens' CalendarListDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.CalendarList.Delete.CalendarListDelete
instance Data.Data.Data Network.Google.Resource.Calendar.CalendarList.Delete.CalendarListDelete
instance GHC.Show.Show Network.Google.Resource.Calendar.CalendarList.Delete.CalendarListDelete
instance GHC.Classes.Eq Network.Google.Resource.Calendar.CalendarList.Delete.CalendarListDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.CalendarList.Delete.CalendarListDelete


-- | Returns an entry on the user's calendar list.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.calendarList.get</tt>.
module Network.Google.Resource.Calendar.CalendarList.Get

-- | A resource alias for <tt>calendar.calendarList.get</tt> method which
--   the <a>CalendarListGet</a> request conforms to.
type CalendarListGetResource = "calendar" :> ("v3" :> ("users" :> ("me" :> ("calendarList" :> (Capture "calendarId" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] CalendarListEntry))))))

-- | Creates a value of <a>CalendarListGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clgCalendarId</a></li>
--   </ul>
calendarListGet :: Text -> CalendarListGet

-- | Returns an entry on the user's calendar list.
--   
--   <i>See:</i> <a>calendarListGet</a> smart constructor.
data CalendarListGet

-- | 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.
clgCalendarId :: Lens' CalendarListGet Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.CalendarList.Get.CalendarListGet
instance Data.Data.Data Network.Google.Resource.Calendar.CalendarList.Get.CalendarListGet
instance GHC.Show.Show Network.Google.Resource.Calendar.CalendarList.Get.CalendarListGet
instance GHC.Classes.Eq Network.Google.Resource.Calendar.CalendarList.Get.CalendarListGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.CalendarList.Get.CalendarListGet


-- | Adds an entry to the user's calendar list.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.calendarList.insert</tt>.
module Network.Google.Resource.Calendar.CalendarList.Insert

-- | A resource alias for <tt>calendar.calendarList.insert</tt> method
--   which the <a>CalendarListInsert</a> request conforms to.
type CalendarListInsertResource = "calendar" :> ("v3" :> ("users" :> ("me" :> ("calendarList" :> (QueryParam "colorRgbFormat" Bool :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CalendarListEntry :> Post '[JSON] CalendarListEntry)))))))

-- | Creates a value of <a>CalendarListInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cliPayload</a></li>
--   <li><a>cliColorRgbFormat</a></li>
--   </ul>
calendarListInsert :: CalendarListEntry -> CalendarListInsert

-- | Adds an entry to the user's calendar list.
--   
--   <i>See:</i> <a>calendarListInsert</a> smart constructor.
data CalendarListInsert

-- | Multipart request metadata.
cliPayload :: Lens' CalendarListInsert CalendarListEntry

-- | 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.
cliColorRgbFormat :: Lens' CalendarListInsert (Maybe Bool)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.CalendarList.Insert.CalendarListInsert
instance Data.Data.Data Network.Google.Resource.Calendar.CalendarList.Insert.CalendarListInsert
instance GHC.Show.Show Network.Google.Resource.Calendar.CalendarList.Insert.CalendarListInsert
instance GHC.Classes.Eq Network.Google.Resource.Calendar.CalendarList.Insert.CalendarListInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.CalendarList.Insert.CalendarListInsert


-- | Returns entries on the user's calendar list.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.calendarList.list</tt>.
module Network.Google.Resource.Calendar.CalendarList.List

-- | A resource alias for <tt>calendar.calendarList.list</tt> method which
--   the <a>CalendarListList</a> request conforms to.
type CalendarListListResource = "calendar" :> ("v3" :> ("users" :> ("me" :> ("calendarList" :> (QueryParam "syncToken" Text :> (QueryParam "minAccessRole" CalendarListListMinAccessRole :> (QueryParam "showDeleted" Bool :> (QueryParam "showHidden" Bool :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] CalendarList)))))))))))

-- | Creates a value of <a>CalendarListList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cllSyncToken</a></li>
--   <li><a>cllMinAccessRole</a></li>
--   <li><a>cllShowDeleted</a></li>
--   <li><a>cllShowHidden</a></li>
--   <li><a>cllPageToken</a></li>
--   <li><a>cllMaxResults</a></li>
--   </ul>
calendarListList :: CalendarListList

-- | Returns entries on the user's calendar list.
--   
--   <i>See:</i> <a>calendarListList</a> smart constructor.
data CalendarListList

-- | 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.
cllSyncToken :: Lens' CalendarListList (Maybe Text)

-- | The minimum access role for the user in the returned entries.
--   Optional. The default is no restriction.
cllMinAccessRole :: Lens' CalendarListList (Maybe CalendarListListMinAccessRole)

-- | Whether to include deleted calendar list entries in the result.
--   Optional. The default is False.
cllShowDeleted :: Lens' CalendarListList (Maybe Bool)

-- | Whether to show hidden entries. Optional. The default is False.
cllShowHidden :: Lens' CalendarListList (Maybe Bool)

-- | Token specifying which result page to return. Optional.
cllPageToken :: Lens' CalendarListList (Maybe Text)

-- | 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.
cllMaxResults :: Lens' CalendarListList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.CalendarList.List.CalendarListList
instance Data.Data.Data Network.Google.Resource.Calendar.CalendarList.List.CalendarListList
instance GHC.Show.Show Network.Google.Resource.Calendar.CalendarList.List.CalendarListList
instance GHC.Classes.Eq Network.Google.Resource.Calendar.CalendarList.List.CalendarListList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.CalendarList.List.CalendarListList


-- | Updates an entry on the user's calendar list. This method supports
--   patch semantics.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.calendarList.patch</tt>.
module Network.Google.Resource.Calendar.CalendarList.Patch

-- | A resource alias for <tt>calendar.calendarList.patch</tt> method which
--   the <a>CalendarListPatch</a> request conforms to.
type CalendarListPatchResource = "calendar" :> ("v3" :> ("users" :> ("me" :> ("calendarList" :> (Capture "calendarId" Text :> (QueryParam "colorRgbFormat" Bool :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CalendarListEntry :> Patch '[JSON] CalendarListEntry))))))))

-- | Creates a value of <a>CalendarListPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clpCalendarId</a></li>
--   <li><a>clpPayload</a></li>
--   <li><a>clpColorRgbFormat</a></li>
--   </ul>
calendarListPatch :: Text -> CalendarListEntry -> CalendarListPatch

-- | Updates an entry on the user's calendar list. This method supports
--   patch semantics.
--   
--   <i>See:</i> <a>calendarListPatch</a> smart constructor.
data CalendarListPatch

-- | 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.
clpCalendarId :: Lens' CalendarListPatch Text

-- | Multipart request metadata.
clpPayload :: Lens' CalendarListPatch CalendarListEntry

-- | 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.
clpColorRgbFormat :: Lens' CalendarListPatch (Maybe Bool)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.CalendarList.Patch.CalendarListPatch
instance Data.Data.Data Network.Google.Resource.Calendar.CalendarList.Patch.CalendarListPatch
instance GHC.Show.Show Network.Google.Resource.Calendar.CalendarList.Patch.CalendarListPatch
instance GHC.Classes.Eq Network.Google.Resource.Calendar.CalendarList.Patch.CalendarListPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.CalendarList.Patch.CalendarListPatch


-- | Updates an entry on the user's calendar list.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.calendarList.update</tt>.
module Network.Google.Resource.Calendar.CalendarList.Update

-- | A resource alias for <tt>calendar.calendarList.update</tt> method
--   which the <a>CalendarListUpdate</a> request conforms to.
type CalendarListUpdateResource = "calendar" :> ("v3" :> ("users" :> ("me" :> ("calendarList" :> (Capture "calendarId" Text :> (QueryParam "colorRgbFormat" Bool :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CalendarListEntry :> Put '[JSON] CalendarListEntry))))))))

-- | Creates a value of <a>CalendarListUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cluCalendarId</a></li>
--   <li><a>cluPayload</a></li>
--   <li><a>cluColorRgbFormat</a></li>
--   </ul>
calendarListUpdate :: Text -> CalendarListEntry -> CalendarListUpdate

-- | Updates an entry on the user's calendar list.
--   
--   <i>See:</i> <a>calendarListUpdate</a> smart constructor.
data CalendarListUpdate

-- | 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.
cluCalendarId :: Lens' CalendarListUpdate Text

-- | Multipart request metadata.
cluPayload :: Lens' CalendarListUpdate CalendarListEntry

-- | 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.
cluColorRgbFormat :: Lens' CalendarListUpdate (Maybe Bool)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.CalendarList.Update.CalendarListUpdate
instance Data.Data.Data Network.Google.Resource.Calendar.CalendarList.Update.CalendarListUpdate
instance GHC.Show.Show Network.Google.Resource.Calendar.CalendarList.Update.CalendarListUpdate
instance GHC.Classes.Eq Network.Google.Resource.Calendar.CalendarList.Update.CalendarListUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.CalendarList.Update.CalendarListUpdate


-- | Watch for changes to CalendarList resources.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.calendarList.watch</tt>.
module Network.Google.Resource.Calendar.CalendarList.Watch

-- | A resource alias for <tt>calendar.calendarList.watch</tt> method which
--   the <a>CalendarListWatch</a> request conforms to.
type CalendarListWatchResource = "calendar" :> ("v3" :> ("users" :> ("me" :> ("calendarList" :> ("watch" :> (QueryParam "syncToken" Text :> (QueryParam "minAccessRole" CalendarListWatchMinAccessRole :> (QueryParam "showDeleted" Bool :> (QueryParam "showHidden" Bool :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Channel :> Post '[JSON] Channel)))))))))))))

-- | Creates a value of <a>CalendarListWatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clwSyncToken</a></li>
--   <li><a>clwMinAccessRole</a></li>
--   <li><a>clwShowDeleted</a></li>
--   <li><a>clwPayload</a></li>
--   <li><a>clwShowHidden</a></li>
--   <li><a>clwPageToken</a></li>
--   <li><a>clwMaxResults</a></li>
--   </ul>
calendarListWatch :: Channel -> CalendarListWatch

-- | Watch for changes to CalendarList resources.
--   
--   <i>See:</i> <a>calendarListWatch</a> smart constructor.
data CalendarListWatch

-- | 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.
clwSyncToken :: Lens' CalendarListWatch (Maybe Text)

-- | The minimum access role for the user in the returned entries.
--   Optional. The default is no restriction.
clwMinAccessRole :: Lens' CalendarListWatch (Maybe CalendarListWatchMinAccessRole)

-- | Whether to include deleted calendar list entries in the result.
--   Optional. The default is False.
clwShowDeleted :: Lens' CalendarListWatch (Maybe Bool)

-- | Multipart request metadata.
clwPayload :: Lens' CalendarListWatch Channel

-- | Whether to show hidden entries. Optional. The default is False.
clwShowHidden :: Lens' CalendarListWatch (Maybe Bool)

-- | Token specifying which result page to return. Optional.
clwPageToken :: Lens' CalendarListWatch (Maybe Text)

-- | 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.
clwMaxResults :: Lens' CalendarListWatch (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.CalendarList.Watch.CalendarListWatch
instance Data.Data.Data Network.Google.Resource.Calendar.CalendarList.Watch.CalendarListWatch
instance GHC.Show.Show Network.Google.Resource.Calendar.CalendarList.Watch.CalendarListWatch
instance GHC.Classes.Eq Network.Google.Resource.Calendar.CalendarList.Watch.CalendarListWatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.CalendarList.Watch.CalendarListWatch


-- | Clears a primary calendar. This operation deletes all events
--   associated with the primary calendar of an account.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.calendars.clear</tt>.
module Network.Google.Resource.Calendar.Calendars.Clear

-- | A resource alias for <tt>calendar.calendars.clear</tt> method which
--   the <a>CalendarsClear</a> request conforms to.
type CalendarsClearResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("clear" :> (QueryParam "alt" AltJSON :> Post '[JSON] ())))))

-- | Creates a value of <a>CalendarsClear</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccCalendarId</a></li>
--   </ul>
calendarsClear :: Text -> CalendarsClear

-- | Clears a primary calendar. This operation deletes all events
--   associated with the primary calendar of an account.
--   
--   <i>See:</i> <a>calendarsClear</a> smart constructor.
data CalendarsClear

-- | 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.
ccCalendarId :: Lens' CalendarsClear Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Calendars.Clear.CalendarsClear
instance Data.Data.Data Network.Google.Resource.Calendar.Calendars.Clear.CalendarsClear
instance GHC.Show.Show Network.Google.Resource.Calendar.Calendars.Clear.CalendarsClear
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Calendars.Clear.CalendarsClear
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Calendars.Clear.CalendarsClear


-- | Deletes a secondary calendar. Use calendars.clear for clearing all
--   events on primary calendars.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.calendars.delete</tt>.
module Network.Google.Resource.Calendar.Calendars.Delete

-- | A resource alias for <tt>calendar.calendars.delete</tt> method which
--   the <a>CalendarsDelete</a> request conforms to.
type CalendarsDeleteResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))

-- | Creates a value of <a>CalendarsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdCalendarId</a></li>
--   </ul>
calendarsDelete :: Text -> CalendarsDelete

-- | Deletes a secondary calendar. Use calendars.clear for clearing all
--   events on primary calendars.
--   
--   <i>See:</i> <a>calendarsDelete</a> smart constructor.
data CalendarsDelete

-- | 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.
cdCalendarId :: Lens' CalendarsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Calendars.Delete.CalendarsDelete
instance Data.Data.Data Network.Google.Resource.Calendar.Calendars.Delete.CalendarsDelete
instance GHC.Show.Show Network.Google.Resource.Calendar.Calendars.Delete.CalendarsDelete
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Calendars.Delete.CalendarsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Calendars.Delete.CalendarsDelete


-- | Returns metadata for a calendar.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.calendars.get</tt>.
module Network.Google.Resource.Calendar.Calendars.Get

-- | A resource alias for <tt>calendar.calendars.get</tt> method which the
--   <a>CalendarsGet</a> request conforms to.
type CalendarsGetResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Calendar))))

-- | Creates a value of <a>CalendarsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cgCalendarId</a></li>
--   </ul>
calendarsGet :: Text -> CalendarsGet

-- | Returns metadata for a calendar.
--   
--   <i>See:</i> <a>calendarsGet</a> smart constructor.
data CalendarsGet

-- | 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.
cgCalendarId :: Lens' CalendarsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Calendars.Get.CalendarsGet
instance Data.Data.Data Network.Google.Resource.Calendar.Calendars.Get.CalendarsGet
instance GHC.Show.Show Network.Google.Resource.Calendar.Calendars.Get.CalendarsGet
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Calendars.Get.CalendarsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Calendars.Get.CalendarsGet


-- | Creates a secondary calendar.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.calendars.insert</tt>.
module Network.Google.Resource.Calendar.Calendars.Insert

-- | A resource alias for <tt>calendar.calendars.insert</tt> method which
--   the <a>CalendarsInsert</a> request conforms to.
type CalendarsInsertResource = "calendar" :> ("v3" :> ("calendars" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Calendar :> Post '[JSON] Calendar))))

-- | Creates a value of <a>CalendarsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ciPayload</a></li>
--   </ul>
calendarsInsert :: Calendar -> CalendarsInsert

-- | Creates a secondary calendar.
--   
--   <i>See:</i> <a>calendarsInsert</a> smart constructor.
data CalendarsInsert

-- | Multipart request metadata.
ciPayload :: Lens' CalendarsInsert Calendar
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Calendars.Insert.CalendarsInsert
instance Data.Data.Data Network.Google.Resource.Calendar.Calendars.Insert.CalendarsInsert
instance GHC.Show.Show Network.Google.Resource.Calendar.Calendars.Insert.CalendarsInsert
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Calendars.Insert.CalendarsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Calendars.Insert.CalendarsInsert


-- | Updates metadata for a calendar. This method supports patch semantics.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.calendars.patch</tt>.
module Network.Google.Resource.Calendar.Calendars.Patch

-- | A resource alias for <tt>calendar.calendars.patch</tt> method which
--   the <a>CalendarsPatch</a> request conforms to.
type CalendarsPatchResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Calendar :> Patch '[JSON] Calendar)))))

-- | Creates a value of <a>CalendarsPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpCalendarId</a></li>
--   <li><a>cpPayload</a></li>
--   </ul>
calendarsPatch :: Text -> Calendar -> CalendarsPatch

-- | Updates metadata for a calendar. This method supports patch semantics.
--   
--   <i>See:</i> <a>calendarsPatch</a> smart constructor.
data CalendarsPatch

-- | 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.
cpCalendarId :: Lens' CalendarsPatch Text

-- | Multipart request metadata.
cpPayload :: Lens' CalendarsPatch Calendar
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Calendars.Patch.CalendarsPatch
instance Data.Data.Data Network.Google.Resource.Calendar.Calendars.Patch.CalendarsPatch
instance GHC.Show.Show Network.Google.Resource.Calendar.Calendars.Patch.CalendarsPatch
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Calendars.Patch.CalendarsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Calendars.Patch.CalendarsPatch


-- | Updates metadata for a calendar.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.calendars.update</tt>.
module Network.Google.Resource.Calendar.Calendars.Update

-- | A resource alias for <tt>calendar.calendars.update</tt> method which
--   the <a>CalendarsUpdate</a> request conforms to.
type CalendarsUpdateResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Calendar :> Put '[JSON] Calendar)))))

-- | Creates a value of <a>CalendarsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cuCalendarId</a></li>
--   <li><a>cuPayload</a></li>
--   </ul>
calendarsUpdate :: Text -> Calendar -> CalendarsUpdate

-- | Updates metadata for a calendar.
--   
--   <i>See:</i> <a>calendarsUpdate</a> smart constructor.
data CalendarsUpdate

-- | 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.
cuCalendarId :: Lens' CalendarsUpdate Text

-- | Multipart request metadata.
cuPayload :: Lens' CalendarsUpdate Calendar
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Calendars.Update.CalendarsUpdate
instance Data.Data.Data Network.Google.Resource.Calendar.Calendars.Update.CalendarsUpdate
instance GHC.Show.Show Network.Google.Resource.Calendar.Calendars.Update.CalendarsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Calendars.Update.CalendarsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Calendars.Update.CalendarsUpdate


-- | Stop watching resources through this channel
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.channels.stop</tt>.
module Network.Google.Resource.Calendar.Channels.Stop

-- | A resource alias for <tt>calendar.channels.stop</tt> method which the
--   <a>ChannelsStop</a> request conforms to.
type ChannelsStopResource = "calendar" :> ("v3" :> ("channels" :> ("stop" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Channel :> Post '[JSON] ())))))

-- | Creates a value of <a>ChannelsStop</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csPayload</a></li>
--   </ul>
channelsStop :: Channel -> ChannelsStop

-- | Stop watching resources through this channel
--   
--   <i>See:</i> <a>channelsStop</a> smart constructor.
data ChannelsStop

-- | Multipart request metadata.
csPayload :: Lens' ChannelsStop Channel
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Channels.Stop.ChannelsStop
instance Data.Data.Data Network.Google.Resource.Calendar.Channels.Stop.ChannelsStop
instance GHC.Show.Show Network.Google.Resource.Calendar.Channels.Stop.ChannelsStop
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Channels.Stop.ChannelsStop
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Channels.Stop.ChannelsStop


-- | Returns the color definitions for calendars and events.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.colors.get</tt>.
module Network.Google.Resource.Calendar.Colors.Get

-- | A resource alias for <tt>calendar.colors.get</tt> method which the
--   <a>ColorsGet</a> request conforms to.
type ColorsGetResource = "calendar" :> ("v3" :> ("colors" :> (QueryParam "alt" AltJSON :> Get '[JSON] Colors)))

-- | Creates a value of <a>ColorsGet</a> with the minimum fields required
--   to make a request.
colorsGet :: ColorsGet

-- | Returns the color definitions for calendars and events.
--   
--   <i>See:</i> <a>colorsGet</a> smart constructor.
data ColorsGet
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Colors.Get.ColorsGet
instance Data.Data.Data Network.Google.Resource.Calendar.Colors.Get.ColorsGet
instance GHC.Show.Show Network.Google.Resource.Calendar.Colors.Get.ColorsGet
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Colors.Get.ColorsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Colors.Get.ColorsGet


-- | Deletes an event.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.events.delete</tt>.
module Network.Google.Resource.Calendar.Events.Delete

-- | A resource alias for <tt>calendar.events.delete</tt> method which the
--   <a>EventsDelete</a> request conforms to.
type EventsDeleteResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("events" :> (Capture "eventId" Text :> (QueryParam "sendNotifications" Bool :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>EventsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>edCalendarId</a></li>
--   <li><a>edSendNotifications</a></li>
--   <li><a>edEventId</a></li>
--   </ul>
eventsDelete :: Text -> Text -> EventsDelete

-- | Deletes an event.
--   
--   <i>See:</i> <a>eventsDelete</a> smart constructor.
data EventsDelete

-- | 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.
edCalendarId :: Lens' EventsDelete Text

-- | Whether to send notifications about the deletion of the event.
--   Optional. The default is False.
edSendNotifications :: Lens' EventsDelete (Maybe Bool)

-- | Event identifier.
edEventId :: Lens' EventsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Events.Delete.EventsDelete
instance Data.Data.Data Network.Google.Resource.Calendar.Events.Delete.EventsDelete
instance GHC.Show.Show Network.Google.Resource.Calendar.Events.Delete.EventsDelete
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Events.Delete.EventsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Events.Delete.EventsDelete


-- | Returns an event.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.events.get</tt>.
module Network.Google.Resource.Calendar.Events.Get

-- | A resource alias for <tt>calendar.events.get</tt> method which the
--   <a>EventsGet</a> request conforms to.
type EventsGetResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("events" :> (Capture "eventId" Text :> (QueryParam "maxAttendees" (Textual Int32) :> (QueryParam "timeZone" Text :> (QueryParam "alwaysIncludeEmail" Bool :> (QueryParam "alt" AltJSON :> Get '[JSON] Event)))))))))

-- | Creates a value of <a>EventsGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>egCalendarId</a></li>
--   <li><a>egMaxAttendees</a></li>
--   <li><a>egTimeZone</a></li>
--   <li><a>egAlwaysIncludeEmail</a></li>
--   <li><a>egEventId</a></li>
--   </ul>
eventsGet :: Text -> Text -> EventsGet

-- | Returns an event.
--   
--   <i>See:</i> <a>eventsGet</a> smart constructor.
data EventsGet

-- | 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.
egCalendarId :: Lens' EventsGet Text

-- | 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.
egMaxAttendees :: Lens' EventsGet (Maybe Int32)

-- | Time zone used in the response. Optional. The default is the time zone
--   of the calendar.
egTimeZone :: Lens' EventsGet (Maybe Text)

-- | 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.
egAlwaysIncludeEmail :: Lens' EventsGet (Maybe Bool)

-- | Event identifier.
egEventId :: Lens' EventsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Events.Get.EventsGet
instance Data.Data.Data Network.Google.Resource.Calendar.Events.Get.EventsGet
instance GHC.Show.Show Network.Google.Resource.Calendar.Events.Get.EventsGet
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Events.Get.EventsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Events.Get.EventsGet


-- | Imports an event. This operation is used to add a private copy of an
--   existing event to a calendar.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.events.import</tt>.
module Network.Google.Resource.Calendar.Events.Import

-- | A resource alias for <tt>calendar.events.import</tt> method which the
--   <a>EventsImport</a> request conforms to.
type EventsImportResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("events" :> ("import" :> (QueryParam "supportsAttachments" Bool :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Event :> Post '[JSON] Event))))))))

-- | Creates a value of <a>EventsImport</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eiCalendarId</a></li>
--   <li><a>eiPayload</a></li>
--   <li><a>eiSupportsAttachments</a></li>
--   </ul>
eventsImport :: Text -> Event -> EventsImport

-- | Imports an event. This operation is used to add a private copy of an
--   existing event to a calendar.
--   
--   <i>See:</i> <a>eventsImport</a> smart constructor.
data EventsImport

-- | 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.
eiCalendarId :: Lens' EventsImport Text

-- | Multipart request metadata.
eiPayload :: Lens' EventsImport Event

-- | Whether API client performing operation supports event attachments.
--   Optional. The default is False.
eiSupportsAttachments :: Lens' EventsImport (Maybe Bool)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Events.Import.EventsImport
instance Data.Data.Data Network.Google.Resource.Calendar.Events.Import.EventsImport
instance GHC.Show.Show Network.Google.Resource.Calendar.Events.Import.EventsImport
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Events.Import.EventsImport
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Events.Import.EventsImport


-- | Creates an event.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.events.insert</tt>.
module Network.Google.Resource.Calendar.Events.Insert

-- | A resource alias for <tt>calendar.events.insert</tt> method which the
--   <a>EventsInsert</a> request conforms to.
type EventsInsertResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("events" :> (QueryParam "maxAttendees" (Textual Int32) :> (QueryParam "sendNotifications" Bool :> (QueryParam "supportsAttachments" Bool :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Event :> Post '[JSON] Event)))))))))

-- | Creates a value of <a>EventsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eveCalendarId</a></li>
--   <li><a>evePayload</a></li>
--   <li><a>eveMaxAttendees</a></li>
--   <li><a>eveSendNotifications</a></li>
--   <li><a>eveSupportsAttachments</a></li>
--   </ul>
eventsInsert :: Text -> Event -> EventsInsert

-- | Creates an event.
--   
--   <i>See:</i> <a>eventsInsert</a> smart constructor.
data EventsInsert

-- | 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.
eveCalendarId :: Lens' EventsInsert Text

-- | Multipart request metadata.
evePayload :: Lens' EventsInsert Event

-- | 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.
eveMaxAttendees :: Lens' EventsInsert (Maybe Int32)

-- | Whether to send notifications about the creation of the new event.
--   Optional. The default is False.
eveSendNotifications :: Lens' EventsInsert (Maybe Bool)

-- | Whether API client performing operation supports event attachments.
--   Optional. The default is False.
eveSupportsAttachments :: Lens' EventsInsert (Maybe Bool)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Events.Insert.EventsInsert
instance Data.Data.Data Network.Google.Resource.Calendar.Events.Insert.EventsInsert
instance GHC.Show.Show Network.Google.Resource.Calendar.Events.Insert.EventsInsert
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Events.Insert.EventsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Events.Insert.EventsInsert


-- | Returns instances of the specified recurring event.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.events.instances</tt>.
module Network.Google.Resource.Calendar.Events.Instances

-- | A resource alias for <tt>calendar.events.instances</tt> method which
--   the <a>EventsInstances</a> request conforms to.
type EventsInstancesResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("events" :> (Capture "eventId" Text :> ("instances" :> (QueryParam "timeMin" DateTime' :> (QueryParam "showDeleted" Bool :> (QueryParam "originalStart" Text :> (QueryParam "maxAttendees" (Textual Int32) :> (QueryParam "pageToken" Text :> (QueryParam "timeZone" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alwaysIncludeEmail" Bool :> (QueryParam "timeMax" DateTime' :> (QueryParam "alt" AltJSON :> Get '[JSON] Events))))))))))))))))

-- | Creates a value of <a>EventsInstances</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eCalendarId</a></li>
--   <li><a>eTimeMin</a></li>
--   <li><a>eShowDeleted</a></li>
--   <li><a>eOriginalStart</a></li>
--   <li><a>eMaxAttendees</a></li>
--   <li><a>ePageToken</a></li>
--   <li><a>eTimeZone</a></li>
--   <li><a>eMaxResults</a></li>
--   <li><a>eAlwaysIncludeEmail</a></li>
--   <li><a>eTimeMax</a></li>
--   <li><a>eEventId</a></li>
--   </ul>
eventsInstances :: Text -> Text -> EventsInstances

-- | Returns instances of the specified recurring event.
--   
--   <i>See:</i> <a>eventsInstances</a> smart constructor.
data EventsInstances

-- | 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.
eCalendarId :: Lens' EventsInstances Text

-- | 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.
eTimeMin :: Lens' EventsInstances (Maybe UTCTime)

-- | 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.
eShowDeleted :: Lens' EventsInstances (Maybe Bool)

-- | The original start time of the instance in the result. Optional.
eOriginalStart :: Lens' EventsInstances (Maybe Text)

-- | 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.
eMaxAttendees :: Lens' EventsInstances (Maybe Int32)

-- | Token specifying which result page to return. Optional.
ePageToken :: Lens' EventsInstances (Maybe Text)

-- | Time zone used in the response. Optional. The default is the time zone
--   of the calendar.
eTimeZone :: Lens' EventsInstances (Maybe Text)

-- | 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.
eMaxResults :: Lens' EventsInstances (Maybe Int32)

-- | 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.
eAlwaysIncludeEmail :: Lens' EventsInstances (Maybe Bool)

-- | 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.
eTimeMax :: Lens' EventsInstances (Maybe UTCTime)

-- | Recurring event identifier.
eEventId :: Lens' EventsInstances Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Events.Instances.EventsInstances
instance Data.Data.Data Network.Google.Resource.Calendar.Events.Instances.EventsInstances
instance GHC.Show.Show Network.Google.Resource.Calendar.Events.Instances.EventsInstances
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Events.Instances.EventsInstances
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Events.Instances.EventsInstances


-- | Returns events on the specified calendar.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.events.list</tt>.
module Network.Google.Resource.Calendar.Events.List

-- | A resource alias for <tt>calendar.events.list</tt> method which the
--   <a>EventsList</a> request conforms to.
type EventsListResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("events" :> (QueryParam "syncToken" Text :> (QueryParam "timeMin" DateTime' :> (QueryParam "orderBy" EventsListOrderBy :> (QueryParam "singleEvents" Bool :> (QueryParams "privateExtendedProperty" Text :> (QueryParam "showDeleted" Bool :> (QueryParam "q" Text :> (QueryParams "sharedExtendedProperty" Text :> (QueryParam "maxAttendees" (Textual Int32) :> (QueryParam "iCalUID" Text :> (QueryParam "updatedMin" DateTime' :> (QueryParam "pageToken" Text :> (QueryParam "timeZone" Text :> (QueryParam "showHiddenInvitations" Bool :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alwaysIncludeEmail" Bool :> (QueryParam "timeMax" DateTime' :> (QueryParam "alt" AltJSON :> Get '[JSON] Events))))))))))))))))))))))

-- | Creates a value of <a>EventsList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>elSyncToken</a></li>
--   <li><a>elCalendarId</a></li>
--   <li><a>elTimeMin</a></li>
--   <li><a>elOrderBy</a></li>
--   <li><a>elSingleEvents</a></li>
--   <li><a>elPrivateExtendedProperty</a></li>
--   <li><a>elShowDeleted</a></li>
--   <li><a>elQ</a></li>
--   <li><a>elSharedExtendedProperty</a></li>
--   <li><a>elMaxAttendees</a></li>
--   <li><a>elICalUId</a></li>
--   <li><a>elUpdatedMin</a></li>
--   <li><a>elPageToken</a></li>
--   <li><a>elTimeZone</a></li>
--   <li><a>elShowHiddenInvitations</a></li>
--   <li><a>elMaxResults</a></li>
--   <li><a>elAlwaysIncludeEmail</a></li>
--   <li><a>elTimeMax</a></li>
--   </ul>
eventsList :: Text -> EventsList

-- | Returns events on the specified calendar.
--   
--   <i>See:</i> <a>eventsList</a> smart constructor.
data EventsList

-- | 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.
elSyncToken :: Lens' EventsList (Maybe 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.
elCalendarId :: Lens' EventsList Text

-- | 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.
elTimeMin :: Lens' EventsList (Maybe UTCTime)

-- | The order of the events returned in the result. Optional. The default
--   is an unspecified, stable order.
elOrderBy :: Lens' EventsList (Maybe EventsListOrderBy)

-- | 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.
elSingleEvents :: Lens' EventsList (Maybe Bool)

-- | 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.
elPrivateExtendedProperty :: Lens' EventsList [Text]

-- | 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.
elShowDeleted :: Lens' EventsList (Maybe Bool)

-- | Free text search terms to find events that match these terms in any
--   field, except for extended properties. Optional.
elQ :: Lens' EventsList (Maybe Text)

-- | 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.
elSharedExtendedProperty :: Lens' EventsList [Text]

-- | 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.
elMaxAttendees :: Lens' EventsList (Maybe Int32)

-- | Specifies event ID in the iCalendar format to be included in the
--   response. Optional.
elICalUId :: Lens' EventsList (Maybe Text)

-- | 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.
elUpdatedMin :: Lens' EventsList (Maybe UTCTime)

-- | Token specifying which result page to return. Optional.
elPageToken :: Lens' EventsList (Maybe Text)

-- | Time zone used in the response. Optional. The default is the time zone
--   of the calendar.
elTimeZone :: Lens' EventsList (Maybe Text)

-- | Whether to include hidden invitations in the result. Optional. The
--   default is False.
elShowHiddenInvitations :: Lens' EventsList (Maybe Bool)

-- | 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.
elMaxResults :: Lens' EventsList Int32

-- | 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.
elAlwaysIncludeEmail :: Lens' EventsList (Maybe Bool)

-- | 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.
elTimeMax :: Lens' EventsList (Maybe UTCTime)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Events.List.EventsList
instance Data.Data.Data Network.Google.Resource.Calendar.Events.List.EventsList
instance GHC.Show.Show Network.Google.Resource.Calendar.Events.List.EventsList
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Events.List.EventsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Events.List.EventsList


-- | Moves an event to another calendar, i.e. changes an event's organizer.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.events.move</tt>.
module Network.Google.Resource.Calendar.Events.Move

-- | A resource alias for <tt>calendar.events.move</tt> method which the
--   <a>EventsMove</a> request conforms to.
type EventsMoveResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("events" :> (Capture "eventId" Text :> ("move" :> (QueryParam "destination" Text :> (QueryParam "sendNotifications" Bool :> (QueryParam "alt" AltJSON :> Post '[JSON] Event)))))))))

-- | Creates a value of <a>EventsMove</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>emDestination</a></li>
--   <li><a>emCalendarId</a></li>
--   <li><a>emSendNotifications</a></li>
--   <li><a>emEventId</a></li>
--   </ul>
eventsMove :: Text -> Text -> Text -> EventsMove

-- | Moves an event to another calendar, i.e. changes an event's organizer.
--   
--   <i>See:</i> <a>eventsMove</a> smart constructor.
data EventsMove

-- | Calendar identifier of the target calendar where the event is to be
--   moved to.
emDestination :: Lens' EventsMove Text

-- | Calendar identifier of the source calendar where the event currently
--   is on.
emCalendarId :: Lens' EventsMove Text

-- | Whether to send notifications about the change of the event's
--   organizer. Optional. The default is False.
emSendNotifications :: Lens' EventsMove (Maybe Bool)

-- | Event identifier.
emEventId :: Lens' EventsMove Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Events.Move.EventsMove
instance Data.Data.Data Network.Google.Resource.Calendar.Events.Move.EventsMove
instance GHC.Show.Show Network.Google.Resource.Calendar.Events.Move.EventsMove
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Events.Move.EventsMove
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Events.Move.EventsMove


-- | Updates an event. This method supports patch semantics.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.events.patch</tt>.
module Network.Google.Resource.Calendar.Events.Patch

-- | A resource alias for <tt>calendar.events.patch</tt> method which the
--   <a>EventsPatch</a> request conforms to.
type EventsPatchResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("events" :> (Capture "eventId" Text :> (QueryParam "maxAttendees" (Textual Int32) :> (QueryParam "sendNotifications" Bool :> (QueryParam "supportsAttachments" Bool :> (QueryParam "alwaysIncludeEmail" Bool :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Event :> Patch '[JSON] Event)))))))))))

-- | Creates a value of <a>EventsPatch</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>epCalendarId</a></li>
--   <li><a>epPayload</a></li>
--   <li><a>epMaxAttendees</a></li>
--   <li><a>epSendNotifications</a></li>
--   <li><a>epSupportsAttachments</a></li>
--   <li><a>epAlwaysIncludeEmail</a></li>
--   <li><a>epEventId</a></li>
--   </ul>
eventsPatch :: Text -> Event -> Text -> EventsPatch

-- | Updates an event. This method supports patch semantics.
--   
--   <i>See:</i> <a>eventsPatch</a> smart constructor.
data EventsPatch

-- | 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.
epCalendarId :: Lens' EventsPatch Text

-- | Multipart request metadata.
epPayload :: Lens' EventsPatch Event

-- | 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.
epMaxAttendees :: Lens' EventsPatch (Maybe Int32)

-- | Whether to send notifications about the event update (e.g. attendee's
--   responses, title changes, etc.). Optional. The default is False.
epSendNotifications :: Lens' EventsPatch (Maybe Bool)

-- | Whether API client performing operation supports event attachments.
--   Optional. The default is False.
epSupportsAttachments :: Lens' EventsPatch (Maybe Bool)

-- | 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.
epAlwaysIncludeEmail :: Lens' EventsPatch (Maybe Bool)

-- | Event identifier.
epEventId :: Lens' EventsPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Events.Patch.EventsPatch
instance Data.Data.Data Network.Google.Resource.Calendar.Events.Patch.EventsPatch
instance GHC.Show.Show Network.Google.Resource.Calendar.Events.Patch.EventsPatch
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Events.Patch.EventsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Events.Patch.EventsPatch


-- | Creates an event based on a simple text string.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.events.quickAdd</tt>.
module Network.Google.Resource.Calendar.Events.QuickAdd

-- | A resource alias for <tt>calendar.events.quickAdd</tt> method which
--   the <a>EventsQuickAdd</a> request conforms to.
type EventsQuickAddResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("events" :> ("quickAdd" :> (QueryParam "text" Text :> (QueryParam "sendNotifications" Bool :> (QueryParam "alt" AltJSON :> Post '[JSON] Event))))))))

-- | Creates a value of <a>EventsQuickAdd</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eqaCalendarId</a></li>
--   <li><a>eqaText</a></li>
--   <li><a>eqaSendNotifications</a></li>
--   </ul>
eventsQuickAdd :: Text -> Text -> EventsQuickAdd

-- | Creates an event based on a simple text string.
--   
--   <i>See:</i> <a>eventsQuickAdd</a> smart constructor.
data EventsQuickAdd

-- | 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.
eqaCalendarId :: Lens' EventsQuickAdd Text

-- | The text describing the event to be created.
eqaText :: Lens' EventsQuickAdd Text

-- | Whether to send notifications about the creation of the event.
--   Optional. The default is False.
eqaSendNotifications :: Lens' EventsQuickAdd (Maybe Bool)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Events.QuickAdd.EventsQuickAdd
instance Data.Data.Data Network.Google.Resource.Calendar.Events.QuickAdd.EventsQuickAdd
instance GHC.Show.Show Network.Google.Resource.Calendar.Events.QuickAdd.EventsQuickAdd
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Events.QuickAdd.EventsQuickAdd
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Events.QuickAdd.EventsQuickAdd


-- | Updates an event.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.events.update</tt>.
module Network.Google.Resource.Calendar.Events.Update

-- | A resource alias for <tt>calendar.events.update</tt> method which the
--   <a>EventsUpdate</a> request conforms to.
type EventsUpdateResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("events" :> (Capture "eventId" Text :> (QueryParam "maxAttendees" (Textual Int32) :> (QueryParam "sendNotifications" Bool :> (QueryParam "supportsAttachments" Bool :> (QueryParam "alwaysIncludeEmail" Bool :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Event :> Put '[JSON] Event)))))))))))

-- | Creates a value of <a>EventsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>euCalendarId</a></li>
--   <li><a>euPayload</a></li>
--   <li><a>euMaxAttendees</a></li>
--   <li><a>euSendNotifications</a></li>
--   <li><a>euSupportsAttachments</a></li>
--   <li><a>euAlwaysIncludeEmail</a></li>
--   <li><a>euEventId</a></li>
--   </ul>
eventsUpdate :: Text -> Event -> Text -> EventsUpdate

-- | Updates an event.
--   
--   <i>See:</i> <a>eventsUpdate</a> smart constructor.
data EventsUpdate

-- | 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.
euCalendarId :: Lens' EventsUpdate Text

-- | Multipart request metadata.
euPayload :: Lens' EventsUpdate Event

-- | 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.
euMaxAttendees :: Lens' EventsUpdate (Maybe Int32)

-- | Whether to send notifications about the event update (e.g. attendee's
--   responses, title changes, etc.). Optional. The default is False.
euSendNotifications :: Lens' EventsUpdate (Maybe Bool)

-- | Whether API client performing operation supports event attachments.
--   Optional. The default is False.
euSupportsAttachments :: Lens' EventsUpdate (Maybe Bool)

-- | 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.
euAlwaysIncludeEmail :: Lens' EventsUpdate (Maybe Bool)

-- | Event identifier.
euEventId :: Lens' EventsUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Events.Update.EventsUpdate
instance Data.Data.Data Network.Google.Resource.Calendar.Events.Update.EventsUpdate
instance GHC.Show.Show Network.Google.Resource.Calendar.Events.Update.EventsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Events.Update.EventsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Events.Update.EventsUpdate


-- | Watch for changes to Events resources.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.events.watch</tt>.
module Network.Google.Resource.Calendar.Events.Watch

-- | A resource alias for <tt>calendar.events.watch</tt> method which the
--   <a>EventsWatch</a> request conforms to.
type EventsWatchResource = "calendar" :> ("v3" :> ("calendars" :> (Capture "calendarId" Text :> ("events" :> ("watch" :> (QueryParam "syncToken" Text :> (QueryParam "timeMin" DateTime' :> (QueryParam "orderBy" EventsWatchOrderBy :> (QueryParam "singleEvents" Bool :> (QueryParams "privateExtendedProperty" Text :> (QueryParam "showDeleted" Bool :> (QueryParam "q" Text :> (QueryParams "sharedExtendedProperty" Text :> (QueryParam "maxAttendees" (Textual Int32) :> (QueryParam "iCalUID" Text :> (QueryParam "updatedMin" DateTime' :> (QueryParam "pageToken" Text :> (QueryParam "timeZone" Text :> (QueryParam "showHiddenInvitations" Bool :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alwaysIncludeEmail" Bool :> (QueryParam "timeMax" DateTime' :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Channel :> Post '[JSON] Channel))))))))))))))))))))))))

-- | Creates a value of <a>EventsWatch</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ewSyncToken</a></li>
--   <li><a>ewCalendarId</a></li>
--   <li><a>ewTimeMin</a></li>
--   <li><a>ewOrderBy</a></li>
--   <li><a>ewSingleEvents</a></li>
--   <li><a>ewPrivateExtendedProperty</a></li>
--   <li><a>ewShowDeleted</a></li>
--   <li><a>ewPayload</a></li>
--   <li><a>ewQ</a></li>
--   <li><a>ewSharedExtendedProperty</a></li>
--   <li><a>ewMaxAttendees</a></li>
--   <li><a>ewICalUId</a></li>
--   <li><a>ewUpdatedMin</a></li>
--   <li><a>ewPageToken</a></li>
--   <li><a>ewTimeZone</a></li>
--   <li><a>ewShowHiddenInvitations</a></li>
--   <li><a>ewMaxResults</a></li>
--   <li><a>ewAlwaysIncludeEmail</a></li>
--   <li><a>ewTimeMax</a></li>
--   </ul>
eventsWatch :: Text -> Channel -> EventsWatch

-- | Watch for changes to Events resources.
--   
--   <i>See:</i> <a>eventsWatch</a> smart constructor.
data EventsWatch

-- | 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.
ewSyncToken :: Lens' EventsWatch (Maybe 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.
ewCalendarId :: Lens' EventsWatch Text

-- | 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.
ewTimeMin :: Lens' EventsWatch (Maybe UTCTime)

-- | The order of the events returned in the result. Optional. The default
--   is an unspecified, stable order.
ewOrderBy :: Lens' EventsWatch (Maybe EventsWatchOrderBy)

-- | 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.
ewSingleEvents :: Lens' EventsWatch (Maybe Bool)

-- | 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.
ewPrivateExtendedProperty :: Lens' EventsWatch [Text]

-- | 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.
ewShowDeleted :: Lens' EventsWatch (Maybe Bool)

-- | Multipart request metadata.
ewPayload :: Lens' EventsWatch Channel

-- | Free text search terms to find events that match these terms in any
--   field, except for extended properties. Optional.
ewQ :: Lens' EventsWatch (Maybe Text)

-- | 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.
ewSharedExtendedProperty :: Lens' EventsWatch [Text]

-- | 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.
ewMaxAttendees :: Lens' EventsWatch (Maybe Int32)

-- | Specifies event ID in the iCalendar format to be included in the
--   response. Optional.
ewICalUId :: Lens' EventsWatch (Maybe Text)

-- | 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.
ewUpdatedMin :: Lens' EventsWatch (Maybe UTCTime)

-- | Token specifying which result page to return. Optional.
ewPageToken :: Lens' EventsWatch (Maybe Text)

-- | Time zone used in the response. Optional. The default is the time zone
--   of the calendar.
ewTimeZone :: Lens' EventsWatch (Maybe Text)

-- | Whether to include hidden invitations in the result. Optional. The
--   default is False.
ewShowHiddenInvitations :: Lens' EventsWatch (Maybe Bool)

-- | 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.
ewMaxResults :: Lens' EventsWatch Int32

-- | 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.
ewAlwaysIncludeEmail :: Lens' EventsWatch (Maybe Bool)

-- | 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.
ewTimeMax :: Lens' EventsWatch (Maybe UTCTime)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Events.Watch.EventsWatch
instance Data.Data.Data Network.Google.Resource.Calendar.Events.Watch.EventsWatch
instance GHC.Show.Show Network.Google.Resource.Calendar.Events.Watch.EventsWatch
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Events.Watch.EventsWatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Events.Watch.EventsWatch


-- | Returns free/busy information for a set of calendars.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.freebusy.query</tt>.
module Network.Google.Resource.Calendar.FreeBusy.Query

-- | A resource alias for <tt>calendar.freebusy.query</tt> method which the
--   <a>FreeBusyQuery</a> request conforms to.
type FreeBusyQueryResource = "calendar" :> ("v3" :> ("freeBusy" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] FreeBusyRequest :> Post '[JSON] FreeBusyResponse))))

-- | Creates a value of <a>FreeBusyQuery</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbqPayload</a></li>
--   </ul>
freeBusyQuery :: FreeBusyRequest -> FreeBusyQuery

-- | Returns free/busy information for a set of calendars.
--   
--   <i>See:</i> <a>freeBusyQuery</a> smart constructor.
data FreeBusyQuery

-- | Multipart request metadata.
fbqPayload :: Lens' FreeBusyQuery FreeBusyRequest
instance GHC.Generics.Generic Network.Google.Resource.Calendar.FreeBusy.Query.FreeBusyQuery
instance Data.Data.Data Network.Google.Resource.Calendar.FreeBusy.Query.FreeBusyQuery
instance GHC.Show.Show Network.Google.Resource.Calendar.FreeBusy.Query.FreeBusyQuery
instance GHC.Classes.Eq Network.Google.Resource.Calendar.FreeBusy.Query.FreeBusyQuery
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.FreeBusy.Query.FreeBusyQuery


-- | Returns a single user setting.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.settings.get</tt>.
module Network.Google.Resource.Calendar.Settings.Get

-- | A resource alias for <tt>calendar.settings.get</tt> method which the
--   <a>SettingsGet</a> request conforms to.
type SettingsGetResource = "calendar" :> ("v3" :> ("users" :> ("me" :> ("settings" :> (Capture "setting" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Setting))))))

-- | Creates a value of <a>SettingsGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sgSetting</a></li>
--   </ul>
settingsGet :: Text -> SettingsGet

-- | Returns a single user setting.
--   
--   <i>See:</i> <a>settingsGet</a> smart constructor.
data SettingsGet

-- | The id of the user setting.
sgSetting :: Lens' SettingsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Settings.Get.SettingsGet
instance Data.Data.Data Network.Google.Resource.Calendar.Settings.Get.SettingsGet
instance GHC.Show.Show Network.Google.Resource.Calendar.Settings.Get.SettingsGet
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Settings.Get.SettingsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Settings.Get.SettingsGet


-- | Returns all user settings for the authenticated user.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.settings.list</tt>.
module Network.Google.Resource.Calendar.Settings.List

-- | A resource alias for <tt>calendar.settings.list</tt> method which the
--   <a>SettingsList</a> request conforms to.
type SettingsListResource = "calendar" :> ("v3" :> ("users" :> ("me" :> ("settings" :> (QueryParam "syncToken" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] Settings))))))))

-- | Creates a value of <a>SettingsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>slSyncToken</a></li>
--   <li><a>slPageToken</a></li>
--   <li><a>slMaxResults</a></li>
--   </ul>
settingsList :: SettingsList

-- | Returns all user settings for the authenticated user.
--   
--   <i>See:</i> <a>settingsList</a> smart constructor.
data SettingsList

-- | 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.
slSyncToken :: Lens' SettingsList (Maybe Text)

-- | Token specifying which result page to return. Optional.
slPageToken :: Lens' SettingsList (Maybe Text)

-- | 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.
slMaxResults :: Lens' SettingsList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Settings.List.SettingsList
instance Data.Data.Data Network.Google.Resource.Calendar.Settings.List.SettingsList
instance GHC.Show.Show Network.Google.Resource.Calendar.Settings.List.SettingsList
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Settings.List.SettingsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Settings.List.SettingsList


-- | Watch for changes to Settings resources.
--   
--   <i>See:</i> <a>Calendar API Reference</a> for
--   <tt>calendar.settings.watch</tt>.
module Network.Google.Resource.Calendar.Settings.Watch

-- | A resource alias for <tt>calendar.settings.watch</tt> method which the
--   <a>SettingsWatch</a> request conforms to.
type SettingsWatchResource = "calendar" :> ("v3" :> ("users" :> ("me" :> ("settings" :> ("watch" :> (QueryParam "syncToken" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Channel :> Post '[JSON] Channel))))))))))

-- | Creates a value of <a>SettingsWatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>swSyncToken</a></li>
--   <li><a>swPayload</a></li>
--   <li><a>swPageToken</a></li>
--   <li><a>swMaxResults</a></li>
--   </ul>
settingsWatch :: Channel -> SettingsWatch

-- | Watch for changes to Settings resources.
--   
--   <i>See:</i> <a>settingsWatch</a> smart constructor.
data SettingsWatch

-- | 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.
swSyncToken :: Lens' SettingsWatch (Maybe Text)

-- | Multipart request metadata.
swPayload :: Lens' SettingsWatch Channel

-- | Token specifying which result page to return. Optional.
swPageToken :: Lens' SettingsWatch (Maybe Text)

-- | 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.
swMaxResults :: Lens' SettingsWatch (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Calendar.Settings.Watch.SettingsWatch
instance Data.Data.Data Network.Google.Resource.Calendar.Settings.Watch.SettingsWatch
instance GHC.Show.Show Network.Google.Resource.Calendar.Settings.Watch.SettingsWatch
instance GHC.Classes.Eq Network.Google.Resource.Calendar.Settings.Watch.SettingsWatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Calendar.Settings.Watch.SettingsWatch


-- | Manipulates events and other calendar data.
--   
--   <i>See:</i> <a>Calendar API Reference</a>
module Network.Google.AppsCalendar

-- | Default request referring to version <tt>v3</tt> of the Calendar API.
--   This contains the host and root path used as a starting point for
--   constructing service requests.
appsCalendarService :: ServiceConfig

-- | Manage your calendars
calendarScope :: Proxy '["https://www.googleapis.com/auth/calendar"]

-- | View your calendars
calendarReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/calendar.readonly"]

-- | Represents the entirety of the methods and resources available for the
--   Calendar API service.
type AppsCalendarAPI = SettingsListResource :<|> (SettingsGetResource :<|> (SettingsWatchResource :<|> (ChannelsStopResource :<|> (CalendarsInsertResource :<|> (CalendarsPatchResource :<|> (CalendarsGetResource :<|> (CalendarsClearResource :<|> (CalendarsDeleteResource :<|> (CalendarsUpdateResource :<|> (EventsQuickAddResource :<|> (EventsInsertResource :<|> (EventsListResource :<|> (EventsPatchResource :<|> (EventsGetResource :<|> (EventsInstancesResource :<|> (EventsImportResource :<|> (EventsDeleteResource :<|> (EventsUpdateResource :<|> (EventsMoveResource :<|> (EventsWatchResource :<|> (CalendarListInsertResource :<|> (CalendarListListResource :<|> (CalendarListPatchResource :<|> (CalendarListGetResource :<|> (CalendarListDeleteResource :<|> (CalendarListUpdateResource :<|> (CalendarListWatchResource :<|> (ACLInsertResource :<|> (ACLListResource :<|> (ACLPatchResource :<|> (ACLGetResource :<|> (ACLDeleteResource :<|> (ACLUpdateResource :<|> (ACLWatchResource :<|> (ColorsGetResource :<|> FreeBusyQueryResource)))))))))))))))))))))))))))))))))))
data CalendarListEntry

-- | Creates a value of <a>CalendarListEntry</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cleSummary</a></li>
--   <li><a>cleEtag</a></li>
--   <li><a>cleLocation</a></li>
--   <li><a>cleKind</a></li>
--   <li><a>cleNotificationSettings</a></li>
--   <li><a>cleBackgRoundColor</a></li>
--   <li><a>cleForegRoundColor</a></li>
--   <li><a>cleDefaultReminders</a></li>
--   <li><a>cleSelected</a></li>
--   <li><a>clePrimary</a></li>
--   <li><a>cleHidden</a></li>
--   <li><a>cleId</a></li>
--   <li><a>cleDeleted</a></li>
--   <li><a>cleAccessRole</a></li>
--   <li><a>cleSummaryOverride</a></li>
--   <li><a>cleColorId</a></li>
--   <li><a>cleTimeZone</a></li>
--   <li><a>cleDescription</a></li>
--   </ul>
calendarListEntry :: CalendarListEntry

-- | Title of the calendar. Read-only.
cleSummary :: Lens' CalendarListEntry (Maybe Text)

-- | ETag of the resource.
cleEtag :: Lens' CalendarListEntry (Maybe Text)

-- | Geographic location of the calendar as free-form text. Optional.
--   Read-only.
cleLocation :: Lens' CalendarListEntry (Maybe Text)

-- | Type of the resource ("calendar#calendarListEntry").
cleKind :: Lens' CalendarListEntry Text

-- | The notifications that the authenticated user is receiving for this
--   calendar.
cleNotificationSettings :: Lens' CalendarListEntry (Maybe CalendarListEntryNotificationSettings)

-- | 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.
cleBackgRoundColor :: Lens' CalendarListEntry (Maybe Text)

-- | 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.
cleForegRoundColor :: Lens' CalendarListEntry (Maybe Text)

-- | The default reminders that the authenticated user has for this
--   calendar.
cleDefaultReminders :: Lens' CalendarListEntry [EventReminder]

-- | Whether the calendar content shows up in the calendar UI. Optional.
--   The default is False.
cleSelected :: Lens' CalendarListEntry Bool

-- | Whether the calendar is the primary calendar of the authenticated
--   user. Read-only. Optional. The default is False.
clePrimary :: Lens' CalendarListEntry Bool

-- | Whether the calendar has been hidden from the list. Optional. The
--   default is False.
cleHidden :: Lens' CalendarListEntry Bool

-- | Identifier of the calendar.
cleId :: Lens' CalendarListEntry (Maybe Text)

-- | Whether this calendar list entry has been deleted from the calendar
--   list. Read-only. Optional. The default is False.
cleDeleted :: Lens' CalendarListEntry Bool

-- | 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.
cleAccessRole :: Lens' CalendarListEntry (Maybe Text)

-- | The summary that the authenticated user has set for this calendar.
--   Optional.
cleSummaryOverride :: Lens' CalendarListEntry (Maybe Text)

-- | 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.
cleColorId :: Lens' CalendarListEntry (Maybe Text)

-- | The time zone of the calendar. Optional. Read-only.
cleTimeZone :: Lens' CalendarListEntry (Maybe Text)

-- | Description of the calendar. Optional. Read-only.
cleDescription :: Lens' CalendarListEntry (Maybe Text)
data Event

-- | Creates a value of <a>Event</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eSummary</a></li>
--   <li><a>eOriginalStartTime</a></li>
--   <li><a>eCreator</a></li>
--   <li><a>eStatus</a></li>
--   <li><a>eGuestsCanModify</a></li>
--   <li><a>eEtag</a></li>
--   <li><a>eAttachments</a></li>
--   <li><a>eLocked</a></li>
--   <li><a>eLocation</a></li>
--   <li><a>eAttendees</a></li>
--   <li><a>eReminders</a></li>
--   <li><a>eKind</a></li>
--   <li><a>eCreated</a></li>
--   <li><a>eTransparency</a></li>
--   <li><a>eRecurringEventId</a></li>
--   <li><a>eStart</a></li>
--   <li><a>ePrivateCopy</a></li>
--   <li><a>eEndTimeUnspecified</a></li>
--   <li><a>eExtendedProperties</a></li>
--   <li><a>eVisibility</a></li>
--   <li><a>eGuestsCanInviteOthers</a></li>
--   <li><a>eRecurrence</a></li>
--   <li><a>eGadget</a></li>
--   <li><a>eSequence</a></li>
--   <li><a>eICalUId</a></li>
--   <li><a>eEnd</a></li>
--   <li><a>eAttendeesOmitted</a></li>
--   <li><a>eSource</a></li>
--   <li><a>eId</a></li>
--   <li><a>eHTMLLink</a></li>
--   <li><a>eUpdated</a></li>
--   <li><a>eColorId</a></li>
--   <li><a>eAnyoneCanAddSelf</a></li>
--   <li><a>eGuestsCanSeeOtherGuests</a></li>
--   <li><a>eHangoutLink</a></li>
--   <li><a>eDescription</a></li>
--   <li><a>eOrganizer</a></li>
--   </ul>
event :: Event

-- | Title of the event.
eSummary :: Lens' Event (Maybe Text)

-- | 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.
eOriginalStartTime :: Lens' Event (Maybe EventDateTime)

-- | The creator of the event. Read-only.
eCreator :: Lens' Event (Maybe EventCreator)

-- | 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.
eStatus :: Lens' Event (Maybe Text)

-- | Whether attendees other than the organizer can modify the event.
--   Optional. The default is False.
eGuestsCanModify :: Lens' Event Bool

-- | ETag of the resource.
eEtag :: Lens' Event (Maybe Text)

-- | 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,
eAttachments :: Lens' Event [EventAttachment]

-- | 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.
eLocked :: Lens' Event Bool

-- | Geographic location of the event as free-form text. Optional.
eLocation :: Lens' Event (Maybe Text)

-- | The attendees of the event. See the Events with attendees guide for
--   more information on scheduling events with other calendar users.
eAttendees :: Lens' Event [EventAttendee]

-- | Information about the event's reminders for the authenticated user.
eReminders :: Lens' Event (Maybe EventReminders)

-- | Type of the resource ("calendar#event").
eKind :: Lens' Event Text

-- | Creation time of the event (as a RFC3339 timestamp). Read-only.
eCreated :: Lens' Event (Maybe UTCTime)

-- | Whether the event blocks time on the calendar. Optional. Possible
--   values are: - "opaque" - The event blocks time on the calendar. This
--   is the default value. - "transparent" - The event does not block time
--   on the calendar.
eTransparency :: Lens' Event Text

-- | For an instance of a recurring event, this is the id of the recurring
--   event to which this instance belongs. Immutable.
eRecurringEventId :: Lens' Event (Maybe Text)

-- | The (inclusive) start time of the event. For a recurring event, this
--   is the start time of the first instance.
eStart :: Lens' Event (Maybe EventDateTime)

-- | Whether this is a private event copy where changes are not shared with
--   other copies on other calendars. Optional. Immutable. The default is
--   False.
ePrivateCopy :: Lens' Event Bool

-- | 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.
eEndTimeUnspecified :: Lens' Event Bool

-- | Extended properties of the event.
eExtendedProperties :: Lens' Event (Maybe EventExtendedProperties)

-- | 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.
eVisibility :: Lens' Event Text

-- | Whether attendees other than the organizer can invite others to the
--   event. Optional. The default is True.
eGuestsCanInviteOthers :: Lens' Event Bool

-- | 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.
eRecurrence :: Lens' Event [Text]

-- | A gadget that extends this event.
eGadget :: Lens' Event (Maybe EventGadget)

-- | Sequence number as per iCalendar.
eSequence :: Lens' Event (Maybe Int32)

-- | 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.
eICalUId :: Lens' Event (Maybe Text)

-- | The (exclusive) end time of the event. For a recurring event, this is
--   the end time of the first instance.
eEnd :: Lens' Event (Maybe EventDateTime)

-- | 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.
eAttendeesOmitted :: Lens' Event Bool

-- | 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.
eSource :: Lens' Event (Maybe EventSource)

-- | 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.
eId :: Lens' Event (Maybe Text)

-- | An absolute link to this event in the Google Calendar Web UI.
--   Read-only.
eHTMLLink :: Lens' Event (Maybe Text)

-- | Last modification time of the event (as a RFC3339 timestamp).
--   Read-only.
eUpdated :: Lens' Event (Maybe UTCTime)

-- | 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.
eColorId :: Lens' Event (Maybe Text)

-- | Whether anyone can invite themselves to the event (currently works for
--   Google+ events only). Optional. The default is False.
eAnyoneCanAddSelf :: Lens' Event Bool

-- | Whether attendees other than the organizer can see who the event's
--   attendees are. Optional. The default is True.
eGuestsCanSeeOtherGuests :: Lens' Event Bool

-- | An absolute link to the Google+ hangout associated with this event.
--   Read-only.
eHangoutLink :: Lens' Event (Maybe Text)

-- | Description of the event. Optional.
eDescription :: Lens' Event (Maybe Text)

-- | 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.
eOrganizer :: Lens' Event (Maybe EventOrganizer)

-- | The notifications that the authenticated user is receiving for this
--   calendar.
--   
--   <i>See:</i> <a>calendarListEntryNotificationSettings</a> smart
--   constructor.
data CalendarListEntryNotificationSettings

-- | Creates a value of <a>CalendarListEntryNotificationSettings</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clensNotifications</a></li>
--   </ul>
calendarListEntryNotificationSettings :: CalendarListEntryNotificationSettings

-- | The list of notifications set for this calendar.
clensNotifications :: Lens' CalendarListEntryNotificationSettings [CalendarNotification]

-- | The scope of the rule.
--   
--   <i>See:</i> <a>aclRuleScope</a> smart constructor.
data ACLRuleScope

-- | Creates a value of <a>ACLRuleScope</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>arsValue</a></li>
--   <li><a>arsType</a></li>
--   </ul>
aclRuleScope :: ACLRuleScope

-- | The email address of a user or group, or the name of a domain,
--   depending on the scope type. Omitted for type "default".
arsValue :: Lens' ACLRuleScope (Maybe Text)

-- | 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.
arsType :: Lens' ACLRuleScope (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>colorsEvent</a> smart constructor.
data ColorsEvent

-- | Creates a value of <a>ColorsEvent</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ceAddtional</a></li>
--   </ul>
colorsEvent :: HashMap Text ColorDefinition -> ColorsEvent

-- | An event color definition.
ceAddtional :: Lens' ColorsEvent (HashMap Text ColorDefinition)
data Settings

-- | Creates a value of <a>Settings</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sEtag</a></li>
--   <li><a>sNextPageToken</a></li>
--   <li><a>sKind</a></li>
--   <li><a>sItems</a></li>
--   <li><a>sNextSyncToken</a></li>
--   </ul>
settings :: Settings

-- | Etag of the collection.
sEtag :: Lens' Settings (Maybe Text)

-- | Token used to access the next page of this result. Omitted if no
--   further results are available, in which case nextSyncToken is
--   provided.
sNextPageToken :: Lens' Settings (Maybe Text)

-- | Type of the collection ("calendar#settings").
sKind :: Lens' Settings Text

-- | List of user settings.
sItems :: Lens' Settings [Setting]

-- | 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.
sNextSyncToken :: Lens' Settings (Maybe Text)
data FreeBusyRequestItem

-- | Creates a value of <a>FreeBusyRequestItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbriId</a></li>
--   </ul>
freeBusyRequestItem :: FreeBusyRequestItem

-- | The identifier of a calendar or a group.
fbriId :: Lens' FreeBusyRequestItem (Maybe Text)
data EventAttachment

-- | Creates a value of <a>EventAttachment</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eaFileURL</a></li>
--   <li><a>eaIconLink</a></li>
--   <li><a>eaMimeType</a></li>
--   <li><a>eaTitle</a></li>
--   <li><a>eaFileId</a></li>
--   </ul>
eventAttachment :: EventAttachment

-- | 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.
eaFileURL :: Lens' EventAttachment (Maybe Text)

-- | URL link to the attachment's icon. Read-only.
eaIconLink :: Lens' EventAttachment (Maybe Text)

-- | Internet media type (MIME type) of the attachment.
eaMimeType :: Lens' EventAttachment (Maybe Text)

-- | Attachment title.
eaTitle :: Lens' EventAttachment (Maybe Text)

-- | 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.
eaFileId :: Lens' EventAttachment (Maybe Text)
data TimePeriod

-- | Creates a value of <a>TimePeriod</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpStart</a></li>
--   <li><a>tpEnd</a></li>
--   </ul>
timePeriod :: TimePeriod

-- | The (inclusive) start of the time period.
tpStart :: Lens' TimePeriod (Maybe UTCTime)

-- | The (exclusive) end of the time period.
tpEnd :: Lens' TimePeriod (Maybe UTCTime)

-- | The creator of the event. Read-only.
--   
--   <i>See:</i> <a>eventCreator</a> smart constructor.
data EventCreator

-- | Creates a value of <a>EventCreator</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ecEmail</a></li>
--   <li><a>ecSelf</a></li>
--   <li><a>ecDisplayName</a></li>
--   <li><a>ecId</a></li>
--   </ul>
eventCreator :: EventCreator

-- | The creator's email address, if available.
ecEmail :: Lens' EventCreator (Maybe Text)

-- | Whether the creator corresponds to the calendar on which this copy of
--   the event appears. Read-only. The default is False.
ecSelf :: Lens' EventCreator Bool

-- | The creator's name, if available.
ecDisplayName :: Lens' EventCreator (Maybe Text)

-- | The creator's Profile ID, if available. It corresponds to theid field
--   in the People collection of the Google+ API
ecId :: Lens' EventCreator (Maybe Text)
data Error'

-- | Creates a value of <a>Error</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eDomain</a></li>
--   <li><a>eReason</a></li>
--   </ul>
error' :: Error'

-- | Domain, or broad category, of the error.
eDomain :: Lens' Error' (Maybe Text)

-- | 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.
eReason :: Lens' Error' (Maybe Text)
data ColorDefinition

-- | Creates a value of <a>ColorDefinition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdForegRound</a></li>
--   <li><a>cdBackgRound</a></li>
--   </ul>
colorDefinition :: ColorDefinition

-- | The foreground color that can be used to write on top of a background
--   with 'background' color.
cdForegRound :: Lens' ColorDefinition (Maybe Text)

-- | The background color associated with this color definition.
cdBackgRound :: Lens' ColorDefinition (Maybe Text)

-- | The order of the events returned in the result. Optional. The default
--   is an unspecified, stable order.
data EventsListOrderBy

-- | <tt>startTime</tt> Order by the start date/time (ascending). This is
--   only available when querying single events (i.e. the parameter
--   singleEvents is True)
StartTime :: EventsListOrderBy

-- | <tt>updated</tt> Order by last modification time (ascending).
Updated :: EventsListOrderBy
data Channel

-- | Creates a value of <a>Channel</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cResourceURI</a></li>
--   <li><a>cResourceId</a></li>
--   <li><a>cKind</a></li>
--   <li><a>cExpiration</a></li>
--   <li><a>cToken</a></li>
--   <li><a>cAddress</a></li>
--   <li><a>cPayload</a></li>
--   <li><a>cParams</a></li>
--   <li><a>cId</a></li>
--   <li><a>cType</a></li>
--   </ul>
channel :: Channel

-- | A version-specific identifier for the watched resource.
cResourceURI :: Lens' Channel (Maybe Text)

-- | An opaque ID that identifies the resource being watched on this
--   channel. Stable across different API versions.
cResourceId :: Lens' Channel (Maybe Text)

-- | Identifies this as a notification channel used to watch for changes to
--   a resource. Value: the fixed string "api#channel".
cKind :: Lens' Channel Text

-- | Date and time of notification channel expiration, expressed as a Unix
--   timestamp, in milliseconds. Optional.
cExpiration :: Lens' Channel (Maybe Int64)

-- | An arbitrary string delivered to the target address with each
--   notification delivered over this channel. Optional.
cToken :: Lens' Channel (Maybe Text)

-- | The address where notifications are delivered for this channel.
cAddress :: Lens' Channel (Maybe Text)

-- | A Boolean value to indicate whether payload is wanted. Optional.
cPayload :: Lens' Channel (Maybe Bool)

-- | Additional parameters controlling delivery channel behavior. Optional.
cParams :: Lens' Channel (Maybe ChannelParams)

-- | A UUID or similar unique string that identifies this channel.
cId :: Lens' Channel (Maybe Text)

-- | The type of delivery mechanism used for this channel.
cType :: Lens' Channel (Maybe Text)
data FreeBusyCalendar

-- | Creates a value of <a>FreeBusyCalendar</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbcBusy</a></li>
--   <li><a>fbcErrors</a></li>
--   </ul>
freeBusyCalendar :: FreeBusyCalendar

-- | List of time ranges during which this calendar should be regarded as
--   busy.
fbcBusy :: Lens' FreeBusyCalendar [TimePeriod]

-- | Optional error(s) (if computation for the calendar failed).
fbcErrors :: Lens' FreeBusyCalendar [Error']
data Setting

-- | Creates a value of <a>Setting</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>setEtag</a></li>
--   <li><a>setKind</a></li>
--   <li><a>setValue</a></li>
--   <li><a>setId</a></li>
--   </ul>
setting :: Setting

-- | ETag of the resource.
setEtag :: Lens' Setting (Maybe Text)

-- | Type of the resource ("calendar#setting").
setKind :: Lens' Setting Text

-- | 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.
setValue :: Lens' Setting (Maybe Text)

-- | The id of the user setting.
setId :: Lens' Setting (Maybe Text)

-- | Expansion of groups.
--   
--   <i>See:</i> <a>freeBusyResponseGroups</a> smart constructor.
data FreeBusyResponseGroups

-- | Creates a value of <a>FreeBusyResponseGroups</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbrgAddtional</a></li>
--   </ul>
freeBusyResponseGroups :: HashMap Text FreeBusyGroup -> FreeBusyResponseGroups

-- | List of calendars that are members of this group.
fbrgAddtional :: Lens' FreeBusyResponseGroups (HashMap Text FreeBusyGroup)

-- | Information about the event's reminders for the authenticated user.
--   
--   <i>See:</i> <a>eventReminders</a> smart constructor.
data EventReminders

-- | Creates a value of <a>EventReminders</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>erOverrides</a></li>
--   <li><a>erUseDefault</a></li>
--   </ul>
eventReminders :: EventReminders

-- | 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.
erOverrides :: Lens' EventReminders [EventReminder]

-- | Whether the default reminders of the calendar apply to the event.
erUseDefault :: Lens' EventReminders (Maybe Bool)

-- | 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.
--   
--   <i>See:</i> <a>colorsCalendar</a> smart constructor.
data ColorsCalendar

-- | Creates a value of <a>ColorsCalendar</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccAddtional</a></li>
--   </ul>
colorsCalendar :: HashMap Text ColorDefinition -> ColorsCalendar

-- | A calendar color defintion.
ccAddtional :: Lens' ColorsCalendar (HashMap Text ColorDefinition)
data CalendarNotification

-- | Creates a value of <a>CalendarNotification</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cnMethod</a></li>
--   <li><a>cnType</a></li>
--   </ul>
calendarNotification :: CalendarNotification

-- | 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 Google Apps for Work,
--   Education, and Government customers.
cnMethod :: Lens' CalendarNotification (Maybe Text)

-- | 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).
cnType :: Lens' CalendarNotification (Maybe Text)

-- | Properties that are private to the copy of the event that appears on
--   this calendar.
--   
--   <i>See:</i> <a>eventExtendedPropertiesPrivate</a> smart constructor.
data EventExtendedPropertiesPrivate

-- | Creates a value of <a>EventExtendedPropertiesPrivate</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eeppAddtional</a></li>
--   </ul>
eventExtendedPropertiesPrivate :: HashMap Text Text -> EventExtendedPropertiesPrivate

-- | The name of the private property and the corresponding value.
eeppAddtional :: Lens' EventExtendedPropertiesPrivate (HashMap Text Text)

-- | Additional parameters controlling delivery channel behavior. Optional.
--   
--   <i>See:</i> <a>channelParams</a> smart constructor.
data ChannelParams

-- | Creates a value of <a>ChannelParams</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpAddtional</a></li>
--   </ul>
channelParams :: HashMap Text Text -> ChannelParams

-- | Declares a new parameter by name.
cpAddtional :: Lens' ChannelParams (HashMap Text Text)
data Events

-- | Creates a value of <a>Events</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eveSummary</a></li>
--   <li><a>eveEtag</a></li>
--   <li><a>eveNextPageToken</a></li>
--   <li><a>eveKind</a></li>
--   <li><a>eveItems</a></li>
--   <li><a>eveDefaultReminders</a></li>
--   <li><a>eveUpdated</a></li>
--   <li><a>eveAccessRole</a></li>
--   <li><a>eveTimeZone</a></li>
--   <li><a>eveNextSyncToken</a></li>
--   <li><a>eveDescription</a></li>
--   </ul>
events :: Events

-- | Title of the calendar. Read-only.
eveSummary :: Lens' Events (Maybe Text)

-- | ETag of the collection.
eveEtag :: Lens' Events (Maybe Text)

-- | Token used to access the next page of this result. Omitted if no
--   further results are available, in which case nextSyncToken is
--   provided.
eveNextPageToken :: Lens' Events (Maybe Text)

-- | Type of the collection ("calendar#events").
eveKind :: Lens' Events Text

-- | List of events on the calendar.
eveItems :: Lens' Events [Event]

-- | 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).
eveDefaultReminders :: Lens' Events [EventReminder]

-- | Last modification time of the calendar (as a RFC3339 timestamp).
--   Read-only.
eveUpdated :: Lens' Events (Maybe UTCTime)

-- | 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.
eveAccessRole :: Lens' Events (Maybe Text)

-- | The time zone of the calendar. Read-only.
eveTimeZone :: Lens' Events (Maybe Text)

-- | 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.
eveNextSyncToken :: Lens' Events (Maybe Text)

-- | Description of the calendar. Read-only.
eveDescription :: Lens' Events (Maybe Text)
data EventAttendee

-- | Creates a value of <a>EventAttendee</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eaEmail</a></li>
--   <li><a>eaResponseStatus</a></li>
--   <li><a>eaSelf</a></li>
--   <li><a>eaResource</a></li>
--   <li><a>eaAdditionalGuests</a></li>
--   <li><a>eaDisplayName</a></li>
--   <li><a>eaId</a></li>
--   <li><a>eaComment</a></li>
--   <li><a>eaOptional</a></li>
--   <li><a>eaOrganizer</a></li>
--   </ul>
eventAttendee :: EventAttendee

-- | 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.
eaEmail :: Lens' EventAttendee (Maybe Text)

-- | 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.
eaResponseStatus :: Lens' EventAttendee (Maybe Text)

-- | Whether this entry represents the calendar on which this copy of the
--   event appears. Read-only. The default is False.
eaSelf :: Lens' EventAttendee Bool

-- | Whether the attendee is a resource. Read-only. The default is False.
eaResource :: Lens' EventAttendee Bool

-- | Number of additional guests. Optional. The default is 0.
eaAdditionalGuests :: Lens' EventAttendee Int32

-- | The attendee's name, if available. Optional.
eaDisplayName :: Lens' EventAttendee (Maybe Text)

-- | The attendee's Profile ID, if available. It corresponds to theid field
--   in the People collection of the Google+ API
eaId :: Lens' EventAttendee (Maybe Text)

-- | The attendee's response comment. Optional.
eaComment :: Lens' EventAttendee (Maybe Text)

-- | Whether this is an optional attendee. Optional. The default is False.
eaOptional :: Lens' EventAttendee Bool

-- | Whether the attendee is the organizer of the event. Read-only. The
--   default is False.
eaOrganizer :: Lens' EventAttendee (Maybe Bool)
data Calendar

-- | Creates a value of <a>Calendar</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>calSummary</a></li>
--   <li><a>calEtag</a></li>
--   <li><a>calLocation</a></li>
--   <li><a>calKind</a></li>
--   <li><a>calId</a></li>
--   <li><a>calTimeZone</a></li>
--   <li><a>calDescription</a></li>
--   </ul>
calendar :: Calendar

-- | Title of the calendar.
calSummary :: Lens' Calendar (Maybe Text)

-- | ETag of the resource.
calEtag :: Lens' Calendar (Maybe Text)

-- | Geographic location of the calendar as free-form text. Optional.
calLocation :: Lens' Calendar (Maybe Text)

-- | Type of the resource ("calendar#calendar").
calKind :: Lens' Calendar Text

-- | Identifier of the calendar. To retrieve IDs call the
--   calendarList.list() method.
calId :: Lens' Calendar (Maybe Text)

-- | The time zone of the calendar. (Formatted as an IANA Time Zone
--   Database name, e.g. "Europe/Zurich".) Optional.
calTimeZone :: Lens' Calendar (Maybe Text)

-- | Description of the calendar. Optional.
calDescription :: Lens' Calendar (Maybe Text)
data FreeBusyResponse

-- | Creates a value of <a>FreeBusyResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbrGroups</a></li>
--   <li><a>fbrTimeMin</a></li>
--   <li><a>fbrKind</a></li>
--   <li><a>fbrCalendars</a></li>
--   <li><a>fbrTimeMax</a></li>
--   </ul>
freeBusyResponse :: FreeBusyResponse

-- | Expansion of groups.
fbrGroups :: Lens' FreeBusyResponse (Maybe FreeBusyResponseGroups)

-- | The start of the interval.
fbrTimeMin :: Lens' FreeBusyResponse (Maybe UTCTime)

-- | Type of the resource ("calendar#freeBusy").
fbrKind :: Lens' FreeBusyResponse Text

-- | List of free/busy information for calendars.
fbrCalendars :: Lens' FreeBusyResponse (Maybe FreeBusyResponseCalendars)

-- | The end of the interval.
fbrTimeMax :: Lens' FreeBusyResponse (Maybe UTCTime)
data EventReminder

-- | Creates a value of <a>EventReminder</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>erMethod</a></li>
--   <li><a>erMinutes</a></li>
--   </ul>
eventReminder :: EventReminder

-- | 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 Google Apps for Work, Education, and
--   Government customers. Requests to set SMS reminders for other account
--   types are ignored. - "popup" - Reminders are sent via a UI popup.
erMethod :: Lens' EventReminder (Maybe Text)

-- | 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).
erMinutes :: Lens' EventReminder (Maybe Int32)

-- | Extended properties of the event.
--   
--   <i>See:</i> <a>eventExtendedProperties</a> smart constructor.
data EventExtendedProperties

-- | Creates a value of <a>EventExtendedProperties</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eepPrivate</a></li>
--   <li><a>eepShared</a></li>
--   </ul>
eventExtendedProperties :: EventExtendedProperties

-- | Properties that are private to the copy of the event that appears on
--   this calendar.
eepPrivate :: Lens' EventExtendedProperties (Maybe EventExtendedPropertiesPrivate)

-- | Properties that are shared between copies of the event on other
--   attendees' calendars.
eepShared :: Lens' EventExtendedProperties (Maybe EventExtendedPropertiesShared)
data EventDateTime

-- | Creates a value of <a>EventDateTime</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>edtDate</a></li>
--   <li><a>edtTimeZone</a></li>
--   <li><a>edtDateTime</a></li>
--   </ul>
eventDateTime :: EventDateTime

-- | The date, in the format "yyyy-mm-dd", if this is an all-day event.
edtDate :: Lens' EventDateTime (Maybe Day)

-- | 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.
edtTimeZone :: Lens' EventDateTime (Maybe Text)

-- | 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.
edtDateTime :: Lens' EventDateTime (Maybe UTCTime)

-- | 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.
--   
--   <i>See:</i> <a>eventOrganizer</a> smart constructor.
data EventOrganizer

-- | Creates a value of <a>EventOrganizer</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eoEmail</a></li>
--   <li><a>eoSelf</a></li>
--   <li><a>eoDisplayName</a></li>
--   <li><a>eoId</a></li>
--   </ul>
eventOrganizer :: EventOrganizer

-- | The organizer's email address, if available. It must be a valid email
--   address as per RFC5322.
eoEmail :: Lens' EventOrganizer (Maybe Text)

-- | Whether the organizer corresponds to the calendar on which this copy
--   of the event appears. Read-only. The default is False.
eoSelf :: Lens' EventOrganizer Bool

-- | The organizer's name, if available.
eoDisplayName :: Lens' EventOrganizer (Maybe Text)

-- | The organizer's Profile ID, if available. It corresponds to theid
--   field in the People collection of the Google+ API
eoId :: Lens' EventOrganizer (Maybe Text)
data CalendarList

-- | Creates a value of <a>CalendarList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clEtag</a></li>
--   <li><a>clNextPageToken</a></li>
--   <li><a>clKind</a></li>
--   <li><a>clItems</a></li>
--   <li><a>clNextSyncToken</a></li>
--   </ul>
calendarList :: CalendarList

-- | ETag of the collection.
clEtag :: Lens' CalendarList (Maybe Text)

-- | Token used to access the next page of this result. Omitted if no
--   further results are available, in which case nextSyncToken is
--   provided.
clNextPageToken :: Lens' CalendarList (Maybe Text)

-- | Type of the collection ("calendar#calendarList").
clKind :: Lens' CalendarList Text

-- | Calendars that are present on the user's calendar list.
clItems :: Lens' CalendarList [CalendarListEntry]

-- | 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.
clNextSyncToken :: Lens' CalendarList (Maybe Text)

-- | The minimum access role for the user in the returned entries.
--   Optional. The default is no restriction.
data CalendarListListMinAccessRole

-- | <tt>freeBusyReader</tt> The user can read free/busy information.
FreeBusyReader :: CalendarListListMinAccessRole

-- | <tt>owner</tt> The user can read and modify events and access control
--   lists.
Owner :: CalendarListListMinAccessRole

-- | <tt>reader</tt> The user can read events that are not private.
Reader :: CalendarListListMinAccessRole

-- | <tt>writer</tt> The user can read and modify events.
Writer :: CalendarListListMinAccessRole

-- | A gadget that extends this event.
--   
--   <i>See:</i> <a>eventGadget</a> smart constructor.
data EventGadget

-- | Creates a value of <a>EventGadget</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>egHeight</a></li>
--   <li><a>egDisplay</a></li>
--   <li><a>egPreferences</a></li>
--   <li><a>egLink</a></li>
--   <li><a>egIconLink</a></li>
--   <li><a>egWidth</a></li>
--   <li><a>egTitle</a></li>
--   <li><a>egType</a></li>
--   </ul>
eventGadget :: EventGadget

-- | The gadget's height in pixels. The height must be an integer greater
--   than 0. Optional.
egHeight :: Lens' EventGadget (Maybe Int32)

-- | 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.
egDisplay :: Lens' EventGadget (Maybe Text)

-- | Preferences.
egPreferences :: Lens' EventGadget (Maybe EventGadgetPreferences)

-- | The gadget's URL. The URL scheme must be HTTPS.
egLink :: Lens' EventGadget (Maybe Text)

-- | The gadget's icon URL. The URL scheme must be HTTPS.
egIconLink :: Lens' EventGadget (Maybe Text)

-- | The gadget's width in pixels. The width must be an integer greater
--   than 0. Optional.
egWidth :: Lens' EventGadget (Maybe Int32)

-- | The gadget's title.
egTitle :: Lens' EventGadget (Maybe Text)

-- | The gadget's type.
egType :: Lens' EventGadget (Maybe Text)

-- | Preferences.
--   
--   <i>See:</i> <a>eventGadgetPreferences</a> smart constructor.
data EventGadgetPreferences

-- | Creates a value of <a>EventGadgetPreferences</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>egpAddtional</a></li>
--   </ul>
eventGadgetPreferences :: HashMap Text Text -> EventGadgetPreferences

-- | The preference name and corresponding value.
egpAddtional :: Lens' EventGadgetPreferences (HashMap Text Text)
data FreeBusyRequest

-- | Creates a value of <a>FreeBusyRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fCalendarExpansionMax</a></li>
--   <li><a>fTimeMin</a></li>
--   <li><a>fItems</a></li>
--   <li><a>fGroupExpansionMax</a></li>
--   <li><a>fTimeZone</a></li>
--   <li><a>fTimeMax</a></li>
--   </ul>
freeBusyRequest :: FreeBusyRequest

-- | Maximal number of calendars for which FreeBusy information is to be
--   provided. Optional.
fCalendarExpansionMax :: Lens' FreeBusyRequest (Maybe Int32)

-- | The start of the interval for the query.
fTimeMin :: Lens' FreeBusyRequest (Maybe UTCTime)

-- | List of calendars and/or groups to query.
fItems :: Lens' FreeBusyRequest [FreeBusyRequestItem]

-- | 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.
fGroupExpansionMax :: Lens' FreeBusyRequest (Maybe Int32)

-- | Time zone used in the response. Optional. The default is UTC.
fTimeZone :: Lens' FreeBusyRequest Text

-- | The end of the interval for the query.
fTimeMax :: Lens' FreeBusyRequest (Maybe UTCTime)
data ACLRule

-- | Creates a value of <a>ACLRule</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>arEtag</a></li>
--   <li><a>arKind</a></li>
--   <li><a>arRole</a></li>
--   <li><a>arScope</a></li>
--   <li><a>arId</a></li>
--   </ul>
aclRule :: ACLRule

-- | ETag of the resource.
arEtag :: Lens' ACLRule (Maybe Text)

-- | Type of the resource ("calendar#aclRule").
arKind :: Lens' ACLRule Text

-- | 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.
arRole :: Lens' ACLRule (Maybe Text)

-- | The scope of the rule.
arScope :: Lens' ACLRule (Maybe ACLRuleScope)

-- | Identifier of the ACL rule.
arId :: Lens' ACLRule (Maybe Text)

-- | The order of the events returned in the result. Optional. The default
--   is an unspecified, stable order.
data EventsWatchOrderBy

-- | <tt>startTime</tt> Order by the start date/time (ascending). This is
--   only available when querying single events (i.e. the parameter
--   singleEvents is True)
EWOBStartTime :: EventsWatchOrderBy

-- | <tt>updated</tt> Order by last modification time (ascending).
EWOBUpdated :: EventsWatchOrderBy

-- | Properties that are shared between copies of the event on other
--   attendees' calendars.
--   
--   <i>See:</i> <a>eventExtendedPropertiesShared</a> smart constructor.
data EventExtendedPropertiesShared

-- | Creates a value of <a>EventExtendedPropertiesShared</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eepsAddtional</a></li>
--   </ul>
eventExtendedPropertiesShared :: HashMap Text Text -> EventExtendedPropertiesShared

-- | The name of the shared property and the corresponding value.
eepsAddtional :: Lens' EventExtendedPropertiesShared (HashMap Text Text)

-- | The minimum access role for the user in the returned entries.
--   Optional. The default is no restriction.
data CalendarListWatchMinAccessRole

-- | <tt>freeBusyReader</tt> The user can read free/busy information.
CLWMARFreeBusyReader :: CalendarListWatchMinAccessRole

-- | <tt>owner</tt> The user can read and modify events and access control
--   lists.
CLWMAROwner :: CalendarListWatchMinAccessRole

-- | <tt>reader</tt> The user can read events that are not private.
CLWMARReader :: CalendarListWatchMinAccessRole

-- | <tt>writer</tt> The user can read and modify events.
CLWMARWriter :: CalendarListWatchMinAccessRole

-- | List of free/busy information for calendars.
--   
--   <i>See:</i> <a>freeBusyResponseCalendars</a> smart constructor.
data FreeBusyResponseCalendars

-- | Creates a value of <a>FreeBusyResponseCalendars</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbrcAddtional</a></li>
--   </ul>
freeBusyResponseCalendars :: HashMap Text FreeBusyCalendar -> FreeBusyResponseCalendars

-- | Free/busy expansions for a single calendar.
fbrcAddtional :: Lens' FreeBusyResponseCalendars (HashMap Text FreeBusyCalendar)
data ACL

-- | Creates a value of <a>ACL</a> with the minimum fields required to make
--   a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aEtag</a></li>
--   <li><a>aNextPageToken</a></li>
--   <li><a>aKind</a></li>
--   <li><a>aItems</a></li>
--   <li><a>aNextSyncToken</a></li>
--   </ul>
acl :: ACL

-- | ETag of the collection.
aEtag :: Lens' ACL (Maybe Text)

-- | Token used to access the next page of this result. Omitted if no
--   further results are available, in which case nextSyncToken is
--   provided.
aNextPageToken :: Lens' ACL (Maybe Text)

-- | Type of the collection ("calendar#acl").
aKind :: Lens' ACL Text

-- | List of rules on the access control list.
aItems :: Lens' ACL [ACLRule]

-- | 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.
aNextSyncToken :: Lens' ACL (Maybe Text)
data Colors

-- | Creates a value of <a>Colors</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>colEvent</a></li>
--   <li><a>colKind</a></li>
--   <li><a>colCalendar</a></li>
--   <li><a>colUpdated</a></li>
--   </ul>
colors :: Colors

-- | 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.
colEvent :: Lens' Colors (Maybe ColorsEvent)

-- | Type of the resource ("calendar#colors").
colKind :: Lens' Colors Text

-- | 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.
colCalendar :: Lens' Colors (Maybe ColorsCalendar)

-- | Last modification time of the color palette (as a RFC3339 timestamp).
--   Read-only.
colUpdated :: Lens' Colors (Maybe UTCTime)
data FreeBusyGroup

-- | Creates a value of <a>FreeBusyGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fbgCalendars</a></li>
--   <li><a>fbgErrors</a></li>
--   </ul>
freeBusyGroup :: FreeBusyGroup

-- | List of calendars' identifiers within a group.
fbgCalendars :: Lens' FreeBusyGroup [Text]

-- | Optional error(s) (if computation for the group failed).
fbgErrors :: Lens' FreeBusyGroup [Error']

-- | 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.
--   
--   <i>See:</i> <a>eventSource</a> smart constructor.
data EventSource

-- | Creates a value of <a>EventSource</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>esURL</a></li>
--   <li><a>esTitle</a></li>
--   </ul>
eventSource :: EventSource

-- | URL of the source pointing to a resource. The URL scheme must be HTTP
--   or HTTPS.
esURL :: Lens' EventSource (Maybe Text)

-- | Title of the source; for example a title of a web page or an email
--   subject.
esTitle :: Lens' EventSource (Maybe Text)
