<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.drafts.html">drafts</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(userId, body=None, media_body=None, media_mime_type=None)</a></code></p>
<p class="firstline">Creates a new draft with the DRAFT label.</p>
<p class="toc_element">
  <code><a href="#delete">delete(userId, id)</a></code></p>
<p class="firstline">Immediately and permanently deletes the specified draft. Does not simply trash it.</p>
<p class="toc_element">
  <code><a href="#get">get(userId, id, format=None)</a></code></p>
<p class="firstline">Gets the specified draft.</p>
<p class="toc_element">
  <code><a href="#list">list(userId, q=None, pageToken=None, maxResults=None, includeSpamTrash=None)</a></code></p>
<p class="firstline">Lists the drafts in the user's mailbox.</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>
<p class="toc_element">
  <code><a href="#send">send(userId, body=None, media_body=None, media_mime_type=None)</a></code></p>
<p class="firstline">Sends the specified, existing draft to the recipients in the To, Cc, and Bcc headers.</p>
<p class="toc_element">
  <code><a href="#update">update(userId, id, body=None, media_body=None, media_mime_type=None)</a></code></p>
<p class="firstline">Replaces a draft's content.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(userId, body=None, media_body=None, media_mime_type=None)</code>
  <pre>Creates a new draft with the DRAFT label.

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

{ # A draft email in the user's mailbox.
  "message": { # An email message. # The message content of the draft.
    "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.
    "historyId": "A String", # The ID of the last history record that modified this message.
    "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.
        "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.
        "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).
      },
      "mimeType": "A String", # The MIME type of the message part.
      "partId": "A String", # The immutable ID of the message part.
      "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.
        },
      ],
      "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
      ],
    },
    "snippet": "A String", # A short part of the message text.
    "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.
    "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.
    "labelIds": [ # List of IDs of labels applied to this message.
      "A String",
    ],
    "id": "A String", # The immutable ID of the message.
  },
  "id": "A String", # The immutable ID of the draft.
}

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.

Returns:
  An object of the form:

    { # A draft email in the user's mailbox.
    "message": { # An email message. # The message content of the draft.
      "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.
      "historyId": "A String", # The ID of the last history record that modified this message.
      "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.
          "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.
          "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).
        },
        "mimeType": "A String", # The MIME type of the message part.
        "partId": "A String", # The immutable ID of the message part.
        "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.
          },
        ],
        "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
        ],
      },
      "snippet": "A String", # A short part of the message text.
      "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.
      "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.
      "labelIds": [ # List of IDs of labels applied to this message.
        "A String",
      ],
      "id": "A String", # The immutable ID of the message.
    },
    "id": "A String", # The immutable ID of the draft.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(userId, id)</code>
  <pre>Immediately and permanently deletes the specified draft. Does not simply trash it.

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 draft to delete. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(userId, id, format=None)</code>
  <pre>Gets the specified draft.

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 draft to retrieve. (required)
  format: string, The format to return the draft in.
    Allowed values
      full - 
      metadata - 
      minimal - 
      raw - 

Returns:
  An object of the form:

    { # A draft email in the user's mailbox.
    "message": { # An email message. # The message content of the draft.
      "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.
      "historyId": "A String", # The ID of the last history record that modified this message.
      "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.
          "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.
          "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).
        },
        "mimeType": "A String", # The MIME type of the message part.
        "partId": "A String", # The immutable ID of the message part.
        "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.
          },
        ],
        "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
        ],
      },
      "snippet": "A String", # A short part of the message text.
      "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.
      "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.
      "labelIds": [ # List of IDs of labels applied to this message.
        "A String",
      ],
      "id": "A String", # The immutable ID of the message.
    },
    "id": "A String", # The immutable ID of the draft.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(userId, q=None, pageToken=None, maxResults=None, includeSpamTrash=None)</code>
  <pre>Lists the drafts 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)
  q: string, Only return draft messages matching the specified query. Supports the same query format as the Gmail search box. For example, "from:someuser@example.com rfc822msgid: is:unread".
  pageToken: string, Page token to retrieve a specific page of results in the list.
  maxResults: integer, Maximum number of drafts to return.
  includeSpamTrash: boolean, Include drafts from SPAM and TRASH in the results.

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # Token to retrieve the next page of results in the list.
    "resultSizeEstimate": 42, # Estimated total number of results.
    "drafts": [ # List of drafts.
      { # A draft email in the user's mailbox.
        "message": { # An email message. # The message content of the draft.
          "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.
          "historyId": "A String", # The ID of the last history record that modified this message.
          "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.
              "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.
              "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).
            },
            "mimeType": "A String", # The MIME type of the message part.
            "partId": "A String", # The immutable ID of the message part.
            "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.
              },
            ],
            "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
            ],
          },
          "snippet": "A String", # A short part of the message text.
          "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.
          "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.
          "labelIds": [ # List of IDs of labels applied to this message.
            "A String",
          ],
          "id": "A String", # The immutable ID of the message.
        },
        "id": "A String", # The immutable ID of the draft.
      },
    ],
  }</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="send">send(userId, body=None, media_body=None, media_mime_type=None)</code>
  <pre>Sends the specified, existing draft to the recipients in the To, Cc, and Bcc headers.

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

{ # A draft email in the user's mailbox.
  "message": { # An email message. # The message content of the draft.
    "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.
    "historyId": "A String", # The ID of the last history record that modified this message.
    "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.
        "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.
        "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).
      },
      "mimeType": "A String", # The MIME type of the message part.
      "partId": "A String", # The immutable ID of the message part.
      "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.
        },
      ],
      "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
      ],
    },
    "snippet": "A String", # A short part of the message text.
    "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.
    "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.
    "labelIds": [ # List of IDs of labels applied to this message.
      "A String",
    ],
    "id": "A String", # The immutable ID of the message.
  },
  "id": "A String", # The immutable ID of the draft.
}

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.

Returns:
  An object of the form:

    { # An email 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.
    "historyId": "A String", # The ID of the last history record that modified this message.
    "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.
        "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.
        "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).
      },
      "mimeType": "A String", # The MIME type of the message part.
      "partId": "A String", # The immutable ID of the message part.
      "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.
        },
      ],
      "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
      ],
    },
    "snippet": "A String", # A short part of the message text.
    "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.
    "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.
    "labelIds": [ # List of IDs of labels applied to this message.
      "A String",
    ],
    "id": "A String", # The immutable ID of the message.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(userId, id, body=None, media_body=None, media_mime_type=None)</code>
  <pre>Replaces a draft's content.

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 draft to update. (required)
  body: object, The request body.
    The object takes the form of:

{ # A draft email in the user's mailbox.
  "message": { # An email message. # The message content of the draft.
    "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.
    "historyId": "A String", # The ID of the last history record that modified this message.
    "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.
        "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.
        "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).
      },
      "mimeType": "A String", # The MIME type of the message part.
      "partId": "A String", # The immutable ID of the message part.
      "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.
        },
      ],
      "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
      ],
    },
    "snippet": "A String", # A short part of the message text.
    "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.
    "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.
    "labelIds": [ # List of IDs of labels applied to this message.
      "A String",
    ],
    "id": "A String", # The immutable ID of the message.
  },
  "id": "A String", # The immutable ID of the draft.
}

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.

Returns:
  An object of the form:

    { # A draft email in the user's mailbox.
    "message": { # An email message. # The message content of the draft.
      "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.
      "historyId": "A String", # The ID of the last history record that modified this message.
      "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.
          "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.
          "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).
        },
        "mimeType": "A String", # The MIME type of the message part.
        "partId": "A String", # The immutable ID of the message part.
        "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.
          },
        ],
        "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
        ],
      },
      "snippet": "A String", # A short part of the message text.
      "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.
      "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.
      "labelIds": [ # List of IDs of labels applied to this message.
        "A String",
      ],
      "id": "A String", # The immutable ID of the message.
    },
    "id": "A String", # The immutable ID of the draft.
  }</pre>
</div>

</body></html>