# Copyright 2015 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. require 'date' require 'google/apis/core/base_service' require 'google/apis/core/json_representation' require 'google/apis/core/hashable' require 'google/apis/errors' module Google module Apis module GmailV1 # Auto-forwarding settings for an account. class AutoForwarding include Google::Apis::Core::Hashable # The state that a message should be left in after it has been forwarded. # Corresponds to the JSON property `disposition` # @return [String] attr_accessor :disposition # Email address to which all incoming messages are forwarded. This email address # must be a verified member of the forwarding addresses. # Corresponds to the JSON property `emailAddress` # @return [String] attr_accessor :email_address # Whether all incoming mail is automatically forwarded to another address. # Corresponds to the JSON property `enabled` # @return [Boolean] attr_accessor :enabled alias_method :enabled?, :enabled def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @disposition = args[:disposition] if args.key?(:disposition) @email_address = args[:email_address] if args.key?(:email_address) @enabled = args[:enabled] if args.key?(:enabled) end end # class BatchDeleteMessagesRequest include Google::Apis::Core::Hashable # The IDs of the messages to delete. # Corresponds to the JSON property `ids` # @return [Array] attr_accessor :ids def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @ids = args[:ids] if args.key?(:ids) end end # A draft email in the user's mailbox. class Draft include Google::Apis::Core::Hashable # The immutable ID of the draft. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # An email message. # Corresponds to the JSON property `message` # @return [Google::Apis::GmailV1::Message] attr_accessor :message def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @id = args[:id] if args.key?(:id) @message = args[:message] if args.key?(:message) end end # Resource definition for Gmail filters. Filters apply to specific messages # instead of an entire email thread. class Filter include Google::Apis::Core::Hashable # A set of actions to perform on a message. # Corresponds to the JSON property `action` # @return [Google::Apis::GmailV1::FilterAction] attr_accessor :action # Message matching criteria. # Corresponds to the JSON property `criteria` # @return [Google::Apis::GmailV1::FilterCriteria] attr_accessor :criteria # The server assigned ID of the filter. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @action = args[:action] if args.key?(:action) @criteria = args[:criteria] if args.key?(:criteria) @id = args[:id] if args.key?(:id) end end # A set of actions to perform on a message. class FilterAction include Google::Apis::Core::Hashable # List of labels to add to the message. # Corresponds to the JSON property `addLabelIds` # @return [Array] attr_accessor :add_label_ids # Email address that the message should be forwarded to. # Corresponds to the JSON property `forward` # @return [String] attr_accessor :forward # List of labels to remove from the message. # Corresponds to the JSON property `removeLabelIds` # @return [Array] attr_accessor :remove_label_ids def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @add_label_ids = args[:add_label_ids] if args.key?(:add_label_ids) @forward = args[:forward] if args.key?(:forward) @remove_label_ids = args[:remove_label_ids] if args.key?(:remove_label_ids) end end # Message matching criteria. class FilterCriteria include Google::Apis::Core::Hashable # Whether the response should exclude chats. # Corresponds to the JSON property `excludeChats` # @return [Boolean] attr_accessor :exclude_chats alias_method :exclude_chats?, :exclude_chats # The sender's display name or email address. # Corresponds to the JSON property `from` # @return [String] attr_accessor :from # Whether the message has any attachment. # Corresponds to the JSON property `hasAttachment` # @return [Boolean] attr_accessor :has_attachment alias_method :has_attachment?, :has_attachment # 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". # Corresponds to the JSON property `negatedQuery` # @return [String] attr_accessor :negated_query # 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". # Corresponds to the JSON property `query` # @return [String] attr_accessor :query # The size of the entire RFC822 message in bytes, including all headers and # attachments. # Corresponds to the JSON property `size` # @return [Fixnum] attr_accessor :size # How the message size in bytes should be in relation to the size field. # Corresponds to the JSON property `sizeComparison` # @return [String] attr_accessor :size_comparison # Case-insensitive phrase found in the message's subject. Trailing and leading # whitespace are be trimmed and adjacent spaces are collapsed. # Corresponds to the JSON property `subject` # @return [String] attr_accessor :subject # 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. # Corresponds to the JSON property `to` # @return [String] attr_accessor :to def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @exclude_chats = args[:exclude_chats] if args.key?(:exclude_chats) @from = args[:from] if args.key?(:from) @has_attachment = args[:has_attachment] if args.key?(:has_attachment) @negated_query = args[:negated_query] if args.key?(:negated_query) @query = args[:query] if args.key?(:query) @size = args[:size] if args.key?(:size) @size_comparison = args[:size_comparison] if args.key?(:size_comparison) @subject = args[:subject] if args.key?(:subject) @to = args[:to] if args.key?(:to) end end # Settings for a forwarding address. class ForwardingAddress include Google::Apis::Core::Hashable # An email address to which messages can be forwarded. # Corresponds to the JSON property `forwardingEmail` # @return [String] attr_accessor :forwarding_email # Indicates whether this address has been verified and is usable for forwarding. # Read-only. # Corresponds to the JSON property `verificationStatus` # @return [String] attr_accessor :verification_status def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @forwarding_email = args[:forwarding_email] if args.key?(:forwarding_email) @verification_status = args[:verification_status] if args.key?(:verification_status) end end # A record of a change to the user's mailbox. Each history change may affect # multiple messages in multiple ways. class History include Google::Apis::Core::Hashable # The mailbox sequence ID. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # Labels added to messages in this history record. # Corresponds to the JSON property `labelsAdded` # @return [Array] attr_accessor :labels_added # Labels removed from messages in this history record. # Corresponds to the JSON property `labelsRemoved` # @return [Array] attr_accessor :labels_removed # 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. # Corresponds to the JSON property `messages` # @return [Array] attr_accessor :messages # Messages added to the mailbox in this history record. # Corresponds to the JSON property `messagesAdded` # @return [Array] attr_accessor :messages_added # Messages deleted (not Trashed) from the mailbox in this history record. # Corresponds to the JSON property `messagesDeleted` # @return [Array] attr_accessor :messages_deleted def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @id = args[:id] if args.key?(:id) @labels_added = args[:labels_added] if args.key?(:labels_added) @labels_removed = args[:labels_removed] if args.key?(:labels_removed) @messages = args[:messages] if args.key?(:messages) @messages_added = args[:messages_added] if args.key?(:messages_added) @messages_deleted = args[:messages_deleted] if args.key?(:messages_deleted) end end # class HistoryLabelAdded include Google::Apis::Core::Hashable # Label IDs added to the message. # Corresponds to the JSON property `labelIds` # @return [Array] attr_accessor :label_ids # An email message. # Corresponds to the JSON property `message` # @return [Google::Apis::GmailV1::Message] attr_accessor :message def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @label_ids = args[:label_ids] if args.key?(:label_ids) @message = args[:message] if args.key?(:message) end end # class HistoryLabelRemoved include Google::Apis::Core::Hashable # Label IDs removed from the message. # Corresponds to the JSON property `labelIds` # @return [Array] attr_accessor :label_ids # An email message. # Corresponds to the JSON property `message` # @return [Google::Apis::GmailV1::Message] attr_accessor :message def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @label_ids = args[:label_ids] if args.key?(:label_ids) @message = args[:message] if args.key?(:message) end end # class HistoryMessageAdded include Google::Apis::Core::Hashable # An email message. # Corresponds to the JSON property `message` # @return [Google::Apis::GmailV1::Message] attr_accessor :message def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @message = args[:message] if args.key?(:message) end end # class HistoryMessageDeleted include Google::Apis::Core::Hashable # An email message. # Corresponds to the JSON property `message` # @return [Google::Apis::GmailV1::Message] attr_accessor :message def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @message = args[:message] if args.key?(:message) end end # IMAP settings for an account. class ImapSettings include Google::Apis::Core::Hashable # 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. # Corresponds to the JSON property `autoExpunge` # @return [Boolean] attr_accessor :auto_expunge alias_method :auto_expunge?, :auto_expunge # Whether IMAP is enabled for the account. # Corresponds to the JSON property `enabled` # @return [Boolean] attr_accessor :enabled alias_method :enabled?, :enabled # The action that will be executed on a message when it is marked as deleted and # expunged from the last visible IMAP folder. # Corresponds to the JSON property `expungeBehavior` # @return [String] attr_accessor :expunge_behavior # 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. # Corresponds to the JSON property `maxFolderSize` # @return [Fixnum] attr_accessor :max_folder_size def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @auto_expunge = args[:auto_expunge] if args.key?(:auto_expunge) @enabled = args[:enabled] if args.key?(:enabled) @expunge_behavior = args[:expunge_behavior] if args.key?(:expunge_behavior) @max_folder_size = args[:max_folder_size] if args.key?(:max_folder_size) end end # Labels are used to categorize messages and threads within the user's mailbox. class Label include Google::Apis::Core::Hashable # The immutable ID of the label. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # The visibility of the label in the label list in the Gmail web interface. # Corresponds to the JSON property `labelListVisibility` # @return [String] attr_accessor :label_list_visibility # The visibility of the label in the message list in the Gmail web interface. # Corresponds to the JSON property `messageListVisibility` # @return [String] attr_accessor :message_list_visibility # The total number of messages with the label. # Corresponds to the JSON property `messagesTotal` # @return [Fixnum] attr_accessor :messages_total # The number of unread messages with the label. # Corresponds to the JSON property `messagesUnread` # @return [Fixnum] attr_accessor :messages_unread # The display name of the label. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # The total number of threads with the label. # Corresponds to the JSON property `threadsTotal` # @return [Fixnum] attr_accessor :threads_total # The number of unread threads with the label. # Corresponds to the JSON property `threadsUnread` # @return [Fixnum] attr_accessor :threads_unread # 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. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @id = args[:id] if args.key?(:id) @label_list_visibility = args[:label_list_visibility] if args.key?(:label_list_visibility) @message_list_visibility = args[:message_list_visibility] if args.key?(:message_list_visibility) @messages_total = args[:messages_total] if args.key?(:messages_total) @messages_unread = args[:messages_unread] if args.key?(:messages_unread) @name = args[:name] if args.key?(:name) @threads_total = args[:threads_total] if args.key?(:threads_total) @threads_unread = args[:threads_unread] if args.key?(:threads_unread) @type = args[:type] if args.key?(:type) end end # class ListDraftsResponse include Google::Apis::Core::Hashable # List of drafts. # Corresponds to the JSON property `drafts` # @return [Array] attr_accessor :drafts # Token to retrieve the next page of results in the list. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # Estimated total number of results. # Corresponds to the JSON property `resultSizeEstimate` # @return [Fixnum] attr_accessor :result_size_estimate def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @drafts = args[:drafts] if args.key?(:drafts) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @result_size_estimate = args[:result_size_estimate] if args.key?(:result_size_estimate) end end # Response for the ListFilters method. class ListFiltersResponse include Google::Apis::Core::Hashable # List of a user's filters. # Corresponds to the JSON property `filter` # @return [Array] attr_accessor :filter def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @filter = args[:filter] if args.key?(:filter) end end # Response for the ListForwardingAddresses method. class ListForwardingAddressesResponse include Google::Apis::Core::Hashable # List of addresses that may be used for forwarding. # Corresponds to the JSON property `forwardingAddresses` # @return [Array] attr_accessor :forwarding_addresses def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @forwarding_addresses = args[:forwarding_addresses] if args.key?(:forwarding_addresses) end end # class ListHistoryResponse include Google::Apis::Core::Hashable # List of history records. Any messages contained in the response will typically # only have id and threadId fields populated. # Corresponds to the JSON property `history` # @return [Array] attr_accessor :history # The ID of the mailbox's current history record. # Corresponds to the JSON property `historyId` # @return [String] attr_accessor :history_id # Page token to retrieve the next page of results in the list. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @history = args[:history] if args.key?(:history) @history_id = args[:history_id] if args.key?(:history_id) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) end end # class ListLabelsResponse include Google::Apis::Core::Hashable # List of labels. # Corresponds to the JSON property `labels` # @return [Array] attr_accessor :labels def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @labels = args[:labels] if args.key?(:labels) end end # class ListMessagesResponse include Google::Apis::Core::Hashable # List of messages. # Corresponds to the JSON property `messages` # @return [Array] attr_accessor :messages # Token to retrieve the next page of results in the list. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # Estimated total number of results. # Corresponds to the JSON property `resultSizeEstimate` # @return [Fixnum] attr_accessor :result_size_estimate def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @messages = args[:messages] if args.key?(:messages) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @result_size_estimate = args[:result_size_estimate] if args.key?(:result_size_estimate) end end # Response for the ListSendAs method. class ListSendAsResponse include Google::Apis::Core::Hashable # List of send-as aliases. # Corresponds to the JSON property `sendAs` # @return [Array] attr_accessor :send_as def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @send_as = args[:send_as] if args.key?(:send_as) end end # class ListThreadsResponse include Google::Apis::Core::Hashable # Page token to retrieve the next page of results in the list. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # Estimated total number of results. # Corresponds to the JSON property `resultSizeEstimate` # @return [Fixnum] attr_accessor :result_size_estimate # List of threads. # Corresponds to the JSON property `threads` # @return [Array] attr_accessor :threads def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @result_size_estimate = args[:result_size_estimate] if args.key?(:result_size_estimate) @threads = args[:threads] if args.key?(:threads) end end # An email message. class Message include Google::Apis::Core::Hashable # The ID of the last history record that modified this message. # Corresponds to the JSON property `historyId` # @return [String] attr_accessor :history_id # The immutable ID of the message. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # 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. # Corresponds to the JSON property `internalDate` # @return [String] attr_accessor :internal_date # List of IDs of labels applied to this message. # Corresponds to the JSON property `labelIds` # @return [Array] attr_accessor :label_ids # A single MIME message part. # Corresponds to the JSON property `payload` # @return [Google::Apis::GmailV1::MessagePart] attr_accessor :payload # 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. # Corresponds to the JSON property `raw` # @return [String] attr_accessor :raw # Estimated size in bytes of the message. # Corresponds to the JSON property `sizeEstimate` # @return [Fixnum] attr_accessor :size_estimate # A short part of the message text. # Corresponds to the JSON property `snippet` # @return [String] attr_accessor :snippet # 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. # Corresponds to the JSON property `threadId` # @return [String] attr_accessor :thread_id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @history_id = args[:history_id] if args.key?(:history_id) @id = args[:id] if args.key?(:id) @internal_date = args[:internal_date] if args.key?(:internal_date) @label_ids = args[:label_ids] if args.key?(:label_ids) @payload = args[:payload] if args.key?(:payload) @raw = args[:raw] if args.key?(:raw) @size_estimate = args[:size_estimate] if args.key?(:size_estimate) @snippet = args[:snippet] if args.key?(:snippet) @thread_id = args[:thread_id] if args.key?(:thread_id) end end # A single MIME message part. class MessagePart include Google::Apis::Core::Hashable # The body of a single MIME message part. # Corresponds to the JSON property `body` # @return [Google::Apis::GmailV1::MessagePartBody] attr_accessor :body # The filename of the attachment. Only present if this message part represents # an attachment. # Corresponds to the JSON property `filename` # @return [String] attr_accessor :filename # 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. # Corresponds to the JSON property `headers` # @return [Array] attr_accessor :headers # The MIME type of the message part. # Corresponds to the JSON property `mimeType` # @return [String] attr_accessor :mime_type # The immutable ID of the message part. # Corresponds to the JSON property `partId` # @return [String] attr_accessor :part_id # 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. # Corresponds to the JSON property `parts` # @return [Array] attr_accessor :parts def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @body = args[:body] if args.key?(:body) @filename = args[:filename] if args.key?(:filename) @headers = args[:headers] if args.key?(:headers) @mime_type = args[:mime_type] if args.key?(:mime_type) @part_id = args[:part_id] if args.key?(:part_id) @parts = args[:parts] if args.key?(:parts) end end # The body of a single MIME message part. class MessagePartBody include Google::Apis::Core::Hashable # 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. # Corresponds to the JSON property `attachmentId` # @return [String] attr_accessor :attachment_id # The body data of a MIME message part. 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. # Corresponds to the JSON property `data` # @return [String] attr_accessor :data # Total number of bytes in the body of the message part. # Corresponds to the JSON property `size` # @return [Fixnum] attr_accessor :size def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @attachment_id = args[:attachment_id] if args.key?(:attachment_id) @data = args[:data] if args.key?(:data) @size = args[:size] if args.key?(:size) end end # class MessagePartHeader include Google::Apis::Core::Hashable # The name of the header before the : separator. For example, To. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # The value of the header after the : separator. For example, someuser@example. # com. # Corresponds to the JSON property `value` # @return [String] attr_accessor :value def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @name = args[:name] if args.key?(:name) @value = args[:value] if args.key?(:value) end end # class ModifyMessageRequest include Google::Apis::Core::Hashable # A list of IDs of labels to add to this message. # Corresponds to the JSON property `addLabelIds` # @return [Array] attr_accessor :add_label_ids # A list IDs of labels to remove from this message. # Corresponds to the JSON property `removeLabelIds` # @return [Array] attr_accessor :remove_label_ids def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @add_label_ids = args[:add_label_ids] if args.key?(:add_label_ids) @remove_label_ids = args[:remove_label_ids] if args.key?(:remove_label_ids) end end # class ModifyThreadRequest include Google::Apis::Core::Hashable # A list of IDs of labels to add to this thread. # Corresponds to the JSON property `addLabelIds` # @return [Array] attr_accessor :add_label_ids # A list of IDs of labels to remove from this thread. # Corresponds to the JSON property `removeLabelIds` # @return [Array] attr_accessor :remove_label_ids def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @add_label_ids = args[:add_label_ids] if args.key?(:add_label_ids) @remove_label_ids = args[:remove_label_ids] if args.key?(:remove_label_ids) end end # POP settings for an account. class PopSettings include Google::Apis::Core::Hashable # The range of messages which are accessible via POP. Setting this to # FROM_NOW_ON causes any existing messages to become inaccessible and causes all # future messages to become accessible. Setting this to ALL_MAIL causes all # messages to become accessible, even if they have been fetched previously. # Corresponds to the JSON property `accessWindow` # @return [String] attr_accessor :access_window # The action that will be executed on a message after it has been fetched via # POP. # Corresponds to the JSON property `disposition` # @return [String] attr_accessor :disposition def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @access_window = args[:access_window] if args.key?(:access_window) @disposition = args[:disposition] if args.key?(:disposition) end end # Profile for a Gmail user. class Profile include Google::Apis::Core::Hashable # The user's email address. # Corresponds to the JSON property `emailAddress` # @return [String] attr_accessor :email_address # The ID of the mailbox's current history record. # Corresponds to the JSON property `historyId` # @return [String] attr_accessor :history_id # The total number of messages in the mailbox. # Corresponds to the JSON property `messagesTotal` # @return [Fixnum] attr_accessor :messages_total # The total number of threads in the mailbox. # Corresponds to the JSON property `threadsTotal` # @return [Fixnum] attr_accessor :threads_total def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @email_address = args[:email_address] if args.key?(:email_address) @history_id = args[:history_id] if args.key?(:history_id) @messages_total = args[:messages_total] if args.key?(:messages_total) @threads_total = args[:threads_total] if args.key?(:threads_total) end end # 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. See # for more details. class SendAs include Google::Apis::Core::Hashable # 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. # Corresponds to the JSON property `displayName` # @return [String] attr_accessor :display_name # 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. # Corresponds to the JSON property `isDefault` # @return [Boolean] attr_accessor :is_default alias_method :is_default?, :is_default # 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. # Corresponds to the JSON property `isPrimary` # @return [Boolean] attr_accessor :is_primary alias_method :is_primary?, :is_primary # 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. # Corresponds to the JSON property `replyToAddress` # @return [String] attr_accessor :reply_to_address # The email address that appears in the "From:" header for mail sent using this # alias. This is read-only for all operations except create. # Corresponds to the JSON property `sendAsEmail` # @return [String] attr_accessor :send_as_email # An optional HTML signature that is included in messages composed with this # alias in the Gmail web UI. # Corresponds to the JSON property `signature` # @return [String] attr_accessor :signature # Configuration for communication with an SMTP service. # Corresponds to the JSON property `smtpMsa` # @return [Google::Apis::GmailV1::SmtpMsa] attr_accessor :smtp_msa # Whether Gmail should treat this address as an alias for the user's primary # email address. See for more details. This setting only applies to custom " # from" aliases. # Corresponds to the JSON property `treatAsAlias` # @return [Boolean] attr_accessor :treat_as_alias alias_method :treat_as_alias?, :treat_as_alias # Indicates whether this address has been verified for use as a send-as alias. # Read-only. This setting only applies to custom "from" aliases. # Corresponds to the JSON property `verificationStatus` # @return [String] attr_accessor :verification_status def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @display_name = args[:display_name] if args.key?(:display_name) @is_default = args[:is_default] if args.key?(:is_default) @is_primary = args[:is_primary] if args.key?(:is_primary) @reply_to_address = args[:reply_to_address] if args.key?(:reply_to_address) @send_as_email = args[:send_as_email] if args.key?(:send_as_email) @signature = args[:signature] if args.key?(:signature) @smtp_msa = args[:smtp_msa] if args.key?(:smtp_msa) @treat_as_alias = args[:treat_as_alias] if args.key?(:treat_as_alias) @verification_status = args[:verification_status] if args.key?(:verification_status) end end # Configuration for communication with an SMTP service. class SmtpMsa include Google::Apis::Core::Hashable # The hostname of the SMTP service. Required. # Corresponds to the JSON property `host` # @return [String] attr_accessor :host # 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. # Corresponds to the JSON property `password` # @return [String] attr_accessor :password # The port of the SMTP service. Required. # Corresponds to the JSON property `port` # @return [Fixnum] attr_accessor :port # The protocol that will be used to secure communication with the SMTP service. # Required. # Corresponds to the JSON property `securityMode` # @return [String] attr_accessor :security_mode # 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. # Corresponds to the JSON property `username` # @return [String] attr_accessor :username def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @host = args[:host] if args.key?(:host) @password = args[:password] if args.key?(:password) @port = args[:port] if args.key?(:port) @security_mode = args[:security_mode] if args.key?(:security_mode) @username = args[:username] if args.key?(:username) end end # A collection of messages representing a conversation. class Thread include Google::Apis::Core::Hashable # The ID of the last history record that modified this thread. # Corresponds to the JSON property `historyId` # @return [String] attr_accessor :history_id # The unique ID of the thread. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # The list of messages in the thread. # Corresponds to the JSON property `messages` # @return [Array] attr_accessor :messages # A short part of the message text. # Corresponds to the JSON property `snippet` # @return [String] attr_accessor :snippet def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @history_id = args[:history_id] if args.key?(:history_id) @id = args[:id] if args.key?(:id) @messages = args[:messages] if args.key?(:messages) @snippet = args[:snippet] if args.key?(:snippet) end end # Vacation auto-reply settings for an account. These settings correspond to the " # Vacation responder" feature in the web interface. See for more details. class VacationSettings include Google::Apis::Core::Hashable # Flag that controls whether Gmail automatically replies to messages. # Corresponds to the JSON property `enableAutoReply` # @return [Boolean] attr_accessor :enable_auto_reply alias_method :enable_auto_reply?, :enable_auto_reply # 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`. # Corresponds to the JSON property `endTime` # @return [String] attr_accessor :end_time # Response body in HTML format. Gmail will sanitize the HTML before storing it. # Corresponds to the JSON property `responseBodyHtml` # @return [String] attr_accessor :response_body_html # Response body in plain text format. # Corresponds to the JSON property `responseBodyPlainText` # @return [String] attr_accessor :response_body_plain_text # 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. # Corresponds to the JSON property `responseSubject` # @return [String] attr_accessor :response_subject # Flag that determines whether responses are sent to recipients who are not in # the user's list of contacts. # Corresponds to the JSON property `restrictToContacts` # @return [Boolean] attr_accessor :restrict_to_contacts alias_method :restrict_to_contacts?, :restrict_to_contacts # 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. # Corresponds to the JSON property `restrictToDomain` # @return [Boolean] attr_accessor :restrict_to_domain alias_method :restrict_to_domain?, :restrict_to_domain # 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`. # Corresponds to the JSON property `startTime` # @return [String] attr_accessor :start_time def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @enable_auto_reply = args[:enable_auto_reply] if args.key?(:enable_auto_reply) @end_time = args[:end_time] if args.key?(:end_time) @response_body_html = args[:response_body_html] if args.key?(:response_body_html) @response_body_plain_text = args[:response_body_plain_text] if args.key?(:response_body_plain_text) @response_subject = args[:response_subject] if args.key?(:response_subject) @restrict_to_contacts = args[:restrict_to_contacts] if args.key?(:restrict_to_contacts) @restrict_to_domain = args[:restrict_to_domain] if args.key?(:restrict_to_domain) @start_time = args[:start_time] if args.key?(:start_time) end end # Set up or update a new push notification watch on this user's mailbox. class WatchRequest include Google::Apis::Core::Hashable # Filtering behavior of labelIds list specified. # Corresponds to the JSON property `labelFilterAction` # @return [String] attr_accessor :label_filter_action # 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. # Corresponds to the JSON property `labelIds` # @return [Array] attr_accessor :label_ids # 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). # Corresponds to the JSON property `topicName` # @return [String] attr_accessor :topic_name def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @label_filter_action = args[:label_filter_action] if args.key?(:label_filter_action) @label_ids = args[:label_ids] if args.key?(:label_ids) @topic_name = args[:topic_name] if args.key?(:topic_name) end end # Push notification watch response. class WatchResponse include Google::Apis::Core::Hashable # When Gmail will stop sending notifications for mailbox updates (epoch millis). # Call watch again before this time to renew the watch. # Corresponds to the JSON property `expiration` # @return [String] attr_accessor :expiration # The ID of the mailbox's current history record. # Corresponds to the JSON property `historyId` # @return [String] attr_accessor :history_id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @expiration = args[:expiration] if args.key?(:expiration) @history_id = args[:history_id] if args.key?(:history_id) end end end end end