# Gmail API . users . threads

## Instance Methods

Close httplib2 connections.

Immediately and permanently deletes the specified thread. This operation cannot be undone. Prefer `threads.trash` instead.

Gets the specified thread.

Lists the threads in the user's mailbox.

Retrieves the next page of results.

Modifies the labels applied to the thread. This applies to all messages in the thread.

Moves the specified thread to the trash.

Removes the specified thread from the trash.

### Method Details

`close()`

    Close httplib2 connections.

`delete(userId, id, x__xgafv=None)`

    Immediately and permanently deletes the specified thread. This operation cannot be undone. Prefer `threads.trash` instead.

    Args:
      userId: string, The user's email address. The special value `me` can be used to indicate the authenticated user. (required)
      id: string, ID of the Thread to delete. (required)
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

`get(userId, id, metadataHeaders=None, format=None, x__xgafv=None)`

    Gets the specified thread.

    Args:
      userId: string, The user's email address. The special value `me` can be used to indicate the authenticated user. (required)
      id: string, The ID of the thread to retrieve. (required)
      metadataHeaders: string, When given and format is METADATA, only include headers specified. (repeated)
      format: string, The format to return the messages in.
        Allowed values
          full - Returns the full email message data with body content parsed in the `payload` field; the `raw` field is not used. Format cannot be used when accessing the api using the gmail.metadata scope.
          metadata - Returns only email message IDs, labels, and email headers.
          minimal - Returns only email message IDs and labels; does not return the email headers, body, or payload.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A collection of messages representing a conversation.
        "snippet": "A String", # A short part of the message text.
        "historyId": "A String", # The ID of the last history record that modified this thread.
        "messages": [ # The list of messages in the thread.
          { # An email message.
            "sizeEstimate": 42, # Estimated size in bytes of the message.
            "snippet": "A String", # A short part of the message text.
            "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.
              "mimeType": "A String", # The MIME type 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
              ],
              "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`.
                },
              ],
              "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
              "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.
                "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
                "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.
              },
              "partId": "A String", # The immutable ID of the message part.
            },
            "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.
            "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.
            "historyId": "A String", # The ID of the last history record that modified this message.
            "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: 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.
          },
        ],
        "id": "A String", # The unique ID of the thread.
      }

`list(userId, pageToken=None, maxResults=None, labelIds=None, includeSpamTrash=None, q=None, x__xgafv=None)`

    Lists the threads in the user's mailbox.

    Args:
      userId: string, The user's email address. The special value `me` can be used to indicate the authenticated user. (required)
      pageToken: string, Page token to retrieve a specific page of results in the list.
      maxResults: integer, Maximum number of threads to return.
      labelIds: string, Only return threads with labels that match all of the specified label IDs. (repeated)
      includeSpamTrash: boolean, Include threads from `SPAM` and `TRASH` in the results.
      q: string, 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.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        {
        "threads": [ # List of threads. Note that each thread resource does not contain a list of `messages`. The list of `messages` for a given thread can be fetched using the threads.get method.
          { # A collection of messages representing a conversation.
            "snippet": "A String", # A short part of the message text.
            "historyId": "A String", # The ID of the last history record that modified this thread.
            "messages": [ # The list of messages in the thread.
              { # An email message.
                "sizeEstimate": 42, # Estimated size in bytes of the message.
                "snippet": "A String", # A short part of the message text.
                "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.
                  "mimeType": "A String", # The MIME type 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
                  ],
                  "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`.
                    },
                  ],
                  "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
                  "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.
                    "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
                    "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.
                  },
                  "partId": "A String", # The immutable ID of the message part.
                },
                "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.
                "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.
                "historyId": "A String", # The ID of the last history record that modified this message.
                "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: 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.
              },
            ],
            "id": "A String", # The unique ID of the thread.
          },
        ],
        "resultSizeEstimate": 42, # Estimated total number of results.
        "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.

`modify(userId, id, body=None, x__xgafv=None)`

    Modifies the labels applied to the thread. This applies to all messages in the thread.

    Args:
      userId: string, The user's email address. The special value `me` can be used to indicate the authenticated user. (required)
      id: string, The ID of the thread to modify. (required)
      body: object, The request body.
        The object takes the form of:

    {
        "removeLabelIds": [ # A list of IDs of labels to remove from this thread.
          "A String",
        ],
        "addLabelIds": [ # A list of IDs of labels to add to this thread.
          "A String",
        ],
      }

      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A collection of messages representing a conversation.
        "snippet": "A String", # A short part of the message text.
        "historyId": "A String", # The ID of the last history record that modified this thread.
        "messages": [ # The list of messages in the thread.
          { # An email message.
            "sizeEstimate": 42, # Estimated size in bytes of the message.
            "snippet": "A String", # A short part of the message text.
            "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.
              "mimeType": "A String", # The MIME type 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
              ],
              "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`.
                },
              ],
              "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
              "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.
                "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
                "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.
              },
              "partId": "A String", # The immutable ID of the message part.
            },
            "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.
            "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.
            "historyId": "A String", # The ID of the last history record that modified this message.
            "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: 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.
          },
        ],
        "id": "A String", # The unique ID of the thread.
      }

`trash(userId, id, x__xgafv=None)`

    Moves the specified thread to the trash.

    Args:
      userId: string, The user's email address. The special value `me` can be used to indicate the authenticated user. (required)
      id: string, The ID of the thread to Trash. (required)
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A collection of messages representing a conversation.
        "snippet": "A String", # A short part of the message text.
        "historyId": "A String", # The ID of the last history record that modified this thread.
        "messages": [ # The list of messages in the thread.
          { # An email message.
            "sizeEstimate": 42, # Estimated size in bytes of the message.
            "snippet": "A String", # A short part of the message text.
            "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.
              "mimeType": "A String", # The MIME type 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
              ],
              "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`.
                },
              ],
              "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
              "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.
                "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
                "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.
              },
              "partId": "A String", # The immutable ID of the message part.
            },
            "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.
            "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.
            "historyId": "A String", # The ID of the last history record that modified this message.
            "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: 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.
          },
        ],
        "id": "A String", # The unique ID of the thread.
      }

`untrash(userId, id, x__xgafv=None)`

    Removes the specified thread from the trash.

    Args:
      userId: string, The user's email address. The special value `me` can be used to indicate the authenticated user. (required)
      id: string, The ID of the thread to remove from Trash. (required)
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A collection of messages representing a conversation.
        "snippet": "A String", # A short part of the message text.
        "historyId": "A String", # The ID of the last history record that modified this thread.
        "messages": [ # The list of messages in the thread.
          { # An email message.
            "sizeEstimate": 42, # Estimated size in bytes of the message.
            "snippet": "A String", # A short part of the message text.
            "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.
              "mimeType": "A String", # The MIME type 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
              ],
              "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`.
                },
              ],
              "filename": "A String", # The filename of the attachment. Only present if this message part represents an attachment.
              "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.
                "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
                "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.
              },
              "partId": "A String", # The immutable ID of the message part.
            },
            "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.
            "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.
            "historyId": "A String", # The ID of the last history record that modified this message.
            "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: 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.
          },
        ],
        "id": "A String", # The unique ID of the thread.
      }