From 8b5859319347a0da80e9d7fd4dd1a7b5dec84e52 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Mon, 6 Jul 2020 22:30:55 +0100 Subject: [PATCH] fix(3p/lieer): Work around issues in Google Mail API There is a temporary issue affecting the retrieval of discovery documents in the Google Mail API: https://issuetracker.google.com/issues/160441983 It's possible to work around this by hardcoding the document instead of retrieving it over the network, as all other API calls still work as they should. This does exactly that by generating a patch to apply to lieer, from the file checked in to the depot with this commit. This workaround should be reverted once Google has fixed the issue upstream. Change-Id: I0063d0bc67753ffa5261c2aa059c7bfd09136ba0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/945 Tested-by: BuildkiteCI Reviewed-by: isomer --- third_party/lieer/default.nix | 5 + third_party/lieer/discovery_doc.patch | 15 + third_party/lieer/gmail-api.json | 3816 +++++++++++++++++++++++++ 3 files changed, 3836 insertions(+) create mode 100644 third_party/lieer/discovery_doc.patch create mode 100644 third_party/lieer/gmail-api.json diff --git a/third_party/lieer/default.nix b/third_party/lieer/default.nix index 6dd4cecd1..0ab40f752 100644 --- a/third_party/lieer/default.nix +++ b/third_party/lieer/default.nix @@ -26,6 +26,10 @@ let export PROJECT_ID='${project}' cat ${./api_client.patch} | ${gettext}/bin/envsubst > $out ''; + discoveryPatch = runCommand "discovery_doc.patch" {} '' + export DISCOVERY_DOC='${./gmail-api.json}' + cat ${./discovery_doc.patch} | ${gettext}/bin/envsubst > $out + ''; in python3Packages.buildPythonApplication rec { name = "lieer-${version}"; version = "1.0"; @@ -39,6 +43,7 @@ in python3Packages.buildPythonApplication rec { patches = [ authPatch + discoveryPatch ./send_scope.patch ]; diff --git a/third_party/lieer/discovery_doc.patch b/third_party/lieer/discovery_doc.patch new file mode 100644 index 000000000..fd140ac6e --- /dev/null +++ b/third_party/lieer/discovery_doc.patch @@ -0,0 +1,15 @@ +diff --git a/lieer/remote.py b/lieer/remote.py +index 6e3973a..2b0b59e 100644 +--- a/lieer/remote.py ++++ b/lieer/remote.py +@@ -386,7 +386,9 @@ class Remote: + if timeout == 0: timeout = None + + self.http = self.credentials.authorize (httplib2.Http(timeout = timeout)) +- self.service = discovery.build ('gmail', 'v1', http = self.http) ++ with open('${DISCOVERY_DOC}', 'r') as file: ++ discovery_doc = file.read() ++ self.service = discovery.build_from_document(discovery_doc, http = self.http) + self.authorized = True + + def __get_credentials__ (self): diff --git a/third_party/lieer/gmail-api.json b/third_party/lieer/gmail-api.json new file mode 100644 index 000000000..4d7c13afa --- /dev/null +++ b/third_party/lieer/gmail-api.json @@ -0,0 +1,3816 @@ +{ + "auth": { + "oauth2": { + "scopes": { + "https://mail.google.com/": { + "description": "Read, compose, send, and permanently delete all your email from Gmail" + }, + "https://www.googleapis.com/auth/gmail.addons.current.action.compose": { + "description": "Manage drafts and send emails when you interact with the add-on" + }, + "https://www.googleapis.com/auth/gmail.addons.current.message.action": { + "description": "View your email messages when you interact with the add-on" + }, + "https://www.googleapis.com/auth/gmail.addons.current.message.metadata": { + "description": "View your email message metadata when the add-on is running" + }, + "https://www.googleapis.com/auth/gmail.addons.current.message.readonly": { + "description": "View your email messages when the add-on is running" + }, + "https://www.googleapis.com/auth/gmail.compose": { + "description": "Manage drafts and send emails" + }, + "https://www.googleapis.com/auth/gmail.insert": { + "description": "Insert mail into your mailbox" + }, + "https://www.googleapis.com/auth/gmail.labels": { + "description": "Manage mailbox labels" + }, + "https://www.googleapis.com/auth/gmail.metadata": { + "description": "View your email message metadata such as labels and headers, but not the email body" + }, + "https://www.googleapis.com/auth/gmail.modify": { + "description": "View and modify but not delete your email" + }, + "https://www.googleapis.com/auth/gmail.readonly": { + "description": "View your email messages and settings" + }, + "https://www.googleapis.com/auth/gmail.send": { + "description": "Send email on your behalf" + }, + "https://www.googleapis.com/auth/gmail.settings.basic": { + "description": "Manage your basic mail settings" + }, + "https://www.googleapis.com/auth/gmail.settings.sharing": { + "description": "Manage your sensitive mail settings, including who can manage your mail" + } + } + } + }, + "basePath": "", + "baseUrl": "https://www.googleapis.com/", + "batchPath": "batch/gmail/v1", + "canonicalName": "Gmail", + "description": "The Gmail API lets you view and manage Gmail mailbox data like\n threads, messages, and labels.", + "discoveryVersion": "v1", + "documentationLink": "https://developers.google.com/gmail/api/", + "icons": { + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" + }, + "id": "gmail:v1", + "kind": "discovery#restDescription", + "mtlsRootUrl": "https://www.mtls.googleapis.com/", + "name": "gmail", + "ownerDomain": "google.com", + "ownerName": "Google", + "parameters": { + "$.xgafv": { + "description": "V1 error format.", + "enum": [ + "1", + "2" + ], + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "type": "string" + }, + "access_token": { + "description": "OAuth access token.", + "location": "query", + "type": "string" + }, + "alt": { + "default": "json", + "description": "Data format for response.", + "enum": [ + "json", + "media", + "proto" + ], + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "type": "string" + }, + "callback": { + "description": "JSONP", + "location": "query", + "type": "string" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "location": "query", + "type": "string" + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "location": "query", + "type": "string" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "location": "query", + "type": "string" + }, + "prettyPrint": { + "default": "true", + "description": "Returns response with indentations and line breaks.", + "location": "query", + "type": "boolean" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "location": "query", + "type": "string" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "location": "query", + "type": "string" + }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "location": "query", + "type": "string" + } + }, + "protocol": "rest", + "resources": { + "users": { + "methods": { + "getProfile": { + "description": "Gets the current user's Gmail profile.", + "flatPath": "gmail/v1/users/{userId}/profile", + "httpMethod": "GET", + "id": "gmail.users.getProfile", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/profile", + "response": { + "$ref": "Profile" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.compose", + "https://www.googleapis.com/auth/gmail.metadata", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly" + ] + }, + "stop": { + "description": "Stop receiving push notifications for the given user mailbox.", + "flatPath": "gmail/v1/users/{userId}/stop", + "httpMethod": "POST", + "id": "gmail.users.stop", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/stop", + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.metadata", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly" + ] + }, + "watch": { + "description": "Set up or update a push notification watch on the given user mailbox.", + "flatPath": "gmail/v1/users/{userId}/watch", + "httpMethod": "POST", + "id": "gmail.users.watch", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/watch", + "request": { + "$ref": "WatchRequest" + }, + "response": { + "$ref": "WatchResponse" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.metadata", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly" + ] + } + }, + "resources": { + "drafts": { + "methods": { + "create": { + "description": "Creates a new draft with the \u003ccode\u003eDRAFT\u003c/code\u003e label.", + "flatPath": "gmail/v1/users/{userId}/drafts", + "httpMethod": "POST", + "id": "gmail.users.drafts.create", + "mediaUpload": { + "accept": [ + "message/*" + ], + "maxSize": "36700160", + "protocols": { + "resumable": { + "multipart": true, + "path": "/resumable/upload/gmail/v1/users/{userId}/drafts" + }, + "simple": { + "multipart": true, + "path": "/upload/gmail/v1/users/{userId}/drafts" + } + } + }, + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/drafts", + "request": { + "$ref": "Draft" + }, + "response": { + "$ref": "Draft" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.addons.current.action.compose", + "https://www.googleapis.com/auth/gmail.compose", + "https://www.googleapis.com/auth/gmail.modify" + ], + "supportsMediaUpload": true + }, + "delete": { + "description": "Immediately and permanently deletes the specified draft.\nDoes not simply trash it.", + "flatPath": "gmail/v1/users/{userId}/drafts/{id}", + "httpMethod": "DELETE", + "id": "gmail.users.drafts.delete", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the draft to delete.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/drafts/{id}", + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.addons.current.action.compose", + "https://www.googleapis.com/auth/gmail.compose", + "https://www.googleapis.com/auth/gmail.modify" + ] + }, + "get": { + "description": "Gets the specified draft.", + "flatPath": "gmail/v1/users/{userId}/drafts/{id}", + "httpMethod": "GET", + "id": "gmail.users.drafts.get", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "format": { + "default": "full", + "description": "The format to return the draft in.", + "enum": [ + "minimal", + "full", + "raw", + "metadata" + ], + "location": "query", + "type": "string" + }, + "id": { + "description": "The ID of the draft to retrieve.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/drafts/{id}", + "response": { + "$ref": "Draft" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.compose", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly" + ] + }, + "list": { + "description": "Lists the drafts in the user's mailbox.", + "flatPath": "gmail/v1/users/{userId}/drafts", + "httpMethod": "GET", + "id": "gmail.users.drafts.list", + "parameterOrder": [ + "userId" + ], + "parameters": { + "includeSpamTrash": { + "default": "false", + "description": "Include drafts from \u003ccode\u003eSPAM\u003c/code\u003e and \u003ccode\u003eTRASH\u003c/code\u003e\nin the results.", + "location": "query", + "type": "boolean" + }, + "maxResults": { + "default": "100", + "description": "Maximum number of drafts to return.", + "format": "uint32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "Page token to retrieve a specific page of results in the list.", + "location": "query", + "type": "string" + }, + "q": { + "description": "Only return draft messages matching the specified query. Supports the same\nquery format as the Gmail search box. For example,\n\u003ccode\u003e\"from:someuser@example.com rfc822msgid:\u003csomemsgid@example.com\u003e\nis:unread\"\u003c/code\u003e.", + "location": "query", + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/drafts", + "response": { + "$ref": "ListDraftsResponse" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.compose", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly" + ] + }, + "send": { + "description": "Sends the specified, existing draft to the recipients in the\n\u003ccode\u003eTo\u003c/code\u003e, \u003ccode\u003eCc\u003c/code\u003e, and \u003ccode\u003eBcc\u003c/code\u003e headers.", + "flatPath": "gmail/v1/users/{userId}/drafts/send", + "httpMethod": "POST", + "id": "gmail.users.drafts.send", + "mediaUpload": { + "accept": [ + "message/*" + ], + "maxSize": "36700160", + "protocols": { + "resumable": { + "multipart": true, + "path": "/resumable/upload/gmail/v1/users/{userId}/drafts/send" + }, + "simple": { + "multipart": true, + "path": "/upload/gmail/v1/users/{userId}/drafts/send" + } + } + }, + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/drafts/send", + "request": { + "$ref": "Draft" + }, + "response": { + "$ref": "Message" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.addons.current.action.compose", + "https://www.googleapis.com/auth/gmail.compose", + "https://www.googleapis.com/auth/gmail.modify" + ], + "supportsMediaUpload": true + }, + "update": { + "description": "Replaces a draft's content.", + "flatPath": "gmail/v1/users/{userId}/drafts/{id}", + "httpMethod": "PUT", + "id": "gmail.users.drafts.update", + "mediaUpload": { + "accept": [ + "message/*" + ], + "maxSize": "36700160", + "protocols": { + "resumable": { + "multipart": true, + "path": "/resumable/upload/gmail/v1/users/{userId}/drafts/{id}" + }, + "simple": { + "multipart": true, + "path": "/upload/gmail/v1/users/{userId}/drafts/{id}" + } + } + }, + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the draft to update.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/drafts/{id}", + "request": { + "$ref": "Draft" + }, + "response": { + "$ref": "Draft" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.addons.current.action.compose", + "https://www.googleapis.com/auth/gmail.compose", + "https://www.googleapis.com/auth/gmail.modify" + ], + "supportsMediaUpload": true + } + } + }, + "history": { + "methods": { + "list": { + "description": "Lists the history of all changes to the given mailbox. History results are\nreturned in chronological order (increasing \u003ccode\u003ehistoryId\u003c/code\u003e).", + "flatPath": "gmail/v1/users/{userId}/history", + "httpMethod": "GET", + "id": "gmail.users.history.list", + "parameterOrder": [ + "userId" + ], + "parameters": { + "historyTypes": { + "description": "History types to be returned by the function", + "enum": [ + "messageAdded", + "messageDeleted", + "labelAdded", + "labelRemoved" + ], + "location": "query", + "repeated": true, + "type": "string" + }, + "labelId": { + "description": "Only return messages with a label matching the ID.", + "location": "query", + "type": "string" + }, + "maxResults": { + "default": "100", + "description": "The maximum number of history records to return.", + "format": "uint32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "Page token to retrieve a specific page of results in the list.", + "location": "query", + "type": "string" + }, + "startHistoryId": { + "description": "Required. Returns history records after the specified\n\u003ccode\u003estartHistoryId\u003c/code\u003e. The supplied \u003ccode\u003estartHistoryId\u003c/code\u003e\nshould be obtained from the \u003ccode\u003ehistoryId\u003c/code\u003e of a message, thread, or\nprevious \u003ccode\u003elist\u003c/code\u003e response. History IDs increase\nchronologically but are not contiguous with random gaps in between valid\nIDs. Supplying an invalid or out of date \u003ccode\u003estartHistoryId\u003c/code\u003e\ntypically returns an \u003ccode\u003eHTTP 404\u003c/code\u003e error code. A\n\u003ccode\u003ehistoryId\u003c/code\u003e is typically valid for at least a week, but in some\nrare circumstances may be valid for only a few hours. If you receive an\n\u003ccode\u003eHTTP 404\u003c/code\u003e error response, your application should perform a\nfull sync. If you receive no \u003ccode\u003enextPageToken\u003c/code\u003e in the response,\nthere are no updates to retrieve and you can store the returned\n\u003ccode\u003ehistoryId\u003c/code\u003e for a future request.", + "format": "uint64", + "location": "query", + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/history", + "response": { + "$ref": "ListHistoryResponse" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.metadata", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly" + ] + } + } + }, + "labels": { + "methods": { + "create": { + "description": "Creates a new label.", + "flatPath": "gmail/v1/users/{userId}/labels", + "httpMethod": "POST", + "id": "gmail.users.labels.create", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/labels", + "request": { + "$ref": "Label" + }, + "response": { + "$ref": "Label" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.labels", + "https://www.googleapis.com/auth/gmail.modify" + ] + }, + "delete": { + "description": "Immediately and permanently deletes the specified label and removes it from\nany messages and threads that it is applied to.", + "flatPath": "gmail/v1/users/{userId}/labels/{id}", + "httpMethod": "DELETE", + "id": "gmail.users.labels.delete", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the label to delete.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/labels/{id}", + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.labels", + "https://www.googleapis.com/auth/gmail.modify" + ] + }, + "get": { + "description": "Gets the specified label.", + "flatPath": "gmail/v1/users/{userId}/labels/{id}", + "httpMethod": "GET", + "id": "gmail.users.labels.get", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the label to retrieve.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/labels/{id}", + "response": { + "$ref": "Label" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.labels", + "https://www.googleapis.com/auth/gmail.metadata", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly" + ] + }, + "list": { + "description": "Lists all labels in the user's mailbox.", + "flatPath": "gmail/v1/users/{userId}/labels", + "httpMethod": "GET", + "id": "gmail.users.labels.list", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/labels", + "response": { + "$ref": "ListLabelsResponse" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.labels", + "https://www.googleapis.com/auth/gmail.metadata", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly" + ] + }, + "patch": { + "description": "Patch the specified label.", + "flatPath": "gmail/v1/users/{userId}/labels/{id}", + "httpMethod": "PATCH", + "id": "gmail.users.labels.patch", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the label to update.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/labels/{id}", + "request": { + "$ref": "Label" + }, + "response": { + "$ref": "Label" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.labels", + "https://www.googleapis.com/auth/gmail.modify" + ] + }, + "update": { + "description": "Updates the specified label.", + "flatPath": "gmail/v1/users/{userId}/labels/{id}", + "httpMethod": "PUT", + "id": "gmail.users.labels.update", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the label to update.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/labels/{id}", + "request": { + "$ref": "Label" + }, + "response": { + "$ref": "Label" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.labels", + "https://www.googleapis.com/auth/gmail.modify" + ] + } + } + }, + "messages": { + "methods": { + "batchDelete": { + "description": "Deletes many messages by message ID. Provides no guarantees that messages\nwere not already deleted or even existed at all.", + "flatPath": "gmail/v1/users/{userId}/messages/batchDelete", + "httpMethod": "POST", + "id": "gmail.users.messages.batchDelete", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/messages/batchDelete", + "request": { + "$ref": "BatchDeleteMessagesRequest" + }, + "scopes": [ + "https://mail.google.com/" + ] + }, + "batchModify": { + "description": "Modifies the labels on the specified messages.", + "flatPath": "gmail/v1/users/{userId}/messages/batchModify", + "httpMethod": "POST", + "id": "gmail.users.messages.batchModify", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/messages/batchModify", + "request": { + "$ref": "BatchModifyMessagesRequest" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify" + ] + }, + "delete": { + "description": "Immediately and permanently deletes the specified message. This operation\ncannot be undone. Prefer \u003ccode\u003emessages.trash\u003c/code\u003e instead.", + "flatPath": "gmail/v1/users/{userId}/messages/{id}", + "httpMethod": "DELETE", + "id": "gmail.users.messages.delete", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the message to delete.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/messages/{id}", + "scopes": [ + "https://mail.google.com/" + ] + }, + "get": { + "description": "Gets the specified message.", + "flatPath": "gmail/v1/users/{userId}/messages/{id}", + "httpMethod": "GET", + "id": "gmail.users.messages.get", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "format": { + "default": "full", + "description": "The format to return the message in.", + "enum": [ + "minimal", + "full", + "raw", + "metadata" + ], + "location": "query", + "type": "string" + }, + "id": { + "description": "The ID of the message to retrieve.", + "location": "path", + "required": true, + "type": "string" + }, + "metadataHeaders": { + "description": "When given and format is METADATA, only include headers specified.", + "location": "query", + "repeated": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/messages/{id}", + "response": { + "$ref": "Message" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.addons.current.message.action", + "https://www.googleapis.com/auth/gmail.addons.current.message.metadata", + "https://www.googleapis.com/auth/gmail.addons.current.message.readonly", + "https://www.googleapis.com/auth/gmail.metadata", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly" + ] + }, + "import": { + "description": "Imports a message into only this user's mailbox, with standard\nemail delivery scanning and classification similar to receiving via SMTP.\nDoes not send a message.", + "flatPath": "gmail/v1/users/{userId}/messages/import", + "httpMethod": "POST", + "id": "gmail.users.messages.import", + "mediaUpload": { + "accept": [ + "message/*" + ], + "maxSize": "52428800", + "protocols": { + "resumable": { + "multipart": true, + "path": "/resumable/upload/gmail/v1/users/{userId}/messages/import" + }, + "simple": { + "multipart": true, + "path": "/upload/gmail/v1/users/{userId}/messages/import" + } + } + }, + "parameterOrder": [ + "userId" + ], + "parameters": { + "deleted": { + "default": "false", + "description": "Mark the email as permanently deleted (not TRASH) and\nonly visible in\n\u003ca href=\"http://support.google.com/vault/\"\u003eGoogle Vault\u003c/a\u003e to\na Vault administrator. Only used for G Suite accounts.", + "location": "query", + "type": "boolean" + }, + "internalDateSource": { + "default": "dateHeader", + "description": "Source for Gmail's internal date of the message.", + "enum": [ + "receivedTime", + "dateHeader" + ], + "location": "query", + "type": "string" + }, + "neverMarkSpam": { + "default": "false", + "description": "Ignore the Gmail spam classifier decision and never mark\nthis email as SPAM in the mailbox.", + "location": "query", + "type": "boolean" + }, + "processForCalendar": { + "default": "false", + "description": "Process calendar invites in the email and add any extracted\nmeetings to the Google Calendar for this user.", + "location": "query", + "type": "boolean" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/messages/import", + "request": { + "$ref": "Message" + }, + "response": { + "$ref": "Message" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.insert", + "https://www.googleapis.com/auth/gmail.modify" + ], + "supportsMediaUpload": true + }, + "insert": { + "description": "Directly inserts a message into only this user's mailbox similar to\n\u003ccode\u003eIMAP APPEND\u003c/code\u003e, bypassing most scanning and classification.\nDoes not send a message.", + "flatPath": "gmail/v1/users/{userId}/messages", + "httpMethod": "POST", + "id": "gmail.users.messages.insert", + "mediaUpload": { + "accept": [ + "message/*" + ], + "maxSize": "52428800", + "protocols": { + "resumable": { + "multipart": true, + "path": "/resumable/upload/gmail/v1/users/{userId}/messages" + }, + "simple": { + "multipart": true, + "path": "/upload/gmail/v1/users/{userId}/messages" + } + } + }, + "parameterOrder": [ + "userId" + ], + "parameters": { + "deleted": { + "default": "false", + "description": "Mark the email as permanently deleted (not TRASH) and\nonly visible in\n\u003ca href=\"http://support.google.com/vault/\"\u003eGoogle Vault\u003c/a\u003e to\na Vault administrator. Only used for G Suite accounts.", + "location": "query", + "type": "boolean" + }, + "internalDateSource": { + "default": "receivedTime", + "description": "Source for Gmail's internal date of the message.", + "enum": [ + "receivedTime", + "dateHeader" + ], + "location": "query", + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/messages", + "request": { + "$ref": "Message" + }, + "response": { + "$ref": "Message" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.insert", + "https://www.googleapis.com/auth/gmail.modify" + ], + "supportsMediaUpload": true + }, + "list": { + "description": "Lists the messages in the user's mailbox.", + "flatPath": "gmail/v1/users/{userId}/messages", + "httpMethod": "GET", + "id": "gmail.users.messages.list", + "parameterOrder": [ + "userId" + ], + "parameters": { + "includeSpamTrash": { + "default": "false", + "description": "Include messages from \u003ccode\u003eSPAM\u003c/code\u003e and \u003ccode\u003eTRASH\u003c/code\u003e\nin the results.", + "location": "query", + "type": "boolean" + }, + "labelIds": { + "description": "Only return messages with labels that match all of the specified label IDs.", + "location": "query", + "repeated": true, + "type": "string" + }, + "maxResults": { + "default": "100", + "description": "Maximum number of messages to return.", + "format": "uint32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "Page token to retrieve a specific page of results in the list.", + "location": "query", + "type": "string" + }, + "q": { + "description": "Only return messages matching the specified query. Supports the same\nquery format as the Gmail search box. For example,\n\u003ccode\u003e\"from:someuser@example.com rfc822msgid:\u0026lt;somemsgid@example.com\u0026gt;\nis:unread\"\u003c/code\u003e. Parameter cannot be used when accessing the api\nusing the gmail.metadata scope.", + "location": "query", + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/messages", + "response": { + "$ref": "ListMessagesResponse" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.metadata", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly" + ] + }, + "modify": { + "description": "Modifies the labels on the specified message.", + "flatPath": "gmail/v1/users/{userId}/messages/{id}/modify", + "httpMethod": "POST", + "id": "gmail.users.messages.modify", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the message to modify.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/messages/{id}/modify", + "request": { + "$ref": "ModifyMessageRequest" + }, + "response": { + "$ref": "Message" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify" + ] + }, + "send": { + "description": "Sends the specified message to the recipients in the\n\u003ccode\u003eTo\u003c/code\u003e, \u003ccode\u003eCc\u003c/code\u003e, and \u003ccode\u003eBcc\u003c/code\u003e headers.", + "flatPath": "gmail/v1/users/{userId}/messages/send", + "httpMethod": "POST", + "id": "gmail.users.messages.send", + "mediaUpload": { + "accept": [ + "message/*" + ], + "maxSize": "36700160", + "protocols": { + "resumable": { + "multipart": true, + "path": "/resumable/upload/gmail/v1/users/{userId}/messages/send" + }, + "simple": { + "multipart": true, + "path": "/upload/gmail/v1/users/{userId}/messages/send" + } + } + }, + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/messages/send", + "request": { + "$ref": "Message" + }, + "response": { + "$ref": "Message" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.addons.current.action.compose", + "https://www.googleapis.com/auth/gmail.compose", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.send" + ], + "supportsMediaUpload": true + }, + "trash": { + "description": "Moves the specified message to the trash.", + "flatPath": "gmail/v1/users/{userId}/messages/{id}/trash", + "httpMethod": "POST", + "id": "gmail.users.messages.trash", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the message to Trash.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/messages/{id}/trash", + "response": { + "$ref": "Message" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify" + ] + }, + "untrash": { + "description": "Removes the specified message from the trash.", + "flatPath": "gmail/v1/users/{userId}/messages/{id}/untrash", + "httpMethod": "POST", + "id": "gmail.users.messages.untrash", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the message to remove from Trash.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/messages/{id}/untrash", + "response": { + "$ref": "Message" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify" + ] + } + }, + "resources": { + "attachments": { + "methods": { + "get": { + "description": "Gets the specified message attachment.", + "flatPath": "gmail/v1/users/{userId}/messages/{messageId}/attachments/{id}", + "httpMethod": "GET", + "id": "gmail.users.messages.attachments.get", + "parameterOrder": [ + "userId", + "messageId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the attachment.", + "location": "path", + "required": true, + "type": "string" + }, + "messageId": { + "description": "The ID of the message containing the attachment.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/messages/{messageId}/attachments/{id}", + "response": { + "$ref": "MessagePartBody" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.addons.current.message.action", + "https://www.googleapis.com/auth/gmail.addons.current.message.readonly", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly" + ] + } + } + } + } + }, + "settings": { + "methods": { + "getAutoForwarding": { + "description": "Gets the auto-forwarding setting for the specified account.", + "flatPath": "gmail/v1/users/{userId}/settings/autoForwarding", + "httpMethod": "GET", + "id": "gmail.users.settings.getAutoForwarding", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/autoForwarding", + "response": { + "$ref": "AutoForwarding" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "getImap": { + "description": "Gets IMAP settings.", + "flatPath": "gmail/v1/users/{userId}/settings/imap", + "httpMethod": "GET", + "id": "gmail.users.settings.getImap", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/imap", + "response": { + "$ref": "ImapSettings" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "getLanguage": { + "description": "Gets language settings.", + "flatPath": "gmail/v1/users/{userId}/settings/language", + "httpMethod": "GET", + "id": "gmail.users.settings.getLanguage", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/language", + "response": { + "$ref": "LanguageSettings" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "getPop": { + "description": "Gets POP settings.", + "flatPath": "gmail/v1/users/{userId}/settings/pop", + "httpMethod": "GET", + "id": "gmail.users.settings.getPop", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/pop", + "response": { + "$ref": "PopSettings" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "getVacation": { + "description": "Gets vacation responder settings.", + "flatPath": "gmail/v1/users/{userId}/settings/vacation", + "httpMethod": "GET", + "id": "gmail.users.settings.getVacation", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/vacation", + "response": { + "$ref": "VacationSettings" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "updateAutoForwarding": { + "description": "Updates the auto-forwarding setting for the specified account. A verified\nforwarding address must be specified when auto-forwarding is enabled.\n\nThis method is only available to service account clients that have been\ndelegated domain-wide authority.", + "flatPath": "gmail/v1/users/{userId}/settings/autoForwarding", + "httpMethod": "PUT", + "id": "gmail.users.settings.updateAutoForwarding", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/autoForwarding", + "request": { + "$ref": "AutoForwarding" + }, + "response": { + "$ref": "AutoForwarding" + }, + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + }, + "updateImap": { + "description": "Updates IMAP settings.", + "flatPath": "gmail/v1/users/{userId}/settings/imap", + "httpMethod": "PUT", + "id": "gmail.users.settings.updateImap", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/imap", + "request": { + "$ref": "ImapSettings" + }, + "response": { + "$ref": "ImapSettings" + }, + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "updateLanguage": { + "description": "Updates language settings.\n\nIf successful, the return object contains the \u003ccode\u003edisplayLanguage\u003c/code\u003e\nthat was saved for the user, which may differ from the value passed into\nthe request. This is because the requested \u003ccode\u003edisplayLanguage\u003c/code\u003e may\nnot be directly supported by Gmail but have a close variant that is, and so\nthe variant may be chosen and saved instead.", + "flatPath": "gmail/v1/users/{userId}/settings/language", + "httpMethod": "PUT", + "id": "gmail.users.settings.updateLanguage", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/language", + "request": { + "$ref": "LanguageSettings" + }, + "response": { + "$ref": "LanguageSettings" + }, + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "updatePop": { + "description": "Updates POP settings.", + "flatPath": "gmail/v1/users/{userId}/settings/pop", + "httpMethod": "PUT", + "id": "gmail.users.settings.updatePop", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/pop", + "request": { + "$ref": "PopSettings" + }, + "response": { + "$ref": "PopSettings" + }, + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "updateVacation": { + "description": "Updates vacation responder settings.", + "flatPath": "gmail/v1/users/{userId}/settings/vacation", + "httpMethod": "PUT", + "id": "gmail.users.settings.updateVacation", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/vacation", + "request": { + "$ref": "VacationSettings" + }, + "response": { + "$ref": "VacationSettings" + }, + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + } + }, + "resources": { + "delegates": { + "methods": { + "create": { + "description": "Adds a delegate with its verification status set directly to\n\u003ccode\u003eaccepted\u003c/code\u003e, without sending any verification email. The\ndelegate user must be a member of the same G Suite organization as the\ndelegator user.\n\nGmail imposes limitations on the number of delegates and delegators each\nuser in a G Suite organization can have. These limits depend on your\norganization, but in general each user can have up to 25 delegates and\nup to 10 delegators.\n\nNote that a delegate user must be referred to by their primary email\naddress, and not an email alias.\n\nAlso note that when a new delegate is created, there may be up to a one\nminute delay before the new delegate is available for use.\n\nThis method is only available to service account clients that have been\ndelegated domain-wide authority.", + "flatPath": "gmail/v1/users/{userId}/settings/delegates", + "httpMethod": "POST", + "id": "gmail.users.settings.delegates.create", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/delegates", + "request": { + "$ref": "Delegate" + }, + "response": { + "$ref": "Delegate" + }, + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + }, + "delete": { + "description": "Removes the specified delegate (which can be of any verification status),\nand revokes any verification that may have been required for using it.\n\nNote that a delegate user must be referred to by their primary email\naddress, and not an email alias.\n\nThis method is only available to service account clients that have been\ndelegated domain-wide authority.", + "flatPath": "gmail/v1/users/{userId}/settings/delegates/{delegateEmail}", + "httpMethod": "DELETE", + "id": "gmail.users.settings.delegates.delete", + "parameterOrder": [ + "userId", + "delegateEmail" + ], + "parameters": { + "delegateEmail": { + "description": "The email address of the user to be removed as a delegate.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/delegates/{delegateEmail}", + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + }, + "get": { + "description": "Gets the specified delegate.\n\nNote that a delegate user must be referred to by their primary email\naddress, and not an email alias.\n\nThis method is only available to service account clients that have been\ndelegated domain-wide authority.", + "flatPath": "gmail/v1/users/{userId}/settings/delegates/{delegateEmail}", + "httpMethod": "GET", + "id": "gmail.users.settings.delegates.get", + "parameterOrder": [ + "userId", + "delegateEmail" + ], + "parameters": { + "delegateEmail": { + "description": "The email address of the user whose delegate relationship is to be\nretrieved.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/delegates/{delegateEmail}", + "response": { + "$ref": "Delegate" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "list": { + "description": "Lists the delegates for the specified account.\n\nThis method is only available to service account clients that have been\ndelegated domain-wide authority.", + "flatPath": "gmail/v1/users/{userId}/settings/delegates", + "httpMethod": "GET", + "id": "gmail.users.settings.delegates.list", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/delegates", + "response": { + "$ref": "ListDelegatesResponse" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + } + } + }, + "filters": { + "methods": { + "create": { + "description": "Creates a filter.", + "flatPath": "gmail/v1/users/{userId}/settings/filters", + "httpMethod": "POST", + "id": "gmail.users.settings.filters.create", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/filters", + "request": { + "$ref": "Filter" + }, + "response": { + "$ref": "Filter" + }, + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "delete": { + "description": "Deletes a filter.", + "flatPath": "gmail/v1/users/{userId}/settings/filters/{id}", + "httpMethod": "DELETE", + "id": "gmail.users.settings.filters.delete", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the filter to be deleted.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/filters/{id}", + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "get": { + "description": "Gets a filter.", + "flatPath": "gmail/v1/users/{userId}/settings/filters/{id}", + "httpMethod": "GET", + "id": "gmail.users.settings.filters.get", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the filter to be fetched.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/filters/{id}", + "response": { + "$ref": "Filter" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "list": { + "description": "Lists the message filters of a Gmail user.", + "flatPath": "gmail/v1/users/{userId}/settings/filters", + "httpMethod": "GET", + "id": "gmail.users.settings.filters.list", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/filters", + "response": { + "$ref": "ListFiltersResponse" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + } + } + }, + "forwardingAddresses": { + "methods": { + "create": { + "description": "Creates a forwarding address. If ownership verification is required, a\nmessage will be sent to the recipient and the resource's verification\nstatus will be set to \u003ccode\u003epending\u003c/code\u003e; otherwise, the resource will be\ncreated with verification status set to \u003ccode\u003eaccepted\u003c/code\u003e.\n\nThis method is only available to service account clients that have been\ndelegated domain-wide authority.", + "flatPath": "gmail/v1/users/{userId}/settings/forwardingAddresses", + "httpMethod": "POST", + "id": "gmail.users.settings.forwardingAddresses.create", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/forwardingAddresses", + "request": { + "$ref": "ForwardingAddress" + }, + "response": { + "$ref": "ForwardingAddress" + }, + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + }, + "delete": { + "description": "Deletes the specified forwarding address and revokes any verification that\nmay have been required.\n\nThis method is only available to service account clients that have been\ndelegated domain-wide authority.", + "flatPath": "gmail/v1/users/{userId}/settings/forwardingAddresses/{forwardingEmail}", + "httpMethod": "DELETE", + "id": "gmail.users.settings.forwardingAddresses.delete", + "parameterOrder": [ + "userId", + "forwardingEmail" + ], + "parameters": { + "forwardingEmail": { + "description": "The forwarding address to be deleted.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/forwardingAddresses/{forwardingEmail}", + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + }, + "get": { + "description": "Gets the specified forwarding address.", + "flatPath": "gmail/v1/users/{userId}/settings/forwardingAddresses/{forwardingEmail}", + "httpMethod": "GET", + "id": "gmail.users.settings.forwardingAddresses.get", + "parameterOrder": [ + "userId", + "forwardingEmail" + ], + "parameters": { + "forwardingEmail": { + "description": "The forwarding address to be retrieved.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/forwardingAddresses/{forwardingEmail}", + "response": { + "$ref": "ForwardingAddress" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "list": { + "description": "Lists the forwarding addresses for the specified account.", + "flatPath": "gmail/v1/users/{userId}/settings/forwardingAddresses", + "httpMethod": "GET", + "id": "gmail.users.settings.forwardingAddresses.list", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/forwardingAddresses", + "response": { + "$ref": "ListForwardingAddressesResponse" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + } + } + }, + "sendAs": { + "methods": { + "create": { + "description": "Creates a custom \"from\" send-as alias. If an SMTP MSA is specified, Gmail\nwill attempt to connect to the SMTP service to validate the configuration\nbefore creating the alias. If ownership verification is required for the\nalias, a message will be sent to the email address and the resource's\nverification status will be set to \u003ccode\u003epending\u003c/code\u003e; otherwise, the\nresource will be created with verification status set to\n\u003ccode\u003eaccepted\u003c/code\u003e. If a signature is provided, Gmail will sanitize the\nHTML before saving it with the alias.\n\nThis method is only available to service account clients that have been\ndelegated domain-wide authority.", + "flatPath": "gmail/v1/users/{userId}/settings/sendAs", + "httpMethod": "POST", + "id": "gmail.users.settings.sendAs.create", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/sendAs", + "request": { + "$ref": "SendAs" + }, + "response": { + "$ref": "SendAs" + }, + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + }, + "delete": { + "description": "Deletes the specified send-as alias. Revokes any verification that may\nhave been required for using it.\n\nThis method is only available to service account clients that have been\ndelegated domain-wide authority.", + "flatPath": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}", + "httpMethod": "DELETE", + "id": "gmail.users.settings.sendAs.delete", + "parameterOrder": [ + "userId", + "sendAsEmail" + ], + "parameters": { + "sendAsEmail": { + "description": "The send-as alias to be deleted.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}", + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + }, + "get": { + "description": "Gets the specified send-as alias. Fails with an HTTP 404 error if the\nspecified address is not a member of the collection.", + "flatPath": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}", + "httpMethod": "GET", + "id": "gmail.users.settings.sendAs.get", + "parameterOrder": [ + "userId", + "sendAsEmail" + ], + "parameters": { + "sendAsEmail": { + "description": "The send-as alias to be retrieved.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}", + "response": { + "$ref": "SendAs" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "list": { + "description": "Lists the send-as aliases for the specified account. The result includes\nthe primary send-as address associated with the account as well as any\ncustom \"from\" aliases.", + "flatPath": "gmail/v1/users/{userId}/settings/sendAs", + "httpMethod": "GET", + "id": "gmail.users.settings.sendAs.list", + "parameterOrder": [ + "userId" + ], + "parameters": { + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/sendAs", + "response": { + "$ref": "ListSendAsResponse" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic" + ] + }, + "patch": { + "description": "Patch the specified send-as alias.", + "flatPath": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}", + "httpMethod": "PATCH", + "id": "gmail.users.settings.sendAs.patch", + "parameterOrder": [ + "userId", + "sendAsEmail" + ], + "parameters": { + "sendAsEmail": { + "description": "The send-as alias to be updated.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}", + "request": { + "$ref": "SendAs" + }, + "response": { + "$ref": "SendAs" + }, + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.basic", + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + }, + "update": { + "description": "Updates a send-as alias. If a signature is provided, Gmail will sanitize\nthe HTML before saving it with the alias.\n\nAddresses other than the primary address for the account can only be\nupdated by service account clients that have been delegated domain-wide\nauthority.", + "flatPath": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}", + "httpMethod": "PUT", + "id": "gmail.users.settings.sendAs.update", + "parameterOrder": [ + "userId", + "sendAsEmail" + ], + "parameters": { + "sendAsEmail": { + "description": "The send-as alias to be updated.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}", + "request": { + "$ref": "SendAs" + }, + "response": { + "$ref": "SendAs" + }, + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.basic", + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + }, + "verify": { + "description": "Sends a verification email to the specified send-as alias address.\nThe verification status must be \u003ccode\u003epending\u003c/code\u003e.\n\nThis method is only available to service account clients that have been\ndelegated domain-wide authority.", + "flatPath": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/verify", + "httpMethod": "POST", + "id": "gmail.users.settings.sendAs.verify", + "parameterOrder": [ + "userId", + "sendAsEmail" + ], + "parameters": { + "sendAsEmail": { + "description": "The send-as alias to be verified.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "User's email address. The special value \"me\"\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/verify", + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + } + }, + "resources": { + "smimeInfo": { + "methods": { + "delete": { + "description": "Deletes the specified S/MIME config for the specified send-as alias.", + "flatPath": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo/{id}", + "httpMethod": "DELETE", + "id": "gmail.users.settings.sendAs.smimeInfo.delete", + "parameterOrder": [ + "userId", + "sendAsEmail", + "id" + ], + "parameters": { + "id": { + "description": "The immutable ID for the SmimeInfo.", + "location": "path", + "required": true, + "type": "string" + }, + "sendAsEmail": { + "description": "The email address that appears in the \"From:\" header for mail sent using\nthis alias.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo/{id}", + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.basic", + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + }, + "get": { + "description": "Gets the specified S/MIME config for the specified send-as alias.", + "flatPath": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo/{id}", + "httpMethod": "GET", + "id": "gmail.users.settings.sendAs.smimeInfo.get", + "parameterOrder": [ + "userId", + "sendAsEmail", + "id" + ], + "parameters": { + "id": { + "description": "The immutable ID for the SmimeInfo.", + "location": "path", + "required": true, + "type": "string" + }, + "sendAsEmail": { + "description": "The email address that appears in the \"From:\" header for mail sent using\nthis alias.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo/{id}", + "response": { + "$ref": "SmimeInfo" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic", + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + }, + "insert": { + "description": "Insert (upload) the given S/MIME config for the specified send-as alias.\nNote that pkcs12 format is required for the key.", + "flatPath": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo", + "httpMethod": "POST", + "id": "gmail.users.settings.sendAs.smimeInfo.insert", + "parameterOrder": [ + "userId", + "sendAsEmail" + ], + "parameters": { + "sendAsEmail": { + "description": "The email address that appears in the \"From:\" header for mail sent using\nthis alias.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo", + "request": { + "$ref": "SmimeInfo" + }, + "response": { + "$ref": "SmimeInfo" + }, + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.basic", + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + }, + "list": { + "description": "Lists S/MIME configs for the specified send-as alias.", + "flatPath": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo", + "httpMethod": "GET", + "id": "gmail.users.settings.sendAs.smimeInfo.list", + "parameterOrder": [ + "userId", + "sendAsEmail" + ], + "parameters": { + "sendAsEmail": { + "description": "The email address that appears in the \"From:\" header for mail sent using\nthis alias.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo", + "response": { + "$ref": "ListSmimeInfoResponse" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly", + "https://www.googleapis.com/auth/gmail.settings.basic", + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + }, + "setDefault": { + "description": "Sets the default S/MIME config for the specified send-as alias.", + "flatPath": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo/{id}/setDefault", + "httpMethod": "POST", + "id": "gmail.users.settings.sendAs.smimeInfo.setDefault", + "parameterOrder": [ + "userId", + "sendAsEmail", + "id" + ], + "parameters": { + "id": { + "description": "The immutable ID for the SmimeInfo.", + "location": "path", + "required": true, + "type": "string" + }, + "sendAsEmail": { + "description": "The email address that appears in the \"From:\" header for mail sent using\nthis alias.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo/{id}/setDefault", + "scopes": [ + "https://www.googleapis.com/auth/gmail.settings.basic", + "https://www.googleapis.com/auth/gmail.settings.sharing" + ] + } + } + } + } + } + } + }, + "threads": { + "methods": { + "delete": { + "description": "Immediately and permanently deletes the specified thread. This operation\ncannot be undone. Prefer \u003ccode\u003ethreads.trash\u003c/code\u003e instead.", + "flatPath": "gmail/v1/users/{userId}/threads/{id}", + "httpMethod": "DELETE", + "id": "gmail.users.threads.delete", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "ID of the Thread to delete.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/threads/{id}", + "scopes": [ + "https://mail.google.com/" + ] + }, + "get": { + "description": "Gets the specified thread.", + "flatPath": "gmail/v1/users/{userId}/threads/{id}", + "httpMethod": "GET", + "id": "gmail.users.threads.get", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "format": { + "default": "full", + "description": "The format to return the messages in.", + "enum": [ + "full", + "metadata", + "minimal" + ], + "location": "query", + "type": "string" + }, + "id": { + "description": "The ID of the thread to retrieve.", + "location": "path", + "required": true, + "type": "string" + }, + "metadataHeaders": { + "description": "When given and format is METADATA, only include headers specified.", + "location": "query", + "repeated": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/threads/{id}", + "response": { + "$ref": "Thread" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.addons.current.message.action", + "https://www.googleapis.com/auth/gmail.addons.current.message.metadata", + "https://www.googleapis.com/auth/gmail.addons.current.message.readonly", + "https://www.googleapis.com/auth/gmail.metadata", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly" + ] + }, + "list": { + "description": "Lists the threads in the user's mailbox.", + "flatPath": "gmail/v1/users/{userId}/threads", + "httpMethod": "GET", + "id": "gmail.users.threads.list", + "parameterOrder": [ + "userId" + ], + "parameters": { + "includeSpamTrash": { + "default": "false", + "description": "Include threads from \u003ccode\u003eSPAM\u003c/code\u003e and \u003ccode\u003eTRASH\u003c/code\u003e\nin the results.", + "location": "query", + "type": "boolean" + }, + "labelIds": { + "description": "Only return threads with labels that match all of the specified label IDs.", + "location": "query", + "repeated": true, + "type": "string" + }, + "maxResults": { + "default": "100", + "description": "Maximum number of threads to return.", + "format": "uint32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "Page token to retrieve a specific page of results in the list.", + "location": "query", + "type": "string" + }, + "q": { + "description": "Only return threads matching the specified query. Supports the same\nquery format as the Gmail search box. For example,\n\u003ccode\u003e\"from:someuser@example.com rfc822msgid:\u003csomemsgid@example.com\u003e\nis:unread\"\u003c/code\u003e. Parameter cannot be used when accessing the api\nusing the gmail.metadata scope.", + "location": "query", + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/threads", + "response": { + "$ref": "ListThreadsResponse" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.metadata", + "https://www.googleapis.com/auth/gmail.modify", + "https://www.googleapis.com/auth/gmail.readonly" + ] + }, + "modify": { + "description": "Modifies the labels applied to the thread. This applies to all messages\nin the thread.", + "flatPath": "gmail/v1/users/{userId}/threads/{id}/modify", + "httpMethod": "POST", + "id": "gmail.users.threads.modify", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the thread to modify.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/threads/{id}/modify", + "request": { + "$ref": "ModifyThreadRequest" + }, + "response": { + "$ref": "Thread" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify" + ] + }, + "trash": { + "description": "Moves the specified thread to the trash.", + "flatPath": "gmail/v1/users/{userId}/threads/{id}/trash", + "httpMethod": "POST", + "id": "gmail.users.threads.trash", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the thread to Trash.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/threads/{id}/trash", + "response": { + "$ref": "Thread" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify" + ] + }, + "untrash": { + "description": "Removes the specified thread from the trash.", + "flatPath": "gmail/v1/users/{userId}/threads/{id}/untrash", + "httpMethod": "POST", + "id": "gmail.users.threads.untrash", + "parameterOrder": [ + "userId", + "id" + ], + "parameters": { + "id": { + "description": "The ID of the thread to remove from Trash.", + "location": "path", + "required": true, + "type": "string" + }, + "userId": { + "default": "me", + "description": "The user's email address. The special value \u003ccode\u003eme\u003c/code\u003e\ncan be used to indicate the authenticated user.", + "location": "path", + "required": true, + "type": "string" + } + }, + "path": "gmail/v1/users/{userId}/threads/{id}/untrash", + "response": { + "$ref": "Thread" + }, + "scopes": [ + "https://mail.google.com/", + "https://www.googleapis.com/auth/gmail.modify" + ] + } + } + } + } + } + }, + "revision": "20200608", + "rootUrl": "https://www.googleapis.com/", + "schemas": { + "AutoForwarding": { + "description": "Auto-forwarding settings for an account.", + "id": "AutoForwarding", + "properties": { + "disposition": { + "description": "The state that a message should be left in after it has been forwarded.", + "enum": [ + "dispositionUnspecified", + "leaveInInbox", + "archive", + "trash", + "markRead" + ], + "enumDescriptions": [ + "Unspecified disposition.", + "Leave the message in the `INBOX`.", + "Archive the message.", + "Move the message to the `TRASH`.", + "Leave the message in the `INBOX` and mark it as read." + ], + "type": "string" + }, + "emailAddress": { + "description": "Email address to which all incoming messages are forwarded. This email\naddress must be a verified member of the forwarding addresses.", + "type": "string" + }, + "enabled": { + "description": "Whether all incoming mail is automatically forwarded to another address.", + "type": "boolean" + } + }, + "type": "object" + }, + "BatchDeleteMessagesRequest": { + "id": "BatchDeleteMessagesRequest", + "properties": { + "ids": { + "description": "The IDs of the messages to delete.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "BatchModifyMessagesRequest": { + "id": "BatchModifyMessagesRequest", + "properties": { + "addLabelIds": { + "description": "A list of label IDs to add to messages.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ids": { + "description": "The IDs of the messages to modify. There is a limit of 1000 ids per\nrequest.", + "items": { + "type": "string" + }, + "type": "array" + }, + "removeLabelIds": { + "description": "A list of label IDs to remove from messages.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "Delegate": { + "description": "Settings for a delegate. Delegates can read, send, and delete messages, as\nwell as view and add contacts, for the delegator's account. See\n\u003ca href=\"https://support.google.com/mail/answer/138350\"\u003e\"Set up\nmail delegation\"\u003c/a\u003e for more information about delegates.", + "id": "Delegate", + "properties": { + "delegateEmail": { + "description": "The email address of the delegate.", + "type": "string" + }, + "verificationStatus": { + "description": "Indicates whether this address has been verified and can act as a delegate\nfor the account. Read-only.", + "enum": [ + "verificationStatusUnspecified", + "accepted", + "pending", + "rejected", + "expired" + ], + "enumDescriptions": [ + "Unspecified verification status.", + "The address can act a delegate for the account.", + "A verification request was mailed to the address, and the owner has not\nyet accepted it.", + "A verification request was mailed to the address, and the owner rejected\nit.", + "A verification request was mailed to the address, and it expired without\nverification." + ], + "type": "string" + } + }, + "type": "object" + }, + "Draft": { + "description": "A draft email in the user's mailbox.", + "id": "Draft", + "properties": { + "id": { + "annotations": { + "required": [ + "gmail.users.drafts.send" + ] + }, + "description": "The immutable ID of the draft.", + "type": "string" + }, + "message": { + "$ref": "Message", + "description": "The message content of the draft." + } + }, + "type": "object" + }, + "Filter": { + "description": "Resource definition for Gmail filters. Filters apply to specific messages\ninstead of an entire email thread.", + "id": "Filter", + "properties": { + "action": { + "$ref": "FilterAction", + "description": "Action that the filter performs." + }, + "criteria": { + "$ref": "FilterCriteria", + "description": "Matching criteria for the filter." + }, + "id": { + "description": "The server assigned ID of the filter.", + "type": "string" + } + }, + "type": "object" + }, + "FilterAction": { + "description": "A set of actions to perform on a message.", + "id": "FilterAction", + "properties": { + "addLabelIds": { + "description": "List of labels to add to the message.", + "items": { + "type": "string" + }, + "type": "array" + }, + "forward": { + "description": "Email address that the message should be forwarded to.", + "type": "string" + }, + "removeLabelIds": { + "description": "List of labels to remove from the message.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "FilterCriteria": { + "description": "Message matching criteria.", + "id": "FilterCriteria", + "properties": { + "excludeChats": { + "description": "Whether the response should exclude chats.", + "type": "boolean" + }, + "from": { + "description": "The sender's display name or email address.", + "type": "string" + }, + "hasAttachment": { + "description": "Whether the message has any attachment.", + "type": "boolean" + }, + "negatedQuery": { + "description": "Only return messages not matching the specified query. Supports the same\nquery format as the Gmail search box. For example,\n\u003ccode\u003e\"from:someuser@example.com rfc822msgid:\u003csomemsgid@example.com\u003e\nis:unread\"\u003c/code\u003e.", + "type": "string" + }, + "query": { + "description": "Only return messages matching the specified query. Supports the same\nquery format as the Gmail search box. For example,\n\u003ccode\u003e\"from:someuser@example.com rfc822msgid:\u003csomemsgid@example.com\u003e\nis:unread\"\u003c/code\u003e.", + "type": "string" + }, + "size": { + "description": "The size of the entire RFC822 message in bytes, including all headers and\nattachments.", + "format": "int32", + "type": "integer" + }, + "sizeComparison": { + "description": "How the message size in bytes should be in relation to the size field.", + "enum": [ + "unspecified", + "smaller", + "larger" + ], + "enumDescriptions": [ + "", + "Find messages smaller than the given size.", + "Find messages larger than the given size." + ], + "type": "string" + }, + "subject": { + "description": "Case-insensitive phrase found in the message's subject. Trailing and\nleading whitespace are be trimmed and adjacent spaces are collapsed.", + "type": "string" + }, + "to": { + "description": "The recipient's display name or email address. Includes recipients in the\n\"to\", \"cc\", and \"bcc\" header fields. You can use simply the local part of\nthe email address. For example, \"example\" and \"example@\" both match\n\"example@gmail.com\". This field is case-insensitive.", + "type": "string" + } + }, + "type": "object" + }, + "ForwardingAddress": { + "description": "Settings for a forwarding address.", + "id": "ForwardingAddress", + "properties": { + "forwardingEmail": { + "description": "An email address to which messages can be forwarded.", + "type": "string" + }, + "verificationStatus": { + "description": "Indicates whether this address has been verified and is usable for\nforwarding. Read-only.", + "enum": [ + "verificationStatusUnspecified", + "accepted", + "pending" + ], + "enumDescriptions": [ + "Unspecified verification status.", + "The address is ready to use for forwarding.", + "The address is awaiting verification by the owner." + ], + "type": "string" + } + }, + "type": "object" + }, + "History": { + "description": "A record of a change to the user's mailbox. Each history change may affect\nmultiple messages in multiple ways.", + "id": "History", + "properties": { + "id": { + "description": "The mailbox sequence ID.", + "format": "uint64", + "type": "string" + }, + "labelsAdded": { + "description": "Labels added to messages in this history record.", + "items": { + "$ref": "HistoryLabelAdded" + }, + "type": "array" + }, + "labelsRemoved": { + "description": "Labels removed from messages in this history record.", + "items": { + "$ref": "HistoryLabelRemoved" + }, + "type": "array" + }, + "messages": { + "description": "List of messages changed in this history record. The fields for specific\nchange types, such as \u003ccode\u003emessagesAdded\u003c/code\u003e may duplicate messages in\nthis field. We recommend using the specific change-type fields instead\nof this.", + "items": { + "$ref": "Message" + }, + "type": "array" + }, + "messagesAdded": { + "description": "Messages added to the mailbox in this history record.", + "items": { + "$ref": "HistoryMessageAdded" + }, + "type": "array" + }, + "messagesDeleted": { + "description": "Messages deleted (not Trashed) from the mailbox in this history record.", + "items": { + "$ref": "HistoryMessageDeleted" + }, + "type": "array" + } + }, + "type": "object" + }, + "HistoryLabelAdded": { + "id": "HistoryLabelAdded", + "properties": { + "labelIds": { + "description": "Label IDs added to the message.", + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "$ref": "Message" + } + }, + "type": "object" + }, + "HistoryLabelRemoved": { + "id": "HistoryLabelRemoved", + "properties": { + "labelIds": { + "description": "Label IDs removed from the message.", + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "$ref": "Message" + } + }, + "type": "object" + }, + "HistoryMessageAdded": { + "id": "HistoryMessageAdded", + "properties": { + "message": { + "$ref": "Message" + } + }, + "type": "object" + }, + "HistoryMessageDeleted": { + "id": "HistoryMessageDeleted", + "properties": { + "message": { + "$ref": "Message" + } + }, + "type": "object" + }, + "ImapSettings": { + "description": "IMAP settings for an account.", + "id": "ImapSettings", + "properties": { + "autoExpunge": { + "description": "If this value is true, Gmail will immediately expunge a message when it is\nmarked as deleted in IMAP. Otherwise, Gmail will wait for an update from\nthe client before expunging messages marked as deleted.", + "type": "boolean" + }, + "enabled": { + "description": "Whether IMAP is enabled for the account.", + "type": "boolean" + }, + "expungeBehavior": { + "description": "The action that will be executed on a message when it is marked as deleted\nand expunged from the last visible IMAP folder.", + "enum": [ + "expungeBehaviorUnspecified", + "archive", + "trash", + "deleteForever" + ], + "enumDescriptions": [ + "Unspecified behavior.", + "Archive messages marked as deleted.", + "Move messages marked as deleted to the trash.", + "Immediately and permanently delete messages marked as deleted. The\nexpunged messages cannot be recovered." + ], + "type": "string" + }, + "maxFolderSize": { + "description": "An optional limit on the number of messages that an IMAP folder may\ncontain. Legal values are 0, 1000, 2000, 5000 or 10000. A value of zero\nis interpreted to mean that there is no limit.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "Label": { + "description": "Labels are used to categorize messages and threads within the\nuser's mailbox.", + "id": "Label", + "properties": { + "color": { + "$ref": "LabelColor", + "description": "The color to assign to the label. Color is only available for labels that\nhave their \u003ccode\u003etype\u003c/code\u003e set to \u003ccode\u003euser\u003c/code\u003e.\n@mutable gmail.users.labels.create gmail.users.labels.update" + }, + "id": { + "annotations": { + "required": [ + "gmail.users.labels.update" + ] + }, + "description": "The immutable ID of the label.", + "type": "string" + }, + "labelListVisibility": { + "annotations": { + "required": [ + "gmail.users.labels.create", + "gmail.users.labels.update" + ] + }, + "description": "The visibility of the label in the label list in the Gmail web interface.\n@mutable gmail.users.labels.create gmail.users.labels.update", + "enum": [ + "labelShow", + "labelShowIfUnread", + "labelHide" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "messageListVisibility": { + "annotations": { + "required": [ + "gmail.users.labels.create", + "gmail.users.labels.update" + ] + }, + "description": "The visibility of the label in the message list in the\nGmail web interface.\n@mutable gmail.users.labels.create gmail.users.labels.update", + "enum": [ + "show", + "hide" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "messagesTotal": { + "description": "The total number of messages with the label.", + "format": "int32", + "type": "integer" + }, + "messagesUnread": { + "description": "The number of unread messages with the label.", + "format": "int32", + "type": "integer" + }, + "name": { + "annotations": { + "required": [ + "gmail.users.labels.create", + "gmail.users.labels.update" + ] + }, + "description": "The display name of the label.\n@mutable gmail.users.labels.create gmail.users.labels.update", + "type": "string" + }, + "threadsTotal": { + "description": "The total number of threads with the label.", + "format": "int32", + "type": "integer" + }, + "threadsUnread": { + "description": "The number of unread threads with the label.", + "format": "int32", + "type": "integer" + }, + "type": { + "description": "The owner type for the label. User labels are created by the user and\ncan be modified and deleted by the user and can be applied to any\nmessage or thread. System labels are internally created and cannot be\nadded, modified, or deleted. System labels may be able to be applied to or\nremoved from messages and threads under some circumstances but this is\nnot guaranteed. For example, users can apply and remove the\n\u003ccode\u003eINBOX\u003c/code\u003e and \u003ccode\u003eUNREAD\u003c/code\u003e labels from messages and\nthreads, but cannot apply or remove the \u003ccode\u003eDRAFTS\u003c/code\u003e or\n\u003ccode\u003eSENT\u003c/code\u003e labels from messages or threads.", + "enum": [ + "system", + "user" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "LabelColor": { + "id": "LabelColor", + "properties": { + "backgroundColor": { + "description": "The background color represented as hex string #RRGGBB (ex #000000).\nThis field is required in order to set the color of a label.\nOnly the following predefined set of color values are allowed:\n\u003cbr/\u003e\n# 000000, #434343, #666666, #999999, #cccccc, #efefef, #f3f3f3, #ffffff,\n\n# fb4c2f, #ffad47, #fad165, #16a766, #43d692, #4a86e8, #a479e2, #f691b3,\n\n# f6c5be, #ffe6c7, #fef1d1, #b9e4d0, #c6f3de, #c9daf8, #e4d7f5, #fcdee8,\n\n# efa093, #ffd6a2, #fce8b3, #89d3b2, #a0eac9, #a4c2f4, #d0bcf1, #fbc8d9,\n\n# e66550, #ffbc6b, #fcda83, #44b984, #68dfa9, #6d9eeb, #b694e8, #f7a7c0,\n\n# cc3a21, #eaa041, #f2c960, #149e60, #3dc789, #3c78d8, #8e63ce, #e07798,\n\n# ac2b16, #cf8933, #d5ae49, #0b804b, #2a9c68, #285bac, #653e9b, #b65775,\n\n# 822111, #a46a21, #aa8831, #076239, #1a764d, #1c4587, #41236d, #83334c\n\n# 464646, #e7e7e7, #0d3472, #b6cff5, #0d3b44, #98d7e4, #3d188e, #e3d7ff,\n\n# 711a36, #fbd3e0, #8a1c0a, #f2b2a8, #7a2e0b, #ffc8af, #7a4706, #ffdeb5,\n\n# 594c05, #fbe983, #684e07, #fdedc1, #0b4f30, #b3efd3, #04502e, #a2dcc1,\n\n# c2c2c2, #4986e7, #2da2bb, #b99aff, #994a64, #f691b2, #ff7537, #ffad46,\n\n# 662e37, #ebdbde, #cca6ac, #094228, #42d692, #16a765\n\n@mutable gmail.users.labels.create gmail.users.labels.update", + "type": "string" + }, + "textColor": { + "description": "The text color of the label, represented as hex string.\nThis field is required in order to set the color of a label.\nOnly the following predefined set of color values are allowed:\n\u003cbr/\u003e\n# 000000, #434343, #666666, #999999, #cccccc, #efefef, #f3f3f3, #ffffff,\n\n# fb4c2f, #ffad47, #fad165, #16a766, #43d692, #4a86e8, #a479e2, #f691b3,\n\n# f6c5be, #ffe6c7, #fef1d1, #b9e4d0, #c6f3de, #c9daf8, #e4d7f5, #fcdee8,\n\n# efa093, #ffd6a2, #fce8b3, #89d3b2, #a0eac9, #a4c2f4, #d0bcf1, #fbc8d9,\n\n# e66550, #ffbc6b, #fcda83, #44b984, #68dfa9, #6d9eeb, #b694e8, #f7a7c0,\n\n# cc3a21, #eaa041, #f2c960, #149e60, #3dc789, #3c78d8, #8e63ce, #e07798,\n\n# ac2b16, #cf8933, #d5ae49, #0b804b, #2a9c68, #285bac, #653e9b, #b65775,\n\n# 822111, #a46a21, #aa8831, #076239, #1a764d, #1c4587, #41236d, #83334c\n\n# 464646, #e7e7e7, #0d3472, #b6cff5, #0d3b44, #98d7e4, #3d188e, #e3d7ff,\n\n# 711a36, #fbd3e0, #8a1c0a, #f2b2a8, #7a2e0b, #ffc8af, #7a4706, #ffdeb5,\n\n# 594c05, #fbe983, #684e07, #fdedc1, #0b4f30, #b3efd3, #04502e, #a2dcc1,\n\n# c2c2c2, #4986e7, #2da2bb, #b99aff, #994a64, #f691b2, #ff7537, #ffad46,\n\n# 662e37, #ebdbde, #cca6ac, #094228, #42d692, #16a765\n\n@mutable gmail.users.labels.create gmail.users.labels.update", + "type": "string" + } + }, + "type": "object" + }, + "LanguageSettings": { + "description": "Language settings for an account. These settings correspond to\nthe \u003ca href=\"https://support.google.com/mail/answer/17091\"\u003e\"Language\nsettings\"\u003c/a\u003e feature in the web interface.", + "id": "LanguageSettings", + "properties": { + "displayLanguage": { + "description": "The language to display Gmail in, formatted as an\n\u003ca href=\"https://www.w3.org/International/articles/language-tags/\"\u003eRFC 3066\nLanguage Tag\u003c/a\u003e (for example \u003ccode\u003een-GB\u003c/code\u003e, \u003ccode\u003efr\u003c/code\u003e or\n\u003ccode\u003eja\u003c/code\u003e for British English, French, or Japanese respectively).\n\nThe set of languages supported by Gmail evolves over time, so please refer\nto the \"Language\" dropdown in the\n\u003ca href=\"https://mail.google.com/mail/u/0/#settings/general\"\u003eGmail settings\n\u003c/a\u003e for all available options, as described in the\n\u003ca href=\"https://support.google.com/mail/answer/17091\"\u003elanguage settings\nhelp article\u003c/a\u003e. A table of sample values is also provided in the\n\u003ca href=\"/gmail/api/guides/language_settings#display_language\"\u003eManaging\nLanguage Settings guide\u003c/a\u003e\n\nNot all Gmail clients can display the same set of languages. In the case\nthat a user's display language is not available for use on a particular\nclient, said client automatically chooses to display in the closest\nsupported variant (or a reasonable default).", + "type": "string" + } + }, + "type": "object" + }, + "ListDelegatesResponse": { + "description": "Response for the ListDelegates method.", + "id": "ListDelegatesResponse", + "properties": { + "delegates": { + "description": "List of the user's delegates (with any verification status).", + "items": { + "$ref": "Delegate" + }, + "type": "array" + } + }, + "type": "object" + }, + "ListDraftsResponse": { + "id": "ListDraftsResponse", + "properties": { + "drafts": { + "description": "List of drafts. Note that the \u003ccode\u003eMessage\u003c/code\u003e property in each\n\u003ccode\u003eDraft\u003c/code\u003e resource only contains an \u003ccode\u003eid\u003c/code\u003e and a\n\u003ccode\u003ethreadId\u003c/code\u003e. The\n\u003ca href=\"/gmail/api/v1/reference/users/messages/get\"\u003emessages.get\u003c/a\u003e\nmethod can fetch additional message details.", + "items": { + "$ref": "Draft" + }, + "type": "array" + }, + "nextPageToken": { + "description": "Token to retrieve the next page of results in the list.", + "type": "string" + }, + "resultSizeEstimate": { + "description": "Estimated total number of results.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "ListFiltersResponse": { + "description": "Response for the ListFilters method.", + "id": "ListFiltersResponse", + "properties": { + "filter": { + "description": "List of a user's filters.", + "items": { + "$ref": "Filter" + }, + "type": "array" + } + }, + "type": "object" + }, + "ListForwardingAddressesResponse": { + "description": "Response for the ListForwardingAddresses method.", + "id": "ListForwardingAddressesResponse", + "properties": { + "forwardingAddresses": { + "description": "List of addresses that may be used for forwarding.", + "items": { + "$ref": "ForwardingAddress" + }, + "type": "array" + } + }, + "type": "object" + }, + "ListHistoryResponse": { + "id": "ListHistoryResponse", + "properties": { + "history": { + "description": "List of history records. Any \u003ccode\u003emessages\u003c/code\u003e contained in the\nresponse will typically only have \u003ccode\u003eid\u003c/code\u003e and\n\u003ccode\u003ethreadId\u003c/code\u003e fields populated.", + "items": { + "$ref": "History" + }, + "type": "array" + }, + "historyId": { + "description": "The ID of the mailbox's current history record.", + "format": "uint64", + "type": "string" + }, + "nextPageToken": { + "description": "Page token to retrieve the next page of results in the list.", + "type": "string" + } + }, + "type": "object" + }, + "ListLabelsResponse": { + "id": "ListLabelsResponse", + "properties": { + "labels": { + "description": "List of labels. Note that each label resource only contains an\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ename\u003c/code\u003e, \u003ccode\u003emessageListVisibility\u003c/code\u003e,\n\u003ccode\u003elabelListVisibility\u003c/code\u003e, and \u003ccode\u003etype\u003c/code\u003e. The\n\u003ca href=\"/gmail/api/v1/reference/users/labels/get\"\u003elabels.get\u003c/a\u003e method\ncan fetch additional label details.", + "items": { + "$ref": "Label" + }, + "type": "array" + } + }, + "type": "object" + }, + "ListMessagesResponse": { + "id": "ListMessagesResponse", + "properties": { + "messages": { + "description": "List of messages. Note that each message resource contains only an\n\u003ccode\u003eid\u003c/code\u003e and a \u003ccode\u003ethreadId\u003c/code\u003e. Additional message details can\nbe fetched using the\n\u003ca href=\"/gmail/api/v1/reference/users/messages/get\"\u003emessages.get\u003c/a\u003e\nmethod.", + "items": { + "$ref": "Message" + }, + "type": "array" + }, + "nextPageToken": { + "description": "Token to retrieve the next page of results in the list.", + "type": "string" + }, + "resultSizeEstimate": { + "description": "Estimated total number of results.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "ListSendAsResponse": { + "description": "Response for the ListSendAs method.", + "id": "ListSendAsResponse", + "properties": { + "sendAs": { + "description": "List of send-as aliases.", + "items": { + "$ref": "SendAs" + }, + "type": "array" + } + }, + "type": "object" + }, + "ListSmimeInfoResponse": { + "id": "ListSmimeInfoResponse", + "properties": { + "smimeInfo": { + "description": "List of SmimeInfo.", + "items": { + "$ref": "SmimeInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "ListThreadsResponse": { + "id": "ListThreadsResponse", + "properties": { + "nextPageToken": { + "description": "Page token to retrieve the next page of results in the list.", + "type": "string" + }, + "resultSizeEstimate": { + "description": "Estimated total number of results.", + "format": "uint32", + "type": "integer" + }, + "threads": { + "description": "List of threads. Note that each thread resource does not contain a list of\n\u003ccode\u003emessages\u003c/code\u003e. The list of \u003ccode\u003emessages\u003c/code\u003e for a given thread\ncan be fetched using the\n\u003ca href=\"/gmail/api/v1/reference/users/threads/get\"\u003ethreads.get\u003c/a\u003e method.", + "items": { + "$ref": "Thread" + }, + "type": "array" + } + }, + "type": "object" + }, + "Message": { + "description": "An email message.", + "id": "Message", + "properties": { + "historyId": { + "description": "The ID of the last history record that modified this message.", + "format": "uint64", + "type": "string" + }, + "id": { + "description": "The immutable ID of the message.", + "type": "string" + }, + "internalDate": { + "description": "The internal message creation timestamp (epoch ms), which determines\nordering in the inbox. For normal SMTP-received email, this represents the\ntime the message was originally accepted by Google, which is more reliable\nthan the \u003ccode\u003eDate\u003c/code\u003e header. However, for API-migrated mail, it can\nbe configured by client to be based on the \u003ccode\u003eDate\u003c/code\u003e header.", + "format": "int64", + "type": "string" + }, + "labelIds": { + "description": "List of IDs of labels applied to this message.\n@mutable gmail.users.messages.insert gmail.users.messages.modify", + "items": { + "type": "string" + }, + "type": "array" + }, + "payload": { + "$ref": "MessagePart", + "description": "The parsed email structure in the message parts." + }, + "raw": { + "annotations": { + "required": [ + "gmail.users.drafts.create", + "gmail.users.drafts.update", + "gmail.users.messages.insert", + "gmail.users.messages.send" + ] + }, + "description": "The entire email message in an RFC 2822 formatted and base64url\nencoded string. Returned in \u003ccode\u003emessages.get\u003c/code\u003e and\n\u003ccode\u003edrafts.get\u003c/code\u003e responses when the \u003ccode\u003eformat=RAW\u003c/code\u003e\nparameter is supplied.\n@mutable gmail.users.messages.insert gmail.users.messages.send\n@mutable gmail.users.drafts.create gmail.users.drafts.update", + "format": "byte", + "type": "string" + }, + "sizeEstimate": { + "description": "Estimated size in bytes of the message.", + "format": "int32", + "type": "integer" + }, + "snippet": { + "description": "A short part of the message text.", + "type": "string" + }, + "threadId": { + "description": "The ID of the thread the message belongs to. To add a message or draft to\na thread, the following criteria must be met:\n\u003col\u003e\u003cli\u003eThe requested \u003ccode\u003ethreadId\u003c/code\u003e must be specified on the\n\u003ccode\u003eMessage\u003c/code\u003e or \u003ccode\u003eDraft.Message\u003c/code\u003e you supply with your\nrequest.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eReferences\u003c/code\u003e and \u003ccode\u003eIn-Reply-To\u003c/code\u003e headers must\nbe set in compliance with the\n\u003ca href=\"https://tools.ietf.org/html/rfc2822\"\u003eRFC 2822\u003c/a\u003e standard.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eSubject\u003c/code\u003e headers must match.\n@mutable gmail.users.messages.insert gmail.users.messages.send\n@mutable gmail.users.drafts.create gmail.users.drafts.update", + "type": "string" + } + }, + "type": "object" + }, + "MessagePart": { + "description": "A single MIME message part.", + "id": "MessagePart", + "properties": { + "body": { + "$ref": "MessagePartBody", + "description": "The message part body for this part, which may be empty for\ncontainer MIME message parts." + }, + "filename": { + "description": "The filename of the attachment. Only present if this message part\nrepresents an attachment.", + "type": "string" + }, + "headers": { + "description": "List of headers on this message part. For the top-level message part,\nrepresenting the entire message payload, it will contain the standard\nRFC 2822 email headers such as \u003ccode\u003eTo\u003c/code\u003e, \u003ccode\u003eFrom\u003c/code\u003e, and\n\u003ccode\u003eSubject\u003c/code\u003e.", + "items": { + "$ref": "MessagePartHeader" + }, + "type": "array" + }, + "mimeType": { + "description": "The MIME type of the message part.", + "type": "string" + }, + "partId": { + "description": "The immutable ID of the message part.", + "type": "string" + }, + "parts": { + "description": "The child MIME message parts of this part. This only applies to container\nMIME message parts, for example \u003ccode\u003emultipart/*\u003c/code\u003e. For non-\ncontainer MIME message part types, such as \u003ccode\u003etext/plain\u003c/code\u003e, this\nfield is empty. For more information, see\n\u003ca href=\"http://www.ietf.org/rfc/rfc1521.txt\"\u003eRFC 1521\u003c/a\u003e.", + "items": { + "$ref": "MessagePart" + }, + "type": "array" + } + }, + "type": "object" + }, + "MessagePartBody": { + "description": "The body of a single MIME message part.", + "id": "MessagePartBody", + "properties": { + "attachmentId": { + "description": "When present, contains the ID of an external attachment that can be\nretrieved in a separate \u003ccode\u003emessages.attachments.get\u003c/code\u003e request.\nWhen not present, the entire content of the message part body is\ncontained in the data field.", + "type": "string" + }, + "data": { + "description": "The body data of a MIME message part as a base64url encoded string.\nMay be empty for MIME container\ntypes that have no message body or when the body data is sent as a\nseparate attachment. An attachment ID is present if the body data is\ncontained in a separate attachment.", + "format": "byte", + "type": "string" + }, + "size": { + "description": "Number of bytes for the message part data (encoding notwithstanding).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "MessagePartHeader": { + "id": "MessagePartHeader", + "properties": { + "name": { + "description": "The name of the header before the \u003ccode\u003e:\u003c/code\u003e separator. For\nexample, \u003ccode\u003eTo\u003c/code\u003e.", + "type": "string" + }, + "value": { + "description": "The value of the header after the \u003ccode\u003e:\u003c/code\u003e separator. For example,\n\u003ccode\u003esomeuser@example.com\u003c/code\u003e.", + "type": "string" + } + }, + "type": "object" + }, + "ModifyMessageRequest": { + "id": "ModifyMessageRequest", + "properties": { + "addLabelIds": { + "description": "A list of IDs of labels to add to this message.", + "items": { + "type": "string" + }, + "type": "array" + }, + "removeLabelIds": { + "description": "A list IDs of labels to remove from this message.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ModifyThreadRequest": { + "id": "ModifyThreadRequest", + "properties": { + "addLabelIds": { + "description": "A list of IDs of labels to add to this thread.", + "items": { + "type": "string" + }, + "type": "array" + }, + "removeLabelIds": { + "description": "A list of IDs of labels to remove from this thread.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "PopSettings": { + "description": "POP settings for an account.", + "id": "PopSettings", + "properties": { + "accessWindow": { + "description": "The range of messages which are accessible via POP.", + "enum": [ + "accessWindowUnspecified", + "disabled", + "fromNowOn", + "allMail" + ], + "enumDescriptions": [ + "Unspecified range.", + "Indicates that no messages are accessible via POP.", + "Indicates that unfetched messages received after some past point in\ntime are accessible via POP.", + "Indicates that all unfetched messages are accessible via POP." + ], + "type": "string" + }, + "disposition": { + "description": "The action that will be executed on a message after it has been fetched via\nPOP.", + "enum": [ + "dispositionUnspecified", + "leaveInInbox", + "archive", + "trash", + "markRead" + ], + "enumDescriptions": [ + "Unspecified disposition.", + "Leave the message in the \u003ccode\u003eINBOX\u003c/code\u003e.", + "Archive the message.", + "Move the message to the \u003ccode\u003eTRASH\u003c/code\u003e.", + "Leave the message in the \u003ccode\u003eINBOX\u003c/code\u003e and mark it as read." + ], + "type": "string" + } + }, + "type": "object" + }, + "Profile": { + "description": "Profile for a Gmail user.", + "id": "Profile", + "properties": { + "emailAddress": { + "description": "The user's email address.", + "type": "string" + }, + "historyId": { + "description": "The ID of the mailbox's current history record.", + "format": "uint64", + "type": "string" + }, + "messagesTotal": { + "description": "The total number of messages in the mailbox.", + "format": "int32", + "type": "integer" + }, + "threadsTotal": { + "description": "The total number of threads in the mailbox.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "SendAs": { + "description": "Settings associated with a send-as alias, which can be either the primary\nlogin address associated with the account or a custom \"from\" address.\nSend-as aliases correspond to the\n\u003ca href=\"https://support.google.com/mail/answer/22370\"\u003e\"Send Mail As\"\u003c/a\u003e\nfeature in the web interface.", + "id": "SendAs", + "properties": { + "displayName": { + "description": "A name that appears in the \"From:\" header for mail sent using this alias.\nFor custom \"from\" addresses, when this is empty, Gmail will populate the\n\"From:\" header with the name that is used for the primary address\nassociated with the account.\nIf the admin has disabled the ability for users to update their name\nformat, requests to update this field for the primary login will silently\nfail.", + "type": "string" + }, + "isDefault": { + "description": "Whether this address is selected as the default \"From:\" address in\nsituations such as composing a new message or sending a vacation\nauto-reply. Every Gmail account has exactly one default send-as address,\nso the only legal value that clients may write to this field is\n\u003ccode\u003etrue\u003c/code\u003e. Changing this from \u003ccode\u003efalse\u003c/code\u003e to\n\u003ccode\u003etrue\u003c/code\u003e for an address will result in this field becoming\n\u003ccode\u003efalse\u003c/code\u003e for the other previous default address.", + "type": "boolean" + }, + "isPrimary": { + "description": "Whether this address is the primary address used to login to the account.\nEvery Gmail account has exactly one primary address, and it cannot be\ndeleted from the collection of send-as aliases. This field is read-only.", + "type": "boolean" + }, + "replyToAddress": { + "description": "An optional email address that is included in a \"Reply-To:\" header for mail\nsent using this alias. If this is empty, Gmail will not generate a\n\"Reply-To:\" header.", + "type": "string" + }, + "sendAsEmail": { + "description": "The email address that appears in the \"From:\" header for mail sent using\nthis alias. This is read-only for all operations except create.", + "type": "string" + }, + "signature": { + "description": "An optional HTML signature that is included in messages composed with this\nalias in the Gmail web UI.", + "type": "string" + }, + "smtpMsa": { + "$ref": "SmtpMsa", + "description": "An optional SMTP service that will be used as an outbound relay for mail\nsent using this alias. If this is empty, outbound mail will be sent\ndirectly from Gmail's servers to the destination SMTP service. This\nsetting only applies to custom \"from\" aliases." + }, + "treatAsAlias": { + "description": "Whether Gmail should \u003ca href=\"https://support.google.com/a/answer/1710338\"\u003e\ntreat this address as an alias\u003c/a\u003e for the user's primary email address.\nThis setting only applies to custom \"from\" aliases.", + "type": "boolean" + }, + "verificationStatus": { + "description": "Indicates whether this address has been verified for use as a send-as\nalias. Read-only. This setting only applies to custom \"from\" aliases.", + "enum": [ + "verificationStatusUnspecified", + "accepted", + "pending" + ], + "enumDescriptions": [ + "Unspecified verification status.", + "The address is ready to use as a send-as alias.", + "The address is awaiting verification by the owner." + ], + "type": "string" + } + }, + "type": "object" + }, + "SmimeInfo": { + "description": "An S/MIME email config.", + "id": "SmimeInfo", + "properties": { + "encryptedKeyPassword": { + "description": "Encrypted key password, when key is encrypted.", + "type": "string" + }, + "expiration": { + "description": "When the certificate expires (in milliseconds since epoch).", + "format": "int64", + "type": "string" + }, + "id": { + "description": "The immutable ID for the SmimeInfo.", + "type": "string" + }, + "isDefault": { + "description": "Whether this SmimeInfo is the default one for this user's send-as address.", + "type": "boolean" + }, + "issuerCn": { + "description": "The S/MIME certificate issuer's common name.", + "type": "string" + }, + "pem": { + "description": "PEM formatted X509 concatenated certificate string (standard base64\nencoding). Format used for returning key, which includes public key\nas well as certificate chain (not private key).", + "type": "string" + }, + "pkcs12": { + "description": "PKCS#12 format containing a single private/public key pair and\ncertificate chain. This format is only accepted from client\nfor creating a new SmimeInfo and is never returned, because the\nprivate key is not intended to be exported. PKCS#12 may be encrypted,\nin which case encryptedKeyPassword should be set appropriately.", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "SmtpMsa": { + "description": "Configuration for communication with an SMTP service.", + "id": "SmtpMsa", + "properties": { + "host": { + "description": "The hostname of the SMTP service. Required.", + "type": "string" + }, + "password": { + "description": "The password that will be used for authentication with the SMTP service.\nThis is a write-only field that can be specified in requests to create or\nupdate SendAs settings; it is never populated in responses.", + "type": "string" + }, + "port": { + "description": "The port of the SMTP service. Required.", + "format": "int32", + "type": "integer" + }, + "securityMode": { + "description": "The protocol that will be used to secure communication with the SMTP\nservice. Required.", + "enum": [ + "securityModeUnspecified", + "none", + "ssl", + "starttls" + ], + "enumDescriptions": [ + "Unspecified security mode.", + "Communication with the remote SMTP service is unsecured. Requires port\n25.", + "Communication with the remote SMTP service is secured using SSL.", + "Communication with the remote SMTP service is secured using STARTTLS." + ], + "type": "string" + }, + "username": { + "description": "The username that will be used for authentication with the SMTP service.\nThis is a write-only field that can be specified in requests to create or\nupdate SendAs settings; it is never populated in responses.", + "type": "string" + } + }, + "type": "object" + }, + "Thread": { + "description": "A collection of messages representing a conversation.", + "id": "Thread", + "properties": { + "historyId": { + "description": "The ID of the last history record that modified this thread.", + "format": "uint64", + "type": "string" + }, + "id": { + "description": "The unique ID of the thread.", + "type": "string" + }, + "messages": { + "description": "The list of messages in the thread.", + "items": { + "$ref": "Message" + }, + "type": "array" + }, + "snippet": { + "description": "A short part of the message text.", + "type": "string" + } + }, + "type": "object" + }, + "VacationSettings": { + "description": "Vacation auto-reply settings for an account. These settings correspond to\nthe \u003ca href=\"https://support.google.com/mail/answer/25922\"\u003e\"Vacation\nresponder\"\u003c/a\u003e feature in the web interface.", + "id": "VacationSettings", + "properties": { + "enableAutoReply": { + "description": "Flag that controls whether Gmail automatically replies to messages.", + "type": "boolean" + }, + "endTime": { + "description": "An optional end time for sending auto-replies (epoch ms).\nWhen this is specified, Gmail will automatically reply only to messages\nthat it receives before the end time. If both \u003ccode\u003estartTime\u003c/code\u003e and\n\u003ccode\u003eendTime\u003c/code\u003e are specified, \u003ccode\u003estartTime\u003c/code\u003e must precede\n\u003ccode\u003eendTime\u003c/code\u003e.", + "format": "int64", + "type": "string" + }, + "responseBodyHtml": { + "description": "Response body in HTML format. Gmail will sanitize the HTML before\nstoring it. If both \u003ccode\u003eresponse_body_plain_text\u003c/code\u003e and\n\u003ccode\u003eresponse_body_html\u003c/code\u003e are specified,\n\u003ccode\u003eresponse_body_html\u003c/code\u003e will be used.", + "type": "string" + }, + "responseBodyPlainText": { + "description": "Response body in plain text format. If both\n\u003ccode\u003eresponse_body_plain_text\u003c/code\u003e and \u003ccode\u003eresponse_body_html\u003c/code\u003e\nare specified, \u003ccode\u003eresponse_body_html\u003c/code\u003e will be used.", + "type": "string" + }, + "responseSubject": { + "description": "Optional text to prepend to the subject line in vacation responses. In\norder to enable auto-replies, either the response subject or the response\nbody must be nonempty.", + "type": "string" + }, + "restrictToContacts": { + "description": "Flag that determines whether responses are sent to recipients who are not\nin the user's list of contacts.", + "type": "boolean" + }, + "restrictToDomain": { + "description": "Flag that determines whether responses are sent to recipients who are\noutside of the user's domain. This feature is only available for G Suite\nusers.", + "type": "boolean" + }, + "startTime": { + "description": "An optional start time for sending auto-replies (epoch ms).\nWhen this is specified, Gmail will automatically reply only to messages\nthat it receives after the start time. If both \u003ccode\u003estartTime\u003c/code\u003e and\n\u003ccode\u003eendTime\u003c/code\u003e are specified, \u003ccode\u003estartTime\u003c/code\u003e must precede\n\u003ccode\u003eendTime\u003c/code\u003e.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "WatchRequest": { + "description": "Set up or update a new push notification watch on this user's mailbox.", + "id": "WatchRequest", + "properties": { + "labelFilterAction": { + "description": "Filtering behavior of labelIds list specified.", + "enum": [ + "include", + "exclude" + ], + "enumDescriptions": [ + "Only get push notifications for message changes relating to labelIds\nspecified.", + "Get push notifications for all message changes except those relating\nto labelIds specified." + ], + "type": "string" + }, + "labelIds": { + "description": "List of label_ids to restrict notifications about. By default,\nif unspecified, all changes are pushed out. If specified then\ndictates which labels are required for a push notification to\nbe generated.", + "items": { + "type": "string" + }, + "type": "array" + }, + "topicName": { + "description": "A fully qualified Google Cloud Pub/Sub API topic name to publish the\nevents to. This topic name **must** already exist in Cloud Pub/Sub and\nyou **must** have already granted gmail \"publish\" permission on it.\nFor example, \"projects/my-project-identifier/topics/my-topic-name\"\n(using the Cloud Pub/Sub \"v1\" topic naming format).\n\nNote that the \"my-project-identifier\" portion must exactly match your\nGoogle developer project id (the one executing this watch request).", + "type": "string" + } + }, + "type": "object" + }, + "WatchResponse": { + "description": "Push notification watch response.", + "id": "WatchResponse", + "properties": { + "expiration": { + "description": "When Gmail will stop sending notifications for mailbox updates\n(epoch millis). Call \u003ccode\u003ewatch\u003c/code\u003e again before this time to renew\nthe watch.", + "format": "int64", + "type": "string" + }, + "historyId": { + "description": "The ID of the mailbox's current history record.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + } + }, + "servicePath": "", + "title": "Gmail API", + "version": "v1" +} \ No newline at end of file