<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="gmail_v1.html">Gmail API</a> . <a href="gmail_v1.users.html">users</a> . <a href="gmail_v1.users.history.html">history</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#list">list(userId, historyTypes=None, startHistoryId=None, pageToken=None, labelId=None, maxResults=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the history of all changes to the given mailbox. History results are returned in chronological order (increasing `historyId`).</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="list">list(userId, historyTypes=None, startHistoryId=None, pageToken=None, labelId=None, maxResults=None, x__xgafv=None)</code>
  <pre>Lists the history of all changes to the given mailbox. History results are returned in chronological order (increasing `historyId`).

Args:
  userId: string, The user&#x27;s email address. The special value `me` can be used to indicate the authenticated user. (required)
  historyTypes: string, History types to be returned by the function (repeated)
    Allowed values
      messageAdded - 
      messageDeleted - 
      labelAdded - 
      labelRemoved - 
  startHistoryId: string, 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.
  pageToken: string, Page token to retrieve a specific page of results in the list.
  labelId: string, Only return messages with a label matching the ID.
  maxResults: integer, The maximum number of history records to return.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Page token to retrieve the next page of results in the list.
    &quot;history&quot;: [ # List of history records. Any `messages` contained in the response will typically only have `id` and `threadId` fields populated.
      { # A record of a change to the user&#x27;s mailbox. Each history change may affect multiple messages in multiple ways.
        &quot;messagesDeleted&quot;: [ # Messages deleted (not Trashed) from the mailbox in this history record.
          {
            &quot;message&quot;: { # An email message.
              &quot;sizeEstimate&quot;: 42, # Estimated size in bytes of the message.
              &quot;snippet&quot;: &quot;A String&quot;, # A short part of the message text.
              &quot;labelIds&quot;: [ # List of IDs of labels applied to this message.
                &quot;A String&quot;,
              ],
              &quot;payload&quot;: { # A single MIME message part. # The parsed email structure in the message parts.
                &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the message part.
                &quot;parts&quot;: [ # 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.
                  # Object with schema name: MessagePart
                ],
                &quot;headers&quot;: [ # 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`.
                  {
                    &quot;name&quot;: &quot;A String&quot;, # The name of the header before the `:` separator. For example, `To`.
                    &quot;value&quot;: &quot;A String&quot;, # The value of the header after the `:` separator. For example, `someuser@example.com`.
                  },
                ],
                &quot;filename&quot;: &quot;A String&quot;, # The filename of the attachment. Only present if this message part represents an attachment.
                &quot;body&quot;: { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
                  &quot;attachmentId&quot;: &quot;A String&quot;, # 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.
                  &quot;size&quot;: 42, # Number of bytes for the message part data (encoding notwithstanding).
                  &quot;data&quot;: &quot;A String&quot;, # 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.
                },
                &quot;partId&quot;: &quot;A String&quot;, # The immutable ID of the message part.
              },
              &quot;id&quot;: &quot;A String&quot;, # The immutable ID of the message.
              &quot;internalDate&quot;: &quot;A String&quot;, # 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.
              &quot;raw&quot;: &quot;A String&quot;, # 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.
              &quot;historyId&quot;: &quot;A String&quot;, # The ID of the last history record that modified this message.
              &quot;threadId&quot;: &quot;A String&quot;, # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met: 1. The requested `threadId` must be specified on the `Message` or `Draft.Message` you supply with your request. 2. The `References` and `In-Reply-To` headers must be set in compliance with the [RFC 2822](https://tools.ietf.org/html/rfc2822) standard. 3. The `Subject` headers must match.
            },
          },
        ],
        &quot;labelsAdded&quot;: [ # Labels added to messages in this history record.
          {
            &quot;message&quot;: { # An email message.
              &quot;sizeEstimate&quot;: 42, # Estimated size in bytes of the message.
              &quot;snippet&quot;: &quot;A String&quot;, # A short part of the message text.
              &quot;labelIds&quot;: [ # List of IDs of labels applied to this message.
                &quot;A String&quot;,
              ],
              &quot;payload&quot;: { # A single MIME message part. # The parsed email structure in the message parts.
                &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the message part.
                &quot;parts&quot;: [ # 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.
                  # Object with schema name: MessagePart
                ],
                &quot;headers&quot;: [ # 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`.
                  {
                    &quot;name&quot;: &quot;A String&quot;, # The name of the header before the `:` separator. For example, `To`.
                    &quot;value&quot;: &quot;A String&quot;, # The value of the header after the `:` separator. For example, `someuser@example.com`.
                  },
                ],
                &quot;filename&quot;: &quot;A String&quot;, # The filename of the attachment. Only present if this message part represents an attachment.
                &quot;body&quot;: { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
                  &quot;attachmentId&quot;: &quot;A String&quot;, # 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.
                  &quot;size&quot;: 42, # Number of bytes for the message part data (encoding notwithstanding).
                  &quot;data&quot;: &quot;A String&quot;, # 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.
                },
                &quot;partId&quot;: &quot;A String&quot;, # The immutable ID of the message part.
              },
              &quot;id&quot;: &quot;A String&quot;, # The immutable ID of the message.
              &quot;internalDate&quot;: &quot;A String&quot;, # 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.
              &quot;raw&quot;: &quot;A String&quot;, # 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.
              &quot;historyId&quot;: &quot;A String&quot;, # The ID of the last history record that modified this message.
              &quot;threadId&quot;: &quot;A String&quot;, # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met: 1. The requested `threadId` must be specified on the `Message` or `Draft.Message` you supply with your request. 2. The `References` and `In-Reply-To` headers must be set in compliance with the [RFC 2822](https://tools.ietf.org/html/rfc2822) standard. 3. The `Subject` headers must match.
            },
            &quot;labelIds&quot;: [ # Label IDs added to the message.
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;id&quot;: &quot;A String&quot;, # The mailbox sequence ID.
        &quot;messagesAdded&quot;: [ # Messages added to the mailbox in this history record.
          {
            &quot;message&quot;: { # An email message.
              &quot;sizeEstimate&quot;: 42, # Estimated size in bytes of the message.
              &quot;snippet&quot;: &quot;A String&quot;, # A short part of the message text.
              &quot;labelIds&quot;: [ # List of IDs of labels applied to this message.
                &quot;A String&quot;,
              ],
              &quot;payload&quot;: { # A single MIME message part. # The parsed email structure in the message parts.
                &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the message part.
                &quot;parts&quot;: [ # 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.
                  # Object with schema name: MessagePart
                ],
                &quot;headers&quot;: [ # 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`.
                  {
                    &quot;name&quot;: &quot;A String&quot;, # The name of the header before the `:` separator. For example, `To`.
                    &quot;value&quot;: &quot;A String&quot;, # The value of the header after the `:` separator. For example, `someuser@example.com`.
                  },
                ],
                &quot;filename&quot;: &quot;A String&quot;, # The filename of the attachment. Only present if this message part represents an attachment.
                &quot;body&quot;: { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
                  &quot;attachmentId&quot;: &quot;A String&quot;, # 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.
                  &quot;size&quot;: 42, # Number of bytes for the message part data (encoding notwithstanding).
                  &quot;data&quot;: &quot;A String&quot;, # 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.
                },
                &quot;partId&quot;: &quot;A String&quot;, # The immutable ID of the message part.
              },
              &quot;id&quot;: &quot;A String&quot;, # The immutable ID of the message.
              &quot;internalDate&quot;: &quot;A String&quot;, # 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.
              &quot;raw&quot;: &quot;A String&quot;, # 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.
              &quot;historyId&quot;: &quot;A String&quot;, # The ID of the last history record that modified this message.
              &quot;threadId&quot;: &quot;A String&quot;, # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met: 1. The requested `threadId` must be specified on the `Message` or `Draft.Message` you supply with your request. 2. The `References` and `In-Reply-To` headers must be set in compliance with the [RFC 2822](https://tools.ietf.org/html/rfc2822) standard. 3. The `Subject` headers must match.
            },
          },
        ],
        &quot;labelsRemoved&quot;: [ # Labels removed from messages in this history record.
          {
            &quot;message&quot;: { # An email message.
              &quot;sizeEstimate&quot;: 42, # Estimated size in bytes of the message.
              &quot;snippet&quot;: &quot;A String&quot;, # A short part of the message text.
              &quot;labelIds&quot;: [ # List of IDs of labels applied to this message.
                &quot;A String&quot;,
              ],
              &quot;payload&quot;: { # A single MIME message part. # The parsed email structure in the message parts.
                &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the message part.
                &quot;parts&quot;: [ # 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.
                  # Object with schema name: MessagePart
                ],
                &quot;headers&quot;: [ # 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`.
                  {
                    &quot;name&quot;: &quot;A String&quot;, # The name of the header before the `:` separator. For example, `To`.
                    &quot;value&quot;: &quot;A String&quot;, # The value of the header after the `:` separator. For example, `someuser@example.com`.
                  },
                ],
                &quot;filename&quot;: &quot;A String&quot;, # The filename of the attachment. Only present if this message part represents an attachment.
                &quot;body&quot;: { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
                  &quot;attachmentId&quot;: &quot;A String&quot;, # 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.
                  &quot;size&quot;: 42, # Number of bytes for the message part data (encoding notwithstanding).
                  &quot;data&quot;: &quot;A String&quot;, # 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.
                },
                &quot;partId&quot;: &quot;A String&quot;, # The immutable ID of the message part.
              },
              &quot;id&quot;: &quot;A String&quot;, # The immutable ID of the message.
              &quot;internalDate&quot;: &quot;A String&quot;, # 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.
              &quot;raw&quot;: &quot;A String&quot;, # 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.
              &quot;historyId&quot;: &quot;A String&quot;, # The ID of the last history record that modified this message.
              &quot;threadId&quot;: &quot;A String&quot;, # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met: 1. The requested `threadId` must be specified on the `Message` or `Draft.Message` you supply with your request. 2. The `References` and `In-Reply-To` headers must be set in compliance with the [RFC 2822](https://tools.ietf.org/html/rfc2822) standard. 3. The `Subject` headers must match.
            },
            &quot;labelIds&quot;: [ # Label IDs removed from the message.
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;messages&quot;: [ # 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.
          { # An email message.
            &quot;sizeEstimate&quot;: 42, # Estimated size in bytes of the message.
            &quot;snippet&quot;: &quot;A String&quot;, # A short part of the message text.
            &quot;labelIds&quot;: [ # List of IDs of labels applied to this message.
              &quot;A String&quot;,
            ],
            &quot;payload&quot;: { # A single MIME message part. # The parsed email structure in the message parts.
              &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the message part.
              &quot;parts&quot;: [ # 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.
                # Object with schema name: MessagePart
              ],
              &quot;headers&quot;: [ # 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`.
                {
                  &quot;name&quot;: &quot;A String&quot;, # The name of the header before the `:` separator. For example, `To`.
                  &quot;value&quot;: &quot;A String&quot;, # The value of the header after the `:` separator. For example, `someuser@example.com`.
                },
              ],
              &quot;filename&quot;: &quot;A String&quot;, # The filename of the attachment. Only present if this message part represents an attachment.
              &quot;body&quot;: { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
                &quot;attachmentId&quot;: &quot;A String&quot;, # 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.
                &quot;size&quot;: 42, # Number of bytes for the message part data (encoding notwithstanding).
                &quot;data&quot;: &quot;A String&quot;, # 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.
              },
              &quot;partId&quot;: &quot;A String&quot;, # The immutable ID of the message part.
            },
            &quot;id&quot;: &quot;A String&quot;, # The immutable ID of the message.
            &quot;internalDate&quot;: &quot;A String&quot;, # 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.
            &quot;raw&quot;: &quot;A String&quot;, # 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.
            &quot;historyId&quot;: &quot;A String&quot;, # The ID of the last history record that modified this message.
            &quot;threadId&quot;: &quot;A String&quot;, # The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met: 1. The requested `threadId` must be specified on the `Message` or `Draft.Message` you supply with your request. 2. The `References` and `In-Reply-To` headers must be set in compliance with the [RFC 2822](https://tools.ietf.org/html/rfc2822) standard. 3. The `Subject` headers must match.
          },
        ],
      },
    ],
    &quot;historyId&quot;: &quot;A String&quot;, # The ID of the mailbox&#x27;s current history record.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>