Gmail API . users . history

Instance Methods

list(userId, historyTypes=None, labelId=None, maxResults=None, pageToken=None, startHistoryId=None)

Lists the history of all changes to the given mailbox. History results are returned in chronological order (increasing historyId).

list_next(previous_request, previous_response)

Retrieves the next page of results.

Method Details

list(userId, historyTypes=None, labelId=None, maxResults=None, pageToken=None, startHistoryId=None)
Lists the history of all changes to the given mailbox. History results are returned in chronological order (increasing historyId).

Args:
  userId: string, The user'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
      labelAdded - 
      labelRemoved - 
      messageAdded - 
      messageDeleted - 
  labelId: string, Only return messages with a label matching the ID.
  maxResults: integer, The maximum number of history records to return.
  pageToken: string, Page token to retrieve a specific page of results in the list.
  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.

Returns:
  An object of the form:

    {
    "history": [ # 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's mailbox. Each history change may affect multiple messages in multiple ways.
        "id": "A String", # The mailbox sequence ID.
        "labelsAdded": [ # Labels added to messages in this history record.
          {
            "labelIds": [ # Label IDs added to the message.
              "A String",
            ],
            "message": { # An email message.
              "historyId": "A String", # The ID of the last history record that modified this message.
              "id": "A String", # The immutable ID of the message.
              "internalDate": "A String", # 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.
              "labelIds": [ # List of IDs of labels applied to this message.
                "A String",
              ],
              "payload": { # A single MIME message part. # The parsed email structure in the message parts.
                "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
                  "attachmentId": "A String", # 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.
                  "data": "A String", # 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.
                  "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
                },
                "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
                "headers": [ # 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.
                  {
                    "name": "A String", # The name of the header before the : separator. For example, To.
                    "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
                  },
                ],
                "mimeType": "A String", # The MIME type of the message part.
                "partId": "A String", # The immutable ID of the message part.
                "parts": [ # 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
                ],
              },
              "raw": "A String", # 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.
              "sizeEstimate": 42, # Estimated size in bytes of the message.
              "snippet": "A String", # A short part of the message text.
              "threadId": "A String", # 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.
            },
          },
        ],
        "labelsRemoved": [ # Labels removed from messages in this history record.
          {
            "labelIds": [ # Label IDs removed from the message.
              "A String",
            ],
            "message": { # An email message.
              "historyId": "A String", # The ID of the last history record that modified this message.
              "id": "A String", # The immutable ID of the message.
              "internalDate": "A String", # 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.
              "labelIds": [ # List of IDs of labels applied to this message.
                "A String",
              ],
              "payload": { # A single MIME message part. # The parsed email structure in the message parts.
                "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
                  "attachmentId": "A String", # 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.
                  "data": "A String", # 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.
                  "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
                },
                "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
                "headers": [ # 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.
                  {
                    "name": "A String", # The name of the header before the : separator. For example, To.
                    "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
                  },
                ],
                "mimeType": "A String", # The MIME type of the message part.
                "partId": "A String", # The immutable ID of the message part.
                "parts": [ # 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
                ],
              },
              "raw": "A String", # 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.
              "sizeEstimate": 42, # Estimated size in bytes of the message.
              "snippet": "A String", # A short part of the message text.
              "threadId": "A String", # 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.
            },
          },
        ],
        "messages": [ # 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.
            "historyId": "A String", # The ID of the last history record that modified this message.
            "id": "A String", # The immutable ID of the message.
            "internalDate": "A String", # 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.
            "labelIds": [ # List of IDs of labels applied to this message.
              "A String",
            ],
            "payload": { # A single MIME message part. # The parsed email structure in the message parts.
              "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
                "attachmentId": "A String", # 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.
                "data": "A String", # 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.
                "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
              },
              "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
              "headers": [ # 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.
                {
                  "name": "A String", # The name of the header before the : separator. For example, To.
                  "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
                },
              ],
              "mimeType": "A String", # The MIME type of the message part.
              "partId": "A String", # The immutable ID of the message part.
              "parts": [ # 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
              ],
            },
            "raw": "A String", # 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.
            "sizeEstimate": 42, # Estimated size in bytes of the message.
            "snippet": "A String", # A short part of the message text.
            "threadId": "A String", # 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.
          },
        ],
        "messagesAdded": [ # Messages added to the mailbox in this history record.
          {
            "message": { # An email message.
              "historyId": "A String", # The ID of the last history record that modified this message.
              "id": "A String", # The immutable ID of the message.
              "internalDate": "A String", # 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.
              "labelIds": [ # List of IDs of labels applied to this message.
                "A String",
              ],
              "payload": { # A single MIME message part. # The parsed email structure in the message parts.
                "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
                  "attachmentId": "A String", # 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.
                  "data": "A String", # 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.
                  "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
                },
                "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
                "headers": [ # 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.
                  {
                    "name": "A String", # The name of the header before the : separator. For example, To.
                    "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
                  },
                ],
                "mimeType": "A String", # The MIME type of the message part.
                "partId": "A String", # The immutable ID of the message part.
                "parts": [ # 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
                ],
              },
              "raw": "A String", # 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.
              "sizeEstimate": 42, # Estimated size in bytes of the message.
              "snippet": "A String", # A short part of the message text.
              "threadId": "A String", # 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.
            },
          },
        ],
        "messagesDeleted": [ # Messages deleted (not Trashed) from the mailbox in this history record.
          {
            "message": { # An email message.
              "historyId": "A String", # The ID of the last history record that modified this message.
              "id": "A String", # The immutable ID of the message.
              "internalDate": "A String", # 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.
              "labelIds": [ # List of IDs of labels applied to this message.
                "A String",
              ],
              "payload": { # A single MIME message part. # The parsed email structure in the message parts.
                "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
                  "attachmentId": "A String", # 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.
                  "data": "A String", # 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.
                  "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
                },
                "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
                "headers": [ # 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.
                  {
                    "name": "A String", # The name of the header before the : separator. For example, To.
                    "value": "A String", # The value of the header after the : separator. For example, someuser@example.com.
                  },
                ],
                "mimeType": "A String", # The MIME type of the message part.
                "partId": "A String", # The immutable ID of the message part.
                "parts": [ # 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
                ],
              },
              "raw": "A String", # 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.
              "sizeEstimate": 42, # Estimated size in bytes of the message.
              "snippet": "A String", # A short part of the message text.
              "threadId": "A String", # 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.
            },
          },
        ],
      },
    ],
    "historyId": "A String", # The ID of the mailbox's current history record.
    "nextPageToken": "A String", # Page token to retrieve the next page of results in the list.
  }
list_next(previous_request, previous_response)
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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.