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


-- | Google Gmail SDK.
--   
--   Access Gmail mailboxes including sending user email.
--   
--   <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>v1</tt> of the API.
@package gogol-gmail
@version 0.3.0


module Network.Google.Gmail.Types

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

-- | Manage your basic mail settings
gmailSettingsBasicScope :: Proxy '["https://www.googleapis.com/auth/gmail.settings.basic"]

-- | View and manage your mail
mailGoogleComScope :: Proxy '["https://mail.google.com/"]

-- | View and modify but not delete your email
gmailModifyScope :: Proxy '["https://www.googleapis.com/auth/gmail.modify"]

-- | View your email message metadata such as labels and headers, but not
--   the email body
gmailMetadataScope :: Proxy '["https://www.googleapis.com/auth/gmail.metadata"]

-- | Manage mailbox labels
gmailLabelsScope :: Proxy '["https://www.googleapis.com/auth/gmail.labels"]

-- | Manage your sensitive mail settings, including who can manage your
--   mail
gmailSettingsSharingScope :: Proxy '["https://www.googleapis.com/auth/gmail.settings.sharing"]

-- | Send email on your behalf
gmailSendScope :: Proxy '["https://www.googleapis.com/auth/gmail.send"]

-- | Insert mail into your mailbox
gmailInsertScope :: Proxy '["https://www.googleapis.com/auth/gmail.insert"]

-- | Manage drafts and send emails
gmailComposeScope :: Proxy '["https://www.googleapis.com/auth/gmail.compose"]

-- | View your emails messages and settings
gmailReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/gmail.readonly"]
data BatchDeleteMessagesRequest

-- | Creates a value of <a>BatchDeleteMessagesRequest</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>bdmrIds</a></li>
--   </ul>
batchDeleteMessagesRequest :: BatchDeleteMessagesRequest

-- | The IDs of the messages to delete.
bdmrIds :: Lens' BatchDeleteMessagesRequest [Text]

-- | How the message size in bytes should be in relation to the size field.
data FilterCriteriaSizeComparison

-- | <pre>
--   larger
--   </pre>
Larger :: FilterCriteriaSizeComparison

-- | <pre>
--   smaller
--   </pre>
Smaller :: FilterCriteriaSizeComparison

-- | <pre>
--   unspecified
--   </pre>
Unspecified :: FilterCriteriaSizeComparison

-- | The format to return the message in.
data UsersMessagesGetFormat

-- | <pre>
--   full
--   </pre>
Full :: UsersMessagesGetFormat

-- | <pre>
--   metadata
--   </pre>
Metadata :: UsersMessagesGetFormat

-- | <pre>
--   minimal
--   </pre>
Minimal :: UsersMessagesGetFormat

-- | <pre>
--   raw
--   </pre>
Raw :: UsersMessagesGetFormat
data ModifyThreadRequest

-- | Creates a value of <a>ModifyThreadRequest</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>mtrRemoveLabelIds</a></li>
--   <li><a>mtrAddLabelIds</a></li>
--   </ul>
modifyThreadRequest :: ModifyThreadRequest

-- | A list of IDs of labels to remove from this thread.
mtrRemoveLabelIds :: Lens' ModifyThreadRequest [Text]

-- | A list of IDs of labels to add to this thread.
mtrAddLabelIds :: Lens' ModifyThreadRequest [Text]

-- | Response for the ListFilters method.
--   
--   <i>See:</i> <a>listFiltersResponse</a> smart constructor.
data ListFiltersResponse

-- | Creates a value of <a>ListFiltersResponse</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>lfrFilter</a></li>
--   </ul>
listFiltersResponse :: ListFiltersResponse

-- | List of a user's filters.
lfrFilter :: Lens' ListFiltersResponse [Filter]
data ModifyMessageRequest

-- | Creates a value of <a>ModifyMessageRequest</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>mmrRemoveLabelIds</a></li>
--   <li><a>mmrAddLabelIds</a></li>
--   </ul>
modifyMessageRequest :: ModifyMessageRequest

-- | A list IDs of labels to remove from this message.
mmrRemoveLabelIds :: Lens' ModifyMessageRequest [Text]

-- | A list of IDs of labels to add to this message.
mmrAddLabelIds :: Lens' ModifyMessageRequest [Text]

-- | Response for the ListForwardingAddresses method.
--   
--   <i>See:</i> <a>listForwardingAddressesResponse</a> smart constructor.
data ListForwardingAddressesResponse

-- | Creates a value of <a>ListForwardingAddressesResponse</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>lfarForwardingAddresses</a></li>
--   </ul>
listForwardingAddressesResponse :: ListForwardingAddressesResponse

-- | List of addresses that may be used for forwarding.
lfarForwardingAddresses :: Lens' ListForwardingAddressesResponse [ForwardingAddress]

-- | POP settings for an account.
--   
--   <i>See:</i> <a>popSettings</a> smart constructor.
data PopSettings

-- | Creates a value of <a>PopSettings</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>psAccessWindow</a></li>
--   <li><a>psDisPosition</a></li>
--   </ul>
popSettings :: PopSettings

-- | The range of messages which are accessible via POP.
psAccessWindow :: Lens' PopSettings (Maybe PopSettingsAccessWindow)

-- | The action that will be executed on a message after it has been
--   fetched via POP.
psDisPosition :: Lens' PopSettings (Maybe PopSettingsDisPosition)

-- | The range of messages which are accessible via POP.
data PopSettingsAccessWindow

-- | <pre>
--   accessWindowUnspecified
--   </pre>
AccessWindowUnspecified :: PopSettingsAccessWindow

-- | <pre>
--   allMail
--   </pre>
AllMail :: PopSettingsAccessWindow

-- | <pre>
--   disabled
--   </pre>
Disabled :: PopSettingsAccessWindow

-- | <pre>
--   fromNowOn
--   </pre>
FromNowOn :: PopSettingsAccessWindow

-- | A record of a change to the user's mailbox. Each history change may
--   affect multiple messages in multiple ways.
--   
--   <i>See:</i> <a>history</a> smart constructor.
data History

-- | Creates a value of <a>History</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>hLabelsRemoved</a></li>
--   <li><a>hMessagesDeleted</a></li>
--   <li><a>hMessagesAdded</a></li>
--   <li><a>hLabelsAdded</a></li>
--   <li><a>hId</a></li>
--   <li><a>hMessages</a></li>
--   </ul>
history :: History

-- | Labels removed from messages in this history record.
hLabelsRemoved :: Lens' History [HistoryLabelRemoved]

-- | Messages deleted (not Trashed) from the mailbox in this history
--   record.
hMessagesDeleted :: Lens' History [HistoryMessageDeleted]

-- | Messages added to the mailbox in this history record.
hMessagesAdded :: Lens' History [HistoryMessageAdded]

-- | Labels added to messages in this history record.
hLabelsAdded :: Lens' History [HistoryLabelAdded]

-- | The mailbox sequence ID.
hId :: Lens' History (Maybe Word64)

-- | List of messages changed in this history record. The fields for
--   specific change types, such as messagesAdded may duplicate messages in
--   this field. We recommend using the specific change-type fields instead
--   of this.
hMessages :: Lens' History [Message]

-- | Indicates whether this address has been verified and is usable for
--   forwarding. Read-only.
data ForwardingAddressVerificationStatus

-- | <pre>
--   accepted
--   </pre>
Accepted :: ForwardingAddressVerificationStatus

-- | <pre>
--   pending
--   </pre>
Pending :: ForwardingAddressVerificationStatus

-- | <pre>
--   verificationStatusUnspecified
--   </pre>
VerificationStatusUnspecified :: ForwardingAddressVerificationStatus

-- | Message matching criteria.
--   
--   <i>See:</i> <a>filterCriteria</a> smart constructor.
data FilterCriteria

-- | Creates a value of <a>FilterCriteria</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>fcSizeComparison</a></li>
--   <li><a>fcSubject</a></li>
--   <li><a>fcSize</a></li>
--   <li><a>fcExcludeChats</a></li>
--   <li><a>fcTo</a></li>
--   <li><a>fcFrom</a></li>
--   <li><a>fcQuery</a></li>
--   <li><a>fcNegatedQuery</a></li>
--   <li><a>fcHasAttachment</a></li>
--   </ul>
filterCriteria :: FilterCriteria

-- | How the message size in bytes should be in relation to the size field.
fcSizeComparison :: Lens' FilterCriteria (Maybe FilterCriteriaSizeComparison)

-- | Case-insensitive phrase found in the message's subject. Trailing and
--   leading whitespace are be trimmed and adjacent spaces are collapsed.
fcSubject :: Lens' FilterCriteria (Maybe Text)

-- | The size of the entire RFC822 message in bytes, including all headers
--   and attachments.
fcSize :: Lens' FilterCriteria (Maybe Int32)

-- | Whether the response should exclude chats.
fcExcludeChats :: Lens' FilterCriteria (Maybe Bool)

-- | The recipient's display name or email address. Includes recipients in
--   the "to", "cc", and "bcc" header fields. You can use simply the local
--   part of the email address. For example, "example" and "example'" both
--   match "example'gmail.com". This field is case-insensitive.
fcTo :: Lens' FilterCriteria (Maybe Text)

-- | The sender's display name or email address.
fcFrom :: Lens' FilterCriteria (Maybe Text)

-- | Only return messages matching the specified query. Supports the same
--   query format as the Gmail search box. For example,
--   "from:someuser'example.com rfc822msgid: is:unread".
fcQuery :: Lens' FilterCriteria (Maybe Text)

-- | Only return messages not matching the specified query. Supports the
--   same query format as the Gmail search box. For example,
--   "from:someuser'example.com rfc822msgid: is:unread".
fcNegatedQuery :: Lens' FilterCriteria (Maybe Text)

-- | Whether the message has any attachment.
fcHasAttachment :: Lens' FilterCriteria (Maybe Bool)

-- | Profile for a Gmail user.
--   
--   <i>See:</i> <a>proFile</a> smart constructor.
data ProFile

-- | Creates a value of <a>ProFile</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>pfMessagesTotal</a></li>
--   <li><a>pfThreadsTotal</a></li>
--   <li><a>pfHistoryId</a></li>
--   <li><a>pfEmailAddress</a></li>
--   </ul>
proFile :: ProFile

-- | The total number of messages in the mailbox.
pfMessagesTotal :: Lens' ProFile (Maybe Int32)

-- | The total number of threads in the mailbox.
pfThreadsTotal :: Lens' ProFile (Maybe Int32)

-- | The ID of the mailbox's current history record.
pfHistoryId :: Lens' ProFile (Maybe Word64)

-- | The user's email address.
pfEmailAddress :: Lens' ProFile (Maybe Text)

-- | The state that a message should be left in after it has been
--   forwarded.
data AutoForwardingDisPosition

-- | <pre>
--   archive
--   </pre>
Archive :: AutoForwardingDisPosition

-- | <pre>
--   dispositionUnspecified
--   </pre>
DisPositionUnspecified :: AutoForwardingDisPosition

-- | <pre>
--   leaveInInbox
--   </pre>
LeaveInInbox :: AutoForwardingDisPosition

-- | <pre>
--   markRead
--   </pre>
MarkRead :: AutoForwardingDisPosition

-- | <pre>
--   trash
--   </pre>
Trash :: AutoForwardingDisPosition
data MessagePartHeader

-- | Creates a value of <a>MessagePartHeader</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>mphValue</a></li>
--   <li><a>mphName</a></li>
--   </ul>
messagePartHeader :: MessagePartHeader

-- | The value of the header after the : separator. For example,
--   someuser'example.com.
mphValue :: Lens' MessagePartHeader (Maybe Text)

-- | The name of the header before the : separator. For example, To.
mphName :: Lens' MessagePartHeader (Maybe Text)

-- | Indicates whether this address has been verified for use as a send-as
--   alias. Read-only. This setting only applies to custom "from" aliases.
data SendAsVerificationStatus

-- | <pre>
--   accepted
--   </pre>
SAVSAccepted :: SendAsVerificationStatus

-- | <pre>
--   pending
--   </pre>
SAVSPending :: SendAsVerificationStatus

-- | <pre>
--   verificationStatusUnspecified
--   </pre>
SAVSVerificationStatusUnspecified :: SendAsVerificationStatus
data ListHistoryResponse

-- | Creates a value of <a>ListHistoryResponse</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>lhrNextPageToken</a></li>
--   <li><a>lhrHistory</a></li>
--   <li><a>lhrHistoryId</a></li>
--   </ul>
listHistoryResponse :: ListHistoryResponse

-- | Page token to retrieve the next page of results in the list.
lhrNextPageToken :: Lens' ListHistoryResponse (Maybe Text)

-- | List of history records. Any messages contained in the response will
--   typically only have id and threadId fields populated.
lhrHistory :: Lens' ListHistoryResponse [History]

-- | The ID of the mailbox's current history record.
lhrHistoryId :: Lens' ListHistoryResponse (Maybe Word64)

-- | Settings associated with a send-as alias, which can be either the
--   primary login address associated with the account or a custom "from"
--   address. Send-as aliases correspond to the "Send Mail As" feature in
--   the web interface.
--   
--   <i>See:</i> <a>sendAs</a> smart constructor.
data SendAs

-- | Creates a value of <a>SendAs</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>saSignature</a></li>
--   <li><a>saReplyToAddress</a></li>
--   <li><a>saTreatAsAlias</a></li>
--   <li><a>saSendAsEmail</a></li>
--   <li><a>saDisplayName</a></li>
--   <li><a>saVerificationStatus</a></li>
--   <li><a>saSmtpMsa</a></li>
--   <li><a>saIsPrimary</a></li>
--   <li><a>saIsDefault</a></li>
--   </ul>
sendAs :: SendAs

-- | An optional HTML signature that is included in messages composed with
--   this alias in the Gmail web UI.
saSignature :: Lens' SendAs (Maybe Text)

-- | An optional email address that is included in a "Reply-To:" header for
--   mail sent using this alias. If this is empty, Gmail will not generate
--   a "Reply-To:" header.
saReplyToAddress :: Lens' SendAs (Maybe Text)

-- | Whether Gmail should treat this address as an alias for the user's
--   primary email address. This setting only applies to custom "from"
--   aliases.
saTreatAsAlias :: Lens' SendAs (Maybe Bool)

-- | The email address that appears in the "From:" header for mail sent
--   using this alias. This is read-only for all operations except create.
saSendAsEmail :: Lens' SendAs (Maybe Text)

-- | A name that appears in the "From:" header for mail sent using this
--   alias. For custom "from" addresses, when this is empty, Gmail will
--   populate the "From:" header with the name that is used for the primary
--   address associated with the account.
saDisplayName :: Lens' SendAs (Maybe Text)

-- | Indicates whether this address has been verified for use as a send-as
--   alias. Read-only. This setting only applies to custom "from" aliases.
saVerificationStatus :: Lens' SendAs (Maybe SendAsVerificationStatus)

-- | An optional SMTP service that will be used as an outbound relay for
--   mail sent using this alias. If this is empty, outbound mail will be
--   sent directly from Gmail's servers to the destination SMTP service.
--   This setting only applies to custom "from" aliases.
saSmtpMsa :: Lens' SendAs (Maybe SmtpMsa)

-- | Whether this address is the primary address used to login to the
--   account. Every Gmail account has exactly one primary address, and it
--   cannot be deleted from the collection of send-as aliases. This field
--   is read-only.
saIsPrimary :: Lens' SendAs (Maybe Bool)

-- | Whether this address is selected as the default "From:" address in
--   situations such as composing a new message or sending a vacation
--   auto-reply. Every Gmail account has exactly one default send-as
--   address, so the only legal value that clients may write to this field
--   is true. Changing this from false to true for an address will result
--   in this field becoming false for the other previous default address.
saIsDefault :: Lens' SendAs (Maybe Bool)

-- | The owner type for the label. User labels are created by the user and
--   can be modified and deleted by the user and can be applied to any
--   message or thread. System labels are internally created and cannot be
--   added, modified, or deleted. System labels may be able to be applied
--   to or removed from messages and threads under some circumstances but
--   this is not guaranteed. For example, users can apply and remove the
--   INBOX and UNREAD labels from messages and threads, but cannot apply or
--   remove the DRAFTS or SENT labels from messages or threads.
data LabelType

-- | <pre>
--   system
--   </pre>
System :: LabelType

-- | <pre>
--   user
--   </pre>
User :: LabelType

-- | The format to return the draft in.
data UsersDraftsGetFormat

-- | <pre>
--   full
--   </pre>
UDGFFull :: UsersDraftsGetFormat

-- | <pre>
--   metadata
--   </pre>
UDGFMetadata :: UsersDraftsGetFormat

-- | <pre>
--   minimal
--   </pre>
UDGFMinimal :: UsersDraftsGetFormat

-- | <pre>
--   raw
--   </pre>
UDGFRaw :: UsersDraftsGetFormat

-- | Source for Gmail's internal date of the message.
data UsersMessagesImportInternalDateSource

-- | <pre>
--   dateHeader
--   </pre>
DateHeader :: UsersMessagesImportInternalDateSource

-- | <pre>
--   receivedTime
--   </pre>
ReceivedTime :: UsersMessagesImportInternalDateSource

-- | The visibility of the label in the message list in the Gmail web
--   interface.
data LabelMessageListVisibility

-- | <pre>
--   hide
--   </pre>
Hide :: LabelMessageListVisibility

-- | <pre>
--   show
--   </pre>
Show :: LabelMessageListVisibility
data ListThreadsResponse

-- | Creates a value of <a>ListThreadsResponse</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>ltrNextPageToken</a></li>
--   <li><a>ltrResultSizeEstimate</a></li>
--   <li><a>ltrThreads</a></li>
--   </ul>
listThreadsResponse :: ListThreadsResponse

-- | Page token to retrieve the next page of results in the list.
ltrNextPageToken :: Lens' ListThreadsResponse (Maybe Text)

-- | Estimated total number of results.
ltrResultSizeEstimate :: Lens' ListThreadsResponse (Maybe Word32)

-- | List of threads.
ltrThreads :: Lens' ListThreadsResponse [Thread]

-- | A single MIME message part.
--   
--   <i>See:</i> <a>messagePart</a> smart constructor.
data MessagePart

-- | Creates a value of <a>MessagePart</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>mpParts</a></li>
--   <li><a>mpBody</a></li>
--   <li><a>mpMimeType</a></li>
--   <li><a>mpHeaders</a></li>
--   <li><a>mpPartId</a></li>
--   <li><a>mpFilename</a></li>
--   </ul>
messagePart :: MessagePart

-- | The child MIME message parts of this part. This only applies to
--   container MIME message parts, for example multipart/*. For non-
--   container MIME message part types, such as text/plain, this field is
--   empty. For more information, see RFC 1521.
mpParts :: Lens' MessagePart [MessagePart]

-- | The message part body for this part, which may be empty for container
--   MIME message parts.
mpBody :: Lens' MessagePart (Maybe MessagePartBody)

-- | The MIME type of the message part.
mpMimeType :: Lens' MessagePart (Maybe Text)

-- | List of headers on this message part. For the top-level message part,
--   representing the entire message payload, it will contain the standard
--   RFC 2822 email headers such as To, From, and Subject.
mpHeaders :: Lens' MessagePart [MessagePartHeader]

-- | The immutable ID of the message part.
mpPartId :: Lens' MessagePart (Maybe Text)

-- | The filename of the attachment. Only present if this message part
--   represents an attachment.
mpFilename :: Lens' MessagePart (Maybe Text)
data HistoryLabelAdded

-- | Creates a value of <a>HistoryLabelAdded</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>hlaLabelIds</a></li>
--   <li><a>hlaMessage</a></li>
--   </ul>
historyLabelAdded :: HistoryLabelAdded

-- | Label IDs added to the message.
hlaLabelIds :: Lens' HistoryLabelAdded [Text]
hlaMessage :: Lens' HistoryLabelAdded (Maybe Message)
data ListLabelsResponse

-- | Creates a value of <a>ListLabelsResponse</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>llrLabels</a></li>
--   </ul>
listLabelsResponse :: ListLabelsResponse

-- | List of labels.
llrLabels :: Lens' ListLabelsResponse [Label]

-- | Vacation auto-reply settings for an account. These settings correspond
--   to the "Vacation responder" feature in the web interface.
--   
--   <i>See:</i> <a>vacationSettings</a> smart constructor.
data VacationSettings

-- | Creates a value of <a>VacationSettings</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>vsEnableAutoReply</a></li>
--   <li><a>vsResponseBodyPlainText</a></li>
--   <li><a>vsRestrictToDomain</a></li>
--   <li><a>vsStartTime</a></li>
--   <li><a>vsResponseBodyHTML</a></li>
--   <li><a>vsRestrictToContacts</a></li>
--   <li><a>vsResponseSubject</a></li>
--   <li><a>vsEndTime</a></li>
--   </ul>
vacationSettings :: VacationSettings

-- | Flag that controls whether Gmail automatically replies to messages.
vsEnableAutoReply :: Lens' VacationSettings (Maybe Bool)

-- | Response body in plain text format.
vsResponseBodyPlainText :: Lens' VacationSettings (Maybe Text)

-- | Flag that determines whether responses are sent to recipients who are
--   outside of the user's domain. This feature is only available for
--   Google Apps users.
vsRestrictToDomain :: Lens' VacationSettings (Maybe Bool)

-- | An optional start time for sending auto-replies (epoch ms). When this
--   is specified, Gmail will automatically reply only to messages that it
--   receives after the start time. If both startTime and endTime are
--   specified, startTime must precede endTime.
vsStartTime :: Lens' VacationSettings (Maybe Int64)

-- | Response body in HTML format. Gmail will sanitize the HTML before
--   storing it.
vsResponseBodyHTML :: Lens' VacationSettings (Maybe Text)

-- | Flag that determines whether responses are sent to recipients who are
--   not in the user's list of contacts.
vsRestrictToContacts :: Lens' VacationSettings (Maybe Bool)

-- | Optional text to prepend to the subject line in vacation responses. In
--   order to enable auto-replies, either the response subject or the
--   response body must be nonempty.
vsResponseSubject :: Lens' VacationSettings (Maybe Text)

-- | An optional end time for sending auto-replies (epoch ms). When this is
--   specified, Gmail will automatically reply only to messages that it
--   receives before the end time. If both startTime and endTime are
--   specified, startTime must precede endTime.
vsEndTime :: Lens' VacationSettings (Maybe Int64)

-- | The visibility of the label in the label list in the Gmail web
--   interface.
data LabelLabelListVisibility

-- | <pre>
--   labelHide
--   </pre>
LabelHide :: LabelLabelListVisibility

-- | <pre>
--   labelShow
--   </pre>
LabelShow :: LabelLabelListVisibility

-- | <pre>
--   labelShowIfUnread
--   </pre>
LabelShowIfUnread :: LabelLabelListVisibility
data HistoryMessageDeleted

-- | Creates a value of <a>HistoryMessageDeleted</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>hmdMessage</a></li>
--   </ul>
historyMessageDeleted :: HistoryMessageDeleted
hmdMessage :: Lens' HistoryMessageDeleted (Maybe Message)

-- | The body of a single MIME message part.
--   
--   <i>See:</i> <a>messagePartBody</a> smart constructor.
data MessagePartBody

-- | Creates a value of <a>MessagePartBody</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>mpbSize</a></li>
--   <li><a>mpbData</a></li>
--   <li><a>mpbAttachmentId</a></li>
--   </ul>
messagePartBody :: MessagePartBody

-- | Number of bytes for the message part data (encoding notwithstanding).
mpbSize :: Lens' MessagePartBody (Maybe Int32)

-- | The body data of a MIME message part as a base64url encoded string.
--   May be empty for MIME container types that have no message body or
--   when the body data is sent as a separate attachment. An attachment ID
--   is present if the body data is contained in a separate attachment.
mpbData :: Lens' MessagePartBody (Maybe ByteString)

-- | When present, contains the ID of an external attachment that can be
--   retrieved in a separate messages.attachments.get request. When not
--   present, the entire content of the message part body is contained in
--   the data field.
mpbAttachmentId :: Lens' MessagePartBody (Maybe Text)

-- | Auto-forwarding settings for an account.
--   
--   <i>See:</i> <a>autoForwarding</a> smart constructor.
data AutoForwarding

-- | Creates a value of <a>AutoForwarding</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>afEnabled</a></li>
--   <li><a>afDisPosition</a></li>
--   <li><a>afEmailAddress</a></li>
--   </ul>
autoForwarding :: AutoForwarding

-- | Whether all incoming mail is automatically forwarded to another
--   address.
afEnabled :: Lens' AutoForwarding (Maybe Bool)

-- | The state that a message should be left in after it has been
--   forwarded.
afDisPosition :: Lens' AutoForwarding (Maybe AutoForwardingDisPosition)

-- | Email address to which all incoming messages are forwarded. This email
--   address must be a verified member of the forwarding addresses.
afEmailAddress :: Lens' AutoForwarding (Maybe Text)
data ListDraftsResponse

-- | Creates a value of <a>ListDraftsResponse</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>ldrNextPageToken</a></li>
--   <li><a>ldrResultSizeEstimate</a></li>
--   <li><a>ldrDrafts</a></li>
--   </ul>
listDraftsResponse :: ListDraftsResponse

-- | Token to retrieve the next page of results in the list.
ldrNextPageToken :: Lens' ListDraftsResponse (Maybe Text)

-- | Estimated total number of results.
ldrResultSizeEstimate :: Lens' ListDraftsResponse (Maybe Word32)

-- | List of drafts.
ldrDrafts :: Lens' ListDraftsResponse [Draft]

-- | Response for the ListSendAs method.
--   
--   <i>See:</i> <a>listSendAsResponse</a> smart constructor.
data ListSendAsResponse

-- | Creates a value of <a>ListSendAsResponse</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>lsarSendAs</a></li>
--   </ul>
listSendAsResponse :: ListSendAsResponse

-- | List of send-as aliases.
lsarSendAs :: Lens' ListSendAsResponse [SendAs]

-- | Push notification watch response.
--   
--   <i>See:</i> <a>watchResponse</a> smart constructor.
data WatchResponse

-- | Creates a value of <a>WatchResponse</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>wrExpiration</a></li>
--   <li><a>wrHistoryId</a></li>
--   </ul>
watchResponse :: WatchResponse

-- | When Gmail will stop sending notifications for mailbox updates (epoch
--   millis). Call watch again before this time to renew the watch.
wrExpiration :: Lens' WatchResponse (Maybe Int64)

-- | The ID of the mailbox's current history record.
wrHistoryId :: Lens' WatchResponse (Maybe Word64)

-- | The format to return the messages in.
data UsersThreadsGetFormat

-- | <pre>
--   full
--   </pre>
UTGFFull :: UsersThreadsGetFormat

-- | <pre>
--   metadata
--   </pre>
UTGFMetadata :: UsersThreadsGetFormat

-- | <pre>
--   minimal
--   </pre>
UTGFMinimal :: UsersThreadsGetFormat
data BatchModifyMessagesRequest

-- | Creates a value of <a>BatchModifyMessagesRequest</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>bmmrIds</a></li>
--   <li><a>bmmrRemoveLabelIds</a></li>
--   <li><a>bmmrAddLabelIds</a></li>
--   </ul>
batchModifyMessagesRequest :: BatchModifyMessagesRequest

-- | The IDs of the messages to modify. There is a limit of 1000 ids per
--   request.
bmmrIds :: Lens' BatchModifyMessagesRequest [Text]

-- | A list of label IDs to remove from messages.
bmmrRemoveLabelIds :: Lens' BatchModifyMessagesRequest [Text]

-- | A list of label IDs to add to messages.
bmmrAddLabelIds :: Lens' BatchModifyMessagesRequest [Text]

-- | A draft email in the user's mailbox.
--   
--   <i>See:</i> <a>draft</a> smart constructor.
data Draft

-- | Creates a value of <a>Draft</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>dId</a></li>
--   <li><a>dMessage</a></li>
--   </ul>
draft :: Draft

-- | The immutable ID of the draft.
dId :: Lens' Draft (Maybe Text)

-- | The message content of the draft.
dMessage :: Lens' Draft (Maybe Message)

-- | Configuration for communication with an SMTP service.
--   
--   <i>See:</i> <a>smtpMsa</a> smart constructor.
data SmtpMsa

-- | Creates a value of <a>SmtpMsa</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>smSecurityMode</a></li>
--   <li><a>smUsername</a></li>
--   <li><a>smPassword</a></li>
--   <li><a>smHost</a></li>
--   <li><a>smPort</a></li>
--   </ul>
smtpMsa :: SmtpMsa

-- | The protocol that will be used to secure communication with the SMTP
--   service. Required.
smSecurityMode :: Lens' SmtpMsa (Maybe SmtpMsaSecurityMode)

-- | The username that will be used for authentication with the SMTP
--   service. This is a write-only field that can be specified in requests
--   to create or update SendAs settings; it is never populated in
--   responses.
smUsername :: Lens' SmtpMsa (Maybe Text)

-- | The password that will be used for authentication with the SMTP
--   service. This is a write-only field that can be specified in requests
--   to create or update SendAs settings; it is never populated in
--   responses.
smPassword :: Lens' SmtpMsa (Maybe Text)

-- | The hostname of the SMTP service. Required.
smHost :: Lens' SmtpMsa (Maybe Text)

-- | The port of the SMTP service. Required.
smPort :: Lens' SmtpMsa (Maybe Int32)

-- | Settings for a forwarding address.
--   
--   <i>See:</i> <a>forwardingAddress</a> smart constructor.
data ForwardingAddress

-- | Creates a value of <a>ForwardingAddress</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>faForwardingEmail</a></li>
--   <li><a>faVerificationStatus</a></li>
--   </ul>
forwardingAddress :: ForwardingAddress

-- | An email address to which messages can be forwarded.
faForwardingEmail :: Lens' ForwardingAddress (Maybe Text)

-- | Indicates whether this address has been verified and is usable for
--   forwarding. Read-only.
faVerificationStatus :: Lens' ForwardingAddress (Maybe ForwardingAddressVerificationStatus)

-- | The action that will be executed on a message after it has been
--   fetched via POP.
data PopSettingsDisPosition

-- | <pre>
--   archive
--   </pre>
PSDPArchive :: PopSettingsDisPosition

-- | <pre>
--   dispositionUnspecified
--   </pre>
PSDPDisPositionUnspecified :: PopSettingsDisPosition

-- | <pre>
--   leaveInInbox
--   </pre>
PSDPLeaveInInbox :: PopSettingsDisPosition

-- | <pre>
--   markRead
--   </pre>
PSDPMarkRead :: PopSettingsDisPosition

-- | <pre>
--   trash
--   </pre>
PSDPTrash :: PopSettingsDisPosition

-- | Resource definition for Gmail filters. Filters apply to specific
--   messages instead of an entire email thread.
--   
--   <i>See:</i> <a>filter'</a> smart constructor.
data Filter

-- | Creates a value of <a>Filter</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>fAction</a></li>
--   <li><a>fId</a></li>
--   <li><a>fCriteria</a></li>
--   </ul>
filter' :: Filter

-- | Action that the filter performs.
fAction :: Lens' Filter (Maybe FilterAction)

-- | The server assigned ID of the filter.
fId :: Lens' Filter (Maybe Text)

-- | Matching criteria for the filter.
fCriteria :: Lens' Filter (Maybe FilterCriteria)

-- | Set up or update a new push notification watch on this user's mailbox.
--   
--   <i>See:</i> <a>watchRequest</a> smart constructor.
data WatchRequest

-- | Creates a value of <a>WatchRequest</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>wrLabelFilterAction</a></li>
--   <li><a>wrTopicName</a></li>
--   <li><a>wrLabelIds</a></li>
--   </ul>
watchRequest :: WatchRequest

-- | Filtering behavior of labelIds list specified.
wrLabelFilterAction :: Lens' WatchRequest (Maybe WatchRequestLabelFilterAction)

-- | A fully qualified Google Cloud Pub/Sub API topic name to publish the
--   events to. This topic name **must** already exist in Cloud Pub/Sub and
--   you **must** have already granted gmail "publish" permission on it.
--   For example, "projects/my-project-identifier/topics/my-topic-name"
--   (using the Cloud Pub/Sub "v1" topic naming format). Note that the
--   "my-project-identifier" portion must exactly match your Google
--   developer project id (the one executing this watch request).
wrTopicName :: Lens' WatchRequest (Maybe Text)

-- | List of label_ids to restrict notifications about. By default, if
--   unspecified, all changes are pushed out. If specified then dictates
--   which labels are required for a push notification to be generated.
wrLabelIds :: Lens' WatchRequest [Text]

-- | Filtering behavior of labelIds list specified.
data WatchRequestLabelFilterAction

-- | <pre>
--   exclude
--   </pre>
Exclude :: WatchRequestLabelFilterAction

-- | <pre>
--   include
--   </pre>
Include :: WatchRequestLabelFilterAction

-- | IMAP settings for an account.
--   
--   <i>See:</i> <a>imapSettings</a> smart constructor.
data ImapSettings

-- | Creates a value of <a>ImapSettings</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>isEnabled</a></li>
--   <li><a>isExpungeBehavior</a></li>
--   <li><a>isAutoExpunge</a></li>
--   <li><a>isMaxFolderSize</a></li>
--   </ul>
imapSettings :: ImapSettings

-- | Whether IMAP is enabled for the account.
isEnabled :: Lens' ImapSettings (Maybe Bool)

-- | The action that will be executed on a message when it is marked as
--   deleted and expunged from the last visible IMAP folder.
isExpungeBehavior :: Lens' ImapSettings (Maybe ImapSettingsExpungeBehavior)

-- | If this value is true, Gmail will immediately expunge a message when
--   it is marked as deleted in IMAP. Otherwise, Gmail will wait for an
--   update from the client before expunging messages marked as deleted.
isAutoExpunge :: Lens' ImapSettings (Maybe Bool)

-- | An optional limit on the number of messages that an IMAP folder may
--   contain. Legal values are 0, 1000, 2000, 5000 or 10000. A value of
--   zero is interpreted to mean that there is no limit.
isMaxFolderSize :: Lens' ImapSettings (Maybe Int32)

-- | The action that will be executed on a message when it is marked as
--   deleted and expunged from the last visible IMAP folder.
data ImapSettingsExpungeBehavior

-- | <pre>
--   archive
--   </pre>
ISEBArchive :: ImapSettingsExpungeBehavior

-- | <pre>
--   deleteForever
--   </pre>
ISEBDeleteForever :: ImapSettingsExpungeBehavior

-- | <pre>
--   expungeBehaviorUnspecified
--   </pre>
ISEBExpungeBehaviorUnspecified :: ImapSettingsExpungeBehavior

-- | <pre>
--   trash
--   </pre>
ISEBTrash :: ImapSettingsExpungeBehavior

-- | The protocol that will be used to secure communication with the SMTP
--   service. Required.
data SmtpMsaSecurityMode

-- | <pre>
--   none
--   </pre>
None :: SmtpMsaSecurityMode

-- | <pre>
--   securityModeUnspecified
--   </pre>
SecurityModeUnspecified :: SmtpMsaSecurityMode

-- | <pre>
--   ssl
--   </pre>
SSL :: SmtpMsaSecurityMode

-- | <pre>
--   starttls
--   </pre>
Starttls :: SmtpMsaSecurityMode

-- | An email message.
--   
--   <i>See:</i> <a>message</a> smart constructor.
data Message

-- | Creates a value of <a>Message</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>mRaw</a></li>
--   <li><a>mSnippet</a></li>
--   <li><a>mSizeEstimate</a></li>
--   <li><a>mPayload</a></li>
--   <li><a>mHistoryId</a></li>
--   <li><a>mId</a></li>
--   <li><a>mLabelIds</a></li>
--   <li><a>mThreadId</a></li>
--   <li><a>mInternalDate</a></li>
--   </ul>
message :: Message

-- | The entire email message in an RFC 2822 formatted and base64url
--   encoded string. Returned in messages.get and drafts.get responses when
--   the format=RAW parameter is supplied.
mRaw :: Lens' Message (Maybe ByteString)

-- | A short part of the message text.
mSnippet :: Lens' Message (Maybe Text)

-- | Estimated size in bytes of the message.
mSizeEstimate :: Lens' Message (Maybe Int32)

-- | The parsed email structure in the message parts.
mPayload :: Lens' Message (Maybe MessagePart)

-- | The ID of the last history record that modified this message.
mHistoryId :: Lens' Message (Maybe Word64)

-- | The immutable ID of the message.
mId :: Lens' Message (Maybe Text)

-- | List of IDs of labels applied to this message.
mLabelIds :: Lens' Message [Text]

-- | The ID of the thread the message belongs to. To add a message or draft
--   to a thread, the following criteria must be met: - The requested
--   threadId must be specified on the Message or Draft.Message you supply
--   with your request. - The References and In-Reply-To headers must be
--   set in compliance with the RFC 2822 standard. - The Subject headers
--   must match.
mThreadId :: Lens' Message (Maybe Text)

-- | The internal message creation timestamp (epoch ms), which determines
--   ordering in the inbox. For normal SMTP-received email, this represents
--   the time the message was originally accepted by Google, which is more
--   reliable than the Date header. However, for API-migrated mail, it can
--   be configured by client to be based on the Date header.
mInternalDate :: Lens' Message (Maybe Int64)

-- | Source for Gmail's internal date of the message.
data UsersMessagesInsertInternalDateSource

-- | <pre>
--   dateHeader
--   </pre>
UMIIDSDateHeader :: UsersMessagesInsertInternalDateSource

-- | <pre>
--   receivedTime
--   </pre>
UMIIDSReceivedTime :: UsersMessagesInsertInternalDateSource
data HistoryLabelRemoved

-- | Creates a value of <a>HistoryLabelRemoved</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>hlrLabelIds</a></li>
--   <li><a>hlrMessage</a></li>
--   </ul>
historyLabelRemoved :: HistoryLabelRemoved

-- | Label IDs removed from the message.
hlrLabelIds :: Lens' HistoryLabelRemoved [Text]
hlrMessage :: Lens' HistoryLabelRemoved (Maybe Message)

-- | A collection of messages representing a conversation.
--   
--   <i>See:</i> <a>thread</a> smart constructor.
data Thread

-- | Creates a value of <a>Thread</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>tSnippet</a></li>
--   <li><a>tHistoryId</a></li>
--   <li><a>tId</a></li>
--   <li><a>tMessages</a></li>
--   </ul>
thread :: Thread

-- | A short part of the message text.
tSnippet :: Lens' Thread (Maybe Text)

-- | The ID of the last history record that modified this thread.
tHistoryId :: Lens' Thread (Maybe Word64)

-- | The unique ID of the thread.
tId :: Lens' Thread (Maybe Text)

-- | The list of messages in the thread.
tMessages :: Lens' Thread [Message]

-- | A set of actions to perform on a message.
--   
--   <i>See:</i> <a>filterAction</a> smart constructor.
data FilterAction

-- | Creates a value of <a>FilterAction</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>faForward</a></li>
--   <li><a>faRemoveLabelIds</a></li>
--   <li><a>faAddLabelIds</a></li>
--   </ul>
filterAction :: FilterAction

-- | Email address that the message should be forwarded to.
faForward :: Lens' FilterAction (Maybe Text)

-- | List of labels to remove from the message.
faRemoveLabelIds :: Lens' FilterAction [Text]

-- | List of labels to add to the message.
faAddLabelIds :: Lens' FilterAction [Text]

-- | Labels are used to categorize messages and threads within the user's
--   mailbox.
--   
--   <i>See:</i> <a>label</a> smart constructor.
data Label

-- | Creates a value of <a>Label</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>lThreadsUnread</a></li>
--   <li><a>lMessageListVisibility</a></li>
--   <li><a>lMessagesTotal</a></li>
--   <li><a>lMessagesUnread</a></li>
--   <li><a>lName</a></li>
--   <li><a>lThreadsTotal</a></li>
--   <li><a>lLabelListVisibility</a></li>
--   <li><a>lId</a></li>
--   <li><a>lType</a></li>
--   </ul>
label :: Label

-- | The number of unread threads with the label.
lThreadsUnread :: Lens' Label (Maybe Int32)

-- | The visibility of the label in the message list in the Gmail web
--   interface.
lMessageListVisibility :: Lens' Label (Maybe LabelMessageListVisibility)

-- | The total number of messages with the label.
lMessagesTotal :: Lens' Label (Maybe Int32)

-- | The number of unread messages with the label.
lMessagesUnread :: Lens' Label (Maybe Int32)

-- | The display name of the label.
lName :: Lens' Label (Maybe Text)

-- | The total number of threads with the label.
lThreadsTotal :: Lens' Label (Maybe Int32)

-- | The visibility of the label in the label list in the Gmail web
--   interface.
lLabelListVisibility :: Lens' Label (Maybe LabelLabelListVisibility)

-- | The immutable ID of the label.
lId :: Lens' Label (Maybe Text)

-- | The owner type for the label. User labels are created by the user and
--   can be modified and deleted by the user and can be applied to any
--   message or thread. System labels are internally created and cannot be
--   added, modified, or deleted. System labels may be able to be applied
--   to or removed from messages and threads under some circumstances but
--   this is not guaranteed. For example, users can apply and remove the
--   INBOX and UNREAD labels from messages and threads, but cannot apply or
--   remove the DRAFTS or SENT labels from messages or threads.
lType :: Lens' Label (Maybe LabelType)
data ListMessagesResponse

-- | Creates a value of <a>ListMessagesResponse</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>lmrNextPageToken</a></li>
--   <li><a>lmrResultSizeEstimate</a></li>
--   <li><a>lmrMessages</a></li>
--   </ul>
listMessagesResponse :: ListMessagesResponse

-- | Token to retrieve the next page of results in the list.
lmrNextPageToken :: Lens' ListMessagesResponse (Maybe Text)

-- | Estimated total number of results.
lmrResultSizeEstimate :: Lens' ListMessagesResponse (Maybe Word32)

-- | List of messages.
lmrMessages :: Lens' ListMessagesResponse [Message]
data HistoryMessageAdded

-- | Creates a value of <a>HistoryMessageAdded</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>hmaMessage</a></li>
--   </ul>
historyMessageAdded :: HistoryMessageAdded
hmaMessage :: Lens' HistoryMessageAdded (Maybe Message)


-- | Creates a new draft with the DRAFT label.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.drafts.create</tt>.
module Network.Google.Resource.Gmail.Users.Drafts.Create

-- | A resource alias for <tt>gmail.users.drafts.create</tt> method which
--   the <a>UsersDraftsCreate</a> request conforms to.
type UsersDraftsCreateResource = ("gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("drafts" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Draft :> Post '[JSON] Draft))))))) :<|> ("upload" :> ("gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("drafts" :> (QueryParam "alt" AltJSON :> (QueryParam "uploadType" Multipart :> (MultipartRelated '[JSON] Draft :> Post '[JSON] Draft)))))))))

-- | Creates a value of <a>UsersDraftsCreate</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>udcPayload</a></li>
--   <li><a>udcUserId</a></li>
--   </ul>
usersDraftsCreate :: Draft -> UsersDraftsCreate

-- | Creates a new draft with the DRAFT label.
--   
--   <i>See:</i> <a>usersDraftsCreate</a> smart constructor.
data UsersDraftsCreate

-- | Multipart request metadata.
udcPayload :: Lens' UsersDraftsCreate Draft

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
udcUserId :: Lens' UsersDraftsCreate Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Drafts.Create.UsersDraftsCreate
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Drafts.Create.UsersDraftsCreate
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Drafts.Create.UsersDraftsCreate
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Drafts.Create.UsersDraftsCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Drafts.Create.UsersDraftsCreate
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaUpload Network.Google.Resource.Gmail.Users.Drafts.Create.UsersDraftsCreate)


-- | Immediately and permanently deletes the specified draft. Does not
--   simply trash it.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.drafts.delete</tt>.
module Network.Google.Resource.Gmail.Users.Drafts.Delete

-- | A resource alias for <tt>gmail.users.drafts.delete</tt> method which
--   the <a>UsersDraftsDelete</a> request conforms to.
type UsersDraftsDeleteResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("drafts" :> (Capture "id" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>UsersDraftsDelete</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>uddUserId</a></li>
--   <li><a>uddId</a></li>
--   </ul>
usersDraftsDelete :: Text -> UsersDraftsDelete

-- | Immediately and permanently deletes the specified draft. Does not
--   simply trash it.
--   
--   <i>See:</i> <a>usersDraftsDelete</a> smart constructor.
data UsersDraftsDelete

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
uddUserId :: Lens' UsersDraftsDelete Text

-- | The ID of the draft to delete.
uddId :: Lens' UsersDraftsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Drafts.Delete.UsersDraftsDelete
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Drafts.Delete.UsersDraftsDelete
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Drafts.Delete.UsersDraftsDelete
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Drafts.Delete.UsersDraftsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Drafts.Delete.UsersDraftsDelete


-- | Gets the specified draft.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.drafts.get</tt>.
module Network.Google.Resource.Gmail.Users.Drafts.Get

-- | A resource alias for <tt>gmail.users.drafts.get</tt> method which the
--   <a>UsersDraftsGet</a> request conforms to.
type UsersDraftsGetResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("drafts" :> (Capture "id" Text :> (QueryParam "format" UsersDraftsGetFormat :> (QueryParam "alt" AltJSON :> Get '[JSON] Draft)))))))

-- | Creates a value of <a>UsersDraftsGet</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>udgFormat</a></li>
--   <li><a>udgUserId</a></li>
--   <li><a>udgId</a></li>
--   </ul>
usersDraftsGet :: Text -> UsersDraftsGet

-- | Gets the specified draft.
--   
--   <i>See:</i> <a>usersDraftsGet</a> smart constructor.
data UsersDraftsGet

-- | The format to return the draft in.
udgFormat :: Lens' UsersDraftsGet UsersDraftsGetFormat

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
udgUserId :: Lens' UsersDraftsGet Text

-- | The ID of the draft to retrieve.
udgId :: Lens' UsersDraftsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Drafts.Get.UsersDraftsGet
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Drafts.Get.UsersDraftsGet
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Drafts.Get.UsersDraftsGet
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Drafts.Get.UsersDraftsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Drafts.Get.UsersDraftsGet


-- | Lists the drafts in the user's mailbox.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.drafts.list</tt>.
module Network.Google.Resource.Gmail.Users.Drafts.List

-- | A resource alias for <tt>gmail.users.drafts.list</tt> method which the
--   <a>UsersDraftsList</a> request conforms to.
type UsersDraftsListResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("drafts" :> (QueryParam "q" Text :> (QueryParam "includeSpamTrash" Bool :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ListDraftsResponse)))))))))

-- | Creates a value of <a>UsersDraftsList</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>udlQ</a></li>
--   <li><a>udlUserId</a></li>
--   <li><a>udlIncludeSpamTrash</a></li>
--   <li><a>udlPageToken</a></li>
--   <li><a>udlMaxResults</a></li>
--   </ul>
usersDraftsList :: UsersDraftsList

-- | Lists the drafts in the user's mailbox.
--   
--   <i>See:</i> <a>usersDraftsList</a> smart constructor.
data UsersDraftsList

-- | Only return draft messages matching the specified query. Supports the
--   same query format as the Gmail search box. For example,
--   "from:someuser'example.com rfc822msgid: is:unread".
udlQ :: Lens' UsersDraftsList (Maybe Text)

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
udlUserId :: Lens' UsersDraftsList Text

-- | Include drafts from SPAM and TRASH in the results.
udlIncludeSpamTrash :: Lens' UsersDraftsList Bool

-- | Page token to retrieve a specific page of results in the list.
udlPageToken :: Lens' UsersDraftsList (Maybe Text)

-- | Maximum number of drafts to return.
udlMaxResults :: Lens' UsersDraftsList Word32
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Drafts.List.UsersDraftsList
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Drafts.List.UsersDraftsList
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Drafts.List.UsersDraftsList
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Drafts.List.UsersDraftsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Drafts.List.UsersDraftsList


-- | Sends the specified, existing draft to the recipients in the To, Cc,
--   and Bcc headers.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.drafts.send</tt>.
module Network.Google.Resource.Gmail.Users.Drafts.Send

-- | A resource alias for <tt>gmail.users.drafts.send</tt> method which the
--   <a>UsersDraftsSend</a> request conforms to.
type UsersDraftsSendResource = ("gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("drafts" :> ("send" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Draft :> Post '[JSON] Message)))))))) :<|> ("upload" :> ("gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("drafts" :> ("send" :> (QueryParam "alt" AltJSON :> (QueryParam "uploadType" Multipart :> (MultipartRelated '[JSON] Draft :> Post '[JSON] Message))))))))))

-- | Creates a value of <a>UsersDraftsSend</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>udsPayload</a></li>
--   <li><a>udsUserId</a></li>
--   </ul>
usersDraftsSend :: Draft -> UsersDraftsSend

-- | Sends the specified, existing draft to the recipients in the To, Cc,
--   and Bcc headers.
--   
--   <i>See:</i> <a>usersDraftsSend</a> smart constructor.
data UsersDraftsSend

-- | Multipart request metadata.
udsPayload :: Lens' UsersDraftsSend Draft

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
udsUserId :: Lens' UsersDraftsSend Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Drafts.Send.UsersDraftsSend
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Drafts.Send.UsersDraftsSend
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Drafts.Send.UsersDraftsSend
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Drafts.Send.UsersDraftsSend
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Drafts.Send.UsersDraftsSend
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaUpload Network.Google.Resource.Gmail.Users.Drafts.Send.UsersDraftsSend)


-- | Replaces a draft's content.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.drafts.update</tt>.
module Network.Google.Resource.Gmail.Users.Drafts.Update

-- | A resource alias for <tt>gmail.users.drafts.update</tt> method which
--   the <a>UsersDraftsUpdate</a> request conforms to.
type UsersDraftsUpdateResource = ("gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("drafts" :> (Capture "id" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Draft :> Put '[JSON] Draft)))))))) :<|> ("upload" :> ("gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("drafts" :> (Capture "id" Text :> (QueryParam "alt" AltJSON :> (QueryParam "uploadType" Multipart :> (MultipartRelated '[JSON] Draft :> Put '[JSON] Draft))))))))))

-- | Creates a value of <a>UsersDraftsUpdate</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>uduPayload</a></li>
--   <li><a>uduUserId</a></li>
--   <li><a>uduId</a></li>
--   </ul>
usersDraftsUpdate :: Draft -> Text -> UsersDraftsUpdate

-- | Replaces a draft's content.
--   
--   <i>See:</i> <a>usersDraftsUpdate</a> smart constructor.
data UsersDraftsUpdate

-- | Multipart request metadata.
uduPayload :: Lens' UsersDraftsUpdate Draft

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
uduUserId :: Lens' UsersDraftsUpdate Text

-- | The ID of the draft to update.
uduId :: Lens' UsersDraftsUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Drafts.Update.UsersDraftsUpdate
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Drafts.Update.UsersDraftsUpdate
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Drafts.Update.UsersDraftsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Drafts.Update.UsersDraftsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Drafts.Update.UsersDraftsUpdate
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaUpload Network.Google.Resource.Gmail.Users.Drafts.Update.UsersDraftsUpdate)


-- | Gets the current user's Gmail profile.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.getProfile</tt>.
module Network.Google.Resource.Gmail.Users.GetProFile

-- | A resource alias for <tt>gmail.users.getProfile</tt> method which the
--   <a>UsersGetProFile</a> request conforms to.
type UsersGetProFileResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("profile" :> (QueryParam "alt" AltJSON :> Get '[JSON] ProFile)))))

-- | Creates a value of <a>UsersGetProFile</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>ugpfUserId</a></li>
--   </ul>
usersGetProFile :: UsersGetProFile

-- | Gets the current user's Gmail profile.
--   
--   <i>See:</i> <a>usersGetProFile</a> smart constructor.
data UsersGetProFile

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
ugpfUserId :: Lens' UsersGetProFile Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.GetProFile.UsersGetProFile
instance Data.Data.Data Network.Google.Resource.Gmail.Users.GetProFile.UsersGetProFile
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.GetProFile.UsersGetProFile
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.GetProFile.UsersGetProFile
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.GetProFile.UsersGetProFile


-- | Lists the history of all changes to the given mailbox. History results
--   are returned in chronological order (increasing historyId).
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.history.list</tt>.
module Network.Google.Resource.Gmail.Users.History.List

-- | A resource alias for <tt>gmail.users.history.list</tt> method which
--   the <a>UsersHistoryList</a> request conforms to.
type UsersHistoryListResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("history" :> (QueryParam "startHistoryId" (Textual Word64) :> (QueryParam "pageToken" Text :> (QueryParam "labelId" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ListHistoryResponse)))))))))

-- | Creates a value of <a>UsersHistoryList</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>uhlUserId</a></li>
--   <li><a>uhlStartHistoryId</a></li>
--   <li><a>uhlPageToken</a></li>
--   <li><a>uhlLabelId</a></li>
--   <li><a>uhlMaxResults</a></li>
--   </ul>
usersHistoryList :: UsersHistoryList

-- | Lists the history of all changes to the given mailbox. History results
--   are returned in chronological order (increasing historyId).
--   
--   <i>See:</i> <a>usersHistoryList</a> smart constructor.
data UsersHistoryList

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
uhlUserId :: Lens' UsersHistoryList Text

-- | Required. Returns history records after the specified startHistoryId.
--   The supplied startHistoryId should be obtained from the historyId of a
--   message, thread, or previous list response. History IDs increase
--   chronologically but are not contiguous with random gaps in between
--   valid IDs. Supplying an invalid or out of date startHistoryId
--   typically returns an HTTP 404 error code. A historyId is typically
--   valid for at least a week, but in some rare circumstances may be valid
--   for only a few hours. If you receive an HTTP 404 error response, your
--   application should perform a full sync. If you receive no
--   nextPageToken in the response, there are no updates to retrieve and
--   you can store the returned historyId for a future request.
uhlStartHistoryId :: Lens' UsersHistoryList (Maybe Word64)

-- | Page token to retrieve a specific page of results in the list.
uhlPageToken :: Lens' UsersHistoryList (Maybe Text)

-- | Only return messages with a label matching the ID.
uhlLabelId :: Lens' UsersHistoryList (Maybe Text)

-- | The maximum number of history records to return.
uhlMaxResults :: Lens' UsersHistoryList Word32
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.History.List.UsersHistoryList
instance Data.Data.Data Network.Google.Resource.Gmail.Users.History.List.UsersHistoryList
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.History.List.UsersHistoryList
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.History.List.UsersHistoryList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.History.List.UsersHistoryList


-- | Creates a new label.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.labels.create</tt>.
module Network.Google.Resource.Gmail.Users.Labels.Create

-- | A resource alias for <tt>gmail.users.labels.create</tt> method which
--   the <a>UsersLabelsCreate</a> request conforms to.
type UsersLabelsCreateResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("labels" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Label :> Post '[JSON] Label))))))

-- | Creates a value of <a>UsersLabelsCreate</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>ulcPayload</a></li>
--   <li><a>ulcUserId</a></li>
--   </ul>
usersLabelsCreate :: Label -> UsersLabelsCreate

-- | Creates a new label.
--   
--   <i>See:</i> <a>usersLabelsCreate</a> smart constructor.
data UsersLabelsCreate

-- | Multipart request metadata.
ulcPayload :: Lens' UsersLabelsCreate Label

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
ulcUserId :: Lens' UsersLabelsCreate Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Labels.Create.UsersLabelsCreate
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Labels.Create.UsersLabelsCreate
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Labels.Create.UsersLabelsCreate
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Labels.Create.UsersLabelsCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Labels.Create.UsersLabelsCreate


-- | Immediately and permanently deletes the specified label and removes it
--   from any messages and threads that it is applied to.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.labels.delete</tt>.
module Network.Google.Resource.Gmail.Users.Labels.Delete

-- | A resource alias for <tt>gmail.users.labels.delete</tt> method which
--   the <a>UsersLabelsDelete</a> request conforms to.
type UsersLabelsDeleteResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("labels" :> (Capture "id" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>UsersLabelsDelete</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>uldUserId</a></li>
--   <li><a>uldId</a></li>
--   </ul>
usersLabelsDelete :: Text -> UsersLabelsDelete

-- | Immediately and permanently deletes the specified label and removes it
--   from any messages and threads that it is applied to.
--   
--   <i>See:</i> <a>usersLabelsDelete</a> smart constructor.
data UsersLabelsDelete

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
uldUserId :: Lens' UsersLabelsDelete Text

-- | The ID of the label to delete.
uldId :: Lens' UsersLabelsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Labels.Delete.UsersLabelsDelete
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Labels.Delete.UsersLabelsDelete
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Labels.Delete.UsersLabelsDelete
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Labels.Delete.UsersLabelsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Labels.Delete.UsersLabelsDelete


-- | Gets the specified label.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.labels.get</tt>.
module Network.Google.Resource.Gmail.Users.Labels.Get

-- | A resource alias for <tt>gmail.users.labels.get</tt> method which the
--   <a>UsersLabelsGet</a> request conforms to.
type UsersLabelsGetResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("labels" :> (Capture "id" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Label))))))

-- | Creates a value of <a>UsersLabelsGet</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>ulgUserId</a></li>
--   <li><a>ulgId</a></li>
--   </ul>
usersLabelsGet :: Text -> UsersLabelsGet

-- | Gets the specified label.
--   
--   <i>See:</i> <a>usersLabelsGet</a> smart constructor.
data UsersLabelsGet

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
ulgUserId :: Lens' UsersLabelsGet Text

-- | The ID of the label to retrieve.
ulgId :: Lens' UsersLabelsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Labels.Get.UsersLabelsGet
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Labels.Get.UsersLabelsGet
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Labels.Get.UsersLabelsGet
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Labels.Get.UsersLabelsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Labels.Get.UsersLabelsGet


-- | Lists all labels in the user's mailbox.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.labels.list</tt>.
module Network.Google.Resource.Gmail.Users.Labels.List

-- | A resource alias for <tt>gmail.users.labels.list</tt> method which the
--   <a>UsersLabelsList</a> request conforms to.
type UsersLabelsListResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("labels" :> (QueryParam "alt" AltJSON :> Get '[JSON] ListLabelsResponse)))))

-- | Creates a value of <a>UsersLabelsList</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>ullUserId</a></li>
--   </ul>
usersLabelsList :: UsersLabelsList

-- | Lists all labels in the user's mailbox.
--   
--   <i>See:</i> <a>usersLabelsList</a> smart constructor.
data UsersLabelsList

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
ullUserId :: Lens' UsersLabelsList Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Labels.List.UsersLabelsList
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Labels.List.UsersLabelsList
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Labels.List.UsersLabelsList
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Labels.List.UsersLabelsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Labels.List.UsersLabelsList


-- | Updates the specified label. This method supports patch semantics.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.labels.patch</tt>.
module Network.Google.Resource.Gmail.Users.Labels.Patch

-- | A resource alias for <tt>gmail.users.labels.patch</tt> method which
--   the <a>UsersLabelsPatch</a> request conforms to.
type UsersLabelsPatchResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("labels" :> (Capture "id" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Label :> Patch '[JSON] Label)))))))

-- | Creates a value of <a>UsersLabelsPatch</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>ulpPayload</a></li>
--   <li><a>ulpUserId</a></li>
--   <li><a>ulpId</a></li>
--   </ul>
usersLabelsPatch :: Label -> Text -> UsersLabelsPatch

-- | Updates the specified label. This method supports patch semantics.
--   
--   <i>See:</i> <a>usersLabelsPatch</a> smart constructor.
data UsersLabelsPatch

-- | Multipart request metadata.
ulpPayload :: Lens' UsersLabelsPatch Label

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
ulpUserId :: Lens' UsersLabelsPatch Text

-- | The ID of the label to update.
ulpId :: Lens' UsersLabelsPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Labels.Patch.UsersLabelsPatch
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Labels.Patch.UsersLabelsPatch
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Labels.Patch.UsersLabelsPatch
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Labels.Patch.UsersLabelsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Labels.Patch.UsersLabelsPatch


-- | Updates the specified label.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.labels.update</tt>.
module Network.Google.Resource.Gmail.Users.Labels.Update

-- | A resource alias for <tt>gmail.users.labels.update</tt> method which
--   the <a>UsersLabelsUpdate</a> request conforms to.
type UsersLabelsUpdateResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("labels" :> (Capture "id" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Label :> Put '[JSON] Label)))))))

-- | Creates a value of <a>UsersLabelsUpdate</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>uluPayload</a></li>
--   <li><a>uluUserId</a></li>
--   <li><a>uluId</a></li>
--   </ul>
usersLabelsUpdate :: Label -> Text -> UsersLabelsUpdate

-- | Updates the specified label.
--   
--   <i>See:</i> <a>usersLabelsUpdate</a> smart constructor.
data UsersLabelsUpdate

-- | Multipart request metadata.
uluPayload :: Lens' UsersLabelsUpdate Label

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
uluUserId :: Lens' UsersLabelsUpdate Text

-- | The ID of the label to update.
uluId :: Lens' UsersLabelsUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Labels.Update.UsersLabelsUpdate
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Labels.Update.UsersLabelsUpdate
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Labels.Update.UsersLabelsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Labels.Update.UsersLabelsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Labels.Update.UsersLabelsUpdate


-- | Gets the specified message attachment.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.messages.attachments.get</tt>.
module Network.Google.Resource.Gmail.Users.Messages.Attachments.Get

-- | A resource alias for <tt>gmail.users.messages.attachments.get</tt>
--   method which the <a>UsersMessagesAttachmentsGet</a> request conforms
--   to.
type UsersMessagesAttachmentsGetResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> (Capture "messageId" Text :> ("attachments" :> (Capture "id" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] MessagePartBody))))))))

-- | Creates a value of <a>UsersMessagesAttachmentsGet</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>umagUserId</a></li>
--   <li><a>umagId</a></li>
--   <li><a>umagMessageId</a></li>
--   </ul>
usersMessagesAttachmentsGet :: Text -> Text -> UsersMessagesAttachmentsGet

-- | Gets the specified message attachment.
--   
--   <i>See:</i> <a>usersMessagesAttachmentsGet</a> smart constructor.
data UsersMessagesAttachmentsGet

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
umagUserId :: Lens' UsersMessagesAttachmentsGet Text

-- | The ID of the attachment.
umagId :: Lens' UsersMessagesAttachmentsGet Text

-- | The ID of the message containing the attachment.
umagMessageId :: Lens' UsersMessagesAttachmentsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Messages.Attachments.Get.UsersMessagesAttachmentsGet
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Messages.Attachments.Get.UsersMessagesAttachmentsGet
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Messages.Attachments.Get.UsersMessagesAttachmentsGet
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Messages.Attachments.Get.UsersMessagesAttachmentsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Messages.Attachments.Get.UsersMessagesAttachmentsGet


-- | Deletes many messages by message ID. Provides no guarantees that
--   messages were not already deleted or even existed at all.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.messages.batchDelete</tt>.
module Network.Google.Resource.Gmail.Users.Messages.BatchDelete

-- | A resource alias for <tt>gmail.users.messages.batchDelete</tt> method
--   which the <a>UsersMessagesBatchDelete</a> request conforms to.
type UsersMessagesBatchDeleteResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> ("batchDelete" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BatchDeleteMessagesRequest :> Post '[JSON] ())))))))

-- | Creates a value of <a>UsersMessagesBatchDelete</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>umbdPayload</a></li>
--   <li><a>umbdUserId</a></li>
--   </ul>
usersMessagesBatchDelete :: BatchDeleteMessagesRequest -> UsersMessagesBatchDelete

-- | Deletes many messages by message ID. Provides no guarantees that
--   messages were not already deleted or even existed at all.
--   
--   <i>See:</i> <a>usersMessagesBatchDelete</a> smart constructor.
data UsersMessagesBatchDelete

-- | Multipart request metadata.
umbdPayload :: Lens' UsersMessagesBatchDelete BatchDeleteMessagesRequest

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
umbdUserId :: Lens' UsersMessagesBatchDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Messages.BatchDelete.UsersMessagesBatchDelete
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Messages.BatchDelete.UsersMessagesBatchDelete
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Messages.BatchDelete.UsersMessagesBatchDelete
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Messages.BatchDelete.UsersMessagesBatchDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Messages.BatchDelete.UsersMessagesBatchDelete


-- | Modifies the labels on the specified messages.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.messages.batchModify</tt>.
module Network.Google.Resource.Gmail.Users.Messages.BatchModify

-- | A resource alias for <tt>gmail.users.messages.batchModify</tt> method
--   which the <a>UsersMessagesBatchModify</a> request conforms to.
type UsersMessagesBatchModifyResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> ("batchModify" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BatchModifyMessagesRequest :> Post '[JSON] ())))))))

-- | Creates a value of <a>UsersMessagesBatchModify</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>umbmPayload</a></li>
--   <li><a>umbmUserId</a></li>
--   </ul>
usersMessagesBatchModify :: BatchModifyMessagesRequest -> UsersMessagesBatchModify

-- | Modifies the labels on the specified messages.
--   
--   <i>See:</i> <a>usersMessagesBatchModify</a> smart constructor.
data UsersMessagesBatchModify

-- | Multipart request metadata.
umbmPayload :: Lens' UsersMessagesBatchModify BatchModifyMessagesRequest

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
umbmUserId :: Lens' UsersMessagesBatchModify Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Messages.BatchModify.UsersMessagesBatchModify
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Messages.BatchModify.UsersMessagesBatchModify
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Messages.BatchModify.UsersMessagesBatchModify
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Messages.BatchModify.UsersMessagesBatchModify
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Messages.BatchModify.UsersMessagesBatchModify


-- | Immediately and permanently deletes the specified message. This
--   operation cannot be undone. Prefer messages.trash instead.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.messages.delete</tt>.
module Network.Google.Resource.Gmail.Users.Messages.Delete

-- | A resource alias for <tt>gmail.users.messages.delete</tt> method which
--   the <a>UsersMessagesDelete</a> request conforms to.
type UsersMessagesDeleteResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> (Capture "id" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>UsersMessagesDelete</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>umdUserId</a></li>
--   <li><a>umdId</a></li>
--   </ul>
usersMessagesDelete :: Text -> UsersMessagesDelete

-- | Immediately and permanently deletes the specified message. This
--   operation cannot be undone. Prefer messages.trash instead.
--   
--   <i>See:</i> <a>usersMessagesDelete</a> smart constructor.
data UsersMessagesDelete

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
umdUserId :: Lens' UsersMessagesDelete Text

-- | The ID of the message to delete.
umdId :: Lens' UsersMessagesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Messages.Delete.UsersMessagesDelete
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Messages.Delete.UsersMessagesDelete
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Messages.Delete.UsersMessagesDelete
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Messages.Delete.UsersMessagesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Messages.Delete.UsersMessagesDelete


-- | Gets the specified message.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.messages.get</tt>.
module Network.Google.Resource.Gmail.Users.Messages.Get

-- | A resource alias for <tt>gmail.users.messages.get</tt> method which
--   the <a>UsersMessagesGet</a> request conforms to.
type UsersMessagesGetResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> (Capture "id" Text :> (QueryParam "format" UsersMessagesGetFormat :> (QueryParams "metadataHeaders" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Message))))))))

-- | Creates a value of <a>UsersMessagesGet</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>umgFormat</a></li>
--   <li><a>umgUserId</a></li>
--   <li><a>umgId</a></li>
--   <li><a>umgMetadataHeaders</a></li>
--   </ul>
usersMessagesGet :: Text -> UsersMessagesGet

-- | Gets the specified message.
--   
--   <i>See:</i> <a>usersMessagesGet</a> smart constructor.
data UsersMessagesGet

-- | The format to return the message in.
umgFormat :: Lens' UsersMessagesGet UsersMessagesGetFormat

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
umgUserId :: Lens' UsersMessagesGet Text

-- | The ID of the message to retrieve.
umgId :: Lens' UsersMessagesGet Text

-- | When given and format is METADATA, only include headers specified.
umgMetadataHeaders :: Lens' UsersMessagesGet [Text]
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Messages.Get.UsersMessagesGet
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Messages.Get.UsersMessagesGet
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Messages.Get.UsersMessagesGet
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Messages.Get.UsersMessagesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Messages.Get.UsersMessagesGet


-- | Imports a message into only this user's mailbox, with standard email
--   delivery scanning and classification similar to receiving via SMTP.
--   Does not send a message.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.messages.import</tt>.
module Network.Google.Resource.Gmail.Users.Messages.Import

-- | A resource alias for <tt>gmail.users.messages.import</tt> method which
--   the <a>UsersMessagesImport</a> request conforms to.
type UsersMessagesImportResource = ("gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> ("import" :> (QueryParam "processForCalendar" Bool :> (QueryParam "deleted" Bool :> (QueryParam "neverMarkSpam" Bool :> (QueryParam "internalDateSource" UsersMessagesImportInternalDateSource :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Message :> Post '[JSON] Message)))))))))))) :<|> ("upload" :> ("gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> ("import" :> (QueryParam "processForCalendar" Bool :> (QueryParam "deleted" Bool :> (QueryParam "neverMarkSpam" Bool :> (QueryParam "internalDateSource" UsersMessagesImportInternalDateSource :> (QueryParam "alt" AltJSON :> (QueryParam "uploadType" Multipart :> (MultipartRelated '[JSON] Message :> Post '[JSON] Message))))))))))))))

-- | Creates a value of <a>UsersMessagesImport</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>umiPayload</a></li>
--   <li><a>umiUserId</a></li>
--   <li><a>umiProcessForCalendar</a></li>
--   <li><a>umiDeleted</a></li>
--   <li><a>umiNeverMarkSpam</a></li>
--   <li><a>umiInternalDateSource</a></li>
--   </ul>
usersMessagesImport :: Message -> UsersMessagesImport

-- | Imports a message into only this user's mailbox, with standard email
--   delivery scanning and classification similar to receiving via SMTP.
--   Does not send a message.
--   
--   <i>See:</i> <a>usersMessagesImport</a> smart constructor.
data UsersMessagesImport

-- | Multipart request metadata.
umiPayload :: Lens' UsersMessagesImport Message

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
umiUserId :: Lens' UsersMessagesImport Text

-- | Process calendar invites in the email and add any extracted meetings
--   to the Google Calendar for this user.
umiProcessForCalendar :: Lens' UsersMessagesImport Bool

-- | Mark the email as permanently deleted (not TRASH) and only visible in
--   Google Apps Vault to a Vault administrator. Only used for Google Apps
--   for Work accounts.
umiDeleted :: Lens' UsersMessagesImport Bool

-- | Ignore the Gmail spam classifier decision and never mark this email as
--   SPAM in the mailbox.
umiNeverMarkSpam :: Lens' UsersMessagesImport Bool

-- | Source for Gmail's internal date of the message.
umiInternalDateSource :: Lens' UsersMessagesImport UsersMessagesImportInternalDateSource
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Messages.Import.UsersMessagesImport
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Messages.Import.UsersMessagesImport
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Messages.Import.UsersMessagesImport
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Messages.Import.UsersMessagesImport
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Messages.Import.UsersMessagesImport
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaUpload Network.Google.Resource.Gmail.Users.Messages.Import.UsersMessagesImport)


-- | Directly inserts a message into only this user's mailbox similar to
--   IMAP APPEND, bypassing most scanning and classification. Does not send
--   a message.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.messages.insert</tt>.
module Network.Google.Resource.Gmail.Users.Messages.Insert

-- | A resource alias for <tt>gmail.users.messages.insert</tt> method which
--   the <a>UsersMessagesInsert</a> request conforms to.
type UsersMessagesInsertResource = ("gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> (QueryParam "deleted" Bool :> (QueryParam "internalDateSource" UsersMessagesInsertInternalDateSource :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Message :> Post '[JSON] Message))))))))) :<|> ("upload" :> ("gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> (QueryParam "deleted" Bool :> (QueryParam "internalDateSource" UsersMessagesInsertInternalDateSource :> (QueryParam "alt" AltJSON :> (QueryParam "uploadType" Multipart :> (MultipartRelated '[JSON] Message :> Post '[JSON] Message)))))))))))

-- | Creates a value of <a>UsersMessagesInsert</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>uPayload</a></li>
--   <li><a>uUserId</a></li>
--   <li><a>uDeleted</a></li>
--   <li><a>uInternalDateSource</a></li>
--   </ul>
usersMessagesInsert :: Message -> UsersMessagesInsert

-- | Directly inserts a message into only this user's mailbox similar to
--   IMAP APPEND, bypassing most scanning and classification. Does not send
--   a message.
--   
--   <i>See:</i> <a>usersMessagesInsert</a> smart constructor.
data UsersMessagesInsert

-- | Multipart request metadata.
uPayload :: Lens' UsersMessagesInsert Message

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
uUserId :: Lens' UsersMessagesInsert Text

-- | Mark the email as permanently deleted (not TRASH) and only visible in
--   Google Apps Vault to a Vault administrator. Only used for Google Apps
--   for Work accounts.
uDeleted :: Lens' UsersMessagesInsert Bool

-- | Source for Gmail's internal date of the message.
uInternalDateSource :: Lens' UsersMessagesInsert UsersMessagesInsertInternalDateSource
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Messages.Insert.UsersMessagesInsert
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Messages.Insert.UsersMessagesInsert
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Messages.Insert.UsersMessagesInsert
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Messages.Insert.UsersMessagesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Messages.Insert.UsersMessagesInsert
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaUpload Network.Google.Resource.Gmail.Users.Messages.Insert.UsersMessagesInsert)


-- | Lists the messages in the user's mailbox.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.messages.list</tt>.
module Network.Google.Resource.Gmail.Users.Messages.List

-- | A resource alias for <tt>gmail.users.messages.list</tt> method which
--   the <a>UsersMessagesList</a> request conforms to.
type UsersMessagesListResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> (QueryParam "q" Text :> (QueryParam "includeSpamTrash" Bool :> (QueryParams "labelIds" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ListMessagesResponse))))))))))

-- | Creates a value of <a>UsersMessagesList</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>umlQ</a></li>
--   <li><a>umlUserId</a></li>
--   <li><a>umlIncludeSpamTrash</a></li>
--   <li><a>umlLabelIds</a></li>
--   <li><a>umlPageToken</a></li>
--   <li><a>umlMaxResults</a></li>
--   </ul>
usersMessagesList :: UsersMessagesList

-- | Lists the messages in the user's mailbox.
--   
--   <i>See:</i> <a>usersMessagesList</a> smart constructor.
data UsersMessagesList

-- | Only return messages matching the specified query. Supports the same
--   query format as the Gmail search box. For example,
--   "from:someuser'example.com rfc822msgid: is:unread". Parameter cannot
--   be used when accessing the api using the gmail.metadata scope.
umlQ :: Lens' UsersMessagesList (Maybe Text)

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
umlUserId :: Lens' UsersMessagesList Text

-- | Include messages from SPAM and TRASH in the results.
umlIncludeSpamTrash :: Lens' UsersMessagesList Bool

-- | Only return messages with labels that match all of the specified label
--   IDs.
umlLabelIds :: Lens' UsersMessagesList [Text]

-- | Page token to retrieve a specific page of results in the list.
umlPageToken :: Lens' UsersMessagesList (Maybe Text)

-- | Maximum number of messages to return.
umlMaxResults :: Lens' UsersMessagesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Messages.List.UsersMessagesList
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Messages.List.UsersMessagesList
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Messages.List.UsersMessagesList
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Messages.List.UsersMessagesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Messages.List.UsersMessagesList


-- | Modifies the labels on the specified message.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.messages.modify</tt>.
module Network.Google.Resource.Gmail.Users.Messages.Modify

-- | A resource alias for <tt>gmail.users.messages.modify</tt> method which
--   the <a>UsersMessagesModify</a> request conforms to.
type UsersMessagesModifyResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> (Capture "id" Text :> ("modify" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ModifyMessageRequest :> Post '[JSON] Message))))))))

-- | Creates a value of <a>UsersMessagesModify</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>ummPayload</a></li>
--   <li><a>ummUserId</a></li>
--   <li><a>ummId</a></li>
--   </ul>
usersMessagesModify :: ModifyMessageRequest -> Text -> UsersMessagesModify

-- | Modifies the labels on the specified message.
--   
--   <i>See:</i> <a>usersMessagesModify</a> smart constructor.
data UsersMessagesModify

-- | Multipart request metadata.
ummPayload :: Lens' UsersMessagesModify ModifyMessageRequest

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
ummUserId :: Lens' UsersMessagesModify Text

-- | The ID of the message to modify.
ummId :: Lens' UsersMessagesModify Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Messages.Modify.UsersMessagesModify
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Messages.Modify.UsersMessagesModify
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Messages.Modify.UsersMessagesModify
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Messages.Modify.UsersMessagesModify
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Messages.Modify.UsersMessagesModify


-- | Sends the specified message to the recipients in the To, Cc, and Bcc
--   headers.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.messages.send</tt>.
module Network.Google.Resource.Gmail.Users.Messages.Send

-- | A resource alias for <tt>gmail.users.messages.send</tt> method which
--   the <a>UsersMessagesSend</a> request conforms to.
type UsersMessagesSendResource = ("gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> ("send" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Message :> Post '[JSON] Message)))))))) :<|> ("upload" :> ("gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> ("send" :> (QueryParam "alt" AltJSON :> (QueryParam "uploadType" Multipart :> (MultipartRelated '[JSON] Message :> Post '[JSON] Message))))))))))

-- | Creates a value of <a>UsersMessagesSend</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>umsPayload</a></li>
--   <li><a>umsUserId</a></li>
--   </ul>
usersMessagesSend :: Message -> UsersMessagesSend

-- | Sends the specified message to the recipients in the To, Cc, and Bcc
--   headers.
--   
--   <i>See:</i> <a>usersMessagesSend</a> smart constructor.
data UsersMessagesSend

-- | Multipart request metadata.
umsPayload :: Lens' UsersMessagesSend Message

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
umsUserId :: Lens' UsersMessagesSend Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Messages.Send.UsersMessagesSend
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Messages.Send.UsersMessagesSend
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Messages.Send.UsersMessagesSend
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Messages.Send.UsersMessagesSend
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Messages.Send.UsersMessagesSend
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaUpload Network.Google.Resource.Gmail.Users.Messages.Send.UsersMessagesSend)


-- | Moves the specified message to the trash.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.messages.trash</tt>.
module Network.Google.Resource.Gmail.Users.Messages.Trash

-- | A resource alias for <tt>gmail.users.messages.trash</tt> method which
--   the <a>UsersMessagesTrash</a> request conforms to.
type UsersMessagesTrashResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> (Capture "id" Text :> ("trash" :> (QueryParam "alt" AltJSON :> Post '[JSON] Message)))))))

-- | Creates a value of <a>UsersMessagesTrash</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>umtUserId</a></li>
--   <li><a>umtId</a></li>
--   </ul>
usersMessagesTrash :: Text -> UsersMessagesTrash

-- | Moves the specified message to the trash.
--   
--   <i>See:</i> <a>usersMessagesTrash</a> smart constructor.
data UsersMessagesTrash

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
umtUserId :: Lens' UsersMessagesTrash Text

-- | The ID of the message to Trash.
umtId :: Lens' UsersMessagesTrash Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Messages.Trash.UsersMessagesTrash
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Messages.Trash.UsersMessagesTrash
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Messages.Trash.UsersMessagesTrash
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Messages.Trash.UsersMessagesTrash
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Messages.Trash.UsersMessagesTrash


-- | Removes the specified message from the trash.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.messages.untrash</tt>.
module Network.Google.Resource.Gmail.Users.Messages.Untrash

-- | A resource alias for <tt>gmail.users.messages.untrash</tt> method
--   which the <a>UsersMessagesUntrash</a> request conforms to.
type UsersMessagesUntrashResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("messages" :> (Capture "id" Text :> ("untrash" :> (QueryParam "alt" AltJSON :> Post '[JSON] Message)))))))

-- | Creates a value of <a>UsersMessagesUntrash</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>umuUserId</a></li>
--   <li><a>umuId</a></li>
--   </ul>
usersMessagesUntrash :: Text -> UsersMessagesUntrash

-- | Removes the specified message from the trash.
--   
--   <i>See:</i> <a>usersMessagesUntrash</a> smart constructor.
data UsersMessagesUntrash

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
umuUserId :: Lens' UsersMessagesUntrash Text

-- | The ID of the message to remove from Trash.
umuId :: Lens' UsersMessagesUntrash Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Messages.Untrash.UsersMessagesUntrash
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Messages.Untrash.UsersMessagesUntrash
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Messages.Untrash.UsersMessagesUntrash
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Messages.Untrash.UsersMessagesUntrash
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Messages.Untrash.UsersMessagesUntrash


-- | Creates a filter.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.filters.create</tt>.
module Network.Google.Resource.Gmail.Users.Settings.Filters.Create

-- | A resource alias for <tt>gmail.users.settings.filters.create</tt>
--   method which the <a>UsersSettingsFiltersCreate</a> request conforms
--   to.
type UsersSettingsFiltersCreateResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("filters" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Filter :> Post '[JSON] Filter)))))))

-- | Creates a value of <a>UsersSettingsFiltersCreate</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>usfcPayload</a></li>
--   <li><a>usfcUserId</a></li>
--   </ul>
usersSettingsFiltersCreate :: Filter -> UsersSettingsFiltersCreate

-- | Creates a filter.
--   
--   <i>See:</i> <a>usersSettingsFiltersCreate</a> smart constructor.
data UsersSettingsFiltersCreate

-- | Multipart request metadata.
usfcPayload :: Lens' UsersSettingsFiltersCreate Filter

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usfcUserId :: Lens' UsersSettingsFiltersCreate Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.Filters.Create.UsersSettingsFiltersCreate
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.Filters.Create.UsersSettingsFiltersCreate
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.Filters.Create.UsersSettingsFiltersCreate
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.Filters.Create.UsersSettingsFiltersCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.Filters.Create.UsersSettingsFiltersCreate


-- | Deletes a filter.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.filters.delete</tt>.
module Network.Google.Resource.Gmail.Users.Settings.Filters.Delete

-- | A resource alias for <tt>gmail.users.settings.filters.delete</tt>
--   method which the <a>UsersSettingsFiltersDelete</a> request conforms
--   to.
type UsersSettingsFiltersDeleteResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("filters" :> (Capture "id" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>UsersSettingsFiltersDelete</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>usfdUserId</a></li>
--   <li><a>usfdId</a></li>
--   </ul>
usersSettingsFiltersDelete :: Text -> UsersSettingsFiltersDelete

-- | Deletes a filter.
--   
--   <i>See:</i> <a>usersSettingsFiltersDelete</a> smart constructor.
data UsersSettingsFiltersDelete

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usfdUserId :: Lens' UsersSettingsFiltersDelete Text

-- | The ID of the filter to be deleted.
usfdId :: Lens' UsersSettingsFiltersDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.Filters.Delete.UsersSettingsFiltersDelete
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.Filters.Delete.UsersSettingsFiltersDelete
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.Filters.Delete.UsersSettingsFiltersDelete
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.Filters.Delete.UsersSettingsFiltersDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.Filters.Delete.UsersSettingsFiltersDelete


-- | Gets a filter.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.filters.get</tt>.
module Network.Google.Resource.Gmail.Users.Settings.Filters.Get

-- | A resource alias for <tt>gmail.users.settings.filters.get</tt> method
--   which the <a>UsersSettingsFiltersGet</a> request conforms to.
type UsersSettingsFiltersGetResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("filters" :> (Capture "id" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Filter)))))))

-- | Creates a value of <a>UsersSettingsFiltersGet</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>usfgUserId</a></li>
--   <li><a>usfgId</a></li>
--   </ul>
usersSettingsFiltersGet :: Text -> UsersSettingsFiltersGet

-- | Gets a filter.
--   
--   <i>See:</i> <a>usersSettingsFiltersGet</a> smart constructor.
data UsersSettingsFiltersGet

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usfgUserId :: Lens' UsersSettingsFiltersGet Text

-- | The ID of the filter to be fetched.
usfgId :: Lens' UsersSettingsFiltersGet Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.Filters.Get.UsersSettingsFiltersGet
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.Filters.Get.UsersSettingsFiltersGet
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.Filters.Get.UsersSettingsFiltersGet
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.Filters.Get.UsersSettingsFiltersGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.Filters.Get.UsersSettingsFiltersGet


-- | Lists the message filters of a Gmail user.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.filters.list</tt>.
module Network.Google.Resource.Gmail.Users.Settings.Filters.List

-- | A resource alias for <tt>gmail.users.settings.filters.list</tt> method
--   which the <a>UsersSettingsFiltersList</a> request conforms to.
type UsersSettingsFiltersListResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("filters" :> (QueryParam "alt" AltJSON :> Get '[JSON] ListFiltersResponse))))))

-- | Creates a value of <a>UsersSettingsFiltersList</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>usflUserId</a></li>
--   </ul>
usersSettingsFiltersList :: UsersSettingsFiltersList

-- | Lists the message filters of a Gmail user.
--   
--   <i>See:</i> <a>usersSettingsFiltersList</a> smart constructor.
data UsersSettingsFiltersList

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usflUserId :: Lens' UsersSettingsFiltersList Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.Filters.List.UsersSettingsFiltersList
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.Filters.List.UsersSettingsFiltersList
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.Filters.List.UsersSettingsFiltersList
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.Filters.List.UsersSettingsFiltersList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.Filters.List.UsersSettingsFiltersList


-- | Creates a forwarding address. If ownership verification is required, a
--   message will be sent to the recipient and the resource's verification
--   status will be set to pending; otherwise, the resource will be created
--   with verification status set to accepted.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.forwardingAddresses.create</tt>.
module Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Create

-- | A resource alias for
--   <tt>gmail.users.settings.forwardingAddresses.create</tt> method which
--   the <a>UsersSettingsForwardingAddressesCreate</a> request conforms to.
type UsersSettingsForwardingAddressesCreateResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("forwardingAddresses" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ForwardingAddress :> Post '[JSON] ForwardingAddress)))))))

-- | Creates a value of <a>UsersSettingsForwardingAddressesCreate</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>usfacPayload</a></li>
--   <li><a>usfacUserId</a></li>
--   </ul>
usersSettingsForwardingAddressesCreate :: ForwardingAddress -> UsersSettingsForwardingAddressesCreate

-- | Creates a forwarding address. If ownership verification is required, a
--   message will be sent to the recipient and the resource's verification
--   status will be set to pending; otherwise, the resource will be created
--   with verification status set to accepted.
--   
--   <i>See:</i> <a>usersSettingsForwardingAddressesCreate</a> smart
--   constructor.
data UsersSettingsForwardingAddressesCreate

-- | Multipart request metadata.
usfacPayload :: Lens' UsersSettingsForwardingAddressesCreate ForwardingAddress

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usfacUserId :: Lens' UsersSettingsForwardingAddressesCreate Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Create.UsersSettingsForwardingAddressesCreate
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Create.UsersSettingsForwardingAddressesCreate
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Create.UsersSettingsForwardingAddressesCreate
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Create.UsersSettingsForwardingAddressesCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Create.UsersSettingsForwardingAddressesCreate


-- | Deletes the specified forwarding address and revokes any verification
--   that may have been required.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.forwardingAddresses.delete</tt>.
module Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Delete

-- | A resource alias for
--   <tt>gmail.users.settings.forwardingAddresses.delete</tt> method which
--   the <a>UsersSettingsForwardingAddressesDelete</a> request conforms to.
type UsersSettingsForwardingAddressesDeleteResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("forwardingAddresses" :> (Capture "forwardingEmail" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>UsersSettingsForwardingAddressesDelete</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>usfadForwardingEmail</a></li>
--   <li><a>usfadUserId</a></li>
--   </ul>
usersSettingsForwardingAddressesDelete :: Text -> UsersSettingsForwardingAddressesDelete

-- | Deletes the specified forwarding address and revokes any verification
--   that may have been required.
--   
--   <i>See:</i> <a>usersSettingsForwardingAddressesDelete</a> smart
--   constructor.
data UsersSettingsForwardingAddressesDelete

-- | The forwarding address to be deleted.
usfadForwardingEmail :: Lens' UsersSettingsForwardingAddressesDelete Text

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usfadUserId :: Lens' UsersSettingsForwardingAddressesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Delete.UsersSettingsForwardingAddressesDelete
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Delete.UsersSettingsForwardingAddressesDelete
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Delete.UsersSettingsForwardingAddressesDelete
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Delete.UsersSettingsForwardingAddressesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Delete.UsersSettingsForwardingAddressesDelete


-- | Gets the specified forwarding address.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.forwardingAddresses.get</tt>.
module Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Get

-- | A resource alias for
--   <tt>gmail.users.settings.forwardingAddresses.get</tt> method which the
--   <a>UsersSettingsForwardingAddressesGet</a> request conforms to.
type UsersSettingsForwardingAddressesGetResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("forwardingAddresses" :> (Capture "forwardingEmail" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ForwardingAddress)))))))

-- | Creates a value of <a>UsersSettingsForwardingAddressesGet</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>usfagForwardingEmail</a></li>
--   <li><a>usfagUserId</a></li>
--   </ul>
usersSettingsForwardingAddressesGet :: Text -> UsersSettingsForwardingAddressesGet

-- | Gets the specified forwarding address.
--   
--   <i>See:</i> <a>usersSettingsForwardingAddressesGet</a> smart
--   constructor.
data UsersSettingsForwardingAddressesGet

-- | The forwarding address to be retrieved.
usfagForwardingEmail :: Lens' UsersSettingsForwardingAddressesGet Text

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usfagUserId :: Lens' UsersSettingsForwardingAddressesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Get.UsersSettingsForwardingAddressesGet
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Get.UsersSettingsForwardingAddressesGet
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Get.UsersSettingsForwardingAddressesGet
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Get.UsersSettingsForwardingAddressesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.Get.UsersSettingsForwardingAddressesGet


-- | Lists the forwarding addresses for the specified account.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.forwardingAddresses.list</tt>.
module Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.List

-- | A resource alias for
--   <tt>gmail.users.settings.forwardingAddresses.list</tt> method which
--   the <a>UsersSettingsForwardingAddressesList</a> request conforms to.
type UsersSettingsForwardingAddressesListResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("forwardingAddresses" :> (QueryParam "alt" AltJSON :> Get '[JSON] ListForwardingAddressesResponse))))))

-- | Creates a value of <a>UsersSettingsForwardingAddressesList</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>usfalUserId</a></li>
--   </ul>
usersSettingsForwardingAddressesList :: UsersSettingsForwardingAddressesList

-- | Lists the forwarding addresses for the specified account.
--   
--   <i>See:</i> <a>usersSettingsForwardingAddressesList</a> smart
--   constructor.
data UsersSettingsForwardingAddressesList

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usfalUserId :: Lens' UsersSettingsForwardingAddressesList Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.List.UsersSettingsForwardingAddressesList
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.List.UsersSettingsForwardingAddressesList
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.List.UsersSettingsForwardingAddressesList
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.List.UsersSettingsForwardingAddressesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.ForwardingAddresses.List.UsersSettingsForwardingAddressesList


-- | Gets the auto-forwarding setting for the specified account.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.getAutoForwarding</tt>.
module Network.Google.Resource.Gmail.Users.Settings.GetAutoForwarding

-- | A resource alias for <tt>gmail.users.settings.getAutoForwarding</tt>
--   method which the <a>UsersSettingsGetAutoForwarding</a> request
--   conforms to.
type UsersSettingsGetAutoForwardingResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("autoForwarding" :> (QueryParam "alt" AltJSON :> Get '[JSON] AutoForwarding))))))

-- | Creates a value of <a>UsersSettingsGetAutoForwarding</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>usgafUserId</a></li>
--   </ul>
usersSettingsGetAutoForwarding :: UsersSettingsGetAutoForwarding

-- | Gets the auto-forwarding setting for the specified account.
--   
--   <i>See:</i> <a>usersSettingsGetAutoForwarding</a> smart constructor.
data UsersSettingsGetAutoForwarding

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usgafUserId :: Lens' UsersSettingsGetAutoForwarding Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.GetAutoForwarding.UsersSettingsGetAutoForwarding
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.GetAutoForwarding.UsersSettingsGetAutoForwarding
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.GetAutoForwarding.UsersSettingsGetAutoForwarding
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.GetAutoForwarding.UsersSettingsGetAutoForwarding
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.GetAutoForwarding.UsersSettingsGetAutoForwarding


-- | Gets IMAP settings.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.getImap</tt>.
module Network.Google.Resource.Gmail.Users.Settings.GetImap

-- | A resource alias for <tt>gmail.users.settings.getImap</tt> method
--   which the <a>UsersSettingsGetImap</a> request conforms to.
type UsersSettingsGetImapResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("imap" :> (QueryParam "alt" AltJSON :> Get '[JSON] ImapSettings))))))

-- | Creates a value of <a>UsersSettingsGetImap</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>usgiUserId</a></li>
--   </ul>
usersSettingsGetImap :: UsersSettingsGetImap

-- | Gets IMAP settings.
--   
--   <i>See:</i> <a>usersSettingsGetImap</a> smart constructor.
data UsersSettingsGetImap

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usgiUserId :: Lens' UsersSettingsGetImap Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.GetImap.UsersSettingsGetImap
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.GetImap.UsersSettingsGetImap
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.GetImap.UsersSettingsGetImap
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.GetImap.UsersSettingsGetImap
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.GetImap.UsersSettingsGetImap


-- | Gets POP settings.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.getPop</tt>.
module Network.Google.Resource.Gmail.Users.Settings.GetPop

-- | A resource alias for <tt>gmail.users.settings.getPop</tt> method which
--   the <a>UsersSettingsGetPop</a> request conforms to.
type UsersSettingsGetPopResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("pop" :> (QueryParam "alt" AltJSON :> Get '[JSON] PopSettings))))))

-- | Creates a value of <a>UsersSettingsGetPop</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>usgpUserId</a></li>
--   </ul>
usersSettingsGetPop :: UsersSettingsGetPop

-- | Gets POP settings.
--   
--   <i>See:</i> <a>usersSettingsGetPop</a> smart constructor.
data UsersSettingsGetPop

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usgpUserId :: Lens' UsersSettingsGetPop Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.GetPop.UsersSettingsGetPop
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.GetPop.UsersSettingsGetPop
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.GetPop.UsersSettingsGetPop
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.GetPop.UsersSettingsGetPop
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.GetPop.UsersSettingsGetPop


-- | Gets vacation responder settings.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.getVacation</tt>.
module Network.Google.Resource.Gmail.Users.Settings.GetVacation

-- | A resource alias for <tt>gmail.users.settings.getVacation</tt> method
--   which the <a>UsersSettingsGetVacation</a> request conforms to.
type UsersSettingsGetVacationResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("vacation" :> (QueryParam "alt" AltJSON :> Get '[JSON] VacationSettings))))))

-- | Creates a value of <a>UsersSettingsGetVacation</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>usgvUserId</a></li>
--   </ul>
usersSettingsGetVacation :: UsersSettingsGetVacation

-- | Gets vacation responder settings.
--   
--   <i>See:</i> <a>usersSettingsGetVacation</a> smart constructor.
data UsersSettingsGetVacation

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usgvUserId :: Lens' UsersSettingsGetVacation Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.GetVacation.UsersSettingsGetVacation
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.GetVacation.UsersSettingsGetVacation
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.GetVacation.UsersSettingsGetVacation
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.GetVacation.UsersSettingsGetVacation
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.GetVacation.UsersSettingsGetVacation


-- | Creates a custom "from" send-as alias. If an SMTP MSA is specified,
--   Gmail will attempt to connect to the SMTP service to validate the
--   configuration before creating the alias. If ownership verification is
--   required for the alias, a message will be sent to the email address
--   and the resource's verification status will be set to pending;
--   otherwise, the resource will be created with verification status set
--   to accepted. If a signature is provided, Gmail will sanitize the HTML
--   before saving it with the alias.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.sendAs.create</tt>.
module Network.Google.Resource.Gmail.Users.Settings.SendAs.Create

-- | A resource alias for <tt>gmail.users.settings.sendAs.create</tt>
--   method which the <a>UsersSettingsSendAsCreate</a> request conforms to.
type UsersSettingsSendAsCreateResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("sendAs" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] SendAs :> Post '[JSON] SendAs)))))))

-- | Creates a value of <a>UsersSettingsSendAsCreate</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>ussacPayload</a></li>
--   <li><a>ussacUserId</a></li>
--   </ul>
usersSettingsSendAsCreate :: SendAs -> UsersSettingsSendAsCreate

-- | Creates a custom "from" send-as alias. If an SMTP MSA is specified,
--   Gmail will attempt to connect to the SMTP service to validate the
--   configuration before creating the alias. If ownership verification is
--   required for the alias, a message will be sent to the email address
--   and the resource's verification status will be set to pending;
--   otherwise, the resource will be created with verification status set
--   to accepted. If a signature is provided, Gmail will sanitize the HTML
--   before saving it with the alias.
--   
--   <i>See:</i> <a>usersSettingsSendAsCreate</a> smart constructor.
data UsersSettingsSendAsCreate

-- | Multipart request metadata.
ussacPayload :: Lens' UsersSettingsSendAsCreate SendAs

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
ussacUserId :: Lens' UsersSettingsSendAsCreate Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.SendAs.Create.UsersSettingsSendAsCreate
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.SendAs.Create.UsersSettingsSendAsCreate
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.SendAs.Create.UsersSettingsSendAsCreate
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.SendAs.Create.UsersSettingsSendAsCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.SendAs.Create.UsersSettingsSendAsCreate


-- | Deletes the specified send-as alias. Revokes any verification that may
--   have been required for using it.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.sendAs.delete</tt>.
module Network.Google.Resource.Gmail.Users.Settings.SendAs.Delete

-- | A resource alias for <tt>gmail.users.settings.sendAs.delete</tt>
--   method which the <a>UsersSettingsSendAsDelete</a> request conforms to.
type UsersSettingsSendAsDeleteResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("sendAs" :> (Capture "sendAsEmail" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>UsersSettingsSendAsDelete</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>ussadUserId</a></li>
--   <li><a>ussadSendAsEmail</a></li>
--   </ul>
usersSettingsSendAsDelete :: Text -> UsersSettingsSendAsDelete

-- | Deletes the specified send-as alias. Revokes any verification that may
--   have been required for using it.
--   
--   <i>See:</i> <a>usersSettingsSendAsDelete</a> smart constructor.
data UsersSettingsSendAsDelete

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
ussadUserId :: Lens' UsersSettingsSendAsDelete Text

-- | The send-as alias to be deleted.
ussadSendAsEmail :: Lens' UsersSettingsSendAsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.SendAs.Delete.UsersSettingsSendAsDelete
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.SendAs.Delete.UsersSettingsSendAsDelete
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.SendAs.Delete.UsersSettingsSendAsDelete
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.SendAs.Delete.UsersSettingsSendAsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.SendAs.Delete.UsersSettingsSendAsDelete


-- | Gets the specified send-as alias. Fails with an HTTP 404 error if the
--   specified address is not a member of the collection.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.sendAs.get</tt>.
module Network.Google.Resource.Gmail.Users.Settings.SendAs.Get

-- | A resource alias for <tt>gmail.users.settings.sendAs.get</tt> method
--   which the <a>UsersSettingsSendAsGet</a> request conforms to.
type UsersSettingsSendAsGetResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("sendAs" :> (Capture "sendAsEmail" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] SendAs)))))))

-- | Creates a value of <a>UsersSettingsSendAsGet</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>ussagUserId</a></li>
--   <li><a>ussagSendAsEmail</a></li>
--   </ul>
usersSettingsSendAsGet :: Text -> UsersSettingsSendAsGet

-- | Gets the specified send-as alias. Fails with an HTTP 404 error if the
--   specified address is not a member of the collection.
--   
--   <i>See:</i> <a>usersSettingsSendAsGet</a> smart constructor.
data UsersSettingsSendAsGet

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
ussagUserId :: Lens' UsersSettingsSendAsGet Text

-- | The send-as alias to be retrieved.
ussagSendAsEmail :: Lens' UsersSettingsSendAsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.SendAs.Get.UsersSettingsSendAsGet
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.SendAs.Get.UsersSettingsSendAsGet
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.SendAs.Get.UsersSettingsSendAsGet
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.SendAs.Get.UsersSettingsSendAsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.SendAs.Get.UsersSettingsSendAsGet


-- | Lists the send-as aliases for the specified account. The result
--   includes the primary send-as address associated with the account as
--   well as any custom "from" aliases.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.sendAs.list</tt>.
module Network.Google.Resource.Gmail.Users.Settings.SendAs.List

-- | A resource alias for <tt>gmail.users.settings.sendAs.list</tt> method
--   which the <a>UsersSettingsSendAsList</a> request conforms to.
type UsersSettingsSendAsListResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("sendAs" :> (QueryParam "alt" AltJSON :> Get '[JSON] ListSendAsResponse))))))

-- | Creates a value of <a>UsersSettingsSendAsList</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>ussalUserId</a></li>
--   </ul>
usersSettingsSendAsList :: UsersSettingsSendAsList

-- | Lists the send-as aliases for the specified account. The result
--   includes the primary send-as address associated with the account as
--   well as any custom "from" aliases.
--   
--   <i>See:</i> <a>usersSettingsSendAsList</a> smart constructor.
data UsersSettingsSendAsList

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
ussalUserId :: Lens' UsersSettingsSendAsList Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.SendAs.List.UsersSettingsSendAsList
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.SendAs.List.UsersSettingsSendAsList
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.SendAs.List.UsersSettingsSendAsList
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.SendAs.List.UsersSettingsSendAsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.SendAs.List.UsersSettingsSendAsList


-- | Updates a send-as alias. If a signature is provided, Gmail will
--   sanitize the HTML before saving it with the alias. This method
--   supports patch semantics.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.sendAs.patch</tt>.
module Network.Google.Resource.Gmail.Users.Settings.SendAs.Patch

-- | A resource alias for <tt>gmail.users.settings.sendAs.patch</tt> method
--   which the <a>UsersSettingsSendAsPatch</a> request conforms to.
type UsersSettingsSendAsPatchResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("sendAs" :> (Capture "sendAsEmail" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] SendAs :> Patch '[JSON] SendAs))))))))

-- | Creates a value of <a>UsersSettingsSendAsPatch</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>ussapPayload</a></li>
--   <li><a>ussapUserId</a></li>
--   <li><a>ussapSendAsEmail</a></li>
--   </ul>
usersSettingsSendAsPatch :: SendAs -> Text -> UsersSettingsSendAsPatch

-- | Updates a send-as alias. If a signature is provided, Gmail will
--   sanitize the HTML before saving it with the alias. This method
--   supports patch semantics.
--   
--   <i>See:</i> <a>usersSettingsSendAsPatch</a> smart constructor.
data UsersSettingsSendAsPatch

-- | Multipart request metadata.
ussapPayload :: Lens' UsersSettingsSendAsPatch SendAs

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
ussapUserId :: Lens' UsersSettingsSendAsPatch Text

-- | The send-as alias to be updated.
ussapSendAsEmail :: Lens' UsersSettingsSendAsPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.SendAs.Patch.UsersSettingsSendAsPatch
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.SendAs.Patch.UsersSettingsSendAsPatch
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.SendAs.Patch.UsersSettingsSendAsPatch
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.SendAs.Patch.UsersSettingsSendAsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.SendAs.Patch.UsersSettingsSendAsPatch


-- | Updates a send-as alias. If a signature is provided, Gmail will
--   sanitize the HTML before saving it with the alias.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.sendAs.update</tt>.
module Network.Google.Resource.Gmail.Users.Settings.SendAs.Update

-- | A resource alias for <tt>gmail.users.settings.sendAs.update</tt>
--   method which the <a>UsersSettingsSendAsUpdate</a> request conforms to.
type UsersSettingsSendAsUpdateResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("sendAs" :> (Capture "sendAsEmail" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] SendAs :> Put '[JSON] SendAs))))))))

-- | Creates a value of <a>UsersSettingsSendAsUpdate</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>ussauPayload</a></li>
--   <li><a>ussauUserId</a></li>
--   <li><a>ussauSendAsEmail</a></li>
--   </ul>
usersSettingsSendAsUpdate :: SendAs -> Text -> UsersSettingsSendAsUpdate

-- | Updates a send-as alias. If a signature is provided, Gmail will
--   sanitize the HTML before saving it with the alias.
--   
--   <i>See:</i> <a>usersSettingsSendAsUpdate</a> smart constructor.
data UsersSettingsSendAsUpdate

-- | Multipart request metadata.
ussauPayload :: Lens' UsersSettingsSendAsUpdate SendAs

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
ussauUserId :: Lens' UsersSettingsSendAsUpdate Text

-- | The send-as alias to be updated.
ussauSendAsEmail :: Lens' UsersSettingsSendAsUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.SendAs.Update.UsersSettingsSendAsUpdate
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.SendAs.Update.UsersSettingsSendAsUpdate
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.SendAs.Update.UsersSettingsSendAsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.SendAs.Update.UsersSettingsSendAsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.SendAs.Update.UsersSettingsSendAsUpdate


-- | Sends a verification email to the specified send-as alias address. The
--   verification status must be pending.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.sendAs.verify</tt>.
module Network.Google.Resource.Gmail.Users.Settings.SendAs.Verify

-- | A resource alias for <tt>gmail.users.settings.sendAs.verify</tt>
--   method which the <a>UsersSettingsSendAsVerify</a> request conforms to.
type UsersSettingsSendAsVerifyResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("sendAs" :> (Capture "sendAsEmail" Text :> ("verify" :> (QueryParam "alt" AltJSON :> Post '[JSON] ()))))))))

-- | Creates a value of <a>UsersSettingsSendAsVerify</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>ussavUserId</a></li>
--   <li><a>ussavSendAsEmail</a></li>
--   </ul>
usersSettingsSendAsVerify :: Text -> UsersSettingsSendAsVerify

-- | Sends a verification email to the specified send-as alias address. The
--   verification status must be pending.
--   
--   <i>See:</i> <a>usersSettingsSendAsVerify</a> smart constructor.
data UsersSettingsSendAsVerify

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
ussavUserId :: Lens' UsersSettingsSendAsVerify Text

-- | The send-as alias to be verified.
ussavSendAsEmail :: Lens' UsersSettingsSendAsVerify Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.SendAs.Verify.UsersSettingsSendAsVerify
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.SendAs.Verify.UsersSettingsSendAsVerify
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.SendAs.Verify.UsersSettingsSendAsVerify
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.SendAs.Verify.UsersSettingsSendAsVerify
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.SendAs.Verify.UsersSettingsSendAsVerify


-- | Updates the auto-forwarding setting for the specified account. A
--   verified forwarding address must be specified when auto-forwarding is
--   enabled.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.updateAutoForwarding</tt>.
module Network.Google.Resource.Gmail.Users.Settings.UpdateAutoForwarding

-- | A resource alias for
--   <tt>gmail.users.settings.updateAutoForwarding</tt> method which the
--   <a>UsersSettingsUpdateAutoForwarding</a> request conforms to.
type UsersSettingsUpdateAutoForwardingResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("autoForwarding" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] AutoForwarding :> Put '[JSON] AutoForwarding)))))))

-- | Creates a value of <a>UsersSettingsUpdateAutoForwarding</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>usuafPayload</a></li>
--   <li><a>usuafUserId</a></li>
--   </ul>
usersSettingsUpdateAutoForwarding :: AutoForwarding -> UsersSettingsUpdateAutoForwarding

-- | Updates the auto-forwarding setting for the specified account. A
--   verified forwarding address must be specified when auto-forwarding is
--   enabled.
--   
--   <i>See:</i> <a>usersSettingsUpdateAutoForwarding</a> smart
--   constructor.
data UsersSettingsUpdateAutoForwarding

-- | Multipart request metadata.
usuafPayload :: Lens' UsersSettingsUpdateAutoForwarding AutoForwarding

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usuafUserId :: Lens' UsersSettingsUpdateAutoForwarding Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.UpdateAutoForwarding.UsersSettingsUpdateAutoForwarding
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.UpdateAutoForwarding.UsersSettingsUpdateAutoForwarding
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.UpdateAutoForwarding.UsersSettingsUpdateAutoForwarding
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.UpdateAutoForwarding.UsersSettingsUpdateAutoForwarding
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.UpdateAutoForwarding.UsersSettingsUpdateAutoForwarding


-- | Updates IMAP settings.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.updateImap</tt>.
module Network.Google.Resource.Gmail.Users.Settings.UpdateImap

-- | A resource alias for <tt>gmail.users.settings.updateImap</tt> method
--   which the <a>UsersSettingsUpdateImap</a> request conforms to.
type UsersSettingsUpdateImapResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("imap" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ImapSettings :> Put '[JSON] ImapSettings)))))))

-- | Creates a value of <a>UsersSettingsUpdateImap</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>usuiPayload</a></li>
--   <li><a>usuiUserId</a></li>
--   </ul>
usersSettingsUpdateImap :: ImapSettings -> UsersSettingsUpdateImap

-- | Updates IMAP settings.
--   
--   <i>See:</i> <a>usersSettingsUpdateImap</a> smart constructor.
data UsersSettingsUpdateImap

-- | Multipart request metadata.
usuiPayload :: Lens' UsersSettingsUpdateImap ImapSettings

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usuiUserId :: Lens' UsersSettingsUpdateImap Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.UpdateImap.UsersSettingsUpdateImap
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.UpdateImap.UsersSettingsUpdateImap
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.UpdateImap.UsersSettingsUpdateImap
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.UpdateImap.UsersSettingsUpdateImap
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.UpdateImap.UsersSettingsUpdateImap


-- | Updates POP settings.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.updatePop</tt>.
module Network.Google.Resource.Gmail.Users.Settings.UpdatePop

-- | A resource alias for <tt>gmail.users.settings.updatePop</tt> method
--   which the <a>UsersSettingsUpdatePop</a> request conforms to.
type UsersSettingsUpdatePopResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("pop" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PopSettings :> Put '[JSON] PopSettings)))))))

-- | Creates a value of <a>UsersSettingsUpdatePop</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>usupPayload</a></li>
--   <li><a>usupUserId</a></li>
--   </ul>
usersSettingsUpdatePop :: PopSettings -> UsersSettingsUpdatePop

-- | Updates POP settings.
--   
--   <i>See:</i> <a>usersSettingsUpdatePop</a> smart constructor.
data UsersSettingsUpdatePop

-- | Multipart request metadata.
usupPayload :: Lens' UsersSettingsUpdatePop PopSettings

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usupUserId :: Lens' UsersSettingsUpdatePop Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.UpdatePop.UsersSettingsUpdatePop
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.UpdatePop.UsersSettingsUpdatePop
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.UpdatePop.UsersSettingsUpdatePop
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.UpdatePop.UsersSettingsUpdatePop
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.UpdatePop.UsersSettingsUpdatePop


-- | Updates vacation responder settings.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.settings.updateVacation</tt>.
module Network.Google.Resource.Gmail.Users.Settings.UpdateVacation

-- | A resource alias for <tt>gmail.users.settings.updateVacation</tt>
--   method which the <a>UsersSettingsUpdateVacation</a> request conforms
--   to.
type UsersSettingsUpdateVacationResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("settings" :> ("vacation" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] VacationSettings :> Put '[JSON] VacationSettings)))))))

-- | Creates a value of <a>UsersSettingsUpdateVacation</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>usuvPayload</a></li>
--   <li><a>usuvUserId</a></li>
--   </ul>
usersSettingsUpdateVacation :: VacationSettings -> UsersSettingsUpdateVacation

-- | Updates vacation responder settings.
--   
--   <i>See:</i> <a>usersSettingsUpdateVacation</a> smart constructor.
data UsersSettingsUpdateVacation

-- | Multipart request metadata.
usuvPayload :: Lens' UsersSettingsUpdateVacation VacationSettings

-- | User's email address. The special value "me" can be used to indicate
--   the authenticated user.
usuvUserId :: Lens' UsersSettingsUpdateVacation Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Settings.UpdateVacation.UsersSettingsUpdateVacation
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Settings.UpdateVacation.UsersSettingsUpdateVacation
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Settings.UpdateVacation.UsersSettingsUpdateVacation
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Settings.UpdateVacation.UsersSettingsUpdateVacation
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Settings.UpdateVacation.UsersSettingsUpdateVacation


-- | Stop receiving push notifications for the given user mailbox.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for <tt>gmail.users.stop</tt>.
module Network.Google.Resource.Gmail.Users.Stop

-- | A resource alias for <tt>gmail.users.stop</tt> method which the
--   <a>UsersStop</a> request conforms to.
type UsersStopResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("stop" :> (QueryParam "alt" AltJSON :> Post '[JSON] ())))))

-- | Creates a value of <a>UsersStop</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>usUserId</a></li>
--   </ul>
usersStop :: UsersStop

-- | Stop receiving push notifications for the given user mailbox.
--   
--   <i>See:</i> <a>usersStop</a> smart constructor.
data UsersStop

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
usUserId :: Lens' UsersStop Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Stop.UsersStop
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Stop.UsersStop
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Stop.UsersStop
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Stop.UsersStop
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Stop.UsersStop


-- | Immediately and permanently deletes the specified thread. This
--   operation cannot be undone. Prefer threads.trash instead.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.threads.delete</tt>.
module Network.Google.Resource.Gmail.Users.Threads.Delete

-- | A resource alias for <tt>gmail.users.threads.delete</tt> method which
--   the <a>UsersThreadsDelete</a> request conforms to.
type UsersThreadsDeleteResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("threads" :> (Capture "id" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>UsersThreadsDelete</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>utdUserId</a></li>
--   <li><a>utdId</a></li>
--   </ul>
usersThreadsDelete :: Text -> UsersThreadsDelete

-- | Immediately and permanently deletes the specified thread. This
--   operation cannot be undone. Prefer threads.trash instead.
--   
--   <i>See:</i> <a>usersThreadsDelete</a> smart constructor.
data UsersThreadsDelete

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
utdUserId :: Lens' UsersThreadsDelete Text

-- | ID of the Thread to delete.
utdId :: Lens' UsersThreadsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Threads.Delete.UsersThreadsDelete
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Threads.Delete.UsersThreadsDelete
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Threads.Delete.UsersThreadsDelete
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Threads.Delete.UsersThreadsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Threads.Delete.UsersThreadsDelete


-- | Gets the specified thread.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.threads.get</tt>.
module Network.Google.Resource.Gmail.Users.Threads.Get

-- | A resource alias for <tt>gmail.users.threads.get</tt> method which the
--   <a>UsersThreadsGet</a> request conforms to.
type UsersThreadsGetResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("threads" :> (Capture "id" Text :> (QueryParam "format" UsersThreadsGetFormat :> (QueryParams "metadataHeaders" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Thread))))))))

-- | Creates a value of <a>UsersThreadsGet</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>utgFormat</a></li>
--   <li><a>utgUserId</a></li>
--   <li><a>utgId</a></li>
--   <li><a>utgMetadataHeaders</a></li>
--   </ul>
usersThreadsGet :: Text -> UsersThreadsGet

-- | Gets the specified thread.
--   
--   <i>See:</i> <a>usersThreadsGet</a> smart constructor.
data UsersThreadsGet

-- | The format to return the messages in.
utgFormat :: Lens' UsersThreadsGet UsersThreadsGetFormat

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
utgUserId :: Lens' UsersThreadsGet Text

-- | The ID of the thread to retrieve.
utgId :: Lens' UsersThreadsGet Text

-- | When given and format is METADATA, only include headers specified.
utgMetadataHeaders :: Lens' UsersThreadsGet [Text]
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Threads.Get.UsersThreadsGet
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Threads.Get.UsersThreadsGet
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Threads.Get.UsersThreadsGet
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Threads.Get.UsersThreadsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Threads.Get.UsersThreadsGet


-- | Lists the threads in the user's mailbox.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.threads.list</tt>.
module Network.Google.Resource.Gmail.Users.Threads.List

-- | A resource alias for <tt>gmail.users.threads.list</tt> method which
--   the <a>UsersThreadsList</a> request conforms to.
type UsersThreadsListResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("threads" :> (QueryParam "q" Text :> (QueryParam "includeSpamTrash" Bool :> (QueryParams "labelIds" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ListThreadsResponse))))))))))

-- | Creates a value of <a>UsersThreadsList</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>utlQ</a></li>
--   <li><a>utlUserId</a></li>
--   <li><a>utlIncludeSpamTrash</a></li>
--   <li><a>utlLabelIds</a></li>
--   <li><a>utlPageToken</a></li>
--   <li><a>utlMaxResults</a></li>
--   </ul>
usersThreadsList :: UsersThreadsList

-- | Lists the threads in the user's mailbox.
--   
--   <i>See:</i> <a>usersThreadsList</a> smart constructor.
data UsersThreadsList

-- | Only return threads matching the specified query. Supports the same
--   query format as the Gmail search box. For example,
--   "from:someuser'example.com rfc822msgid: is:unread". Parameter cannot
--   be used when accessing the api using the gmail.metadata scope.
utlQ :: Lens' UsersThreadsList (Maybe Text)

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
utlUserId :: Lens' UsersThreadsList Text

-- | Include threads from SPAM and TRASH in the results.
utlIncludeSpamTrash :: Lens' UsersThreadsList Bool

-- | Only return threads with labels that match all of the specified label
--   IDs.
utlLabelIds :: Lens' UsersThreadsList [Text]

-- | Page token to retrieve a specific page of results in the list.
utlPageToken :: Lens' UsersThreadsList (Maybe Text)

-- | Maximum number of threads to return.
utlMaxResults :: Lens' UsersThreadsList Word32
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Threads.List.UsersThreadsList
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Threads.List.UsersThreadsList
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Threads.List.UsersThreadsList
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Threads.List.UsersThreadsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Threads.List.UsersThreadsList


-- | Modifies the labels applied to the thread. This applies to all
--   messages in the thread.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.threads.modify</tt>.
module Network.Google.Resource.Gmail.Users.Threads.Modify

-- | A resource alias for <tt>gmail.users.threads.modify</tt> method which
--   the <a>UsersThreadsModify</a> request conforms to.
type UsersThreadsModifyResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("threads" :> (Capture "id" Text :> ("modify" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ModifyThreadRequest :> Post '[JSON] Thread))))))))

-- | Creates a value of <a>UsersThreadsModify</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>utmPayload</a></li>
--   <li><a>utmUserId</a></li>
--   <li><a>utmId</a></li>
--   </ul>
usersThreadsModify :: ModifyThreadRequest -> Text -> UsersThreadsModify

-- | Modifies the labels applied to the thread. This applies to all
--   messages in the thread.
--   
--   <i>See:</i> <a>usersThreadsModify</a> smart constructor.
data UsersThreadsModify

-- | Multipart request metadata.
utmPayload :: Lens' UsersThreadsModify ModifyThreadRequest

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
utmUserId :: Lens' UsersThreadsModify Text

-- | The ID of the thread to modify.
utmId :: Lens' UsersThreadsModify Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Threads.Modify.UsersThreadsModify
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Threads.Modify.UsersThreadsModify
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Threads.Modify.UsersThreadsModify
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Threads.Modify.UsersThreadsModify
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Threads.Modify.UsersThreadsModify


-- | Moves the specified thread to the trash.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.threads.trash</tt>.
module Network.Google.Resource.Gmail.Users.Threads.Trash

-- | A resource alias for <tt>gmail.users.threads.trash</tt> method which
--   the <a>UsersThreadsTrash</a> request conforms to.
type UsersThreadsTrashResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("threads" :> (Capture "id" Text :> ("trash" :> (QueryParam "alt" AltJSON :> Post '[JSON] Thread)))))))

-- | Creates a value of <a>UsersThreadsTrash</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>uttUserId</a></li>
--   <li><a>uttId</a></li>
--   </ul>
usersThreadsTrash :: Text -> UsersThreadsTrash

-- | Moves the specified thread to the trash.
--   
--   <i>See:</i> <a>usersThreadsTrash</a> smart constructor.
data UsersThreadsTrash

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
uttUserId :: Lens' UsersThreadsTrash Text

-- | The ID of the thread to Trash.
uttId :: Lens' UsersThreadsTrash Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Threads.Trash.UsersThreadsTrash
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Threads.Trash.UsersThreadsTrash
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Threads.Trash.UsersThreadsTrash
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Threads.Trash.UsersThreadsTrash
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Threads.Trash.UsersThreadsTrash


-- | Removes the specified thread from the trash.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for
--   <tt>gmail.users.threads.untrash</tt>.
module Network.Google.Resource.Gmail.Users.Threads.Untrash

-- | A resource alias for <tt>gmail.users.threads.untrash</tt> method which
--   the <a>UsersThreadsUntrash</a> request conforms to.
type UsersThreadsUntrashResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("threads" :> (Capture "id" Text :> ("untrash" :> (QueryParam "alt" AltJSON :> Post '[JSON] Thread)))))))

-- | Creates a value of <a>UsersThreadsUntrash</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>utuUserId</a></li>
--   <li><a>utuId</a></li>
--   </ul>
usersThreadsUntrash :: Text -> UsersThreadsUntrash

-- | Removes the specified thread from the trash.
--   
--   <i>See:</i> <a>usersThreadsUntrash</a> smart constructor.
data UsersThreadsUntrash

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
utuUserId :: Lens' UsersThreadsUntrash Text

-- | The ID of the thread to remove from Trash.
utuId :: Lens' UsersThreadsUntrash Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Threads.Untrash.UsersThreadsUntrash
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Threads.Untrash.UsersThreadsUntrash
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Threads.Untrash.UsersThreadsUntrash
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Threads.Untrash.UsersThreadsUntrash
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Threads.Untrash.UsersThreadsUntrash


-- | Set up or update a push notification watch on the given user mailbox.
--   
--   <i>See:</i> <a>Gmail API Reference</a> for <tt>gmail.users.watch</tt>.
module Network.Google.Resource.Gmail.Users.Watch

-- | A resource alias for <tt>gmail.users.watch</tt> method which the
--   <a>UsersWatch</a> request conforms to.
type UsersWatchResource = "gmail" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("watch" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] WatchRequest :> Post '[JSON] WatchResponse))))))

-- | Creates a value of <a>UsersWatch</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>uwPayload</a></li>
--   <li><a>uwUserId</a></li>
--   </ul>
usersWatch :: WatchRequest -> UsersWatch

-- | Set up or update a push notification watch on the given user mailbox.
--   
--   <i>See:</i> <a>usersWatch</a> smart constructor.
data UsersWatch

-- | Multipart request metadata.
uwPayload :: Lens' UsersWatch WatchRequest

-- | The user's email address. The special value me can be used to indicate
--   the authenticated user.
uwUserId :: Lens' UsersWatch Text
instance GHC.Generics.Generic Network.Google.Resource.Gmail.Users.Watch.UsersWatch
instance Data.Data.Data Network.Google.Resource.Gmail.Users.Watch.UsersWatch
instance GHC.Show.Show Network.Google.Resource.Gmail.Users.Watch.UsersWatch
instance GHC.Classes.Eq Network.Google.Resource.Gmail.Users.Watch.UsersWatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Gmail.Users.Watch.UsersWatch


-- | Access Gmail mailboxes including sending user email.
--   
--   <i>See:</i> <a>Gmail API Reference</a>
module Network.Google.Gmail

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

-- | Manage your basic mail settings
gmailSettingsBasicScope :: Proxy '["https://www.googleapis.com/auth/gmail.settings.basic"]

-- | View and manage your mail
mailGoogleComScope :: Proxy '["https://mail.google.com/"]

-- | View and modify but not delete your email
gmailModifyScope :: Proxy '["https://www.googleapis.com/auth/gmail.modify"]

-- | View your email message metadata such as labels and headers, but not
--   the email body
gmailMetadataScope :: Proxy '["https://www.googleapis.com/auth/gmail.metadata"]

-- | Manage mailbox labels
gmailLabelsScope :: Proxy '["https://www.googleapis.com/auth/gmail.labels"]

-- | Manage your sensitive mail settings, including who can manage your
--   mail
gmailSettingsSharingScope :: Proxy '["https://www.googleapis.com/auth/gmail.settings.sharing"]

-- | Send email on your behalf
gmailSendScope :: Proxy '["https://www.googleapis.com/auth/gmail.send"]

-- | Insert mail into your mailbox
gmailInsertScope :: Proxy '["https://www.googleapis.com/auth/gmail.insert"]

-- | Manage drafts and send emails
gmailComposeScope :: Proxy '["https://www.googleapis.com/auth/gmail.compose"]

-- | View your emails messages and settings
gmailReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/gmail.readonly"]

-- | Represents the entirety of the methods and resources available for the
--   Gmail API service.
type GmailAPI = UsersHistoryListResource :<|> (UsersSettingsForwardingAddressesListResource :<|> (UsersSettingsForwardingAddressesGetResource :<|> (UsersSettingsForwardingAddressesCreateResource :<|> (UsersSettingsForwardingAddressesDeleteResource :<|> (UsersSettingsFiltersListResource :<|> (UsersSettingsFiltersGetResource :<|> (UsersSettingsFiltersCreateResource :<|> (UsersSettingsFiltersDeleteResource :<|> (UsersSettingsSendAsVerifyResource :<|> (UsersSettingsSendAsListResource :<|> (UsersSettingsSendAsPatchResource :<|> (UsersSettingsSendAsGetResource :<|> (UsersSettingsSendAsCreateResource :<|> (UsersSettingsSendAsDeleteResource :<|> (UsersSettingsSendAsUpdateResource :<|> (UsersSettingsUpdateImapResource :<|> (UsersSettingsGetVacationResource :<|> (UsersSettingsGetAutoForwardingResource :<|> (UsersSettingsUpdateAutoForwardingResource :<|> (UsersSettingsUpdateVacationResource :<|> (UsersSettingsGetImapResource :<|> (UsersSettingsUpdatePopResource :<|> (UsersSettingsGetPopResource :<|> (UsersDraftsListResource :<|> (UsersDraftsGetResource :<|> (UsersDraftsCreateResource :<|> (UsersDraftsSendResource :<|> (UsersDraftsDeleteResource :<|> (UsersDraftsUpdateResource :<|> (UsersLabelsListResource :<|> (UsersLabelsPatchResource :<|> (UsersLabelsGetResource :<|> (UsersLabelsCreateResource :<|> (UsersLabelsDeleteResource :<|> (UsersLabelsUpdateResource :<|> (UsersThreadsListResource :<|> (UsersThreadsGetResource :<|> (UsersThreadsTrashResource :<|> (UsersThreadsUntrashResource :<|> (UsersThreadsModifyResource :<|> (UsersThreadsDeleteResource :<|> (UsersMessagesAttachmentsGetResource :<|> (UsersMessagesInsertResource :<|> (UsersMessagesListResource :<|> (UsersMessagesGetResource :<|> (UsersMessagesTrashResource :<|> (UsersMessagesSendResource :<|> (UsersMessagesBatchModifyResource :<|> (UsersMessagesUntrashResource :<|> (UsersMessagesImportResource :<|> (UsersMessagesBatchDeleteResource :<|> (UsersMessagesModifyResource :<|> (UsersMessagesDeleteResource :<|> (UsersGetProFileResource :<|> (UsersStopResource :<|> UsersWatchResource)))))))))))))))))))))))))))))))))))))))))))))))))))))))
data BatchDeleteMessagesRequest

-- | Creates a value of <a>BatchDeleteMessagesRequest</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>bdmrIds</a></li>
--   </ul>
batchDeleteMessagesRequest :: BatchDeleteMessagesRequest

-- | The IDs of the messages to delete.
bdmrIds :: Lens' BatchDeleteMessagesRequest [Text]

-- | How the message size in bytes should be in relation to the size field.
data FilterCriteriaSizeComparison

-- | <pre>
--   larger
--   </pre>
Larger :: FilterCriteriaSizeComparison

-- | <pre>
--   smaller
--   </pre>
Smaller :: FilterCriteriaSizeComparison

-- | <pre>
--   unspecified
--   </pre>
Unspecified :: FilterCriteriaSizeComparison

-- | The format to return the message in.
data UsersMessagesGetFormat

-- | <pre>
--   full
--   </pre>
Full :: UsersMessagesGetFormat

-- | <pre>
--   metadata
--   </pre>
Metadata :: UsersMessagesGetFormat

-- | <pre>
--   minimal
--   </pre>
Minimal :: UsersMessagesGetFormat

-- | <pre>
--   raw
--   </pre>
Raw :: UsersMessagesGetFormat
data ModifyThreadRequest

-- | Creates a value of <a>ModifyThreadRequest</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>mtrRemoveLabelIds</a></li>
--   <li><a>mtrAddLabelIds</a></li>
--   </ul>
modifyThreadRequest :: ModifyThreadRequest

-- | A list of IDs of labels to remove from this thread.
mtrRemoveLabelIds :: Lens' ModifyThreadRequest [Text]

-- | A list of IDs of labels to add to this thread.
mtrAddLabelIds :: Lens' ModifyThreadRequest [Text]

-- | Response for the ListFilters method.
--   
--   <i>See:</i> <a>listFiltersResponse</a> smart constructor.
data ListFiltersResponse

-- | Creates a value of <a>ListFiltersResponse</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>lfrFilter</a></li>
--   </ul>
listFiltersResponse :: ListFiltersResponse

-- | List of a user's filters.
lfrFilter :: Lens' ListFiltersResponse [Filter]
data ModifyMessageRequest

-- | Creates a value of <a>ModifyMessageRequest</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>mmrRemoveLabelIds</a></li>
--   <li><a>mmrAddLabelIds</a></li>
--   </ul>
modifyMessageRequest :: ModifyMessageRequest

-- | A list IDs of labels to remove from this message.
mmrRemoveLabelIds :: Lens' ModifyMessageRequest [Text]

-- | A list of IDs of labels to add to this message.
mmrAddLabelIds :: Lens' ModifyMessageRequest [Text]

-- | Response for the ListForwardingAddresses method.
--   
--   <i>See:</i> <a>listForwardingAddressesResponse</a> smart constructor.
data ListForwardingAddressesResponse

-- | Creates a value of <a>ListForwardingAddressesResponse</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>lfarForwardingAddresses</a></li>
--   </ul>
listForwardingAddressesResponse :: ListForwardingAddressesResponse

-- | List of addresses that may be used for forwarding.
lfarForwardingAddresses :: Lens' ListForwardingAddressesResponse [ForwardingAddress]

-- | POP settings for an account.
--   
--   <i>See:</i> <a>popSettings</a> smart constructor.
data PopSettings

-- | Creates a value of <a>PopSettings</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>psAccessWindow</a></li>
--   <li><a>psDisPosition</a></li>
--   </ul>
popSettings :: PopSettings

-- | The range of messages which are accessible via POP.
psAccessWindow :: Lens' PopSettings (Maybe PopSettingsAccessWindow)

-- | The action that will be executed on a message after it has been
--   fetched via POP.
psDisPosition :: Lens' PopSettings (Maybe PopSettingsDisPosition)

-- | The range of messages which are accessible via POP.
data PopSettingsAccessWindow

-- | <pre>
--   accessWindowUnspecified
--   </pre>
AccessWindowUnspecified :: PopSettingsAccessWindow

-- | <pre>
--   allMail
--   </pre>
AllMail :: PopSettingsAccessWindow

-- | <pre>
--   disabled
--   </pre>
Disabled :: PopSettingsAccessWindow

-- | <pre>
--   fromNowOn
--   </pre>
FromNowOn :: PopSettingsAccessWindow

-- | A record of a change to the user's mailbox. Each history change may
--   affect multiple messages in multiple ways.
--   
--   <i>See:</i> <a>history</a> smart constructor.
data History

-- | Creates a value of <a>History</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>hLabelsRemoved</a></li>
--   <li><a>hMessagesDeleted</a></li>
--   <li><a>hMessagesAdded</a></li>
--   <li><a>hLabelsAdded</a></li>
--   <li><a>hId</a></li>
--   <li><a>hMessages</a></li>
--   </ul>
history :: History

-- | Labels removed from messages in this history record.
hLabelsRemoved :: Lens' History [HistoryLabelRemoved]

-- | Messages deleted (not Trashed) from the mailbox in this history
--   record.
hMessagesDeleted :: Lens' History [HistoryMessageDeleted]

-- | Messages added to the mailbox in this history record.
hMessagesAdded :: Lens' History [HistoryMessageAdded]

-- | Labels added to messages in this history record.
hLabelsAdded :: Lens' History [HistoryLabelAdded]

-- | The mailbox sequence ID.
hId :: Lens' History (Maybe Word64)

-- | List of messages changed in this history record. The fields for
--   specific change types, such as messagesAdded may duplicate messages in
--   this field. We recommend using the specific change-type fields instead
--   of this.
hMessages :: Lens' History [Message]

-- | Indicates whether this address has been verified and is usable for
--   forwarding. Read-only.
data ForwardingAddressVerificationStatus

-- | <pre>
--   accepted
--   </pre>
Accepted :: ForwardingAddressVerificationStatus

-- | <pre>
--   pending
--   </pre>
Pending :: ForwardingAddressVerificationStatus

-- | <pre>
--   verificationStatusUnspecified
--   </pre>
VerificationStatusUnspecified :: ForwardingAddressVerificationStatus

-- | Message matching criteria.
--   
--   <i>See:</i> <a>filterCriteria</a> smart constructor.
data FilterCriteria

-- | Creates a value of <a>FilterCriteria</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>fcSizeComparison</a></li>
--   <li><a>fcSubject</a></li>
--   <li><a>fcSize</a></li>
--   <li><a>fcExcludeChats</a></li>
--   <li><a>fcTo</a></li>
--   <li><a>fcFrom</a></li>
--   <li><a>fcQuery</a></li>
--   <li><a>fcNegatedQuery</a></li>
--   <li><a>fcHasAttachment</a></li>
--   </ul>
filterCriteria :: FilterCriteria

-- | How the message size in bytes should be in relation to the size field.
fcSizeComparison :: Lens' FilterCriteria (Maybe FilterCriteriaSizeComparison)

-- | Case-insensitive phrase found in the message's subject. Trailing and
--   leading whitespace are be trimmed and adjacent spaces are collapsed.
fcSubject :: Lens' FilterCriteria (Maybe Text)

-- | The size of the entire RFC822 message in bytes, including all headers
--   and attachments.
fcSize :: Lens' FilterCriteria (Maybe Int32)

-- | Whether the response should exclude chats.
fcExcludeChats :: Lens' FilterCriteria (Maybe Bool)

-- | The recipient's display name or email address. Includes recipients in
--   the "to", "cc", and "bcc" header fields. You can use simply the local
--   part of the email address. For example, "example" and "example'" both
--   match "example'gmail.com". This field is case-insensitive.
fcTo :: Lens' FilterCriteria (Maybe Text)

-- | The sender's display name or email address.
fcFrom :: Lens' FilterCriteria (Maybe Text)

-- | Only return messages matching the specified query. Supports the same
--   query format as the Gmail search box. For example,
--   "from:someuser'example.com rfc822msgid: is:unread".
fcQuery :: Lens' FilterCriteria (Maybe Text)

-- | Only return messages not matching the specified query. Supports the
--   same query format as the Gmail search box. For example,
--   "from:someuser'example.com rfc822msgid: is:unread".
fcNegatedQuery :: Lens' FilterCriteria (Maybe Text)

-- | Whether the message has any attachment.
fcHasAttachment :: Lens' FilterCriteria (Maybe Bool)

-- | Profile for a Gmail user.
--   
--   <i>See:</i> <a>proFile</a> smart constructor.
data ProFile

-- | Creates a value of <a>ProFile</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>pfMessagesTotal</a></li>
--   <li><a>pfThreadsTotal</a></li>
--   <li><a>pfHistoryId</a></li>
--   <li><a>pfEmailAddress</a></li>
--   </ul>
proFile :: ProFile

-- | The total number of messages in the mailbox.
pfMessagesTotal :: Lens' ProFile (Maybe Int32)

-- | The total number of threads in the mailbox.
pfThreadsTotal :: Lens' ProFile (Maybe Int32)

-- | The ID of the mailbox's current history record.
pfHistoryId :: Lens' ProFile (Maybe Word64)

-- | The user's email address.
pfEmailAddress :: Lens' ProFile (Maybe Text)

-- | The state that a message should be left in after it has been
--   forwarded.
data AutoForwardingDisPosition

-- | <pre>
--   archive
--   </pre>
Archive :: AutoForwardingDisPosition

-- | <pre>
--   dispositionUnspecified
--   </pre>
DisPositionUnspecified :: AutoForwardingDisPosition

-- | <pre>
--   leaveInInbox
--   </pre>
LeaveInInbox :: AutoForwardingDisPosition

-- | <pre>
--   markRead
--   </pre>
MarkRead :: AutoForwardingDisPosition

-- | <pre>
--   trash
--   </pre>
Trash :: AutoForwardingDisPosition
data MessagePartHeader

-- | Creates a value of <a>MessagePartHeader</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>mphValue</a></li>
--   <li><a>mphName</a></li>
--   </ul>
messagePartHeader :: MessagePartHeader

-- | The value of the header after the : separator. For example,
--   someuser'example.com.
mphValue :: Lens' MessagePartHeader (Maybe Text)

-- | The name of the header before the : separator. For example, To.
mphName :: Lens' MessagePartHeader (Maybe Text)

-- | Indicates whether this address has been verified for use as a send-as
--   alias. Read-only. This setting only applies to custom "from" aliases.
data SendAsVerificationStatus

-- | <pre>
--   accepted
--   </pre>
SAVSAccepted :: SendAsVerificationStatus

-- | <pre>
--   pending
--   </pre>
SAVSPending :: SendAsVerificationStatus

-- | <pre>
--   verificationStatusUnspecified
--   </pre>
SAVSVerificationStatusUnspecified :: SendAsVerificationStatus
data ListHistoryResponse

-- | Creates a value of <a>ListHistoryResponse</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>lhrNextPageToken</a></li>
--   <li><a>lhrHistory</a></li>
--   <li><a>lhrHistoryId</a></li>
--   </ul>
listHistoryResponse :: ListHistoryResponse

-- | Page token to retrieve the next page of results in the list.
lhrNextPageToken :: Lens' ListHistoryResponse (Maybe Text)

-- | List of history records. Any messages contained in the response will
--   typically only have id and threadId fields populated.
lhrHistory :: Lens' ListHistoryResponse [History]

-- | The ID of the mailbox's current history record.
lhrHistoryId :: Lens' ListHistoryResponse (Maybe Word64)

-- | Settings associated with a send-as alias, which can be either the
--   primary login address associated with the account or a custom "from"
--   address. Send-as aliases correspond to the "Send Mail As" feature in
--   the web interface.
--   
--   <i>See:</i> <a>sendAs</a> smart constructor.
data SendAs

-- | Creates a value of <a>SendAs</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>saSignature</a></li>
--   <li><a>saReplyToAddress</a></li>
--   <li><a>saTreatAsAlias</a></li>
--   <li><a>saSendAsEmail</a></li>
--   <li><a>saDisplayName</a></li>
--   <li><a>saVerificationStatus</a></li>
--   <li><a>saSmtpMsa</a></li>
--   <li><a>saIsPrimary</a></li>
--   <li><a>saIsDefault</a></li>
--   </ul>
sendAs :: SendAs

-- | An optional HTML signature that is included in messages composed with
--   this alias in the Gmail web UI.
saSignature :: Lens' SendAs (Maybe Text)

-- | An optional email address that is included in a "Reply-To:" header for
--   mail sent using this alias. If this is empty, Gmail will not generate
--   a "Reply-To:" header.
saReplyToAddress :: Lens' SendAs (Maybe Text)

-- | Whether Gmail should treat this address as an alias for the user's
--   primary email address. This setting only applies to custom "from"
--   aliases.
saTreatAsAlias :: Lens' SendAs (Maybe Bool)

-- | The email address that appears in the "From:" header for mail sent
--   using this alias. This is read-only for all operations except create.
saSendAsEmail :: Lens' SendAs (Maybe Text)

-- | A name that appears in the "From:" header for mail sent using this
--   alias. For custom "from" addresses, when this is empty, Gmail will
--   populate the "From:" header with the name that is used for the primary
--   address associated with the account.
saDisplayName :: Lens' SendAs (Maybe Text)

-- | Indicates whether this address has been verified for use as a send-as
--   alias. Read-only. This setting only applies to custom "from" aliases.
saVerificationStatus :: Lens' SendAs (Maybe SendAsVerificationStatus)

-- | An optional SMTP service that will be used as an outbound relay for
--   mail sent using this alias. If this is empty, outbound mail will be
--   sent directly from Gmail's servers to the destination SMTP service.
--   This setting only applies to custom "from" aliases.
saSmtpMsa :: Lens' SendAs (Maybe SmtpMsa)

-- | Whether this address is the primary address used to login to the
--   account. Every Gmail account has exactly one primary address, and it
--   cannot be deleted from the collection of send-as aliases. This field
--   is read-only.
saIsPrimary :: Lens' SendAs (Maybe Bool)

-- | Whether this address is selected as the default "From:" address in
--   situations such as composing a new message or sending a vacation
--   auto-reply. Every Gmail account has exactly one default send-as
--   address, so the only legal value that clients may write to this field
--   is true. Changing this from false to true for an address will result
--   in this field becoming false for the other previous default address.
saIsDefault :: Lens' SendAs (Maybe Bool)

-- | The owner type for the label. User labels are created by the user and
--   can be modified and deleted by the user and can be applied to any
--   message or thread. System labels are internally created and cannot be
--   added, modified, or deleted. System labels may be able to be applied
--   to or removed from messages and threads under some circumstances but
--   this is not guaranteed. For example, users can apply and remove the
--   INBOX and UNREAD labels from messages and threads, but cannot apply or
--   remove the DRAFTS or SENT labels from messages or threads.
data LabelType

-- | <pre>
--   system
--   </pre>
System :: LabelType

-- | <pre>
--   user
--   </pre>
User :: LabelType

-- | The format to return the draft in.
data UsersDraftsGetFormat

-- | <pre>
--   full
--   </pre>
UDGFFull :: UsersDraftsGetFormat

-- | <pre>
--   metadata
--   </pre>
UDGFMetadata :: UsersDraftsGetFormat

-- | <pre>
--   minimal
--   </pre>
UDGFMinimal :: UsersDraftsGetFormat

-- | <pre>
--   raw
--   </pre>
UDGFRaw :: UsersDraftsGetFormat

-- | Source for Gmail's internal date of the message.
data UsersMessagesImportInternalDateSource

-- | <pre>
--   dateHeader
--   </pre>
DateHeader :: UsersMessagesImportInternalDateSource

-- | <pre>
--   receivedTime
--   </pre>
ReceivedTime :: UsersMessagesImportInternalDateSource

-- | The visibility of the label in the message list in the Gmail web
--   interface.
data LabelMessageListVisibility

-- | <pre>
--   hide
--   </pre>
Hide :: LabelMessageListVisibility

-- | <pre>
--   show
--   </pre>
Show :: LabelMessageListVisibility
data ListThreadsResponse

-- | Creates a value of <a>ListThreadsResponse</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>ltrNextPageToken</a></li>
--   <li><a>ltrResultSizeEstimate</a></li>
--   <li><a>ltrThreads</a></li>
--   </ul>
listThreadsResponse :: ListThreadsResponse

-- | Page token to retrieve the next page of results in the list.
ltrNextPageToken :: Lens' ListThreadsResponse (Maybe Text)

-- | Estimated total number of results.
ltrResultSizeEstimate :: Lens' ListThreadsResponse (Maybe Word32)

-- | List of threads.
ltrThreads :: Lens' ListThreadsResponse [Thread]

-- | A single MIME message part.
--   
--   <i>See:</i> <a>messagePart</a> smart constructor.
data MessagePart

-- | Creates a value of <a>MessagePart</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>mpParts</a></li>
--   <li><a>mpBody</a></li>
--   <li><a>mpMimeType</a></li>
--   <li><a>mpHeaders</a></li>
--   <li><a>mpPartId</a></li>
--   <li><a>mpFilename</a></li>
--   </ul>
messagePart :: MessagePart

-- | The child MIME message parts of this part. This only applies to
--   container MIME message parts, for example multipart/*. For non-
--   container MIME message part types, such as text/plain, this field is
--   empty. For more information, see RFC 1521.
mpParts :: Lens' MessagePart [MessagePart]

-- | The message part body for this part, which may be empty for container
--   MIME message parts.
mpBody :: Lens' MessagePart (Maybe MessagePartBody)

-- | The MIME type of the message part.
mpMimeType :: Lens' MessagePart (Maybe Text)

-- | List of headers on this message part. For the top-level message part,
--   representing the entire message payload, it will contain the standard
--   RFC 2822 email headers such as To, From, and Subject.
mpHeaders :: Lens' MessagePart [MessagePartHeader]

-- | The immutable ID of the message part.
mpPartId :: Lens' MessagePart (Maybe Text)

-- | The filename of the attachment. Only present if this message part
--   represents an attachment.
mpFilename :: Lens' MessagePart (Maybe Text)
data HistoryLabelAdded

-- | Creates a value of <a>HistoryLabelAdded</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>hlaLabelIds</a></li>
--   <li><a>hlaMessage</a></li>
--   </ul>
historyLabelAdded :: HistoryLabelAdded

-- | Label IDs added to the message.
hlaLabelIds :: Lens' HistoryLabelAdded [Text]
hlaMessage :: Lens' HistoryLabelAdded (Maybe Message)
data ListLabelsResponse

-- | Creates a value of <a>ListLabelsResponse</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>llrLabels</a></li>
--   </ul>
listLabelsResponse :: ListLabelsResponse

-- | List of labels.
llrLabels :: Lens' ListLabelsResponse [Label]

-- | Vacation auto-reply settings for an account. These settings correspond
--   to the "Vacation responder" feature in the web interface.
--   
--   <i>See:</i> <a>vacationSettings</a> smart constructor.
data VacationSettings

-- | Creates a value of <a>VacationSettings</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>vsEnableAutoReply</a></li>
--   <li><a>vsResponseBodyPlainText</a></li>
--   <li><a>vsRestrictToDomain</a></li>
--   <li><a>vsStartTime</a></li>
--   <li><a>vsResponseBodyHTML</a></li>
--   <li><a>vsRestrictToContacts</a></li>
--   <li><a>vsResponseSubject</a></li>
--   <li><a>vsEndTime</a></li>
--   </ul>
vacationSettings :: VacationSettings

-- | Flag that controls whether Gmail automatically replies to messages.
vsEnableAutoReply :: Lens' VacationSettings (Maybe Bool)

-- | Response body in plain text format.
vsResponseBodyPlainText :: Lens' VacationSettings (Maybe Text)

-- | Flag that determines whether responses are sent to recipients who are
--   outside of the user's domain. This feature is only available for
--   Google Apps users.
vsRestrictToDomain :: Lens' VacationSettings (Maybe Bool)

-- | An optional start time for sending auto-replies (epoch ms). When this
--   is specified, Gmail will automatically reply only to messages that it
--   receives after the start time. If both startTime and endTime are
--   specified, startTime must precede endTime.
vsStartTime :: Lens' VacationSettings (Maybe Int64)

-- | Response body in HTML format. Gmail will sanitize the HTML before
--   storing it.
vsResponseBodyHTML :: Lens' VacationSettings (Maybe Text)

-- | Flag that determines whether responses are sent to recipients who are
--   not in the user's list of contacts.
vsRestrictToContacts :: Lens' VacationSettings (Maybe Bool)

-- | Optional text to prepend to the subject line in vacation responses. In
--   order to enable auto-replies, either the response subject or the
--   response body must be nonempty.
vsResponseSubject :: Lens' VacationSettings (Maybe Text)

-- | An optional end time for sending auto-replies (epoch ms). When this is
--   specified, Gmail will automatically reply only to messages that it
--   receives before the end time. If both startTime and endTime are
--   specified, startTime must precede endTime.
vsEndTime :: Lens' VacationSettings (Maybe Int64)

-- | The visibility of the label in the label list in the Gmail web
--   interface.
data LabelLabelListVisibility

-- | <pre>
--   labelHide
--   </pre>
LabelHide :: LabelLabelListVisibility

-- | <pre>
--   labelShow
--   </pre>
LabelShow :: LabelLabelListVisibility

-- | <pre>
--   labelShowIfUnread
--   </pre>
LabelShowIfUnread :: LabelLabelListVisibility
data HistoryMessageDeleted

-- | Creates a value of <a>HistoryMessageDeleted</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>hmdMessage</a></li>
--   </ul>
historyMessageDeleted :: HistoryMessageDeleted
hmdMessage :: Lens' HistoryMessageDeleted (Maybe Message)

-- | The body of a single MIME message part.
--   
--   <i>See:</i> <a>messagePartBody</a> smart constructor.
data MessagePartBody

-- | Creates a value of <a>MessagePartBody</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>mpbSize</a></li>
--   <li><a>mpbData</a></li>
--   <li><a>mpbAttachmentId</a></li>
--   </ul>
messagePartBody :: MessagePartBody

-- | Number of bytes for the message part data (encoding notwithstanding).
mpbSize :: Lens' MessagePartBody (Maybe Int32)

-- | The body data of a MIME message part as a base64url encoded string.
--   May be empty for MIME container types that have no message body or
--   when the body data is sent as a separate attachment. An attachment ID
--   is present if the body data is contained in a separate attachment.
mpbData :: Lens' MessagePartBody (Maybe ByteString)

-- | When present, contains the ID of an external attachment that can be
--   retrieved in a separate messages.attachments.get request. When not
--   present, the entire content of the message part body is contained in
--   the data field.
mpbAttachmentId :: Lens' MessagePartBody (Maybe Text)

-- | Auto-forwarding settings for an account.
--   
--   <i>See:</i> <a>autoForwarding</a> smart constructor.
data AutoForwarding

-- | Creates a value of <a>AutoForwarding</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>afEnabled</a></li>
--   <li><a>afDisPosition</a></li>
--   <li><a>afEmailAddress</a></li>
--   </ul>
autoForwarding :: AutoForwarding

-- | Whether all incoming mail is automatically forwarded to another
--   address.
afEnabled :: Lens' AutoForwarding (Maybe Bool)

-- | The state that a message should be left in after it has been
--   forwarded.
afDisPosition :: Lens' AutoForwarding (Maybe AutoForwardingDisPosition)

-- | Email address to which all incoming messages are forwarded. This email
--   address must be a verified member of the forwarding addresses.
afEmailAddress :: Lens' AutoForwarding (Maybe Text)
data ListDraftsResponse

-- | Creates a value of <a>ListDraftsResponse</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>ldrNextPageToken</a></li>
--   <li><a>ldrResultSizeEstimate</a></li>
--   <li><a>ldrDrafts</a></li>
--   </ul>
listDraftsResponse :: ListDraftsResponse

-- | Token to retrieve the next page of results in the list.
ldrNextPageToken :: Lens' ListDraftsResponse (Maybe Text)

-- | Estimated total number of results.
ldrResultSizeEstimate :: Lens' ListDraftsResponse (Maybe Word32)

-- | List of drafts.
ldrDrafts :: Lens' ListDraftsResponse [Draft]

-- | Response for the ListSendAs method.
--   
--   <i>See:</i> <a>listSendAsResponse</a> smart constructor.
data ListSendAsResponse

-- | Creates a value of <a>ListSendAsResponse</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>lsarSendAs</a></li>
--   </ul>
listSendAsResponse :: ListSendAsResponse

-- | List of send-as aliases.
lsarSendAs :: Lens' ListSendAsResponse [SendAs]

-- | Push notification watch response.
--   
--   <i>See:</i> <a>watchResponse</a> smart constructor.
data WatchResponse

-- | Creates a value of <a>WatchResponse</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>wrExpiration</a></li>
--   <li><a>wrHistoryId</a></li>
--   </ul>
watchResponse :: WatchResponse

-- | When Gmail will stop sending notifications for mailbox updates (epoch
--   millis). Call watch again before this time to renew the watch.
wrExpiration :: Lens' WatchResponse (Maybe Int64)

-- | The ID of the mailbox's current history record.
wrHistoryId :: Lens' WatchResponse (Maybe Word64)

-- | The format to return the messages in.
data UsersThreadsGetFormat

-- | <pre>
--   full
--   </pre>
UTGFFull :: UsersThreadsGetFormat

-- | <pre>
--   metadata
--   </pre>
UTGFMetadata :: UsersThreadsGetFormat

-- | <pre>
--   minimal
--   </pre>
UTGFMinimal :: UsersThreadsGetFormat
data BatchModifyMessagesRequest

-- | Creates a value of <a>BatchModifyMessagesRequest</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>bmmrIds</a></li>
--   <li><a>bmmrRemoveLabelIds</a></li>
--   <li><a>bmmrAddLabelIds</a></li>
--   </ul>
batchModifyMessagesRequest :: BatchModifyMessagesRequest

-- | The IDs of the messages to modify. There is a limit of 1000 ids per
--   request.
bmmrIds :: Lens' BatchModifyMessagesRequest [Text]

-- | A list of label IDs to remove from messages.
bmmrRemoveLabelIds :: Lens' BatchModifyMessagesRequest [Text]

-- | A list of label IDs to add to messages.
bmmrAddLabelIds :: Lens' BatchModifyMessagesRequest [Text]

-- | A draft email in the user's mailbox.
--   
--   <i>See:</i> <a>draft</a> smart constructor.
data Draft

-- | Creates a value of <a>Draft</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>dId</a></li>
--   <li><a>dMessage</a></li>
--   </ul>
draft :: Draft

-- | The immutable ID of the draft.
dId :: Lens' Draft (Maybe Text)

-- | The message content of the draft.
dMessage :: Lens' Draft (Maybe Message)

-- | Configuration for communication with an SMTP service.
--   
--   <i>See:</i> <a>smtpMsa</a> smart constructor.
data SmtpMsa

-- | Creates a value of <a>SmtpMsa</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>smSecurityMode</a></li>
--   <li><a>smUsername</a></li>
--   <li><a>smPassword</a></li>
--   <li><a>smHost</a></li>
--   <li><a>smPort</a></li>
--   </ul>
smtpMsa :: SmtpMsa

-- | The protocol that will be used to secure communication with the SMTP
--   service. Required.
smSecurityMode :: Lens' SmtpMsa (Maybe SmtpMsaSecurityMode)

-- | The username that will be used for authentication with the SMTP
--   service. This is a write-only field that can be specified in requests
--   to create or update SendAs settings; it is never populated in
--   responses.
smUsername :: Lens' SmtpMsa (Maybe Text)

-- | The password that will be used for authentication with the SMTP
--   service. This is a write-only field that can be specified in requests
--   to create or update SendAs settings; it is never populated in
--   responses.
smPassword :: Lens' SmtpMsa (Maybe Text)

-- | The hostname of the SMTP service. Required.
smHost :: Lens' SmtpMsa (Maybe Text)

-- | The port of the SMTP service. Required.
smPort :: Lens' SmtpMsa (Maybe Int32)

-- | Settings for a forwarding address.
--   
--   <i>See:</i> <a>forwardingAddress</a> smart constructor.
data ForwardingAddress

-- | Creates a value of <a>ForwardingAddress</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>faForwardingEmail</a></li>
--   <li><a>faVerificationStatus</a></li>
--   </ul>
forwardingAddress :: ForwardingAddress

-- | An email address to which messages can be forwarded.
faForwardingEmail :: Lens' ForwardingAddress (Maybe Text)

-- | Indicates whether this address has been verified and is usable for
--   forwarding. Read-only.
faVerificationStatus :: Lens' ForwardingAddress (Maybe ForwardingAddressVerificationStatus)

-- | The action that will be executed on a message after it has been
--   fetched via POP.
data PopSettingsDisPosition

-- | <pre>
--   archive
--   </pre>
PSDPArchive :: PopSettingsDisPosition

-- | <pre>
--   dispositionUnspecified
--   </pre>
PSDPDisPositionUnspecified :: PopSettingsDisPosition

-- | <pre>
--   leaveInInbox
--   </pre>
PSDPLeaveInInbox :: PopSettingsDisPosition

-- | <pre>
--   markRead
--   </pre>
PSDPMarkRead :: PopSettingsDisPosition

-- | <pre>
--   trash
--   </pre>
PSDPTrash :: PopSettingsDisPosition

-- | Resource definition for Gmail filters. Filters apply to specific
--   messages instead of an entire email thread.
--   
--   <i>See:</i> <a>filter'</a> smart constructor.
data Filter

-- | Creates a value of <a>Filter</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>fAction</a></li>
--   <li><a>fId</a></li>
--   <li><a>fCriteria</a></li>
--   </ul>
filter' :: Filter

-- | Action that the filter performs.
fAction :: Lens' Filter (Maybe FilterAction)

-- | The server assigned ID of the filter.
fId :: Lens' Filter (Maybe Text)

-- | Matching criteria for the filter.
fCriteria :: Lens' Filter (Maybe FilterCriteria)

-- | Set up or update a new push notification watch on this user's mailbox.
--   
--   <i>See:</i> <a>watchRequest</a> smart constructor.
data WatchRequest

-- | Creates a value of <a>WatchRequest</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>wrLabelFilterAction</a></li>
--   <li><a>wrTopicName</a></li>
--   <li><a>wrLabelIds</a></li>
--   </ul>
watchRequest :: WatchRequest

-- | Filtering behavior of labelIds list specified.
wrLabelFilterAction :: Lens' WatchRequest (Maybe WatchRequestLabelFilterAction)

-- | A fully qualified Google Cloud Pub/Sub API topic name to publish the
--   events to. This topic name **must** already exist in Cloud Pub/Sub and
--   you **must** have already granted gmail "publish" permission on it.
--   For example, "projects/my-project-identifier/topics/my-topic-name"
--   (using the Cloud Pub/Sub "v1" topic naming format). Note that the
--   "my-project-identifier" portion must exactly match your Google
--   developer project id (the one executing this watch request).
wrTopicName :: Lens' WatchRequest (Maybe Text)

-- | List of label_ids to restrict notifications about. By default, if
--   unspecified, all changes are pushed out. If specified then dictates
--   which labels are required for a push notification to be generated.
wrLabelIds :: Lens' WatchRequest [Text]

-- | Filtering behavior of labelIds list specified.
data WatchRequestLabelFilterAction

-- | <pre>
--   exclude
--   </pre>
Exclude :: WatchRequestLabelFilterAction

-- | <pre>
--   include
--   </pre>
Include :: WatchRequestLabelFilterAction

-- | IMAP settings for an account.
--   
--   <i>See:</i> <a>imapSettings</a> smart constructor.
data ImapSettings

-- | Creates a value of <a>ImapSettings</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>isEnabled</a></li>
--   <li><a>isExpungeBehavior</a></li>
--   <li><a>isAutoExpunge</a></li>
--   <li><a>isMaxFolderSize</a></li>
--   </ul>
imapSettings :: ImapSettings

-- | Whether IMAP is enabled for the account.
isEnabled :: Lens' ImapSettings (Maybe Bool)

-- | The action that will be executed on a message when it is marked as
--   deleted and expunged from the last visible IMAP folder.
isExpungeBehavior :: Lens' ImapSettings (Maybe ImapSettingsExpungeBehavior)

-- | If this value is true, Gmail will immediately expunge a message when
--   it is marked as deleted in IMAP. Otherwise, Gmail will wait for an
--   update from the client before expunging messages marked as deleted.
isAutoExpunge :: Lens' ImapSettings (Maybe Bool)

-- | An optional limit on the number of messages that an IMAP folder may
--   contain. Legal values are 0, 1000, 2000, 5000 or 10000. A value of
--   zero is interpreted to mean that there is no limit.
isMaxFolderSize :: Lens' ImapSettings (Maybe Int32)

-- | The action that will be executed on a message when it is marked as
--   deleted and expunged from the last visible IMAP folder.
data ImapSettingsExpungeBehavior

-- | <pre>
--   archive
--   </pre>
ISEBArchive :: ImapSettingsExpungeBehavior

-- | <pre>
--   deleteForever
--   </pre>
ISEBDeleteForever :: ImapSettingsExpungeBehavior

-- | <pre>
--   expungeBehaviorUnspecified
--   </pre>
ISEBExpungeBehaviorUnspecified :: ImapSettingsExpungeBehavior

-- | <pre>
--   trash
--   </pre>
ISEBTrash :: ImapSettingsExpungeBehavior

-- | The protocol that will be used to secure communication with the SMTP
--   service. Required.
data SmtpMsaSecurityMode

-- | <pre>
--   none
--   </pre>
None :: SmtpMsaSecurityMode

-- | <pre>
--   securityModeUnspecified
--   </pre>
SecurityModeUnspecified :: SmtpMsaSecurityMode

-- | <pre>
--   ssl
--   </pre>
SSL :: SmtpMsaSecurityMode

-- | <pre>
--   starttls
--   </pre>
Starttls :: SmtpMsaSecurityMode

-- | An email message.
--   
--   <i>See:</i> <a>message</a> smart constructor.
data Message

-- | Creates a value of <a>Message</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>mRaw</a></li>
--   <li><a>mSnippet</a></li>
--   <li><a>mSizeEstimate</a></li>
--   <li><a>mPayload</a></li>
--   <li><a>mHistoryId</a></li>
--   <li><a>mId</a></li>
--   <li><a>mLabelIds</a></li>
--   <li><a>mThreadId</a></li>
--   <li><a>mInternalDate</a></li>
--   </ul>
message :: Message

-- | The entire email message in an RFC 2822 formatted and base64url
--   encoded string. Returned in messages.get and drafts.get responses when
--   the format=RAW parameter is supplied.
mRaw :: Lens' Message (Maybe ByteString)

-- | A short part of the message text.
mSnippet :: Lens' Message (Maybe Text)

-- | Estimated size in bytes of the message.
mSizeEstimate :: Lens' Message (Maybe Int32)

-- | The parsed email structure in the message parts.
mPayload :: Lens' Message (Maybe MessagePart)

-- | The ID of the last history record that modified this message.
mHistoryId :: Lens' Message (Maybe Word64)

-- | The immutable ID of the message.
mId :: Lens' Message (Maybe Text)

-- | List of IDs of labels applied to this message.
mLabelIds :: Lens' Message [Text]

-- | The ID of the thread the message belongs to. To add a message or draft
--   to a thread, the following criteria must be met: - The requested
--   threadId must be specified on the Message or Draft.Message you supply
--   with your request. - The References and In-Reply-To headers must be
--   set in compliance with the RFC 2822 standard. - The Subject headers
--   must match.
mThreadId :: Lens' Message (Maybe Text)

-- | The internal message creation timestamp (epoch ms), which determines
--   ordering in the inbox. For normal SMTP-received email, this represents
--   the time the message was originally accepted by Google, which is more
--   reliable than the Date header. However, for API-migrated mail, it can
--   be configured by client to be based on the Date header.
mInternalDate :: Lens' Message (Maybe Int64)

-- | Source for Gmail's internal date of the message.
data UsersMessagesInsertInternalDateSource

-- | <pre>
--   dateHeader
--   </pre>
UMIIDSDateHeader :: UsersMessagesInsertInternalDateSource

-- | <pre>
--   receivedTime
--   </pre>
UMIIDSReceivedTime :: UsersMessagesInsertInternalDateSource
data HistoryLabelRemoved

-- | Creates a value of <a>HistoryLabelRemoved</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>hlrLabelIds</a></li>
--   <li><a>hlrMessage</a></li>
--   </ul>
historyLabelRemoved :: HistoryLabelRemoved

-- | Label IDs removed from the message.
hlrLabelIds :: Lens' HistoryLabelRemoved [Text]
hlrMessage :: Lens' HistoryLabelRemoved (Maybe Message)

-- | A collection of messages representing a conversation.
--   
--   <i>See:</i> <a>thread</a> smart constructor.
data Thread

-- | Creates a value of <a>Thread</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>tSnippet</a></li>
--   <li><a>tHistoryId</a></li>
--   <li><a>tId</a></li>
--   <li><a>tMessages</a></li>
--   </ul>
thread :: Thread

-- | A short part of the message text.
tSnippet :: Lens' Thread (Maybe Text)

-- | The ID of the last history record that modified this thread.
tHistoryId :: Lens' Thread (Maybe Word64)

-- | The unique ID of the thread.
tId :: Lens' Thread (Maybe Text)

-- | The list of messages in the thread.
tMessages :: Lens' Thread [Message]

-- | A set of actions to perform on a message.
--   
--   <i>See:</i> <a>filterAction</a> smart constructor.
data FilterAction

-- | Creates a value of <a>FilterAction</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>faForward</a></li>
--   <li><a>faRemoveLabelIds</a></li>
--   <li><a>faAddLabelIds</a></li>
--   </ul>
filterAction :: FilterAction

-- | Email address that the message should be forwarded to.
faForward :: Lens' FilterAction (Maybe Text)

-- | List of labels to remove from the message.
faRemoveLabelIds :: Lens' FilterAction [Text]

-- | List of labels to add to the message.
faAddLabelIds :: Lens' FilterAction [Text]

-- | Labels are used to categorize messages and threads within the user's
--   mailbox.
--   
--   <i>See:</i> <a>label</a> smart constructor.
data Label

-- | Creates a value of <a>Label</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>lThreadsUnread</a></li>
--   <li><a>lMessageListVisibility</a></li>
--   <li><a>lMessagesTotal</a></li>
--   <li><a>lMessagesUnread</a></li>
--   <li><a>lName</a></li>
--   <li><a>lThreadsTotal</a></li>
--   <li><a>lLabelListVisibility</a></li>
--   <li><a>lId</a></li>
--   <li><a>lType</a></li>
--   </ul>
label :: Label

-- | The number of unread threads with the label.
lThreadsUnread :: Lens' Label (Maybe Int32)

-- | The visibility of the label in the message list in the Gmail web
--   interface.
lMessageListVisibility :: Lens' Label (Maybe LabelMessageListVisibility)

-- | The total number of messages with the label.
lMessagesTotal :: Lens' Label (Maybe Int32)

-- | The number of unread messages with the label.
lMessagesUnread :: Lens' Label (Maybe Int32)

-- | The display name of the label.
lName :: Lens' Label (Maybe Text)

-- | The total number of threads with the label.
lThreadsTotal :: Lens' Label (Maybe Int32)

-- | The visibility of the label in the label list in the Gmail web
--   interface.
lLabelListVisibility :: Lens' Label (Maybe LabelLabelListVisibility)

-- | The immutable ID of the label.
lId :: Lens' Label (Maybe Text)

-- | The owner type for the label. User labels are created by the user and
--   can be modified and deleted by the user and can be applied to any
--   message or thread. System labels are internally created and cannot be
--   added, modified, or deleted. System labels may be able to be applied
--   to or removed from messages and threads under some circumstances but
--   this is not guaranteed. For example, users can apply and remove the
--   INBOX and UNREAD labels from messages and threads, but cannot apply or
--   remove the DRAFTS or SENT labels from messages or threads.
lType :: Lens' Label (Maybe LabelType)
data ListMessagesResponse

-- | Creates a value of <a>ListMessagesResponse</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>lmrNextPageToken</a></li>
--   <li><a>lmrResultSizeEstimate</a></li>
--   <li><a>lmrMessages</a></li>
--   </ul>
listMessagesResponse :: ListMessagesResponse

-- | Token to retrieve the next page of results in the list.
lmrNextPageToken :: Lens' ListMessagesResponse (Maybe Text)

-- | Estimated total number of results.
lmrResultSizeEstimate :: Lens' ListMessagesResponse (Maybe Word32)

-- | List of messages.
lmrMessages :: Lens' ListMessagesResponse [Message]
data HistoryMessageAdded

-- | Creates a value of <a>HistoryMessageAdded</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>hmaMessage</a></li>
--   </ul>
historyMessageAdded :: HistoryMessageAdded
hmaMessage :: Lens' HistoryMessageAdded (Maybe Message)
