diff --git a/gmail-google-calender-openaisdk-demo/.env.example b/gmail-google-calender-openaisdk-demo/.env.example new file mode 100644 index 0000000..d3c96f4 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.env.example @@ -0,0 +1,7 @@ +# Copy to .env.local. The agent needs an OpenAI key; Swytchcode holds the +# Google credentials itself (see `swytchcode auth connect`). + +OPENAI_API_KEY=sk-... + +# Optional. Default: gpt-4o-mini +# OPENAI_MODEL=gpt-4o diff --git a/gmail-google-calender-openaisdk-demo/.gitignore b/gmail-google-calender-openaisdk-demo/.gitignore new file mode 100644 index 0000000..6dfd280 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.gitignore @@ -0,0 +1,16 @@ +# swytchcode: workspace binding is machine-local; tooling.json + policies.json are committed +.swytchcode/workspace.json + +# secrets +.env +.env*.local + +# next / node +/node_modules +/.next +/out +next-env.d.ts +tsconfig.tsbuildinfo + +*.log +.DS_Store diff --git a/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmail/v1/methods.json b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmail/v1/methods.json new file mode 100644 index 0000000..6a303b1 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmail/v1/methods.json @@ -0,0 +1,399 @@ +{ + "methods": [ + { + "method_uuid": "", + "method_name": "Add a custom send-as email alias", + "canonical_id": "gmail.user.sendAs.create" + }, + { + "method_uuid": "", + "method_name": "Add a Gmail delegate without verification", + "canonical_id": "gmail.user.delegates.create" + }, + { + "method_uuid": "", + "method_name": "Add a new forwarding email address", + "canonical_id": "gmail.user.forwardingAddresses.create" + }, + { + "method_uuid": "", + "method_name": "Batch delete multiple Gmail messages by ID", + "canonical_id": "gmail.user.batchDelete.create" + }, + { + "method_uuid": "", + "method_name": "Create a client-side encryption identity for sending mail", + "canonical_id": "gmail.user.identities.create" + }, + { + "method_uuid": "", + "method_name": "Create a new draft email for a user", + "canonical_id": "gmail.user.drafts.create" + }, + { + "method_uuid": "", + "method_name": "Create a new Gmail filter for a user", + "canonical_id": "gmail.user.filters.create" + }, + { + "method_uuid": "", + "method_name": "Create a new label for a Gmail user", + "canonical_id": "gmail.user.labels.create" + }, + { + "method_uuid": "", + "method_name": "Delete a client-side encryption identity", + "canonical_id": "gmail.user.identities.delete" + }, + { + "method_uuid": "", + "method_name": "Delete a draft email permanently", + "canonical_id": "gmail.user.drafts.delete" + }, + { + "method_uuid": "", + "method_name": "Delete a Gmail label and its associations", + "canonical_id": "gmail.user.labels.delete" + }, + { + "method_uuid": "", + "method_name": "Delete a specific Gmail filter", + "canonical_id": "gmail.user.filters.delete" + }, + { + "method_uuid": "", + "method_name": "Delete S/MIME config for a send-as alias", + "canonical_id": "gmail.user.smimeInfo.delete" + }, + { + "method_uuid": "", + "method_name": "Disable a client-side encryption key pair", + "canonical_id": "gmail.user.keyPairIddisable.create" + }, + { + "method_uuid": "", + "method_name": "Download a specific message attachment", + "canonical_id": "gmail.user.attachments.get" + }, + { + "method_uuid": "", + "method_name": "Enable a client-side encryption key pair", + "canonical_id": "gmail.user.keyPairIdenable.create" + }, + { + "method_uuid": "", + "method_name": "Get a list of draft emails from a user's mailbox", + "canonical_id": "gmail.user.drafts.get" + }, + { + "method_uuid": "", + "method_name": "Get a list of email threads in a user's mailbox", + "canonical_id": "gmail.user.threads.get" + }, + { + "method_uuid": "", + "method_name": "Get a specific forwarding email address", + "canonical_id": "gmail.user.forwardingAddresses.get1" + }, + { + "method_uuid": "", + "method_name": "Get a specific Gmail label by its ID", + "canonical_id": "gmail.user.labels.get1" + }, + { + "method_uuid": "", + "method_name": "Get a user's client-side encryption key pair", + "canonical_id": "gmail.user.keypairs.get1" + }, + { + "method_uuid": "", + "method_name": "Get all labels in a user's Gmail mailbox", + "canonical_id": "gmail.user.labels.get" + }, + { + "method_uuid": "", + "method_name": "Get client-side encryption identity configuration", + "canonical_id": "gmail.user.identities.get1" + }, + { + "method_uuid": "", + "method_name": "Get Gmail POP settings for a user", + "canonical_id": "gmail.user.pop.get" + }, + { + "method_uuid": "", + "method_name": "Get IMAP settings for a Gmail account", + "canonical_id": "gmail.user.imap.get" + }, + { + "method_uuid": "", + "method_name": "Get S/MIME configurations for a send-as alias", + "canonical_id": "gmail.user.smimeInfo.get" + }, + { + "method_uuid": "", + "method_name": "Get send-as aliases for a Gmail account", + "canonical_id": "gmail.user.sendAs.get" + }, + { + "method_uuid": "", + "method_name": "Get the authenticated user's Gmail profile", + "canonical_id": "gmail.user.profile.get" + }, + { + "method_uuid": "", + "method_name": "Get the history of changes to a Gmail mailbox", + "canonical_id": "gmail.user.history.get" + }, + { + "method_uuid": "", + "method_name": "Get user's Gmail language settings", + "canonical_id": "gmail.user.language.get" + }, + { + "method_uuid": "", + "method_name": "Get vacation responder settings for a user", + "canonical_id": "gmail.user.vacation.get" + }, + { + "method_uuid": "", + "method_name": "Import an email message into a user's mailbox", + "canonical_id": "gmail.user.import.create" + }, + { + "method_uuid": "", + "method_name": "Insert a message directly into a user's mailbox", + "canonical_id": "gmail.user.messages.create" + }, + { + "method_uuid": "", + "method_name": "List client-side encrypted identities for a user", + "canonical_id": "gmail.user.identities.get" + }, + { + "method_uuid": "", + "method_name": "List client-side encryption key pairs for a user", + "canonical_id": "gmail.user.keypairs.get" + }, + { + "method_uuid": "", + "method_name": "List delegates for a Gmail account", + "canonical_id": "gmail.user.delegates.get" + }, + { + "method_uuid": "", + "method_name": "List forwarding addresses for a Gmail account", + "canonical_id": "gmail.user.forwardingAddresses.get" + }, + { + "method_uuid": "", + "method_name": "List Gmail user message filters", + "canonical_id": "gmail.user.filters.get" + }, + { + "method_uuid": "", + "method_name": "List messages in a Gmail mailbox", + "canonical_id": "gmail.user.messages.get" + }, + { + "method_uuid": "", + "method_name": "Modify message labels and classification", + "canonical_id": "gmail.user.modify.create" + }, + { + "method_uuid": "", + "method_name": "Modify message labels and classification labels in bulk", + "canonical_id": "gmail.user.batchModify.create" + }, + { + "method_uuid": "", + "method_name": "Permanently delete a client-side encryption key pair", + "canonical_id": "gmail.user.keyPairIdobliterate.create" + }, + { + "method_uuid": "", + "method_name": "Permanently delete a Gmail thread and its messages", + "canonical_id": "gmail.user.threads.delete" + }, + { + "method_uuid": "", + "method_name": "Permanently delete a specific email message", + "canonical_id": "gmail.user.messages.delete" + }, + { + "method_uuid": "", + "method_name": "Remove a forwarding email address", + "canonical_id": "gmail.user.forwardingAddresses.delete" + }, + { + "method_uuid": "", + "method_name": "Remove a Gmail delegate and revoke their verification", + "canonical_id": "gmail.user.delegates.delete" + }, + { + "method_uuid": "", + "method_name": "Remove a send-as alias and its verification", + "canonical_id": "gmail.user.sendAs.delete" + }, + { + "method_uuid": "", + "method_name": "Restore a message from the trash", + "canonical_id": "gmail.user.untrash.create" + }, + { + "method_uuid": "", + "method_name": "Retrieve a specific delegate's email address", + "canonical_id": "gmail.user.delegates.get1" + }, + { + "method_uuid": "", + "method_name": "Retrieve a specific draft email by its ID", + "canonical_id": "gmail.user.drafts.get1" + }, + { + "method_uuid": "", + "method_name": "Retrieve a specific email thread by its ID", + "canonical_id": "gmail.user.threads.get1" + }, + { + "method_uuid": "", + "method_name": "Retrieve a specific Gmail filter by its ID", + "canonical_id": "gmail.user.filters.get1" + }, + { + "method_uuid": "", + "method_name": "Retrieve a specific Gmail message by its ID", + "canonical_id": "gmail.user.messages.get1" + }, + { + "method_uuid": "", + "method_name": "Retrieve a specific send-as email alias", + "canonical_id": "gmail.user.sendAs.get1" + }, + { + "method_uuid": "", + "method_name": "Retrieve Gmail auto-forwarding settings for an account", + "canonical_id": "gmail.user.autoForwarding.get" + }, + { + "method_uuid": "", + "method_name": "Retrieve S/MIME configuration for a specific send-as alias", + "canonical_id": "gmail.user.smimeInfo.get1" + }, + { + "method_uuid": "", + "method_name": "Send an email message to specified recipients", + "canonical_id": "gmail.user.send.create1" + }, + { + "method_uuid": "", + "method_name": "Send an existing draft email", + "canonical_id": "gmail.user.send.create" + }, + { + "method_uuid": "", + "method_name": "Set default S/MIME config for a send-as alias", + "canonical_id": "gmail.user.setDefault.create" + }, + { + "method_uuid": "", + "method_name": "Set up push notifications for a user's Gmail mailbox", + "canonical_id": "gmail.user.watch.create" + }, + { + "method_uuid": "", + "method_name": "Stop push notifications for a Gmail user", + "canonical_id": "gmail.user.stop" + }, + { + "method_uuid": "", + "method_name": "Trash a specific email thread and its messages", + "canonical_id": "gmail.user.trash.create1" + }, + { + "method_uuid": "", + "method_name": "Trash a specific Gmail message by its ID", + "canonical_id": "gmail.user.trash.create" + }, + { + "method_uuid": "", + "method_name": "Untrash a specific Gmail thread and its messages", + "canonical_id": "gmail.user.untrash.create1" + }, + { + "method_uuid": "", + "method_name": "Update a draft email with new content", + "canonical_id": "gmail.user.drafts.update" + }, + { + "method_uuid": "", + "method_name": "Update a Gmail label", + "canonical_id": "gmail.user.labels.update" + }, + { + "method_uuid": "", + "method_name": "Update a Gmail label", + "canonical_id": "gmail.user.labels.update1" + }, + { + "method_uuid": "", + "method_name": "Update a send-as alias for a Gmail account", + "canonical_id": "gmail.user.sendAs.update" + }, + { + "method_uuid": "", + "method_name": "Update a send-as alias for a user", + "canonical_id": "gmail.user.sendAs.update1" + }, + { + "method_uuid": "", + "method_name": "Update auto-forwarding settings for a Gmail account", + "canonical_id": "gmail.user.autoForwarding.update" + }, + { + "method_uuid": "", + "method_name": "Update client-side encryption identity with a new key pair", + "canonical_id": "gmail.user.identities.update" + }, + { + "method_uuid": "", + "method_name": "Update IMAP settings for a Gmail account", + "canonical_id": "gmail.user.imap.update" + }, + { + "method_uuid": "", + "method_name": "Update POP settings for a Gmail account", + "canonical_id": "gmail.user.pop.update" + }, + { + "method_uuid": "", + "method_name": "Update thread labels", + "canonical_id": "gmail.user.modify.create1" + }, + { + "method_uuid": "", + "method_name": "Update user's Gmail display language settings", + "canonical_id": "gmail.user.language.update" + }, + { + "method_uuid": "", + "method_name": "Update vacation responder settings", + "canonical_id": "gmail.user.vacation.update" + }, + { + "method_uuid": "", + "method_name": "Upload client-side encryption S/MIME keypairs for users", + "canonical_id": "gmail.user.keypairs.create" + }, + { + "method_uuid": "", + "method_name": "Upload S/MIME config for a send-as alias", + "canonical_id": "gmail.user.smimeInfo.create" + }, + { + "method_uuid": "", + "method_name": "Verify a Gmail send-as alias email address", + "canonical_id": "gmail.user.verify.create" + } + ] +} \ No newline at end of file diff --git a/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmail/v1/wrekenfile.yaml b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmail/v1/wrekenfile.yaml new file mode 100644 index 0000000..962b054 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmail/v1/wrekenfile.yaml @@ -0,0 +1,5273 @@ +VERSION: 2.0.2 +DEFAULTS: + bearer_token: BEARER + w_base_url: https://gmail.googleapis.com +METHODS: + gmail.user.drafts.get: + SUMMARY: Lists the drafts in the user's mailbox + DESC: Lists the drafts in the user's mailbox. For more information, see [Create and send draft emails](https://developers.google.com/workspace/gmail/api/guides/drafts). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/drafts + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - includeSpamTrash: + TYPE: BOOL + REQUIRED: false + LOCATION: query + DEFAULT: false + - maxResults: + TYPE: INT + REQUIRED: false + LOCATION: query + DEFAULT: 100 + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - q: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(ListDraftsResponse) + RETURNVAR: gmail_user_drafts_get + STATUS: 200 + CANONICAL_ID: gmail.user.drafts.get + gmail.user.drafts.create: + SUMMARY: Creates a draft with the `DRAFT` label + DESC: Creates a draft with the `DRAFT` label. For more information, see [Create and send draft emails](https://developers.google.com/workspace/gmail/api/guides/drafts). + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/drafts + HEADERS: + Content-Type: message/cpim + Authorization: bearer_token + CONTENT_TYPE: message/cpim + ACCEPT: application/json + BODY: + TYPE: STRUCT(Draft) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.action.compose + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.action.compose + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(Draft) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Draft) + RETURNVAR: gmail_user_drafts_create + STATUS: 200 + CANONICAL_ID: gmail.user.drafts.create + gmail.user.send.create: + SUMMARY: Sends the specified, existing draft to the recipients in the `To`, `Cc`, and `Bcc` headers + DESC: Sends the specified, existing draft to the recipients in the `To`, `Cc`, and `Bcc` headers. For more information, see [Create and send draft emails](https://developers.google.com/workspace/gmail/api/guides/drafts). + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/drafts/send + HEADERS: + Content-Type: message/cpim + Authorization: bearer_token + CONTENT_TYPE: message/cpim + ACCEPT: application/json + BODY: + TYPE: STRUCT(Draft) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.action.compose + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.action.compose + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(Draft) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Message) + RETURNVAR: gmail_user_send_create + STATUS: 200 + CANONICAL_ID: gmail.user.send.create + gmail.user.drafts.delete: + SUMMARY: Immediately and permanently deletes the specified draft + DESC: Immediately and permanently deletes the specified draft. Does not simply trash it. For more information, see [Create and send draft emails](https://developers.google.com/workspace/gmail/api/guides/drafts). + HTTP: + METHOD: DELETE + ENDPOINT: /gmail/v1/users/{userId}/drafts/{id} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.action.compose + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.action.compose + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: gmail.user.drafts.delete + gmail.user.drafts.get1: + SUMMARY: Gets the specified draft + DESC: Gets the specified draft. For more information, see [Create and send draft emails](https://developers.google.com/workspace/gmail/api/guides/drafts). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/drafts/{id} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + - format: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - minimal + - full + - raw + - metadata + DEFAULT: full + RETURNS: + - RETURNTYPE: STRUCT(Draft) + RETURNVAR: gmail_user_drafts_get1 + STATUS: 200 + CANONICAL_ID: gmail.user.drafts.get1 + gmail.user.drafts.update: + SUMMARY: Replaces a draft's content + DESC: Replaces a draft's content. For more information, see [Create and send draft emails](https://developers.google.com/workspace/gmail/api/guides/drafts). + HTTP: + METHOD: PUT + ENDPOINT: /gmail/v1/users/{userId}/drafts/{id} + HEADERS: + Content-Type: message/cpim + Authorization: bearer_token + CONTENT_TYPE: message/cpim + ACCEPT: application/json + BODY: + TYPE: STRUCT(Draft) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.action.compose + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.action.compose + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(Draft) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Draft) + RETURNVAR: gmail_user_drafts_update + STATUS: 200 + CANONICAL_ID: gmail.user.drafts.update + gmail.user.history.get: + SUMMARY: Lists the history of all changes to the given mailbox + DESC: Lists the history of all changes to the given mailbox. History results are returned in chronological order (increasing `historyId`). For more information, see [Synchronize clients with Gmail](https://developers.google.com/workspace/gmail/api/guides/sync). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/history + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - historyTypes: + TYPE: "[]ANY" + REQUIRED: false + LOCATION: query + STYLE: multi + - labelId: + TYPE: STRING + REQUIRED: false + LOCATION: query + - maxResults: + TYPE: INT + REQUIRED: false + LOCATION: query + DEFAULT: 100 + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - startHistoryId: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(ListHistoryResponse) + RETURNVAR: gmail_user_history_get + STATUS: 200 + CANONICAL_ID: gmail.user.history.get + gmail.user.labels.get: + SUMMARY: Lists all labels in the user's mailbox + DESC: Lists all labels in the user's mailbox. For more information, see [Manage labels](https://developers.google.com/workspace/gmail/api/guides/labels). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/labels + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.labels + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.labels + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + RETURNS: + - RETURNTYPE: STRUCT(ListLabelsResponse) + RETURNVAR: gmail_user_labels_get + STATUS: 200 + CANONICAL_ID: gmail.user.labels.get + gmail.user.labels.create: + SUMMARY: Creates a label + DESC: Creates a label. For more information, see [Manage labels](https://developers.google.com/workspace/gmail/api/guides/labels). + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/labels + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Label) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.labels + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.labels + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(Label) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Label) + RETURNVAR: gmail_user_labels_create + STATUS: 200 + CANONICAL_ID: gmail.user.labels.create + gmail.user.labels.delete: + SUMMARY: Immediately and permanently deletes the specified label and removes it from any messages and threads that it's applied to + DESC: Immediately and permanently deletes the specified label and removes it from any messages and threads that it's applied to. For more information, see [Manage labels](https://developers.google.com/workspace/gmail/api/guides/labels). + HTTP: + METHOD: DELETE + ENDPOINT: /gmail/v1/users/{userId}/labels/{id} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.labels + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.labels + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: gmail.user.labels.delete + gmail.user.labels.get1: + SUMMARY: Gets the specified label + DESC: Gets the specified label. For more information, see [Manage labels](https://developers.google.com/workspace/gmail/api/guides/labels). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/labels/{id} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.labels + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.labels + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(Label) + RETURNVAR: gmail_user_labels_get1 + STATUS: 200 + CANONICAL_ID: gmail.user.labels.get1 + gmail.user.labels.update: + SUMMARY: Patch the specified label + DESC: Patch the specified label. For more information, see [Manage labels](https://developers.google.com/workspace/gmail/api/guides/labels). + HTTP: + METHOD: PATCH + ENDPOINT: /gmail/v1/users/{userId}/labels/{id} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Label) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.labels + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.labels + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(Label) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Label) + RETURNVAR: gmail_user_labels_update + STATUS: 200 + CANONICAL_ID: gmail.user.labels.update + gmail.user.labels.update1: + SUMMARY: Updates the specified label + DESC: Updates the specified label. For more information, see [Manage labels](https://developers.google.com/workspace/gmail/api/guides/labels). + HTTP: + METHOD: PUT + ENDPOINT: /gmail/v1/users/{userId}/labels/{id} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Label) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.labels + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.labels + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(Label) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Label) + RETURNVAR: gmail_user_labels_update1 + STATUS: 200 + CANONICAL_ID: gmail.user.labels.update1 + gmail.user.messages.get: + SUMMARY: Lists the messages in the user's mailbox + DESC: Lists the messages in the user's mailbox. For more information, see [List Gmail messages](https://developers.google.com/workspace/gmail/api/guides/list-messages). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/messages + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - includeSpamTrash: + TYPE: BOOL + REQUIRED: false + LOCATION: query + DEFAULT: false + - labelIds: + TYPE: "[]ANY" + REQUIRED: false + LOCATION: query + STYLE: multi + - maxResults: + TYPE: INT + REQUIRED: false + LOCATION: query + DEFAULT: 100 + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - q: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(ListMessagesResponse) + RETURNVAR: gmail_user_messages_get + STATUS: 200 + CANONICAL_ID: gmail.user.messages.get + gmail.user.messages.create: + SUMMARY: Directly inserts a message into only this user's mailbox similar to `IMAP APPEND`, bypassing most scanning and classification + DESC: Directly inserts a message into only this user's mailbox similar to `IMAP APPEND`, bypassing most scanning and classification. Does not send a message. For more information, see [Create and send email messages](https://developers.google.com/workspace/gmail/api/guides/sending). + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/messages + HEADERS: + Content-Type: message/cpim + Authorization: bearer_token + CONTENT_TYPE: message/cpim + ACCEPT: application/json + BODY: + TYPE: STRUCT(Message) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.insert + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.insert + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - deleted: + TYPE: BOOL + REQUIRED: false + LOCATION: query + DEFAULT: false + - internalDateSource: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - receivedTime + - dateHeader + DEFAULT: receivedTime + - body: + TYPE: STRUCT(Message) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Message) + RETURNVAR: gmail_user_messages_create + STATUS: 200 + CANONICAL_ID: gmail.user.messages.create + gmail.user.batchDelete.create: + SUMMARY: Deletes many messages by message ID + DESC: Deletes many messages by message ID. Provides no guarantees that messages were not already deleted or even existed at all. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/messages/batchDelete + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(BatchDeleteMessagesRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(BatchDeleteMessagesRequest) + REQUIRED: false + LOCATION: body + CANONICAL_ID: gmail.user.batchDelete.create + gmail.user.batchModify.create: + SUMMARY: Modifies the labels and the Classification Label values on the specified messages + DESC: Modifies the labels and the Classification Label values on the specified messages. For administrators modifying messages for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.modify.restricted` scope. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/messages/batchModify + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(BatchModifyMessagesRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(BatchModifyMessagesRequest) + REQUIRED: false + LOCATION: body + CANONICAL_ID: gmail.user.batchModify.create + gmail.user.import.create: + SUMMARY: Imports a message into only this user's mailbox, with standard email delivery scanning and classification similar to receiving via SMTP + DESC: Imports a message into only this user's mailbox, with standard email delivery scanning and classification similar to receiving via SMTP. This method doesn't perform SPF checks, so it might not work for some spam messages, such as those attempting to perform domain spoofing. This method does not send a message. Note that the maximum size of the message is 150 MB. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/messages/import + HEADERS: + Content-Type: message/cpim + Authorization: bearer_token + CONTENT_TYPE: message/cpim + ACCEPT: application/json + BODY: + TYPE: STRUCT(Message) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.insert + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.insert + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - deleted: + TYPE: BOOL + REQUIRED: false + LOCATION: query + DEFAULT: false + - internalDateSource: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - receivedTime + - dateHeader + DEFAULT: dateHeader + - neverMarkSpam: + TYPE: BOOL + REQUIRED: false + LOCATION: query + DEFAULT: false + - processForCalendar: + TYPE: BOOL + REQUIRED: false + LOCATION: query + DEFAULT: false + - body: + TYPE: STRUCT(Message) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Message) + RETURNVAR: gmail_user_import_create + STATUS: 200 + CANONICAL_ID: gmail.user.import.create + gmail.user.send.create1: + SUMMARY: Sends the specified message to the recipients in the `To`, `Cc`, and `Bcc` headers + DESC: Sends the specified message to the recipients in the `To`, `Cc`, and `Bcc` headers. For more information, see [Create and send email messages](https://developers.google.com/workspace/gmail/api/guides/sending). + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/messages/send + HEADERS: + Content-Type: message/cpim + Authorization: bearer_token + CONTENT_TYPE: message/cpim + ACCEPT: application/json + BODY: + TYPE: STRUCT(Message) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.action.compose + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.action.compose + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.send + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.send + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(Message) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Message) + RETURNVAR: gmail_user_send_create1 + STATUS: 200 + CANONICAL_ID: gmail.user.send.create1 + gmail.user.messages.delete: + SUMMARY: Immediately and permanently deletes the specified message + DESC: Immediately and permanently deletes the specified message. This operation cannot be undone. Prefer `messages.trash` instead. + HTTP: + METHOD: DELETE + ENDPOINT: /gmail/v1/users/{userId}/messages/{id} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: gmail.user.messages.delete + gmail.user.messages.get1: + SUMMARY: Gets the specified message. + DESC: Gets the specified message. + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/messages/{id} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.action + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.action + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.metadata + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.metadata + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + - format: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - minimal + - full + - raw + - metadata + DEFAULT: full + - metadataHeaders: + TYPE: "[]ANY" + REQUIRED: false + LOCATION: query + STYLE: multi + RETURNS: + - RETURNTYPE: STRUCT(Message) + RETURNVAR: gmail_user_messages_get1 + STATUS: 200 + CANONICAL_ID: gmail.user.messages.get1 + gmail.user.modify.create: + SUMMARY: Modifies the labels and the Classification Label values on the specified message + DESC: Modifies the labels and the Classification Label values on the specified message. For administrators modifying message for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.modify.restricted` scope. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/messages/{id}/modify + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(ModifyMessageRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(ModifyMessageRequest) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Message) + RETURNVAR: gmail_user_modify_create + STATUS: 200 + CANONICAL_ID: gmail.user.modify.create + gmail.user.trash.create: + SUMMARY: Moves the specified message to the trash. + DESC: Moves the specified message to the trash. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/messages/{id}/trash + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(Message) + RETURNVAR: gmail_user_trash_create + STATUS: 200 + CANONICAL_ID: gmail.user.trash.create + gmail.user.untrash.create: + SUMMARY: Removes the specified message from the trash. + DESC: Removes the specified message from the trash. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/messages/{id}/untrash + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(Message) + RETURNVAR: gmail_user_untrash_create + STATUS: 200 + CANONICAL_ID: gmail.user.untrash.create + gmail.user.attachments.get: + SUMMARY: Gets the specified message attachment. + DESC: Gets the specified message attachment. + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/messages/{messageId}/attachments/{id} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.action + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.action + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - messageId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(MessagePartBody) + RETURNVAR: gmail_user_attachments_get + STATUS: 200 + CANONICAL_ID: gmail.user.attachments.get + gmail.user.profile.get: + SUMMARY: Gets the current user's Gmail profile. + DESC: Gets the current user's Gmail profile. + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/profile + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.compose + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + RETURNS: + - RETURNTYPE: STRUCT(Profile) + RETURNVAR: gmail_user_profile_get + STATUS: 200 + CANONICAL_ID: gmail.user.profile.get + gmail.user.autoForwarding.get: + SUMMARY: Gets the auto-forwarding setting for the specified account + DESC: Gets the auto-forwarding setting for the specified account. For more information, see [Manage email forwarding](https://developers.google.com/workspace/gmail/api/guides/forwarding_settings). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/autoForwarding + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + RETURNS: + - RETURNTYPE: STRUCT(AutoForwarding) + RETURNVAR: gmail_user_autoForwarding_get + STATUS: 200 + CANONICAL_ID: gmail.user.autoForwarding.get + gmail.user.autoForwarding.update: + SUMMARY: Updates the auto-forwarding setting for the specified account + DESC: Updates the auto-forwarding setting for the specified account. A verified forwarding address must be specified when auto-forwarding is enabled. For more information, see [Manage email forwarding](https://developers.google.com/workspace/gmail/api/guides/forwarding_settings). This method is only available to service account clients that have been delegated domain-wide authority. + HTTP: + METHOD: PUT + ENDPOINT: /gmail/v1/users/{userId}/settings/autoForwarding + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(AutoForwarding) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(AutoForwarding) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(AutoForwarding) + RETURNVAR: gmail_user_autoForwarding_update + STATUS: 200 + CANONICAL_ID: gmail.user.autoForwarding.update + gmail.user.identities.get: + SUMMARY: Lists the client-side encrypted identities for an authenticated user + DESC: Lists the client-side encrypted identities for an authenticated user. For administrators managing identities and keypairs for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.settings.basic` scope. For users managing their own identities and keypairs, requests require [hardware key encryption](https://support.google.com/a/answer/14153163) turned on and configured. + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/cse/identities + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - pageSize: + TYPE: INT + REQUIRED: false + LOCATION: query + DEFAULT: 20 + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(ListCseIdentitiesResponse) + RETURNVAR: gmail_user_identities_get + STATUS: 200 + CANONICAL_ID: gmail.user.identities.get + gmail.user.identities.create: + SUMMARY: Creates and configures a client-side encryption identity that's authorized to send mail from the user account + DESC: Creates and configures a client-side encryption identity that's authorized to send mail from the user account. Google publishes the S/MIME certificate to a shared domain-wide directory so that people within a Google Workspace organization can encrypt and send mail to the identity. For administrators managing identities and keypairs for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.settings.basic` scope. For users managing their own identities and keypairs, requests require [hardware key encryption](https://support.google.com/a/answer/14153163) turned on and configured. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/settings/cse/identities + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(CseIdentity) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(CseIdentity) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(CseIdentity) + RETURNVAR: gmail_user_identities_create + STATUS: 200 + CANONICAL_ID: gmail.user.identities.create + gmail.user.identities.delete: + SUMMARY: Deletes a client-side encryption identity + DESC: Deletes a client-side encryption identity. The authenticated user can no longer use the identity to send encrypted messages. You cannot restore the identity after you delete it. Instead, use the CreateCseIdentity method to create another identity with the same configuration. For administrators managing identities and keypairs for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.settings.basic` scope. For users managing their own identities and keypairs, requests require [hardware key encryption](https://support.google.com/a/answer/14153163) turned on and configured. + HTTP: + METHOD: DELETE + ENDPOINT: /gmail/v1/users/{userId}/settings/cse/identities/{cseEmailAddress} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - cseEmailAddress: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: gmail.user.identities.delete + gmail.user.identities.get1: + SUMMARY: Retrieves a client-side encryption identity configuration + DESC: Retrieves a client-side encryption identity configuration. For administrators managing identities and keypairs for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.settings.basic` scope. For users managing their own identities and keypairs, requests require [hardware key encryption](https://support.google.com/a/answer/14153163) turned on and configured. + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/cse/identities/{cseEmailAddress} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - cseEmailAddress: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(CseIdentity) + RETURNVAR: gmail_user_identities_get1 + STATUS: 200 + CANONICAL_ID: gmail.user.identities.get1 + gmail.user.identities.update: + SUMMARY: Associates a different key pair with an existing client-side encryption identity + DESC: Associates a different key pair with an existing client-side encryption identity. The updated key pair must validate against Google's [S/MIME certificate profiles](https://support.google.com/a/answer/7300887). For administrators managing identities and keypairs for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.settings.basic` scope. For users managing their own identities and keypairs, requests require [hardware key encryption](https://support.google.com/a/answer/14153163) turned on and configured. + HTTP: + METHOD: PATCH + ENDPOINT: /gmail/v1/users/{userId}/settings/cse/identities/{emailAddress} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(CseIdentity) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - emailAddress: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(CseIdentity) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(CseIdentity) + RETURNVAR: gmail_user_identities_update + STATUS: 200 + CANONICAL_ID: gmail.user.identities.update + gmail.user.keypairs.get: + SUMMARY: Lists client-side encryption key pairs for an authenticated user + DESC: Lists client-side encryption key pairs for an authenticated user. For administrators managing identities and keypairs for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.settings.basic` scope. For users managing their own identities and keypairs, requests require [hardware key encryption](https://support.google.com/a/answer/14153163) turned on and configured. + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/cse/keypairs + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - pageSize: + TYPE: INT + REQUIRED: false + LOCATION: query + DEFAULT: 20 + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(ListCseKeyPairsResponse) + RETURNVAR: gmail_user_keypairs_get + STATUS: 200 + CANONICAL_ID: gmail.user.keypairs.get + gmail.user.keypairs.create: + SUMMARY: Creates and uploads a client-side encryption S/MIME public key certificate chain and private key metadata for the authenticated user + DESC: Creates and uploads a client-side encryption S/MIME public key certificate chain and private key metadata for the authenticated user. For administrators managing identities and keypairs for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.settings.basic` scope. For users managing their own identities and keypairs, requests require [hardware key encryption](https://support.google.com/a/answer/14153163) turned on and configured. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/settings/cse/keypairs + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(CseKeyPair) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(CseKeyPair) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(CseKeyPair) + RETURNVAR: gmail_user_keypairs_create + STATUS: 200 + CANONICAL_ID: gmail.user.keypairs.create + gmail.user.keypairs.get1: + SUMMARY: Retrieves an existing client-side encryption key pair + DESC: Retrieves an existing client-side encryption key pair. For administrators managing identities and keypairs for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.settings.basic` scope. For users managing their own identities and keypairs, requests require [hardware key encryption](https://support.google.com/a/answer/14153163) turned on and configured. + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/cse/keypairs/{keyPairId} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - keyPairId: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(CseKeyPair) + RETURNVAR: gmail_user_keypairs_get1 + STATUS: 200 + CANONICAL_ID: gmail.user.keypairs.get1 + gmail.user.keyPairIddisable.create: + SUMMARY: Turns off a client-side encryption key pair + DESC: Turns off a client-side encryption key pair. The authenticated user can no longer use the key pair to decrypt incoming CSE message texts or sign outgoing CSE mail. To regain access, use the EnableCseKeyPair to turn on the key pair. After 30 days, you can permanently delete the key pair by using the ObliterateCseKeyPair method. For administrators managing identities and keypairs for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.settings.basic` scope. For users managing their own identities and keypairs, requests require [hardware key encryption](https://support.google.com/a/answer/14153163) turned on and configured. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/settings/cse/keypairs/{keyPairId}:disable + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(DisableCseKeyPairRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - keyPairId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(DisableCseKeyPairRequest) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(CseKeyPair) + RETURNVAR: gmail_user_keyPairIddisable_create + STATUS: 200 + CANONICAL_ID: gmail.user.keyPairIddisable.create + gmail.user.keyPairIdenable.create: + SUMMARY: Turns on a client-side encryption key pair that was turned off + DESC: Turns on a client-side encryption key pair that was turned off. The key pair becomes active again for any associated client-side encryption identities. For administrators managing identities and keypairs for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.settings.basic` scope. For users managing their own identities and keypairs, requests require [hardware key encryption](https://support.google.com/a/answer/14153163) turned on and configured. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/settings/cse/keypairs/{keyPairId}:enable + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(EnableCseKeyPairRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - keyPairId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(EnableCseKeyPairRequest) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(CseKeyPair) + RETURNVAR: gmail_user_keyPairIdenable_create + STATUS: 200 + CANONICAL_ID: gmail.user.keyPairIdenable.create + gmail.user.keyPairIdobliterate.create: + SUMMARY: Deletes a client-side encryption key pair permanently and immediately + DESC: Deletes a client-side encryption key pair permanently and immediately. You can only permanently delete key pairs that have been turned off for more than 30 days. To turn off a key pair, use the DisableCseKeyPair method. Gmail can't restore or decrypt any messages that were encrypted by an obliterated key. Authenticated users and Google Workspace administrators lose access to reading the encrypted messages. For administrators managing identities and keypairs for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.settings.basic` scope. For users managing their own identities and keypairs, requests require [hardware key encryption](https://support.google.com/a/answer/14153163) turned on and configured. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/settings/cse/keypairs/{keyPairId}:obliterate + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(ObliterateCseKeyPairRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - keyPairId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(ObliterateCseKeyPairRequest) + REQUIRED: false + LOCATION: body + CANONICAL_ID: gmail.user.keyPairIdobliterate.create + gmail.user.delegates.get: + SUMMARY: Lists the delegates for the specified account + DESC: Lists the delegates for the specified account. For more information, see [Manage delegates](https://developers.google.com/workspace/gmail/api/guides/delegate_settings). This method is only available to service account clients that have been delegated domain-wide authority. + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/delegates + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + RETURNS: + - RETURNTYPE: STRUCT(ListDelegatesResponse) + RETURNVAR: gmail_user_delegates_get + STATUS: 200 + CANONICAL_ID: gmail.user.delegates.get + gmail.user.delegates.create: + SUMMARY: Adds a delegate with its verification status set directly to `accepted`, without sending any verification email + DESC: Adds a delegate with its verification status set directly to `accepted`, without sending any verification email. The delegate user must be a member of the same Google Workspace organization as the delegator user. For more information, see [Manage delegates](https://developers.google.com/workspace/gmail/api/guides/delegate_settings). Gmail imposes limitations on the number of delegates and delegators each user in a Google Workspace organization can have. These limits depend on your organization, but in general each user can have up to 25 delegates and up to 10 delegators. A delegate user must be referred to by their primary email address, and not an email alias. When a new delegate is created, there may be up to a one minute delay before the new delegate is available for use. This method is only available to service account clients that have been delegated domain-wide authority. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/settings/delegates + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Delegate) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(Delegate) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Delegate) + RETURNVAR: gmail_user_delegates_create + STATUS: 200 + CANONICAL_ID: gmail.user.delegates.create + gmail.user.delegates.delete: + SUMMARY: Removes the specified delegate (which can be of any verification status), and revokes any verification that may have been required for using it + DESC: Removes the specified delegate (which can be of any verification status), and revokes any verification that may have been required for using it. For more information, see [Manage delegates](https://developers.google.com/workspace/gmail/api/guides/delegate_settings). A delegate user must be referred to by their primary email address, and not an email alias. This method is only available to service account clients that have been delegated domain-wide authority. + HTTP: + METHOD: DELETE + ENDPOINT: /gmail/v1/users/{userId}/settings/delegates/{delegateEmail} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - delegateEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: gmail.user.delegates.delete + gmail.user.delegates.get1: + SUMMARY: Gets the specified delegate + DESC: Gets the specified delegate. For more information, see [Manage delegates](https://developers.google.com/workspace/gmail/api/guides/delegate_settings). A delegate user must be referred to by their primary email address, and not an email alias. This method is only available to service account clients that have been delegated domain-wide authority. + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/delegates/{delegateEmail} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - delegateEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(Delegate) + RETURNVAR: gmail_user_delegates_get1 + STATUS: 200 + CANONICAL_ID: gmail.user.delegates.get1 + gmail.user.filters.get: + SUMMARY: Lists the message filters of a Gmail user + DESC: Lists the message filters of a Gmail user. For more information, see [Manage Gmail filters](https://developers.google.com/workspace/gmail/api/guides/filter_settings). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/filters + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + RETURNS: + - RETURNTYPE: STRUCT(ListFiltersResponse) + RETURNVAR: gmail_user_filters_get + STATUS: 200 + CANONICAL_ID: gmail.user.filters.get + gmail.user.filters.create: + SUMMARY: Creates a filter + DESC: "Creates a filter. Note: you can only create a maximum of 1,000 filters. For more information, see [Manage Gmail filters](https://developers.google.com/workspace/gmail/api/guides/filter_settings)." + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/settings/filters + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Filter) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(Filter) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Filter) + RETURNVAR: gmail_user_filters_create + STATUS: 200 + CANONICAL_ID: gmail.user.filters.create + gmail.user.filters.delete: + SUMMARY: Immediately and permanently deletes the specified filter + DESC: Immediately and permanently deletes the specified filter. For more information, see [Manage Gmail filters](https://developers.google.com/workspace/gmail/api/guides/filter_settings). + HTTP: + METHOD: DELETE + ENDPOINT: /gmail/v1/users/{userId}/settings/filters/{id} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: gmail.user.filters.delete + gmail.user.filters.get1: + SUMMARY: Gets a filter + DESC: Gets a filter. For more information, see [Manage Gmail filters](https://developers.google.com/workspace/gmail/api/guides/filter_settings). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/filters/{id} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(Filter) + RETURNVAR: gmail_user_filters_get1 + STATUS: 200 + CANONICAL_ID: gmail.user.filters.get1 + gmail.user.forwardingAddresses.get: + SUMMARY: Lists the forwarding addresses for the specified account + DESC: Lists the forwarding addresses for the specified account. For more information, see [Manage email forwarding](https://developers.google.com/workspace/gmail/api/guides/forwarding_settings). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/forwardingAddresses + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + RETURNS: + - RETURNTYPE: STRUCT(ListForwardingAddressesResponse) + RETURNVAR: gmail_user_forwardingAddresses_get + STATUS: 200 + CANONICAL_ID: gmail.user.forwardingAddresses.get + gmail.user.forwardingAddresses.create: + SUMMARY: Creates a forwarding address + DESC: Creates a forwarding address. If ownership verification is required, a message will be sent to the recipient and the resource's verification status will be set to `pending`; otherwise, the resource will be created with verification status set to `accepted`. For more information, see [Manage email forwarding](https://developers.google.com/workspace/gmail/api/guides/forwarding_settings). This method is only available to service account clients that have been delegated domain-wide authority. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/settings/forwardingAddresses + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(ForwardingAddress) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(ForwardingAddress) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(ForwardingAddress) + RETURNVAR: gmail_user_forwardingAddresses_create + STATUS: 200 + CANONICAL_ID: gmail.user.forwardingAddresses.create + gmail.user.forwardingAddresses.delete: + SUMMARY: Deletes the specified forwarding address and revokes any verification that may have been required + DESC: Deletes the specified forwarding address and revokes any verification that may have been required. For more information, see [Manage email forwarding](https://developers.google.com/workspace/gmail/api/guides/forwarding_settings). This method is only available to service account clients that have been delegated domain-wide authority. + HTTP: + METHOD: DELETE + ENDPOINT: /gmail/v1/users/{userId}/settings/forwardingAddresses/{forwardingEmail} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - forwardingEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: gmail.user.forwardingAddresses.delete + gmail.user.forwardingAddresses.get1: + SUMMARY: Gets the specified forwarding address + DESC: Gets the specified forwarding address. For more information, see [Manage email forwarding](https://developers.google.com/workspace/gmail/api/guides/forwarding_settings). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/forwardingAddresses/{forwardingEmail} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - forwardingEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(ForwardingAddress) + RETURNVAR: gmail_user_forwardingAddresses_get1 + STATUS: 200 + CANONICAL_ID: gmail.user.forwardingAddresses.get1 + gmail.user.imap.get: + SUMMARY: Gets IMAP settings + DESC: Gets IMAP settings. For more information, see [Configure POP and IMAP settings with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/pop_imap_settings). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/imap + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + RETURNS: + - RETURNTYPE: STRUCT(ImapSettings) + RETURNVAR: gmail_user_imap_get + STATUS: 200 + CANONICAL_ID: gmail.user.imap.get + gmail.user.imap.update: + SUMMARY: Updates IMAP settings + DESC: Updates IMAP settings. For more information, see [Configure POP and IMAP settings with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/pop_imap_settings). + HTTP: + METHOD: PUT + ENDPOINT: /gmail/v1/users/{userId}/settings/imap + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(ImapSettings) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(ImapSettings) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(ImapSettings) + RETURNVAR: gmail_user_imap_update + STATUS: 200 + CANONICAL_ID: gmail.user.imap.update + gmail.user.language.get: + SUMMARY: Gets language settings + DESC: Gets language settings. For more information, see [Manage language settings](https://developers.google.com/workspace/gmail/api/guides/language-settings). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/language + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + RETURNS: + - RETURNTYPE: STRUCT(LanguageSettings) + RETURNVAR: gmail_user_language_get + STATUS: 200 + CANONICAL_ID: gmail.user.language.get + gmail.user.language.update: + SUMMARY: Updates language settings + DESC: Updates language settings. For more information, see [Manage language settings](https://developers.google.com/workspace/gmail/api/guides/language-settings). If successful, the return object contains the `displayLanguage` that was saved for the user, which may differ from the value passed into the request. This is because the requested `displayLanguage` may not be directly supported by Gmail but have a close variant that is, and so the variant may be chosen and saved instead. + HTTP: + METHOD: PUT + ENDPOINT: /gmail/v1/users/{userId}/settings/language + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(LanguageSettings) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(LanguageSettings) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(LanguageSettings) + RETURNVAR: gmail_user_language_update + STATUS: 200 + CANONICAL_ID: gmail.user.language.update + gmail.user.pop.get: + SUMMARY: Gets POP settings + DESC: Gets POP settings. For more information, see [Configure POP and IMAP settings with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/pop_imap_settings). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/pop + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + RETURNS: + - RETURNTYPE: STRUCT(PopSettings) + RETURNVAR: gmail_user_pop_get + STATUS: 200 + CANONICAL_ID: gmail.user.pop.get + gmail.user.pop.update: + SUMMARY: Updates POP settings + DESC: Updates POP settings. For more information, see [Configure POP and IMAP settings with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/pop_imap_settings). + HTTP: + METHOD: PUT + ENDPOINT: /gmail/v1/users/{userId}/settings/pop + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(PopSettings) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(PopSettings) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(PopSettings) + RETURNVAR: gmail_user_pop_update + STATUS: 200 + CANONICAL_ID: gmail.user.pop.update + gmail.user.sendAs.get: + SUMMARY: Lists the send-as aliases for the specified account + DESC: Lists the send-as aliases for the specified account. The result includes the primary send-as address associated with the account as well as any custom "from" aliases. For more information, see [Manage aliases and signatures with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/alias_and_signature_settings). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/sendAs + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + RETURNS: + - RETURNTYPE: STRUCT(ListSendAsResponse) + RETURNVAR: gmail_user_sendAs_get + STATUS: 200 + CANONICAL_ID: gmail.user.sendAs.get + gmail.user.sendAs.create: + SUMMARY: Creates a custom "from" send-as alias + DESC: Creates a custom "from" send-as alias. If an SMTP MSA is specified, Gmail will attempt to connect to the SMTP service to validate the configuration before creating the alias. If ownership verification is required for the alias, a message will be sent to the email address and the resource's verification status will be set to `pending`; otherwise, the resource will be created with verification status set to `accepted`. If a signature is provided, Gmail will sanitize the HTML before saving it with the alias. For more information, see [Manage aliases and signatures with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/alias_and_signature_settings). This method is only available to service account clients that have been delegated domain-wide authority. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/settings/sendAs + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(SendAs) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(SendAs) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(SendAs) + RETURNVAR: gmail_user_sendAs_create + STATUS: 200 + CANONICAL_ID: gmail.user.sendAs.create + gmail.user.sendAs.delete: + SUMMARY: Deletes the specified send-as alias + DESC: Deletes the specified send-as alias. Revokes any verification that may have been required for using it. For more information, see [Manage aliases and signatures with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/alias_and_signature_settings). This method is only available to service account clients that have been delegated domain-wide authority. + HTTP: + METHOD: DELETE + ENDPOINT: /gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - sendAsEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: gmail.user.sendAs.delete + gmail.user.sendAs.get1: + SUMMARY: Gets the specified send-as alias + DESC: Gets the specified send-as alias. Fails with an HTTP 404 error if the specified address is not a member of the collection. For more information, see [Manage aliases and signatures with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/alias_and_signature_settings). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - sendAsEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(SendAs) + RETURNVAR: gmail_user_sendAs_get1 + STATUS: 200 + CANONICAL_ID: gmail.user.sendAs.get1 + gmail.user.sendAs.update: + SUMMARY: Patch the specified send-as alias + DESC: Patch the specified send-as alias. For more information, see [Manage aliases and signatures with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/alias_and_signature_settings). + HTTP: + METHOD: PATCH + ENDPOINT: /gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(SendAs) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - sendAsEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(SendAs) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(SendAs) + RETURNVAR: gmail_user_sendAs_update + STATUS: 200 + CANONICAL_ID: gmail.user.sendAs.update + gmail.user.sendAs.update1: + SUMMARY: Updates a send-as alias + DESC: Updates a send-as alias. If a signature is provided, Gmail will sanitize the HTML before saving it with the alias. For more information, see [Manage aliases and signatures with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/alias_and_signature_settings). Addresses other than the primary address for the account can only be updated by service account clients that have been delegated domain-wide authority. + HTTP: + METHOD: PUT + ENDPOINT: /gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(SendAs) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - sendAsEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(SendAs) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(SendAs) + RETURNVAR: gmail_user_sendAs_update1 + STATUS: 200 + CANONICAL_ID: gmail.user.sendAs.update1 + gmail.user.smimeInfo.get: + SUMMARY: Lists S/MIME configs for the specified send-as alias + DESC: Lists S/MIME configs for the specified send-as alias. For more information, see [Manage S/MIME certificates with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/smime_certs). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - sendAsEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(ListSmimeInfoResponse) + RETURNVAR: gmail_user_smimeInfo_get + STATUS: 200 + CANONICAL_ID: gmail.user.smimeInfo.get + gmail.user.smimeInfo.create: + SUMMARY: Insert (upload) the given S/MIME config for the specified send-as alias + DESC: Insert (upload) the given S/MIME config for the specified send-as alias. Note that `pkcs12` format is required for the key. For more information, see [Manage S/MIME certificates with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/smime_certs). + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(SmimeInfo) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - sendAsEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(SmimeInfo) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(SmimeInfo) + RETURNVAR: gmail_user_smimeInfo_create + STATUS: 200 + CANONICAL_ID: gmail.user.smimeInfo.create + gmail.user.smimeInfo.delete: + SUMMARY: Deletes the specified S/MIME config for the specified send-as alias + DESC: Deletes the specified S/MIME config for the specified send-as alias. For more information, see [Manage S/MIME certificates with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/smime_certs). + HTTP: + METHOD: DELETE + ENDPOINT: /gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo/{id} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - sendAsEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: gmail.user.smimeInfo.delete + gmail.user.smimeInfo.get1: + SUMMARY: Gets the specified S/MIME config for the specified send-as alias + DESC: Gets the specified S/MIME config for the specified send-as alias. For more information, see [Manage S/MIME certificates with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/smime_certs). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo/{id} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - sendAsEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(SmimeInfo) + RETURNVAR: gmail_user_smimeInfo_get1 + STATUS: 200 + CANONICAL_ID: gmail.user.smimeInfo.get1 + gmail.user.setDefault.create: + SUMMARY: Sets the default S/MIME config for the specified send-as alias + DESC: Sets the default S/MIME config for the specified send-as alias. For more information, see [Manage S/MIME certificates with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/smime_certs). + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo/{id}/setDefault + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - sendAsEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: gmail.user.setDefault.create + gmail.user.verify.create: + SUMMARY: Sends a verification email to the specified send-as alias address + DESC: Sends a verification email to the specified send-as alias address. The verification status must be `pending`. For more information, see [Manage aliases and signatures with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/alias_and_signature_settings). This method is only available to service account clients that have been delegated domain-wide authority. + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/verify + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.sharing + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - sendAsEmail: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: gmail.user.verify.create + gmail.user.vacation.get: + SUMMARY: Gets vacation responder settings + DESC: Gets vacation responder settings. For more information, see [Manage vacation settings with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/vacation_settings). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/settings/vacation + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + RETURNS: + - RETURNTYPE: STRUCT(VacationSettings) + RETURNVAR: gmail_user_vacation_get + STATUS: 200 + CANONICAL_ID: gmail.user.vacation.get + gmail.user.vacation.update: + SUMMARY: Updates vacation responder settings + DESC: Updates vacation responder settings. For more information, see [Manage vacation settings with the Gmail API](https://developers.google.com/workspace/gmail/api/guides/vacation_settings). + HTTP: + METHOD: PUT + ENDPOINT: /gmail/v1/users/{userId}/settings/vacation + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(VacationSettings) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.settings.basic + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(VacationSettings) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(VacationSettings) + RETURNVAR: gmail_user_vacation_update + STATUS: 200 + CANONICAL_ID: gmail.user.vacation.update + gmail.user.stop: + SUMMARY: Turn off push notification delivery for the given user mailbox + DESC: Turn off push notification delivery for the given user mailbox. For more information, see [Configure push notifications in Gmail API](https://developers.google.com/workspace/gmail/api/guides/push). + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/stop + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + CANONICAL_ID: gmail.user.stop + gmail.user.threads.get: + SUMMARY: Lists the threads in the user's mailbox + DESC: Lists the threads in the user's mailbox. For more information, see [Manage threads](https://developers.google.com/workspace/gmail/api/guides/threads). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/threads + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - includeSpamTrash: + TYPE: BOOL + REQUIRED: false + LOCATION: query + DEFAULT: false + - labelIds: + TYPE: "[]ANY" + REQUIRED: false + LOCATION: query + STYLE: multi + - maxResults: + TYPE: INT + REQUIRED: false + LOCATION: query + DEFAULT: 100 + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - q: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(ListThreadsResponse) + RETURNVAR: gmail_user_threads_get + STATUS: 200 + CANONICAL_ID: gmail.user.threads.get + gmail.user.threads.delete: + SUMMARY: Immediately and permanently deletes the specified thread + DESC: Immediately and permanently deletes the specified thread. Any messages that belong to the thread are also deleted. This operation cannot be undone. Prefer `threads.trash` instead. For more information, see [Manage threads](https://developers.google.com/workspace/gmail/api/guides/threads). + HTTP: + METHOD: DELETE + ENDPOINT: /gmail/v1/users/{userId}/threads/{id} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: gmail.user.threads.delete + gmail.user.threads.get1: + SUMMARY: Gets the specified thread + DESC: Gets the specified thread. For more information, see [Manage threads](https://developers.google.com/workspace/gmail/api/guides/threads). + HTTP: + METHOD: GET + ENDPOINT: /gmail/v1/users/{userId}/threads/{id} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.action + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.action + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.metadata + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.metadata + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.addons.current.message.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + - format: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - full + - metadata + - minimal + DEFAULT: full + - metadataHeaders: + TYPE: "[]ANY" + REQUIRED: false + LOCATION: query + STYLE: multi + RETURNS: + - RETURNTYPE: STRUCT(Thread) + RETURNVAR: gmail_user_threads_get1 + STATUS: 200 + CANONICAL_ID: gmail.user.threads.get1 + gmail.user.modify.create1: + SUMMARY: Modifies the labels applied to the thread + DESC: Modifies the labels applied to the thread. This applies to all messages in the thread. For more information, see [Manage threads](https://developers.google.com/workspace/gmail/api/guides/threads). + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/threads/{id}/modify + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(ModifyThreadRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(ModifyThreadRequest) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Thread) + RETURNVAR: gmail_user_modify_create1 + STATUS: 200 + CANONICAL_ID: gmail.user.modify.create1 + gmail.user.trash.create1: + SUMMARY: Moves the specified thread to the trash + DESC: Moves the specified thread to the trash. Any messages that belong to the thread are also moved to the trash. For more information, see [Manage threads](https://developers.google.com/workspace/gmail/api/guides/threads). + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/threads/{id}/trash + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(Thread) + RETURNVAR: gmail_user_trash_create1 + STATUS: 200 + CANONICAL_ID: gmail.user.trash.create1 + gmail.user.untrash.create1: + SUMMARY: Removes the specified thread from the trash + DESC: Removes the specified thread from the trash. Any messages that belong to the thread are also removed from the trash. For more information, see [Manage threads](https://developers.google.com/workspace/gmail/api/guides/threads). + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/threads/{id}/untrash + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - id: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(Thread) + RETURNVAR: gmail_user_untrash_create1 + STATUS: 200 + CANONICAL_ID: gmail.user.untrash.create1 + gmail.user.watch.create: + SUMMARY: Set up or update a push notification watch on the given user mailbox + DESC: Set up or update a push notification watch on the given user mailbox. For more information, see [Configure push notifications in Gmail API](https://developers.google.com/workspace/gmail/api/guides/push). + HTTP: + METHOD: POST + ENDPOINT: /gmail/v1/users/{userId}/watch + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(WatchRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://mail.google.com/ + Oauth2c: + type: oauth2 + scopes: + - https://mail.google.com/ + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.metadata + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.modify + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/gmail.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - userId: + TYPE: STRING + REQUIRED: true + LOCATION: path + DEFAULT: me + - body: + TYPE: STRUCT(WatchRequest) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(WatchResponse) + RETURNVAR: gmail_user_watch_create + STATUS: 200 + CANONICAL_ID: gmail.user.watch.create +STRUCTS: + AutoForwarding: + - name: disposition + TYPE: STRING + REQUIRED: false + ENUM: + - dispositionUnspecified + - leaveInInbox + - archive + - trash + - markRead + comment: The state that a message should be left in after it has been forwarded. + - name: emailAddress + TYPE: STRING + REQUIRED: false + comment: Email address to which all incoming messages are forwarded. This email address must be a verified member of the forwarding addresses. + - name: enabled + TYPE: BOOL + REQUIRED: false + comment: Whether all incoming mail is automatically forwarded to another address. + BatchDeleteMessagesRequest: + - name: ids + TYPE: "[]STRING" + REQUIRED: false + comment: The IDs of the messages to delete. + BatchModifyMessagesRequest: + - name: addClassificationLabels + TYPE: "[]STRUCT(ClassificationLabelValue)" + REQUIRED: false + comment: A list of Classification Label values to add. If a Classification Label with the same label ID is already applied to the message, fields with existing field IDs will be updated and fields with new field IDs will be added. There's a limit of 20 Classification Label values per request. If the message is already classified and the final total number of Classification Label values exceeds the maximum allowed number of Classification Label values per message, the modification fails. + - name: addLabelIds + TYPE: "[]STRING" + REQUIRED: false + comment: A list of label IDs to add to messages. + - name: ids + TYPE: "[]STRING" + REQUIRED: false + comment: The IDs of the messages to modify. There is a limit of 1000 ids per request. + - name: removeClassificationLabelIds + TYPE: "[]STRING" + REQUIRED: false + comment: A list of Classification Label values to remove from messages. + - name: removeLabelIds + TYPE: "[]STRING" + REQUIRED: false + comment: A list of label IDs to remove from messages. + ClassificationLabelFieldValue: + - name: fieldId + TYPE: STRING + REQUIRED: false + comment: Required. The field ID for the Classification Label Value. Maps to the ID field of the Google Drive `Label.Field` object. + - name: selection + TYPE: STRING + REQUIRED: false + comment: Selection choice ID for the selection option. Should only be set if the field type is `SELECTION` in the Google Drive `Label.Field` object. Maps to the id field of the Google Drive `Label.Field.SelectionOptions` resource. + ClassificationLabelValue: + - name: fields + TYPE: "[]STRUCT(ClassificationLabelFieldValue)" + REQUIRED: false + comment: Field values for the given classification label ID. + - name: labelId + TYPE: STRING + REQUIRED: false + comment: Required. The canonical or raw alphanumeric classification label ID. Maps to the ID field of the Google Drive Label resource. + CseIdentity: + - name: emailAddress + TYPE: STRING + REQUIRED: false + comment: The email address for the sending identity. The email address must be the primary email address of the authenticated user. + - name: primaryKeyPairId + TYPE: STRING + REQUIRED: false + comment: If a key pair is associated, the ID of the key pair, CseKeyPair. + - name: signAndEncryptKeyPairs + TYPE: STRUCT(SignAndEncryptKeyPairs) + REQUIRED: false + comment: The configuration of a CSE identity that uses different key pairs for signing and encryption. + CseKeyPair: + - name: disableTime + TYPE: STRING + REQUIRED: false + FORMAT: google-datetime + READ_ONLY: true + comment: Output only. If a key pair is set to `DISABLED`, the time that the key pair's state changed from `ENABLED` to `DISABLED`. This field is present only when the key pair is in state `DISABLED`. + - name: enablementState + TYPE: STRING + REQUIRED: false + ENUM: + - stateUnspecified + - enabled + - disabled + READ_ONLY: true + comment: Output only. The current state of the key pair. + - name: keyPairId + TYPE: STRING + REQUIRED: false + READ_ONLY: true + comment: Output only. The immutable ID for the client-side encryption S/MIME key pair. + - name: pem + TYPE: STRING + REQUIRED: false + READ_ONLY: true + comment: Output only. The public key and its certificate chain, in [PEM](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) format. + - name: pkcs7 + TYPE: STRING + REQUIRED: false + comment: Input only. The public key and its certificate chain. The chain must be in [PKCS#7](https://en.wikipedia.org/wiki/PKCS_7) format and use PEM encoding and ASCII armor. + - name: privateKeyMetadata + TYPE: "[]STRUCT(CsePrivateKeyMetadata)" + REQUIRED: false + comment: Metadata for instances of this key pair's private key. + - name: subjectEmailAddresses + TYPE: "[]STRING" + REQUIRED: false + READ_ONLY: true + comment: Output only. The email address identities that are specified on the leaf certificate. + CsePrivateKeyMetadata: + - name: hardwareKeyMetadata + TYPE: STRUCT(HardwareKeyMetadata) + REQUIRED: false + comment: Metadata for hardware keys. + - name: kaclsKeyMetadata + TYPE: STRUCT(KaclsKeyMetadata) + REQUIRED: false + comment: Metadata for a private key instance managed by an external key access control list service. + - name: privateKeyMetadataId + TYPE: STRING + REQUIRED: false + READ_ONLY: true + comment: Output only. The immutable ID for the private key metadata instance. + Delegate: + - name: delegateEmail + TYPE: STRING + REQUIRED: false + comment: The email address of the delegate. + - name: verificationStatus + TYPE: STRING + REQUIRED: false + ENUM: + - verificationStatusUnspecified + - accepted + - pending + - rejected + - expired + comment: Indicates whether this address has been verified and can act as a delegate for the account. Read-only. + DisableCseKeyPairRequest: + - name: value + TYPE: ANY + REQUIRED: false + Draft: + - name: id + TYPE: STRING + REQUIRED: false + comment: The immutable ID of the draft. + - name: message + TYPE: STRUCT(Message) + REQUIRED: false + comment: The message content of the draft. + EnableCseKeyPairRequest: + - name: value + TYPE: ANY + REQUIRED: false + Filter: + - name: action + TYPE: STRUCT(FilterAction) + REQUIRED: false + comment: Action that the filter performs. + - name: criteria + TYPE: STRUCT(FilterCriteria) + REQUIRED: false + comment: Matching criteria for the filter. + - name: id + TYPE: STRING + REQUIRED: false + comment: The server assigned ID of the filter. + FilterAction: + - name: addLabelIds + TYPE: "[]STRING" + REQUIRED: false + comment: List of labels to add to the message. + - name: forward + TYPE: STRING + REQUIRED: false + comment: Email address that the message should be forwarded to. This effectively redirects the message to the address specified in this field, maintaining the original sender in the "From" field. + - name: removeLabelIds + TYPE: "[]STRING" + REQUIRED: false + comment: List of labels to remove from the message. + FilterCriteria: + - name: excludeChats + TYPE: BOOL + REQUIRED: false + comment: Whether the response should exclude chats. + - name: from + TYPE: STRING + REQUIRED: false + comment: The sender's display name or email address. + - name: hasAttachment + TYPE: BOOL + REQUIRED: false + comment: Whether the message has any attachment. + - name: negatedQuery + TYPE: STRING + REQUIRED: false + comment: "Only return messages not matching the specified query. Supports the same query format as the Gmail search box. For example, `\"from:someuser@example.com rfc822msgid: is:unread\"`." + - name: query + TYPE: STRING + REQUIRED: false + comment: "Only return messages matching the specified query. Supports the same query format as the Gmail search box. For example, `\"from:someuser@example.com rfc822msgid: is:unread\"`." + - name: size + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: The size of the entire RFC822 message in bytes, including all headers and attachments. + - name: sizeComparison + TYPE: STRING + REQUIRED: false + ENUM: + - unspecified + - smaller + - larger + comment: How the message size in bytes should be in relation to the size field. + - name: subject + TYPE: STRING + REQUIRED: false + comment: Case-insensitive phrase found in the message's subject. Trailing and leading whitespace are be trimmed and adjacent spaces are collapsed. + - name: to + TYPE: STRING + REQUIRED: false + comment: The recipient's display name or email address. Includes recipients in the "to", "cc", and "bcc" header fields. You can use simply the local part of the email address. For example, "example" and "example@" both match "example@gmail.com". This field is case-insensitive. + ForwardingAddress: + - name: forwardingEmail + TYPE: STRING + REQUIRED: false + comment: An email address to which messages can be forwarded. + - name: verificationStatus + TYPE: STRING + REQUIRED: false + ENUM: + - verificationStatusUnspecified + - accepted + - pending + comment: Indicates whether this address has been verified and is usable for forwarding. Read-only. + HardwareKeyMetadata: + - name: description + TYPE: STRING + REQUIRED: false + comment: Description about the hardware key. + History: + - name: id + TYPE: STRING + REQUIRED: false + FORMAT: uint64 + comment: The mailbox sequence ID. + - name: labelsAdded + TYPE: "[]STRUCT(HistoryLabelAdded)" + REQUIRED: false + comment: Labels added to messages in this history record. + - name: labelsRemoved + TYPE: "[]STRUCT(HistoryLabelRemoved)" + REQUIRED: false + comment: Labels removed from messages in this history record. + - name: messages + TYPE: "[]STRUCT(Message)" + REQUIRED: false + comment: List of messages changed in this history record. The fields for specific change types, such as `messagesAdded` may duplicate messages in this field. We recommend using the specific change-type fields instead of this. + - name: messagesAdded + TYPE: "[]STRUCT(HistoryMessageAdded)" + REQUIRED: false + comment: Messages added to the mailbox in this history record. + - name: messagesDeleted + TYPE: "[]STRUCT(HistoryMessageDeleted)" + REQUIRED: false + comment: Messages deleted (not Trashed) from the mailbox in this history record. + HistoryLabelAdded: + - name: labelIds + TYPE: "[]STRING" + REQUIRED: false + comment: Label IDs added to the message. + - name: message + TYPE: STRUCT(Message) + REQUIRED: false + HistoryLabelRemoved: + - name: labelIds + TYPE: "[]STRING" + REQUIRED: false + comment: Label IDs removed from the message. + - name: message + TYPE: STRUCT(Message) + REQUIRED: false + HistoryMessageAdded: + - name: message + TYPE: STRUCT(Message) + REQUIRED: false + HistoryMessageDeleted: + - name: message + TYPE: STRUCT(Message) + REQUIRED: false + ImapSettings: + - name: autoExpunge + TYPE: BOOL + REQUIRED: false + comment: If this value is true, Gmail will immediately expunge a message when it is marked as deleted in IMAP. Otherwise, Gmail will wait for an update from the client before expunging messages marked as deleted. + - name: enabled + TYPE: BOOL + REQUIRED: false + comment: Whether IMAP is enabled for the account. + - name: expungeBehavior + TYPE: STRING + REQUIRED: false + ENUM: + - expungeBehaviorUnspecified + - archive + - trash + - deleteForever + comment: The action that will be executed on a message when it is marked as deleted and expunged from the last visible IMAP folder. + - name: maxFolderSize + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: An optional limit on the number of messages that an IMAP folder may contain. Legal values are 0, 1000, 2000, 5000 or 10000. A value of zero is interpreted to mean that there is no limit. + KaclsKeyMetadata: + - name: kaclsData + TYPE: STRING + REQUIRED: false + comment: "Opaque data generated and used by the key access control list service. Maximum size: 8 KiB." + - name: kaclsUri + TYPE: STRING + REQUIRED: false + comment: The URI of the key access control list service that manages the private key. + Label: + - name: color + TYPE: STRUCT(LabelColor) + REQUIRED: false + comment: The color to assign to the label. Color is only available for labels that have their `type` set to `user`. + - name: id + TYPE: STRING + REQUIRED: false + comment: The immutable ID of the label. + - name: labelListVisibility + TYPE: STRING + REQUIRED: false + ENUM: + - labelShow + - labelShowIfUnread + - labelHide + comment: The visibility of the label in the label list in the Gmail web interface. + - name: messageListVisibility + TYPE: STRING + REQUIRED: false + ENUM: + - show + - hide + comment: The visibility of messages with this label in the message list in the Gmail web interface. + - name: messagesTotal + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: The total number of messages with the label. + - name: messagesUnread + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: The number of unread messages with the label. + - name: name + TYPE: STRING + REQUIRED: false + comment: The display name of the label. + - name: threadsTotal + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: The total number of threads with the label. + - name: threadsUnread + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: The number of unread threads with the label. + - name: type + TYPE: STRING + REQUIRED: false + ENUM: + - system + - user + comment: The owner type for the label. User labels are created by the user and can be modified and deleted by the user and can be applied to any message or thread. System labels are internally created and cannot be added, modified, or deleted. System labels may be able to be applied to or removed from messages and threads under some circumstances but this is not guaranteed. For example, users can apply and remove the `INBOX` and `UNREAD` labels from messages and threads, but cannot apply or remove the `DRAFTS` or `SENT` labels from messages or threads. + LabelColor: + - name: backgroundColor + TYPE: STRING + REQUIRED: false + comment: "The background color represented as hex string #RRGGBB (ex #000000). This field is required in order to set the color of a label. Only the following predefined set of color values are allowed: \\#000000, #434343, #666666, #999999, #cccccc, #efefef, #f3f3f3, #ffffff, \\#fb4c2f, #ffad47, #fad165, #16a766, #43d692, #4a86e8, #a479e2, #f691b3, \\#f6c5be, #ffe6c7, #fef1d1, #b9e4d0, #c6f3de, #c9daf8, #e4d7f5, #fcdee8, \\#efa093, #ffd6a2, #fce8b3, #89d3b2, #a0eac9, #a4c2f4, #d0bcf1, #fbc8d9, \\#e66550, #ffbc6b, #fcda83, #44b984, #68dfa9, #6d9eeb, #b694e8, #f7a7c0, \\#cc3a21, #eaa041, #f2c960, #149e60, #3dc789, #3c78d8, #8e63ce, #e07798, \\#ac2b16, #cf8933, #d5ae49, #0b804b, #2a9c68, #285bac, #653e9b, #b65775, \\#822111, #a46a21, #aa8831, #076239, #1a764d, #1c4587, #41236d, #83334c, \\#464646, #e7e7e7, #0d3472, #b6cff5, #0d3b44, #98d7e4, #3d188e, #e3d7ff, \\#711a36, #fbd3e0, #8a1c0a, #f2b2a8, #7a2e0b, #ffc8af, #7a4706, #ffdeb5, \\#594c05, #fbe983, #684e07, #fdedc1, #0b4f30, #b3efd3, #04502e, #a2dcc1, \\#c2c2c2, #4986e7, #2da2bb, #b99aff, #994a64, #f691b2, #ff7537, #ffad46, \\#662e37, #ebdbde, #cca6ac, #094228, #42d692, #16a765, #757575, #1e53b8, \\#007286, #7858c3, #c2185b, #d93025, #54240e, #633e04, #521d28, #202124, \\#083018" + - name: textColor + TYPE: STRING + REQUIRED: false + comment: "The text color of the label, represented as hex string. This field is required in order to set the color of a label. Only the following predefined set of color values are allowed: \\#000000, #434343, #666666, #999999, #cccccc, #efefef, #f3f3f3, #ffffff, \\#fb4c2f, #ffad47, #fad165, #16a766, #43d692, #4a86e8, #a479e2, #f691b3, \\#f6c5be, #ffe6c7, #fef1d1, #b9e4d0, #c6f3de, #c9daf8, #e4d7f5, #fcdee8, \\#efa093, #ffd6a2, #fce8b3, #89d3b2, #a0eac9, #a4c2f4, #d0bcf1, #fbc8d9, \\#e66550, #ffbc6b, #fcda83, #44b984, #68dfa9, #6d9eeb, #b694e8, #f7a7c0, \\#cc3a21, #eaa041, #f2c960, #149e60, #3dc789, #3c78d8, #8e63ce, #e07798, \\#ac2b16, #cf8933, #d5ae49, #0b804b, #2a9c68, #285bac, #653e9b, #b65775, \\#822111, #a46a21, #aa8831, #076239, #1a764d, #1c4587, #41236d, #83334c, \\#464646, #e7e7e7, #0d3472, #b6cff5, #0d3b44, #98d7e4, #3d188e, #e3d7ff, \\#711a36, #fbd3e0, #8a1c0a, #f2b2a8, #7a2e0b, #ffc8af, #7a4706, #ffdeb5, \\#594c05, #fbe983, #684e07, #fdedc1, #0b4f30, #b3efd3, #04502e, #a2dcc1, \\#c2c2c2, #4986e7, #2da2bb, #b99aff, #994a64, #f691b2, #ff7537, #ffad46, \\#662e37, #ebdbde, #cca6ac, #094228, #42d692, #16a765, #757575, #1e53b8, \\#007286, #7858c3, #c2185b, #d93025, #54240e, #633e04, #521d28, #202124, \\#083018" + LanguageSettings: + - name: displayLanguage + TYPE: STRING + REQUIRED: false + comment: The language to display Gmail in, formatted as an RFC 3066 Language Tag (for example `en-GB`, `fr` or `ja` for British English, French, or Japanese respectively). The set of languages supported by Gmail evolves over time, so please refer to the "Language" dropdown in the Gmail settings for all available options, as described in the language settings help article. For a table of sample values, see [Manage language settings](https://developers.google.com/workspace/gmail/api/guides/language-settings). Not all Gmail clients can display the same set of languages. In the case that a user's display language is not available for use on a particular client, said client automatically chooses to display in the closest supported variant (or a reasonable default). + ListCseIdentitiesResponse: + - name: cseIdentities + TYPE: "[]STRUCT(CseIdentity)" + REQUIRED: false + comment: One page of the list of CSE identities configured for the user. + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Pagination token to be passed to a subsequent ListCseIdentities call in order to retrieve the next page of identities. If this value is not returned or is the empty string, then no further pages remain. + ListCseKeyPairsResponse: + - name: cseKeyPairs + TYPE: "[]STRUCT(CseKeyPair)" + REQUIRED: false + comment: One page of the list of CSE key pairs installed for the user. + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Pagination token to be passed to a subsequent ListCseKeyPairs call in order to retrieve the next page of key pairs. If this value is not returned, then no further pages remain. + ListDelegatesResponse: + - name: delegates + TYPE: "[]STRUCT(Delegate)" + REQUIRED: false + comment: List of the user's delegates (with any verification status). If an account doesn't have delegates, this field doesn't appear. + ListDraftsResponse: + - name: drafts + TYPE: "[]STRUCT(Draft)" + REQUIRED: false + comment: List of drafts. Note that the `Message` property in each `Draft` resource only contains an `id` and a `threadId`. The [`messages.get`](https://developers.google.com/workspace/gmail/api/v1/reference/users/messages/get) method can fetch additional message details. + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Token to retrieve the next page of results in the list. + - name: resultSizeEstimate + TYPE: INT + REQUIRED: false + FORMAT: uint32 + comment: Estimated total number of results. + ListFiltersResponse: + - name: filter + TYPE: "[]STRUCT(Filter)" + REQUIRED: false + comment: List of a user's filters. + ListForwardingAddressesResponse: + - name: forwardingAddresses + TYPE: "[]STRUCT(ForwardingAddress)" + REQUIRED: false + comment: List of addresses that may be used for forwarding. + ListHistoryResponse: + - name: history + TYPE: "[]STRUCT(History)" + REQUIRED: false + comment: List of history records. Any `messages` contained in the response will typically only have `id` and `threadId` fields populated. + - name: historyId + TYPE: STRING + REQUIRED: false + FORMAT: uint64 + comment: The ID of the mailbox's current history record. + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Page token to retrieve the next page of results in the list. + ListLabelsResponse: + - name: labels + TYPE: "[]STRUCT(Label)" + REQUIRED: false + comment: List of labels. Note that each label resource only contains an `id`, `name`, `messageListVisibility`, `labelListVisibility`, and `type`. The [`labels.get`](https://developers.google.com/workspace/gmail/api/v1/reference/users/labels/get) method can fetch additional label details. + ListMessagesResponse: + - name: messages + TYPE: "[]STRUCT(Message)" + REQUIRED: false + comment: List of messages. Note that each message resource contains only an `id` and a `threadId`. Additional message details can be fetched using the messages.get method. + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Token to retrieve the next page of results in the list. + - name: resultSizeEstimate + TYPE: INT + REQUIRED: false + FORMAT: uint32 + comment: Estimated total number of results. + ListSendAsResponse: + - name: sendAs + TYPE: "[]STRUCT(SendAs)" + REQUIRED: false + comment: List of send-as aliases. + ListSmimeInfoResponse: + - name: smimeInfo + TYPE: "[]STRUCT(SmimeInfo)" + REQUIRED: false + comment: List of SmimeInfo. + ListThreadsResponse: + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Page token to retrieve the next page of results in the list. + - name: resultSizeEstimate + TYPE: INT + REQUIRED: false + FORMAT: uint32 + comment: Estimated total number of results. + - name: threads + TYPE: "[]STRUCT(Thread)" + REQUIRED: false + comment: List of threads. Note that each thread resource does not contain a list of `messages`. The list of `messages` for a given thread can be fetched using the [`threads.get`](https://developers.google.com/workspace/gmail/api/v1/reference/users/threads/get) method. + Message: + - name: classificationLabelValues + TYPE: "[]STRUCT(ClassificationLabelValue)" + REQUIRED: false + comment: Classification Label values on the message. Available Classification Label schemas can be queried using the Google Drive Labels API. Each classification label ID must be unique. If duplicate IDs are provided, only one will be retained, and the selection is arbitrary. Only used for Google Workspace accounts. There's a limit of 20 Classification Label values per request. If the Classification Label values exceeds the maximum allowed number, the request fails. + - name: historyId + TYPE: STRING + REQUIRED: false + FORMAT: uint64 + comment: The ID of the last history record that modified this message. + - name: id + TYPE: STRING + REQUIRED: false + comment: The immutable ID of the message. + - name: internalDate + TYPE: STRING + REQUIRED: false + FORMAT: int64 + comment: The internal message creation timestamp (epoch ms), which determines ordering in the inbox. For normal SMTP-received email, this represents the time the message was originally accepted by Google, which is more reliable than the `Date` header. However, for API-migrated mail, it can be configured by client to be based on the `Date` header. + - name: labelIds + TYPE: "[]STRING" + REQUIRED: false + comment: List of IDs of labels applied to this message. + - name: payload + TYPE: STRUCT(MessagePart) + REQUIRED: false + comment: The parsed email structure in the message parts. + - name: raw + TYPE: STRING + REQUIRED: false + FORMAT: byte + comment: The entire email message in an RFC 2822 formatted and base64url encoded string. Returned in `messages.get` and `drafts.get` responses when the `format=RAW` parameter is supplied. @required gmail.users.drafts.create gmail.users.drafts.update + - name: sizeEstimate + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: Estimated size in bytes of the message. + - name: snippet + TYPE: STRING + REQUIRED: false + comment: A short part of the message text. + - name: threadId + TYPE: STRING + REQUIRED: false + comment: "The ID of the thread the message belongs to. To add a message or draft to a thread, the following criteria must be met: 1. The requested `threadId` must be specified on the `Message` or `Draft.Message` you supply with your request. 2. The `References` and `In-Reply-To` headers must be set in compliance with the [RFC 2822](https://tools.ietf.org/html/rfc2822) standard. 3. The `Subject` headers must match. " + MessagePart: + - name: body + TYPE: STRUCT(MessagePartBody) + REQUIRED: false + comment: The message part body for this part, which may be empty for container MIME message parts. + - name: filename + TYPE: STRING + REQUIRED: false + comment: The filename of the attachment. Only present if this message part represents an attachment. + - name: headers + TYPE: "[]STRUCT(MessagePartHeader)" + REQUIRED: false + comment: List of headers on this message part. For the top-level message part, representing the entire message payload, it will contain the standard RFC 2822 email headers such as `To`, `From`, and `Subject`. + - name: mimeType + TYPE: STRING + REQUIRED: false + comment: The MIME type of the message part. + - name: partId + TYPE: STRING + REQUIRED: false + comment: The immutable ID of the message part. + - name: parts + TYPE: "[]STRUCT(MessagePart)" + REQUIRED: false + comment: The child MIME message parts of this part. This only applies to container MIME message parts, for example `multipart/*`. For non- container MIME message part types, such as `text/plain`, this field is empty. For more information, see RFC 1521. + MessagePartBody: + - name: attachmentId + TYPE: STRING + REQUIRED: false + comment: When present, contains the ID of an external attachment that can be retrieved in a separate `messages.attachments.get` request. When not present, the entire content of the message part body is contained in the data field. + - name: data + TYPE: STRING + REQUIRED: false + FORMAT: byte + comment: The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment. + - name: size + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: Number of bytes for the message part data (encoding notwithstanding). + MessagePartHeader: + - name: name + TYPE: STRING + REQUIRED: false + comment: The name of the header before the `:` separator. For example, `To`. + - name: value + TYPE: STRING + REQUIRED: false + comment: The value of the header after the `:` separator. For example, `someuser@example.com`. + ModifyMessageRequest: + - name: addClassificationLabels + TYPE: "[]STRUCT(ClassificationLabelValue)" + REQUIRED: false + comment: A list of classification label values to add. If a Classification Label with the same label ID is already applied to the message, fields with existing field IDs will be updated and fields with new field IDs will be added. There's a limit of 20 Classification Label values per request. If the message is already classified and the final total number of Classification Label values exceeds the maximum allowed number of Classification Label values per message, the modification fails. + - name: addLabelIds + TYPE: "[]STRING" + REQUIRED: false + comment: A list of IDs of labels to add to this message. You can add up to 100 labels with each update. + - name: removeClassificationLabelIds + TYPE: "[]STRING" + REQUIRED: false + comment: A list of Classification Label values to remove from this message. + - name: removeLabelIds + TYPE: "[]STRING" + REQUIRED: false + comment: A list IDs of labels to remove from this message. You can remove up to 100 labels with each update. + ModifyThreadRequest: + - name: addLabelIds + TYPE: "[]STRING" + REQUIRED: false + comment: A list of IDs of labels to add to this thread. You can add up to 100 labels with each update. + - name: removeLabelIds + TYPE: "[]STRING" + REQUIRED: false + comment: A list of IDs of labels to remove from this thread. You can remove up to 100 labels with each update. + ObliterateCseKeyPairRequest: + - name: value + TYPE: ANY + REQUIRED: false + PopSettings: + - name: accessWindow + TYPE: STRING + REQUIRED: false + ENUM: + - accessWindowUnspecified + - disabled + - fromNowOn + - allMail + comment: The range of messages which are accessible via POP. + - name: disposition + TYPE: STRING + REQUIRED: false + ENUM: + - dispositionUnspecified + - leaveInInbox + - archive + - trash + - markRead + comment: The action that will be executed on a message after it has been fetched via POP. + Profile: + - name: emailAddress + TYPE: STRING + REQUIRED: false + comment: The user's email address. + - name: historyId + TYPE: STRING + REQUIRED: false + FORMAT: uint64 + comment: The ID of the mailbox's current history record. + - name: messagesTotal + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: The total number of messages in the mailbox. + - name: threadsTotal + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: The total number of threads in the mailbox. + SendAs: + - name: displayName + TYPE: STRING + REQUIRED: false + comment: A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account. If the admin has disabled the ability for users to update their name format, requests to update this field for the primary login will silently fail. + - name: isDefault + TYPE: BOOL + REQUIRED: false + comment: Whether this address is selected as the default "From:" address in situations such as composing a new message or sending a vacation auto-reply. Every Gmail account has exactly one default send-as address, so the only legal value that clients may write to this field is `true`. Changing this from `false` to `true` for an address will result in this field becoming `false` for the other previous default address. + - name: isPrimary + TYPE: BOOL + REQUIRED: false + comment: Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only. + - name: replyToAddress + TYPE: STRING + REQUIRED: false + comment: An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header. + - name: sendAsEmail + TYPE: STRING + REQUIRED: false + comment: The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create. + - name: signature + TYPE: STRING + REQUIRED: false + comment: An optional HTML signature that is included in messages composed with this alias in the Gmail web UI. This signature is added to new emails only. + - name: smtpMsa + TYPE: STRUCT(SmtpMsa) + REQUIRED: false + comment: An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases. + - name: treatAsAlias + TYPE: BOOL + REQUIRED: false + comment: Whether Gmail should treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases. + - name: verificationStatus + TYPE: STRING + REQUIRED: false + ENUM: + - verificationStatusUnspecified + - accepted + - pending + comment: Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases. + SignAndEncryptKeyPairs: + - name: encryptionKeyPairId + TYPE: STRING + REQUIRED: false + comment: The ID of the CseKeyPair that encrypts signed outgoing mail. + - name: signingKeyPairId + TYPE: STRING + REQUIRED: false + comment: The ID of the CseKeyPair that signs outgoing mail. + SmimeInfo: + - name: encryptedKeyPassword + TYPE: STRING + REQUIRED: false + comment: Encrypted key password, when key is encrypted. + - name: expiration + TYPE: STRING + REQUIRED: false + FORMAT: int64 + comment: When the certificate expires (in milliseconds since epoch). + - name: id + TYPE: STRING + REQUIRED: false + comment: The immutable ID for the SmimeInfo. + - name: isDefault + TYPE: BOOL + REQUIRED: false + comment: Whether this SmimeInfo is the default one for this user's send-as address. + - name: issuerCn + TYPE: STRING + REQUIRED: false + comment: The S/MIME certificate issuer's common name. + - name: pem + TYPE: STRING + REQUIRED: false + comment: PEM formatted X509 concatenated certificate string (standard base64 encoding). Format used for returning key, which includes public key as well as certificate chain (not private key). + - name: pkcs12 + TYPE: STRING + REQUIRED: false + FORMAT: byte + comment: PKCS#12 format containing a single private/public key pair and certificate chain. This format is only accepted from client for creating a new SmimeInfo and is never returned, because the private key is not intended to be exported. PKCS#12 may be encrypted, in which case encryptedKeyPassword should be set appropriately. + SmtpMsa: + - name: host + TYPE: STRING + REQUIRED: false + comment: The hostname of the SMTP service. Required. + - name: password + TYPE: STRING + REQUIRED: false + comment: The password that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses. + - name: port + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: The port of the SMTP service. Required. + - name: securityMode + TYPE: STRING + REQUIRED: false + ENUM: + - securityModeUnspecified + - none + - ssl + - starttls + comment: The protocol that will be used to secure communication with the SMTP service. Required. + - name: username + TYPE: STRING + REQUIRED: false + comment: The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses. + Thread: + - name: historyId + TYPE: STRING + REQUIRED: false + FORMAT: uint64 + comment: The ID of the last history record that modified this thread. + - name: id + TYPE: STRING + REQUIRED: false + comment: The unique ID of the thread. + - name: messages + TYPE: "[]STRUCT(Message)" + REQUIRED: false + comment: The list of messages in the thread. + - name: snippet + TYPE: STRING + REQUIRED: false + comment: A short part of the message text. + VacationSettings: + - name: enableAutoReply + TYPE: BOOL + REQUIRED: false + comment: Flag that controls whether Gmail automatically replies to messages. + - name: endTime + TYPE: STRING + REQUIRED: false + FORMAT: int64 + comment: An optional end time for sending auto-replies (epoch ms). When this is specified, Gmail will automatically reply only to messages that it receives before the end time. If both `startTime` and `endTime` are specified, `startTime` must precede `endTime`. + - name: responseBodyHtml + TYPE: STRING + REQUIRED: false + comment: Response body in HTML format. Gmail will sanitize the HTML before storing it. If both `response_body_plain_text` and `response_body_html` are specified, `response_body_html` will be used. + - name: responseBodyPlainText + TYPE: STRING + REQUIRED: false + comment: Response body in plain text format. If both `response_body_plain_text` and `response_body_html` are specified, `response_body_html` will be used. + - name: responseSubject + TYPE: STRING + REQUIRED: false + comment: Optional text to prepend to the subject line in vacation responses. In order to enable auto-replies, either the response subject or the response body must be nonempty. + - name: restrictToContacts + TYPE: BOOL + REQUIRED: false + comment: Flag that determines whether responses are sent to recipients who are not in the user's list of contacts. + - name: restrictToDomain + TYPE: BOOL + REQUIRED: false + comment: Flag that determines whether responses are sent to recipients who are outside of the user's domain. This feature is only available for Google Workspace users. + - name: startTime + TYPE: STRING + REQUIRED: false + FORMAT: int64 + comment: An optional start time for sending auto-replies (epoch ms). When this is specified, Gmail will automatically reply only to messages that it receives after the start time. If both `startTime` and `endTime` are specified, `startTime` must precede `endTime`. + WatchRequest: + - name: labelFilterAction + TYPE: STRING + REQUIRED: false + ENUM: + - include + - exclude + DEPRECATED: true + comment: Filtering behavior of `labelIds list` specified. This field is deprecated because it caused incorrect behavior in some cases; use `label_filter_behavior` instead. + - name: labelFilterBehavior + TYPE: STRING + REQUIRED: false + ENUM: + - include + - exclude + comment: Filtering behavior of `labelIds list` specified. This field replaces `label_filter_action`; if set, `label_filter_action` is ignored. + - name: labelIds + TYPE: "[]STRING" + REQUIRED: false + comment: List of label_ids to restrict notifications about. By default, if unspecified, all changes are pushed out. If specified then dictates which labels are required for a push notification to be generated. + - name: topicName + TYPE: STRING + REQUIRED: false + comment: A fully qualified Google Cloud Pub/Sub API topic name to publish the events to. This topic name **must** already exist in Cloud Pub/Sub and you **must** have already granted gmail "publish" permission on it. For example, "projects/my-project-identifier/topics/my-topic-name" (using the Cloud Pub/Sub "v1" topic naming format). Note that the "my-project-identifier" portion must exactly match your Google developer project id (the one executing this watch request). + WatchResponse: + - name: expiration + TYPE: STRING + REQUIRED: false + FORMAT: int64 + comment: When Gmail will stop sending notifications for mailbox updates (epoch millis). Call `watch` again before this time to renew the watch. + - name: historyId + TYPE: STRING + REQUIRED: false + FORMAT: uint64 + comment: The ID of the mailbox's current history record. diff --git a/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v1/methods.json b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v1/methods.json new file mode 100644 index 0000000..1445848 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v1/methods.json @@ -0,0 +1,39 @@ +{ + "methods": [ + { + "method_uuid": "", + "method_name": "Delete a user from a domain", + "canonical_id": "gmailpostmastertools.resource.execute" + }, + { + "method_uuid": "", + "method_name": "Get a list of registered domains", + "canonical_id": "gmailpostmastertools.domain.list" + }, + { + "method_uuid": "", + "method_name": "Get traffic statistics for a domain on a specific date", + "canonical_id": "gmailpostmastertools.resource.execute" + }, + { + "method_uuid": "", + "method_name": "Get traffic statistics for a given date range", + "canonical_id": "gmailpostmastertools.trafficstat.get" + }, + { + "method_uuid": "", + "method_name": "Get traffic statistics for a specified date range", + "canonical_id": "gmailpostmastertools.trafficstat.get" + }, + { + "method_uuid": "", + "method_name": "List all your registered domains and their metadata", + "canonical_id": "gmailpostmastertools.domain.list" + }, + { + "method_uuid": "", + "method_name": "List registered domains", + "canonical_id": "gmailpostmastertools.domain.list" + } + ] +} \ No newline at end of file diff --git a/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v1/wrekenfile.yaml b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v1/wrekenfile.yaml new file mode 100644 index 0000000..ae9420f --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v1/wrekenfile.yaml @@ -0,0 +1,302 @@ +VERSION: 2.0.2 +DEFAULTS: + bearer_token: BEARER + w_base_url: https://gmailpostmastertools.googleapis.com +METHODS: + gmailpostmastertools.domain.list: + SUMMARY: Lists the domains that have been registered by the client + DESC: Lists the domains that have been registered by the client. The order of domains in the response is unspecified and non-deterministic. Newly created domains will not necessarily be added to the end of this list. + HTTP: + METHOD: GET + ENDPOINT: /v1/domains + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - pageSize: + TYPE: INT + REQUIRED: false + LOCATION: query + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(ListDomainsResponse) + RETURNVAR: gmailpostmastertools_domain_list + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.domain.list + gmailpostmastertools.resource.execute: + SUMMARY: Get traffic statistics for a domain on a specific date + DESC: Get traffic statistics for a domain on a specific date. Returns PERMISSION_DENIED if user does not have permission to access TrafficStats for the domain. + HTTP: + METHOD: GET + ENDPOINT: /v1/{+name} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - name: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(TrafficStats) + RETURNVAR: gmailpostmastertools_resource_execute + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.resource.execute + gmailpostmastertools.trafficstat.get: + SUMMARY: List traffic statistics for all available days + DESC: List traffic statistics for all available days. Returns PERMISSION_DENIED if user does not have permission to access TrafficStats for the domain. + HTTP: + METHOD: GET + ENDPOINT: /v1/{+parent}/trafficStats + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - parent: + TYPE: STRING + REQUIRED: true + LOCATION: path + - endDate.day: + TYPE: INT + REQUIRED: false + LOCATION: query + - endDate.month: + TYPE: INT + REQUIRED: false + LOCATION: query + - endDate.year: + TYPE: INT + REQUIRED: false + LOCATION: query + - pageSize: + TYPE: INT + REQUIRED: false + LOCATION: query + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - startDate.day: + TYPE: INT + REQUIRED: false + LOCATION: query + - startDate.month: + TYPE: INT + REQUIRED: false + LOCATION: query + - startDate.year: + TYPE: INT + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(ListTrafficStatsResponse) + RETURNVAR: gmailpostmastertools_trafficstat_get + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.trafficstat.get +STRUCTS: + DeliveryError: + - name: errorClass + TYPE: STRING + REQUIRED: false + ENUM: + - DELIVERY_ERROR_CLASS_UNSPECIFIED + - PERMANENT_ERROR + - TEMPORARY_ERROR + comment: The class of delivery error. + - name: errorRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of messages where the error occurred vs all authenticated traffic. + - name: errorType + TYPE: STRING + REQUIRED: false + ENUM: + - DELIVERY_ERROR_TYPE_UNSPECIFIED + - RATE_LIMIT_EXCEEDED + - SUSPECTED_SPAM + - CONTENT_SPAMMY + - BAD_ATTACHMENT + - BAD_DMARC_POLICY + - LOW_IP_REPUTATION + - LOW_DOMAIN_REPUTATION + - IP_IN_RBL + - DOMAIN_IN_RBL + - BAD_PTR_RECORD + comment: The type of delivery error. + Domain: + - name: createTime + TYPE: STRING + REQUIRED: false + FORMAT: google-datetime + comment: Timestamp when the user registered this domain. Assigned by the server. + - name: name + TYPE: STRING + REQUIRED: false + comment: The resource name of the Domain. Domain names have the form `domains/{domain_name}`, where domain_name is the fully qualified domain name (i.e., mymail.mydomain.com). + - name: permission + TYPE: STRING + REQUIRED: false + ENUM: + - PERMISSION_UNSPECIFIED + - OWNER + - READER + - NONE + comment: User’s permission for this domain. Assigned by the server. + FeedbackLoop: + - name: id + TYPE: STRING + REQUIRED: false + comment: Feedback loop identifier that uniquely identifies individual campaigns. + - name: spamRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of user marked spam messages with the identifier vs the total number of inboxed messages with that identifier. + IpReputation: + - name: ipCount + TYPE: STRING + REQUIRED: false + FORMAT: int64 + comment: Total number of unique IPs in this reputation category. This metric only pertains to traffic that passed [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/). + - name: reputation + TYPE: STRING + REQUIRED: false + ENUM: + - REPUTATION_CATEGORY_UNSPECIFIED + - HIGH + - MEDIUM + - LOW + - BAD + comment: The reputation category this IP reputation represents. + - name: sampleIps + TYPE: "[]STRING" + REQUIRED: false + comment: A sample of IPs in this reputation category. + ListDomainsResponse: + - name: domains + TYPE: "[]STRUCT(Domain)" + REQUIRED: false + comment: The list of domains. + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Token to retrieve the next page of results, or empty if there are no more results in the list. + ListTrafficStatsResponse: + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Token to retrieve the next page of results, or empty if there are no more results in the list. + - name: trafficStats + TYPE: "[]STRUCT(TrafficStats)" + REQUIRED: false + comment: The list of TrafficStats. + TrafficStats: + - name: deliveryErrors + TYPE: "[]STRUCT(DeliveryError)" + REQUIRED: false + comment: Delivery errors for the domain. This metric only pertains to traffic that passed [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/). + - name: dkimSuccessRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of mail that successfully authenticated with DKIM vs. all mail that attempted to authenticate with [DKIM](http://www.dkim.org/). Spoofed mail is excluded. + - name: dmarcSuccessRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of mail that passed [DMARC](https://dmarc.org/) alignment checks vs all mail received from the domain that successfully authenticated with either of [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/). + - name: domainReputation + TYPE: STRING + REQUIRED: false + ENUM: + - REPUTATION_CATEGORY_UNSPECIFIED + - HIGH + - MEDIUM + - LOW + - BAD + comment: Reputation of the domain. + - name: inboundEncryptionRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of incoming mail (to Gmail), that passed secure transport (TLS) vs all mail received from that domain. This metric only pertains to traffic that passed [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/). + - name: ipReputations + TYPE: "[]STRUCT(IpReputation)" + REQUIRED: false + comment: Reputation information pertaining to the IP addresses of the email servers for the domain. There is exactly one entry for each reputation category except REPUTATION_CATEGORY_UNSPECIFIED. + - name: name + TYPE: STRING + REQUIRED: false + comment: "The resource name of the traffic statistics. Traffic statistic names have the form `domains/{domain}/trafficStats/{date}`, where domain_name is the fully qualified domain name (i.e., mymail.mydomain.com) of the domain this traffic statistics pertains to and date is the date in yyyymmdd format that these statistics corresponds to. For example: domains/mymail.mydomain.com/trafficStats/20160807" + - name: outboundEncryptionRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of outgoing mail (from Gmail) that was accepted over secure transport (TLS). + - name: spammyFeedbackLoops + TYPE: "[]STRUCT(FeedbackLoop)" + REQUIRED: false + comment: Spammy [Feedback loop identifiers] (https://support.google.com/mail/answer/6254652) with their individual spam rates. This metric only pertains to traffic that is authenticated by [DKIM](http://www.dkim.org/). + - name: spfSuccessRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of mail that successfully authenticated with SPF vs. all mail that attempted to authenticate with [SPF](http://www.openspf.org/). Spoofed mail is excluded. + - name: userReportedSpamRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of user-report spam vs. email that was sent to the inbox. This is potentially inexact -- users may want to refer to the description of the interval fields userReportedSpamRatioLowerBound and userReportedSpamRatioUpperBound for more explicit accuracy guarantees. This metric only pertains to emails authenticated by [DKIM](http://www.dkim.org/). + - name: userReportedSpamRatioLowerBound + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The lower bound of the confidence interval for the user reported spam ratio. If this field is set, then the value of userReportedSpamRatio is set to the midpoint of this interval and is thus inexact. However, the true ratio is guaranteed to be in between this lower bound and the corresponding upper bound 95% of the time. This metric only pertains to emails authenticated by [DKIM](http://www.dkim.org/). + - name: userReportedSpamRatioUpperBound + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The upper bound of the confidence interval for the user reported spam ratio. If this field is set, then the value of userReportedSpamRatio is set to the midpoint of this interval and is thus inexact. However, the true ratio is guaranteed to be in between this upper bound and the corresponding lower bound 95% of the time. This metric only pertains to emails authenticated by [DKIM](http://www.dkim.org/). diff --git a/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v1beta1/methods.json b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v1beta1/methods.json new file mode 100644 index 0000000..38ff9db --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v1beta1/methods.json @@ -0,0 +1,34 @@ +{ + "methods": [ + { + "method_uuid": "", + "method_name": "Get a list of registered domains", + "canonical_id": "gmailpostmastertools.domain.list" + }, + { + "method_uuid": "", + "method_name": "Get traffic statistics for a domain on a specific date", + "canonical_id": "gmailpostmastertools.v1beta1.get" + }, + { + "method_uuid": "", + "method_name": "Get traffic statistics for a given date range", + "canonical_id": "gmailpostmastertools.trafficstat.get" + }, + { + "method_uuid": "", + "method_name": "Get traffic statistics for a specified date range", + "canonical_id": "gmailpostmastertools.trafficstat.get" + }, + { + "method_uuid": "", + "method_name": "List all your registered domains and their metadata", + "canonical_id": "gmailpostmastertools.domain.list" + }, + { + "method_uuid": "", + "method_name": "List registered domains", + "canonical_id": "gmailpostmastertools.domain.list" + } + ] +} \ No newline at end of file diff --git a/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v1beta1/wrekenfile.yaml b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v1beta1/wrekenfile.yaml new file mode 100644 index 0000000..20ae38f --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v1beta1/wrekenfile.yaml @@ -0,0 +1,308 @@ +VERSION: 2.0.2 +DEFAULTS: + bearer_token: BEARER + w_base_url: https://gmailpostmastertools.googleapis.com +METHODS: + gmailpostmastertools.domain.list: + SUMMARY: Lists the domains that have been registered by the client + DESC: Lists the domains that have been registered by the client. The order of domains in the response is unspecified and non-deterministic. Newly created domains will not necessarily be added to the end of this list. + HTTP: + METHOD: GET + ENDPOINT: /v1beta1/domains + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - pageSize: + TYPE: INT + REQUIRED: false + LOCATION: query + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(ListDomainsResponse) + RETURNVAR: gmailpostmastertools_domain_list + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.domain.list + gmailpostmastertools.v1beta1.get: + SUMMARY: Get traffic statistics for a domain on a specific date + DESC: Get traffic statistics for a domain on a specific date. Returns PERMISSION_DENIED if user does not have permission to access TrafficStats for the domain. + HTTP: + METHOD: GET + ENDPOINT: /v1beta1/{+name} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - name: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(TrafficStats) + RETURNVAR: gmailpostmastertools_v1beta1_get + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.v1beta1.get + gmailpostmastertools.trafficstat.get: + SUMMARY: List traffic statistics for all available days + DESC: List traffic statistics for all available days. Returns PERMISSION_DENIED if user does not have permission to access TrafficStats for the domain. + HTTP: + METHOD: GET + ENDPOINT: /v1beta1/{+parent}/trafficStats + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - parent: + TYPE: STRING + REQUIRED: true + LOCATION: path + - endDate.day: + TYPE: INT + REQUIRED: false + LOCATION: query + - endDate.month: + TYPE: INT + REQUIRED: false + LOCATION: query + - endDate.year: + TYPE: INT + REQUIRED: false + LOCATION: query + - pageSize: + TYPE: INT + REQUIRED: false + LOCATION: query + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - startDate.day: + TYPE: INT + REQUIRED: false + LOCATION: query + - startDate.month: + TYPE: INT + REQUIRED: false + LOCATION: query + - startDate.year: + TYPE: INT + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(ListTrafficStatsResponse) + RETURNVAR: gmailpostmastertools_trafficstat_get + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.trafficstat.get +STRUCTS: + DeliveryError: + - name: errorClass + TYPE: STRING + REQUIRED: false + ENUM: + - DELIVERY_ERROR_CLASS_UNSPECIFIED + - PERMANENT_ERROR + - TEMPORARY_ERROR + comment: The class of delivery error. + - name: errorRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of messages where the error occurred vs all authenticated traffic. + - name: errorType + TYPE: STRING + REQUIRED: false + ENUM: + - DELIVERY_ERROR_TYPE_UNSPECIFIED + - RATE_LIMIT_EXCEEDED + - SUSPECTED_SPAM + - CONTENT_SPAMMY + - BAD_ATTACHMENT + - BAD_DMARC_POLICY + - LOW_IP_REPUTATION + - LOW_DOMAIN_REPUTATION + - IP_IN_RBL + - DOMAIN_IN_RBL + - BAD_PTR_RECORD + comment: The type of delivery error. + Domain: + - name: createTime + TYPE: STRING + REQUIRED: false + FORMAT: google-datetime + comment: Timestamp when the user registered this domain. Assigned by the server. + - name: name + TYPE: STRING + REQUIRED: false + comment: The resource name of the Domain. Domain names have the form `domains/{domain_name}`, where domain_name is the fully qualified domain name (i.e., mymail.mydomain.com). + - name: permission + TYPE: STRING + REQUIRED: false + ENUM: + - PERMISSION_UNSPECIFIED + - OWNER + - READER + - NONE + comment: User’s permission for this domain. Assigned by the server. + FeedbackLoop: + - name: id + TYPE: STRING + REQUIRED: false + comment: Feedback loop identifier that uniquely identifies individual campaigns. + - name: spamRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of user marked spam messages with the identifier vs the total number of inboxed messages with that identifier. + IpReputation: + - name: ipCount + TYPE: STRING + REQUIRED: false + FORMAT: int64 + comment: Total number of unique IPs in this reputation category. This metric only pertains to traffic that passed [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/). + - name: numIps + TYPE: STRING + REQUIRED: false + FORMAT: int64 + DEPRECATED: true + comment: Total number of unique IPs in this reputation category. This metric only pertains to traffic that passed [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/). Deprecated to be complied with ApiLinter for Quantities. Use ip_count instead. + - name: reputation + TYPE: STRING + REQUIRED: false + ENUM: + - REPUTATION_CATEGORY_UNSPECIFIED + - HIGH + - MEDIUM + - LOW + - BAD + comment: The reputation category this IP reputation represents. + - name: sampleIps + TYPE: "[]STRING" + REQUIRED: false + comment: A sample of IPs in this reputation category. + ListDomainsResponse: + - name: domains + TYPE: "[]STRUCT(Domain)" + REQUIRED: false + comment: The list of domains. + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Token to retrieve the next page of results, or empty if there are no more results in the list. + ListTrafficStatsResponse: + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Token to retrieve the next page of results, or empty if there are no more results in the list. + - name: trafficStats + TYPE: "[]STRUCT(TrafficStats)" + REQUIRED: false + comment: The list of TrafficStats. + TrafficStats: + - name: deliveryErrors + TYPE: "[]STRUCT(DeliveryError)" + REQUIRED: false + comment: Delivery errors for the domain. This metric only pertains to traffic that passed [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/). + - name: dkimSuccessRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of mail that successfully authenticated with DKIM vs. all mail that attempted to authenticate with [DKIM](http://www.dkim.org/). Spoofed mail is excluded. + - name: dmarcSuccessRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of mail that passed [DMARC](https://dmarc.org/) alignment checks vs all mail received from the domain that successfully authenticated with either of [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/). + - name: domainReputation + TYPE: STRING + REQUIRED: false + ENUM: + - REPUTATION_CATEGORY_UNSPECIFIED + - HIGH + - MEDIUM + - LOW + - BAD + comment: Reputation of the domain. + - name: inboundEncryptionRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of incoming mail (to Gmail), that passed secure transport (TLS) vs all mail received from that domain. This metric only pertains to traffic that passed [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/). + - name: ipReputations + TYPE: "[]STRUCT(IpReputation)" + REQUIRED: false + comment: Reputation information pertaining to the IP addresses of the email servers for the domain. There is exactly one entry for each reputation category except REPUTATION_CATEGORY_UNSPECIFIED. + - name: name + TYPE: STRING + REQUIRED: false + comment: "The resource name of the traffic statistics. Traffic statistic names have the form `domains/{domain}/trafficStats/{date}`, where domain_name is the fully qualified domain name (i.e., mymail.mydomain.com) of the domain this traffic statistics pertains to and date is the date in yyyymmdd format that these statistics corresponds to. For example: domains/mymail.mydomain.com/trafficStats/20160807" + - name: outboundEncryptionRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of outgoing mail (from Gmail) that was accepted over secure transport (TLS). + - name: spammyFeedbackLoops + TYPE: "[]STRUCT(FeedbackLoop)" + REQUIRED: false + comment: Spammy [Feedback loop identifiers] (https://support.google.com/mail/answer/6254652) with their individual spam rates. This metric only pertains to traffic that is authenticated by [DKIM](http://www.dkim.org/). + - name: spfSuccessRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of mail that successfully authenticated with SPF vs. all mail that attempted to authenticate with [SPF](http://www.openspf.org/). Spoofed mail is excluded. + - name: userReportedSpamRatio + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The ratio of user-report spam vs. email that was sent to the inbox. This is potentially inexact -- users may want to refer to the description of the interval fields userReportedSpamRatioLowerBound and userReportedSpamRatioUpperBound for more explicit accuracy guarantees. This metric only pertains to emails authenticated by [DKIM](http://www.dkim.org/). + - name: userReportedSpamRatioLowerBound + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The lower bound of the confidence interval for the user reported spam ratio. If this field is set, then the value of userReportedSpamRatio is set to the midpoint of this interval and is thus inexact. However, the true ratio is guaranteed to be in between this lower bound and the corresponding upper bound 95% of the time. This metric only pertains to emails authenticated by [DKIM](http://www.dkim.org/). + - name: userReportedSpamRatioUpperBound + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: The upper bound of the confidence interval for the user reported spam ratio. If this field is set, then the value of userReportedSpamRatio is set to the midpoint of this interval and is thus inexact. However, the true ratio is guaranteed to be in between this upper bound and the corresponding lower bound 95% of the time. This metric only pertains to emails authenticated by [DKIM](http://www.dkim.org/). diff --git a/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v2/methods.json b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v2/methods.json new file mode 100644 index 0000000..b00f2ac --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v2/methods.json @@ -0,0 +1,69 @@ +{ + "methods": [ + { + "method_uuid": "", + "method_name": "Add a domain to the user's account", + "canonical_id": "gmailpostmastertools.domain.create" + }, + { + "method_uuid": "", + "method_name": "Batch query statistics for multiple domains", + "canonical_id": "gmailpostmastertools.domainstatsbatchquery.create" + }, + { + "method_uuid": "", + "method_name": "Create a new user for a domain", + "canonical_id": "gmailpostmastertools.user.create" + }, + { + "method_uuid": "", + "method_name": "Delete a user from a domain", + "canonical_id": "gmailpostmastertools.resource.execute" + }, + { + "method_uuid": "", + "method_name": "Get a list of registered domains", + "canonical_id": "gmailpostmastertools.domain.list" + }, + { + "method_uuid": "", + "method_name": "Get detailed user information for a domain", + "canonical_id": "gmailpostmastertools.resource.execute1" + }, + { + "method_uuid": "", + "method_name": "Get traffic statistics for a domain on a specific date", + "canonical_id": "gmailpostmastertools.resource.execute" + }, + { + "method_uuid": "", + "method_name": "List all your registered domains and their metadata", + "canonical_id": "gmailpostmastertools.domain.list" + }, + { + "method_uuid": "", + "method_name": "List registered domains", + "canonical_id": "gmailpostmastertools.domain.list" + }, + { + "method_uuid": "", + "method_name": "List users with domain access", + "canonical_id": "gmailpostmastertools.user.get" + }, + { + "method_uuid": "", + "method_name": "Query domain statistics for a specific domain and date range", + "canonical_id": "gmailpostmastertools.domainstatsquery.create" + }, + { + "method_uuid": "", + "method_name": "Update a user's domain permission", + "canonical_id": "gmailpostmastertools.resource.execute2" + }, + { + "method_uuid": "", + "method_name": "Verify domain ownership via DNS", + "canonical_id": "gmailpostmastertools.nameverify.create" + } + ] +} \ No newline at end of file diff --git a/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v2/wrekenfile.yaml b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v2/wrekenfile.yaml new file mode 100644 index 0000000..83ad0d2 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Gmail/gmailpostmastertools/v2/wrekenfile.yaml @@ -0,0 +1,776 @@ +VERSION: 2.0.2 +DEFAULTS: + bearer_token: BEARER + w_base_url: https://gmailpostmastertools.googleapis.com +METHODS: + gmailpostmastertools.domainstatsbatchquery.create: + SUMMARY: Executes a batch of QueryDomainStats requests for multiple domains + DESC: Executes a batch of QueryDomainStats requests for multiple domains. Returns PERMISSION_DENIED if you don't have permission to access DomainStats for any of the requested domains. + HTTP: + METHOD: POST + ENDPOINT: /v2/domainStats:batchQuery + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(BatchQueryDomainStatsRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.traffic.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.traffic.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - body: + TYPE: STRUCT(BatchQueryDomainStatsRequest) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(BatchQueryDomainStatsResponse) + RETURNVAR: gmailpostmastertools_domainstatsbatchquery_create + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.domainstatsbatchquery.create + gmailpostmastertools.domain.list: + SUMMARY: Retrieves a list of all domains registered by you, along with their corresponding metadata + DESC: Retrieves a list of all domains registered by you, along with their corresponding metadata. The order of domains in the response is unspecified and non-deterministic. Newly registered domains will not necessarily be added to the end of this list. + HTTP: + METHOD: GET + ENDPOINT: /v2/domains + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.domain + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.domain + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - pageSize: + TYPE: INT + REQUIRED: false + LOCATION: query + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(ListDomainsResponse) + RETURNVAR: gmailpostmastertools_domain_list + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.domain.list + gmailpostmastertools.domain.create: + SUMMARY: "[Developer Preview](https://developers.google.com/workspace/preview): Adds a domain to the user's account" + DESC: "[Developer Preview](https://developers.google.com/workspace/preview): Adds a domain to the user's account. Returns INVALID_ARGUMENT if a domain is not provided. Returns ALREADY_EXISTS if the domain is already registered by the user." + HTTP: + METHOD: POST + ENDPOINT: /v2/domains + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(CreateDomainRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.domain + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.domain + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - body: + TYPE: STRUCT(CreateDomainRequest) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Domain) + RETURNVAR: gmailpostmastertools_domain_create + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.domain.create + gmailpostmastertools.resource.execute: + SUMMARY: "[Developer Preview](https://developers.google.com/workspace/preview): Deletes a user from a domain" + DESC: "[Developer Preview](https://developers.google.com/workspace/preview): Deletes a user from a domain. Returns NOT_FOUND if the user does not exist." + HTTP: + METHOD: DELETE + ENDPOINT: /v2/{+name} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.user + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.user + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - name: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(Empty) + RETURNVAR: gmailpostmastertools_resource_execute + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.resource.execute + gmailpostmastertools.resource.execute1: + SUMMARY: "[Developer Preview](https://developers.google.com/workspace/preview): Retrieves detailed information about a user that has access to a domain" + DESC: "[Developer Preview](https://developers.google.com/workspace/preview): Retrieves detailed information about a user that has access to a domain. Returns NOT_FOUND if the user does not exist." + HTTP: + METHOD: GET + ENDPOINT: /v2/{+name} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.user + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.user + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - name: + TYPE: STRING + REQUIRED: true + LOCATION: path + - verificationMethod: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - DOMAIN_VERIFICATION_METHOD_UNSPECIFIED + - TXT + - CNAME + RETURNS: + - RETURNTYPE: STRUCT(User) + RETURNVAR: gmailpostmastertools_resource_execute1 + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.resource.execute1 + gmailpostmastertools.resource.execute2: + SUMMARY: "[Developer Preview](https://developers.google.com/workspace/preview): Updates a user for a domain" + DESC: "[Developer Preview](https://developers.google.com/workspace/preview): Updates a user for a domain. Only Owners and Admins can execute this RPC, only a user's domain permission will be allowed to be updated. Returns NOT_FOUND if the user does not exist. Returns INVALID_ARGUMENT if a permission is not provided or is PERMISSION_UNSPECIFIED, NONE, or OWNER." + HTTP: + METHOD: PATCH + ENDPOINT: /v2/{+name} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(User) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.user + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.user + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - name: + TYPE: STRING + REQUIRED: true + LOCATION: path + - updateMask: + TYPE: STRING + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(User) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(User) + RETURNVAR: gmailpostmastertools_resource_execute2 + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.resource.execute2 + gmailpostmastertools.nameverify.create: + SUMMARY: "[Developer Preview](https://developers.google.com/workspace/preview): Verifies a user's ownership of a domain at the DNS level" + DESC: "[Developer Preview](https://developers.google.com/workspace/preview): Verifies a user's ownership of a domain at the DNS level. Note that this is distinct from checking if the user has OWNER status within IRDB." + HTTP: + METHOD: POST + ENDPOINT: /v2/{+name}:verify + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(VerifyDomainRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.domain + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.domain + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - name: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(VerifyDomainRequest) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(VerifyDomainResponse) + RETURNVAR: gmailpostmastertools_nameverify_create + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.nameverify.create + gmailpostmastertools.domainstatsquery.create: + SUMMARY: Retrieves a list of domain statistics for a given domain and time period + DESC: Retrieves a list of domain statistics for a given domain and time period. Returns statistics only for dates where data is available. Returns PERMISSION_DENIED if you don't have permission to access DomainStats for the domain. + HTTP: + METHOD: POST + ENDPOINT: /v2/{+parent}/domainStats:query + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(QueryDomainStatsRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.traffic.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.traffic.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - parent: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(QueryDomainStatsRequest) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(QueryDomainStatsResponse) + RETURNVAR: gmailpostmastertools_domainstatsquery_create + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.domainstatsquery.create + gmailpostmastertools.user.get: + SUMMARY: "[Developer Preview](https://developers.google.com/workspace/preview): Lists the users that have access to a domain." + DESC: "[Developer Preview](https://developers.google.com/workspace/preview): Lists the users that have access to a domain." + HTTP: + METHOD: GET + ENDPOINT: /v2/{+parent}/users + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.user + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.user + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - parent: + TYPE: STRING + REQUIRED: true + LOCATION: path + - pageSize: + TYPE: INT + REQUIRED: false + LOCATION: query + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(ListUsersResponse) + RETURNVAR: gmailpostmastertools_user_get + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.user.get + gmailpostmastertools.user.create: + SUMMARY: "[Developer Preview](https://developers.google.com/workspace/preview): Creates a user, who has access to a domain" + DESC: "[Developer Preview](https://developers.google.com/workspace/preview): Creates a user, who has access to a domain. Returns INVALID_ARGUMENT if a user is not provided." + HTTP: + METHOD: POST + ENDPOINT: /v2/{+parent}/users + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(CreateUserRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.user + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/postmaster.user + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - parent: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(CreateUserRequest) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(User) + RETURNVAR: gmailpostmastertools_user_create + STATUS: 200 + CANONICAL_ID: gmailpostmastertools.user.create +STRUCTS: + BaseMetric: + - name: standardMetric + TYPE: STRING + REQUIRED: false + ENUM: + - STANDARD_METRIC_UNSPECIFIED + - FEEDBACK_LOOP_ID + - FEEDBACK_LOOP_SPAM_RATE + - SPAM_RATE + - AUTH_SUCCESS_RATE + - TLS_ENCRYPTION_MESSAGE_COUNT + - TLS_ENCRYPTION_RATE + - DELIVERY_ERROR_COUNT + - DELIVERY_ERROR_RATE + comment: A predefined standard metric. + BatchQueryDomainStatsRequest: + - name: requests + TYPE: "[]STRUCT(QueryDomainStatsRequest)" + REQUIRED: false + comment: Required. A list of individual query requests. Each request can be for a different domain. A maximum of 100 requests can be included in a single batch. + BatchQueryDomainStatsResponse: + - name: results + TYPE: "[]STRUCT(BatchQueryDomainStatsResult)" + REQUIRED: false + comment: A list of responses, one for each query in the BatchQueryDomainStatsRequest. The order of responses will correspond to the order of requests. + BatchQueryDomainStatsResult: + - name: error + TYPE: STRUCT(Status) + REQUIRED: false + comment: The error status if the individual query failed. + - name: response + TYPE: STRUCT(QueryDomainStatsResponse) + REQUIRED: false + comment: The successful response for the individual query. + CreateDomainRequest: + - name: domainId + TYPE: STRING + REQUIRED: false + comment: Required. The domain to add. e.g., "example.com" + CreateUserRequest: + - name: permission + TYPE: STRING + REQUIRED: false + ENUM: + - PERMISSION_UNSPECIFIED + - READER + - ADMIN + - OWNER + - NONE + comment: Optional. Specifies the permission level to give the user for the specified domain. If not specified, the default value for this field is READER. + - name: userId + TYPE: STRING + REQUIRED: false + comment: Required. The user to create. + Date: + - name: day + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant. + - name: month + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day. + - name: year + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year. + DateList: + - name: dates + TYPE: "[]STRUCT(Date)" + REQUIRED: false + comment: Required. The list of specific dates for which to retrieve data. + DateRange: + - name: end + TYPE: STRUCT(Date) + REQUIRED: false + comment: Required. The inclusive end date of the date range. + - name: start + TYPE: STRUCT(Date) + REQUIRED: false + comment: Required. The inclusive start date of the date range. + DateRanges: + - name: dateRanges + TYPE: "[]STRUCT(DateRange)" + REQUIRED: false + comment: Required. The list of date ranges for which to retrieve data. + Domain: + - name: createTime + TYPE: STRING + REQUIRED: false + FORMAT: google-datetime + READ_ONLY: true + comment: Output only. Immutable. The timestamp at which the domain was added to the user's account. + - name: lastVerifyTime + TYPE: STRING + REQUIRED: false + FORMAT: google-datetime + comment: The timestamp at which the domain was last verified by the user. + - name: name + TYPE: STRING + REQUIRED: false + comment: "Identifier. The resource name of the domain. Format: `domains/{domain_name}`, where domain_name is the fully qualified domain name (i.e., mymail.mydomain.com)." + - name: permission + TYPE: STRING + REQUIRED: false + ENUM: + - PERMISSION_UNSPECIFIED + - READER + - ADMIN + - OWNER + - NONE + READ_ONLY: true + comment: Output only. User's permission of this domain. + - name: verificationState + TYPE: STRING + REQUIRED: false + ENUM: + - VERIFICATION_STATE_UNSPECIFIED + - UNVERIFIED + - VERIFIED + READ_ONLY: true + comment: Output only. Information about a user's verification history and properties for the domain. + DomainStat: + - name: date + TYPE: STRUCT(Date) + REQUIRED: false + comment: Optional. The specific date for these stats, if granularity is DAILY. This field is populated if the QueryDomainStatsRequest specified a DAILY aggregation granularity. + - name: metric + TYPE: STRING + REQUIRED: false + comment: The user-defined name from MetricDefinition.name in the request, used to correlate this result with the requested metric. + - name: name + TYPE: STRING + REQUIRED: false + READ_ONLY: true + comment: "Output only. The resource name of the DomainStat resource. Format: domains/{domain}/domainStats/{domain_stat} The `{domain_stat}` segment is an opaque, server-generated ID. We recommend using the `metric` field to identify queried metrics instead of parsing the name." + - name: value + TYPE: STRUCT(StatisticValue) + REQUIRED: false + comment: The value of the corresponding metric. + Empty: + - name: value + TYPE: ANY + REQUIRED: false + ListDomainsResponse: + - name: domains + TYPE: "[]STRUCT(Domain)" + REQUIRED: false + comment: The domains that have been registered by the user. + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Token to retrieve the next page of results, or empty if there are no more results in the list. + ListUsersResponse: + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Token to retrieve the next page of results, or empty if there are no more results in the list. + - name: users + TYPE: "[]STRUCT(User)" + REQUIRED: false + comment: The users that have access to the domain. + MetricDefinition: + - name: baseMetric + TYPE: STRUCT(BaseMetric) + REQUIRED: false + comment: Required. The underlying metric to query. + - name: filter + TYPE: STRING + REQUIRED: false + comment: Optional. Optional filters to apply to the metric. + - name: name + TYPE: STRING + REQUIRED: false + comment: Required. The user-defined name for this metric. This name will be used as the key for this metric's value in the response. + QueryDomainStatsRequest: + - name: aggregationGranularity + TYPE: STRING + REQUIRED: false + ENUM: + - AGGREGATION_GRANULARITY_UNSPECIFIED + - DAILY + - OVERALL + comment: Optional. The granularity at which to aggregate the statistics. If unspecified, defaults to DAILY. + - name: metricDefinitions + TYPE: "[]STRUCT(MetricDefinition)" + REQUIRED: false + comment: Required. The specific metrics to query. You can define a custom name for each metric, which will be used in the response. + - name: pageSize + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: Optional. The maximum number of DomainStats resources to return in the response. The server may return fewer than this value. If unspecified, a default value of 10 will be used. The maximum value is 200. + - name: pageToken + TYPE: STRING + REQUIRED: false + comment: Optional. The next_page_token value returned from a previous List request, if any. If the aggregation granularity is DAILY, the page token will be the encoded date + "/" + metric name. If the aggregation granularity is OVERALL, the page token will be the encoded metric name. + - name: parent + TYPE: STRING + REQUIRED: false + comment: "Required. The parent resource name where the stats are queried. Format: domains/{domain}" + - name: timeQuery + TYPE: STRUCT(TimeQuery) + REQUIRED: false + comment: Required. The time range or specific dates for which to retrieve the metrics. + QueryDomainStatsResponse: + - name: domainStats + TYPE: "[]STRUCT(DomainStat)" + REQUIRED: false + comment: The list of domain statistics. Each DomainStat object contains the value for a metric requested in the QueryDomainStatsRequest. + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Token to retrieve the next page of results, or empty if there are no more results in the list. + StatisticValue: + - name: doubleValue + TYPE: FLOAT + REQUIRED: false + FORMAT: double + comment: Double value. + - name: floatValue + TYPE: FLOAT + REQUIRED: false + FORMAT: float + comment: Float value. + - name: intValue + TYPE: STRING + REQUIRED: false + FORMAT: int64 + comment: Integer value. + - name: stringList + TYPE: STRUCT(StringList) + REQUIRED: false + comment: List of string values. + - name: stringValue + TYPE: STRING + REQUIRED: false + comment: String value. + Status: + - name: code + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: The status code, which should be an enum value of google.rpc.Code. + - name: details + TYPE: "[]ANY" + REQUIRED: false + comment: A list of messages that carry the error details. There is a common set of message types for APIs to use. + - name: message + TYPE: STRING + REQUIRED: false + comment: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client. + StringList: + - name: values + TYPE: "[]STRING" + REQUIRED: false + comment: The string values. + TimeQuery: + - name: dateList + TYPE: STRUCT(DateList) + REQUIRED: false + comment: A list of specific dates. + - name: dateRanges + TYPE: STRUCT(DateRanges) + REQUIRED: false + comment: A list of date ranges. + User: + - name: accessGranter + TYPE: STRING + REQUIRED: false + READ_ONLY: true + comment: Output only. The user that added the current user. + - name: createTime + TYPE: STRING + REQUIRED: false + FORMAT: google-datetime + READ_ONLY: true + comment: Output only. The time the user was granted access. + - name: name + TYPE: STRING + REQUIRED: false + comment: "Identifier. The resource name of the user. Format: users/{user} Note: {user} is the user's email address." + - name: permission + TYPE: STRING + REQUIRED: false + ENUM: + - PERMISSION_UNSPECIFIED + - READER + - ADMIN + - OWNER + - NONE + comment: The permission level that the user has for the specified domain. + - name: user + TYPE: STRING + REQUIRED: false + comment: The user's email address. + VerifyDomainRequest: + - name: verificationMethod + TYPE: STRING + REQUIRED: false + ENUM: + - DOMAIN_VERIFICATION_METHOD_UNSPECIFIED + - TXT + - CNAME + comment: Required. The verification method used. Must be specified, i.e. TXT or CNAME. + VerifyDomainResponse: + - name: value + TYPE: ANY + REQUIRED: false diff --git a/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Google Calendar/calendar/v3/methods.json b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Google Calendar/calendar/v3/methods.json new file mode 100644 index 0000000..7d3196a --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Google Calendar/calendar/v3/methods.json @@ -0,0 +1,194 @@ +{ + "methods": [ + { + "method_uuid": "", + "method_name": "Add a new event to a calendar", + "canonical_id": "calendar.event.create" + }, + { + "method_uuid": "", + "method_name": "Add a user to a calendar's access list", + "canonical_id": "calendar.acl.create" + }, + { + "method_uuid": "", + "method_name": "Add an existing calendar to the user's calendar list", + "canonical_id": "calendar.me.calendarList.create" + }, + { + "method_uuid": "", + "method_name": "Clear all events from a primary calendar", + "canonical_id": "calendar.clear.create" + }, + { + "method_uuid": "", + "method_name": "Create a secondary calendar for a user", + "canonical_id": "calendar.calendar.create" + }, + { + "method_uuid": "", + "method_name": "Delete a secondary calendar", + "canonical_id": "calendar.calendar.delete" + }, + { + "method_uuid": "", + "method_name": "Delete a specific event from a calendar", + "canonical_id": "calendar.event.delete" + }, + { + "method_uuid": "", + "method_name": "Get a specific calendar access control rule", + "canonical_id": "calendar.acl.get1" + }, + { + "method_uuid": "", + "method_name": "Get a specific calendar from the user's calendar list", + "canonical_id": "calendar.me.calendarList.get" + }, + { + "method_uuid": "", + "method_name": "Get a specific event from a calendar by its ID", + "canonical_id": "calendar.event.get1" + }, + { + "method_uuid": "", + "method_name": "Get a specific user setting", + "canonical_id": "calendar.me.settings.get" + }, + { + "method_uuid": "", + "method_name": "Get all settings for the current user", + "canonical_id": "calendar.me.settings.list" + }, + { + "method_uuid": "", + "method_name": "Get calendar access control list rules", + "canonical_id": "calendar.acl.get" + }, + { + "method_uuid": "", + "method_name": "Get calendar metadata by ID", + "canonical_id": "calendar.calendar.get" + }, + { + "method_uuid": "", + "method_name": "Get color definitions for calendars and events", + "canonical_id": "calendar.color.list" + }, + { + "method_uuid": "", + "method_name": "Get events for a specific calendar", + "canonical_id": "calendar.event.get" + }, + { + "method_uuid": "", + "method_name": "Get free/busy times for specified calendars", + "canonical_id": "calendar.freebusy.create" + }, + { + "method_uuid": "", + "method_name": "Get instances of a recurring event", + "canonical_id": "calendar.event.instances.get" + }, + { + "method_uuid": "", + "method_name": "Get the user's calendar list", + "canonical_id": "calendar.me.calendarList.list" + }, + { + "method_uuid": "", + "method_name": "Import an event into a calendar", + "canonical_id": "calendar.event.import.create" + }, + { + "method_uuid": "", + "method_name": "Move an event to a different calendar", + "canonical_id": "calendar.event.move.create" + }, + { + "method_uuid": "", + "method_name": "Quickly add a calendar event from text", + "canonical_id": "calendar.event.quickAdd.create" + }, + { + "method_uuid": "", + "method_name": "Receive notifications for calendar list changes", + "canonical_id": "calendar.me.watch.create" + }, + { + "method_uuid": "", + "method_name": "Remove a calendar from the user's calendar list", + "canonical_id": "calendar.me.calendarList.delete" + }, + { + "method_uuid": "", + "method_name": "Remove an access control rule from a calendar", + "canonical_id": "calendar.acl.delete" + }, + { + "method_uuid": "", + "method_name": "Stop watching resources through this channel", + "canonical_id": "calendar.stop.create" + }, + { + "method_uuid": "", + "method_name": "Transfer a secondary calendar to a new owner", + "canonical_id": "calendar.transferownership.create" + }, + { + "method_uuid": "", + "method_name": "Update a user's calendar entry", + "canonical_id": "calendar.me.calendarList.update" + }, + { + "method_uuid": "", + "method_name": "Update a user's calendar entry", + "canonical_id": "calendar.me.calendarList.update1" + }, + { + "method_uuid": "", + "method_name": "Update an access control rule for a calendar", + "canonical_id": "calendar.acl.update1" + }, + { + "method_uuid": "", + "method_name": "Update an access control rule for a calendar", + "canonical_id": "calendar.acl.update" + }, + { + "method_uuid": "", + "method_name": "Update an event in a calendar", + "canonical_id": "calendar.event.update1" + }, + { + "method_uuid": "", + "method_name": "Update an existing calendar event", + "canonical_id": "calendar.event.update" + }, + { + "method_uuid": "", + "method_name": "Update calendar metadata", + "canonical_id": "calendar.calendar.update" + }, + { + "method_uuid": "", + "method_name": "Update calendar metadata by ID", + "canonical_id": "calendar.calendar.update1" + }, + { + "method_uuid": "", + "method_name": "Watch for changes to calendar ACLs", + "canonical_id": "calendar.acl.watch.create" + }, + { + "method_uuid": "", + "method_name": "Watch for changes to calendar events", + "canonical_id": "calendar.event.watch.create" + }, + { + "method_uuid": "", + "method_name": "Watch for changes to settings resources", + "canonical_id": "calendar.me.watch.create1" + } + ] +} \ No newline at end of file diff --git a/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Google Calendar/calendar/v3/wrekenfile.yaml b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Google Calendar/calendar/v3/wrekenfile.yaml new file mode 100644 index 0000000..bba82a9 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/Google Calendar/calendar/v3/wrekenfile.yaml @@ -0,0 +1,4108 @@ +VERSION: 2.0.2 +DEFAULTS: + bearer_token: BEARER + w_base_url: https://www.googleapis.com/calendar/v3 +METHODS: + calendar.calendar.create: + SUMMARY: Creates a secondary calendar + DESC: |- + Creates a secondary calendar. + The authenticated user for the request is made the data owner of the new calendar. + + Note: We recommend to authenticate as the intended data owner of the calendar. You can use domain-wide delegation of authority to allow applications to act on behalf of a specific user. Don't use a service account for authentication. If you use a service account for authentication, the service account is the data owner, which can lead to unexpected behavior. For example, if a service account is the data owner, data ownership cannot be transferred. + HTTP: + METHOD: POST + ENDPOINT: /calendars + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Calendar) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - body: + TYPE: STRUCT(Calendar) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Calendar) + RETURNVAR: calendar_calendar_create + STATUS: 200 + CANONICAL_ID: calendar.calendar.create + calendar.calendar.delete: + SUMMARY: Deletes a secondary calendar + DESC: Deletes a secondary calendar. Use calendars.clear for clearing all events on primary calendars. + HTTP: + METHOD: DELETE + ENDPOINT: /calendars/{calendarId} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: calendar.calendar.delete + calendar.calendar.get: + SUMMARY: Returns metadata for a calendar. + DESC: Returns metadata for a calendar. + HTTP: + METHOD: GET + ENDPOINT: /calendars/{calendarId} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(Calendar) + RETURNVAR: calendar_calendar_get + STATUS: 200 + CANONICAL_ID: calendar.calendar.get + calendar.calendar.update: + SUMMARY: Updates metadata for a calendar + DESC: Updates metadata for a calendar. This method supports patch semantics. + HTTP: + METHOD: PATCH + ENDPOINT: /calendars/{calendarId} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Calendar) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(Calendar) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Calendar) + RETURNVAR: calendar_calendar_update + STATUS: 200 + CANONICAL_ID: calendar.calendar.update + calendar.calendar.update1: + SUMMARY: Updates metadata for a calendar. + DESC: Updates metadata for a calendar. + HTTP: + METHOD: PUT + ENDPOINT: /calendars/{calendarId} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Calendar) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - body: + TYPE: STRUCT(Calendar) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Calendar) + RETURNVAR: calendar_calendar_update1 + STATUS: 200 + CANONICAL_ID: calendar.calendar.update1 + calendar.acl.get: + SUMMARY: Returns the rules in the access control list for the calendar. + DESC: Returns the rules in the access control list for the calendar. + HTTP: + METHOD: GET + ENDPOINT: /calendars/{calendarId}/acl + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - maxResults: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - showDeleted: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - syncToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(Acl) + RETURNVAR: calendar_acl_get + STATUS: 200 + CANONICAL_ID: calendar.acl.get + calendar.acl.create: + SUMMARY: Creates an access control rule. + DESC: Creates an access control rule. + HTTP: + METHOD: POST + ENDPOINT: /calendars/{calendarId}/acl + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(AclRule) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - sendNotifications: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(AclRule) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(AclRule) + RETURNVAR: calendar_acl_create + STATUS: 200 + CANONICAL_ID: calendar.acl.create + calendar.acl.watch.create: + SUMMARY: Watch for changes to ACL resources. + DESC: Watch for changes to ACL resources. + HTTP: + METHOD: POST + ENDPOINT: /calendars/{calendarId}/acl/watch + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Channel) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - maxResults: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - showDeleted: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - syncToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(Channel) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Channel) + RETURNVAR: calendar_acl_watch_create + STATUS: 200 + CANONICAL_ID: calendar.acl.watch.create + calendar.acl.delete: + SUMMARY: Deletes an access control rule. + DESC: Deletes an access control rule. + HTTP: + METHOD: DELETE + ENDPOINT: /calendars/{calendarId}/acl/{ruleId} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - ruleId: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: calendar.acl.delete + calendar.acl.get1: + SUMMARY: Returns an access control rule. + DESC: Returns an access control rule. + HTTP: + METHOD: GET + ENDPOINT: /calendars/{calendarId}/acl/{ruleId} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - ruleId: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(AclRule) + RETURNVAR: calendar_acl_get1 + STATUS: 200 + CANONICAL_ID: calendar.acl.get1 + calendar.acl.update: + SUMMARY: Updates an access control rule + DESC: Updates an access control rule. This method supports patch semantics. + HTTP: + METHOD: PATCH + ENDPOINT: /calendars/{calendarId}/acl/{ruleId} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(AclRule) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - ruleId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - sendNotifications: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(AclRule) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(AclRule) + RETURNVAR: calendar_acl_update + STATUS: 200 + CANONICAL_ID: calendar.acl.update + calendar.acl.update1: + SUMMARY: Updates an access control rule. + DESC: Updates an access control rule. + HTTP: + METHOD: PUT + ENDPOINT: /calendars/{calendarId}/acl/{ruleId} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(AclRule) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - ruleId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - sendNotifications: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(AclRule) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(AclRule) + RETURNVAR: calendar_acl_update1 + STATUS: 200 + CANONICAL_ID: calendar.acl.update1 + calendar.clear.create: + SUMMARY: Clears a primary calendar + DESC: Clears a primary calendar. This operation deletes all events associated with the primary calendar of an account. + HTTP: + METHOD: POST + ENDPOINT: /calendars/{calendarId}/clear + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: calendar.clear.create + calendar.event.get: + SUMMARY: Returns events on the specified calendar. + DESC: Returns events on the specified calendar. + HTTP: + METHOD: GET + ENDPOINT: /calendars/{calendarId}/events + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.public.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.public.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - alwaysIncludeEmail: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - eventTypes: + TYPE: "[]ANY" + REQUIRED: false + LOCATION: query + STYLE: multi + - iCalUID: + TYPE: STRING + REQUIRED: false + LOCATION: query + - maxAttendees: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - maxResults: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + DEFAULT: 250 + - orderBy: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - startTime + - updated + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - privateExtendedProperty: + TYPE: "[]ANY" + REQUIRED: false + LOCATION: query + STYLE: multi + - q: + TYPE: STRING + REQUIRED: false + LOCATION: query + - sharedExtendedProperty: + TYPE: "[]ANY" + REQUIRED: false + LOCATION: query + STYLE: multi + - showDeleted: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - showHiddenInvitations: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - singleEvents: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - syncToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - timeMax: + TYPE: STRING + REQUIRED: false + LOCATION: query + - timeMin: + TYPE: STRING + REQUIRED: false + LOCATION: query + - timeZone: + TYPE: STRING + REQUIRED: false + LOCATION: query + - updatedMin: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(Events) + RETURNVAR: calendar_event_get + STATUS: 200 + CANONICAL_ID: calendar.event.get + calendar.event.create: + SUMMARY: Creates an event. + DESC: Creates an event. + HTTP: + METHOD: POST + ENDPOINT: /calendars/{calendarId}/events + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Event) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - conferenceDataVersion: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 0 + MAXIMUM: 1 + - eventLabelVersion: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 0 + MAXIMUM: 1 + - maxAttendees: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - sendNotifications: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - sendUpdates: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - all + - externalOnly + - none + - supportsAttachments: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(Event) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Event) + RETURNVAR: calendar_event_create + STATUS: 200 + CANONICAL_ID: calendar.event.create + calendar.event.import.create: + SUMMARY: Imports an event + DESC: |- + Imports an event. This operation is used to add a private copy of an existing event to a calendar. Only events with an eventType of default may be imported. + Deprecated behavior: If a non-default event is imported, its type will be changed to default and any event-type-specific properties it may have will be dropped. + HTTP: + METHOD: POST + ENDPOINT: /calendars/{calendarId}/events/import + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Event) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - conferenceDataVersion: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 0 + MAXIMUM: 1 + - eventLabelVersion: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 0 + MAXIMUM: 1 + - supportsAttachments: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(Event) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Event) + RETURNVAR: calendar_event_import_create + STATUS: 200 + CANONICAL_ID: calendar.event.import.create + calendar.event.quickAdd.create: + SUMMARY: Creates an event based on a simple text string. + DESC: Creates an event based on a simple text string. + HTTP: + METHOD: POST + ENDPOINT: /calendars/{calendarId}/events/quickAdd + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - text: + TYPE: STRING + REQUIRED: true + LOCATION: query + - sendNotifications: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - sendUpdates: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - all + - externalOnly + - none + RETURNS: + - RETURNTYPE: STRUCT(Event) + RETURNVAR: calendar_event_quickAdd_create + STATUS: 200 + CANONICAL_ID: calendar.event.quickAdd.create + calendar.event.watch.create: + SUMMARY: Watch for changes to Events resources. + DESC: Watch for changes to Events resources. + HTTP: + METHOD: POST + ENDPOINT: /calendars/{calendarId}/events/watch + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Channel) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.public.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.public.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - alwaysIncludeEmail: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - eventTypes: + TYPE: "[]ANY" + REQUIRED: false + LOCATION: query + STYLE: multi + - iCalUID: + TYPE: STRING + REQUIRED: false + LOCATION: query + - maxAttendees: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - maxResults: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + DEFAULT: 250 + - orderBy: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - startTime + - updated + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - privateExtendedProperty: + TYPE: "[]ANY" + REQUIRED: false + LOCATION: query + STYLE: multi + - q: + TYPE: STRING + REQUIRED: false + LOCATION: query + - sharedExtendedProperty: + TYPE: "[]ANY" + REQUIRED: false + LOCATION: query + STYLE: multi + - showDeleted: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - showHiddenInvitations: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - singleEvents: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - syncToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - timeMax: + TYPE: STRING + REQUIRED: false + LOCATION: query + - timeMin: + TYPE: STRING + REQUIRED: false + LOCATION: query + - timeZone: + TYPE: STRING + REQUIRED: false + LOCATION: query + - updatedMin: + TYPE: STRING + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(Channel) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Channel) + RETURNVAR: calendar_event_watch_create + STATUS: 200 + CANONICAL_ID: calendar.event.watch.create + calendar.event.delete: + SUMMARY: Deletes an event. + DESC: Deletes an event. + HTTP: + METHOD: DELETE + ENDPOINT: /calendars/{calendarId}/events/{eventId} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - eventId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - sendNotifications: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - sendUpdates: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - all + - externalOnly + - none + CANONICAL_ID: calendar.event.delete + calendar.event.get1: + SUMMARY: Returns an event based on its Google Calendar ID + DESC: Returns an event based on its Google Calendar ID. To retrieve an event using its iCalendar ID, call the events.list method using the iCalUID parameter. + HTTP: + METHOD: GET + ENDPOINT: /calendars/{calendarId}/events/{eventId} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.public.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.public.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - eventId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - alwaysIncludeEmail: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - maxAttendees: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - timeZone: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(Event) + RETURNVAR: calendar_event_get1 + STATUS: 200 + CANONICAL_ID: calendar.event.get1 + calendar.event.update: + SUMMARY: Updates an event + DESC: Updates an event. This method supports patch semantics. + HTTP: + METHOD: PATCH + ENDPOINT: /calendars/{calendarId}/events/{eventId} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Event) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - eventId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - alwaysIncludeEmail: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - conferenceDataVersion: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 0 + MAXIMUM: 1 + - eventLabelVersion: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 0 + MAXIMUM: 1 + - maxAttendees: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - sendNotifications: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - sendUpdates: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - all + - externalOnly + - none + - supportsAttachments: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(Event) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Event) + RETURNVAR: calendar_event_update + STATUS: 200 + CANONICAL_ID: calendar.event.update + calendar.event.update1: + SUMMARY: Updates an event. + DESC: Updates an event. + HTTP: + METHOD: PUT + ENDPOINT: /calendars/{calendarId}/events/{eventId} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Event) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - eventId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - alwaysIncludeEmail: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - conferenceDataVersion: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 0 + MAXIMUM: 1 + - eventLabelVersion: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 0 + MAXIMUM: 1 + - maxAttendees: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - sendNotifications: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - sendUpdates: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - all + - externalOnly + - none + - supportsAttachments: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(Event) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Event) + RETURNVAR: calendar_event_update1 + STATUS: 200 + CANONICAL_ID: calendar.event.update1 + calendar.event.instances.get: + SUMMARY: Returns instances of the specified recurring event. + DESC: Returns instances of the specified recurring event. + HTTP: + METHOD: GET + ENDPOINT: /calendars/{calendarId}/events/{eventId}/instances + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.public.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.public.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - eventId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - alwaysIncludeEmail: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - maxAttendees: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - maxResults: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - originalStart: + TYPE: STRING + REQUIRED: false + LOCATION: query + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - showDeleted: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - timeMax: + TYPE: STRING + REQUIRED: false + LOCATION: query + - timeMin: + TYPE: STRING + REQUIRED: false + LOCATION: query + - timeZone: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(Events) + RETURNVAR: calendar_event_instances_get + STATUS: 200 + CANONICAL_ID: calendar.event.instances.get + calendar.event.move.create: + SUMMARY: Moves an event to another calendar, i.e + DESC: Moves an event to another calendar, i.e. changes an event's organizer. Note that only default events can be moved; birthday, focusTime, fromGmail, outOfOffice and workingLocation events cannot be moved. + HTTP: + METHOD: POST + ENDPOINT: /calendars/{calendarId}/events/{eventId}/move + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - eventId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - destination: + TYPE: STRING + REQUIRED: true + LOCATION: query + - sendNotifications: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - sendUpdates: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - all + - externalOnly + - none + RETURNS: + - RETURNTYPE: STRUCT(Event) + RETURNVAR: calendar_event_move_create + STATUS: 200 + CANONICAL_ID: calendar.event.move.create + calendar.transferownership.create: + SUMMARY: Transfers a secondary calendar between users within a Google Workspace organization + DESC: |- + Transfers a secondary calendar between users within a Google Workspace organization. Requires user authentication with Manage Calendars administrator privilege, and one of the following authorization scopes: + - https://www.googleapis.com/auth/calendar + - https://www.googleapis.com/auth/calendar.calendars In the request, set useAdminAccess to true. The secondary calendar must be active to be transferred. Transferring disabled or deleted calendars isn't supported. + HTTP: + METHOD: POST + ENDPOINT: /calendars/{calendarId}/transferOwnership + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendars + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - newDataOwner: + TYPE: STRING + REQUIRED: true + LOCATION: query + - useAdminAccess: + TYPE: BOOL + REQUIRED: true + LOCATION: query + CANONICAL_ID: calendar.transferownership.create + calendar.stop.create: + SUMMARY: Stop watching resources through this channel + DESC: Stop watching resources through this channel + HTTP: + METHOD: POST + ENDPOINT: /channels/stop + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Channel) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.acls.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.public.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.public.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.settings.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.settings.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - body: + TYPE: STRUCT(Channel) + REQUIRED: false + LOCATION: body + CANONICAL_ID: calendar.stop.create + calendar.color.list: + SUMMARY: Returns the color definitions for calendars and events. + DESC: Returns the color definitions for calendars and events. + HTTP: + METHOD: GET + ENDPOINT: /colors + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.owned.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.public.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.public.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + EXECUTION: + KIND: http + MODE: sync + RETURNS: + - RETURNTYPE: STRUCT(Colors) + RETURNVAR: calendar_color_list + STATUS: 200 + CANONICAL_ID: calendar.color.list + calendar.freebusy.create: + SUMMARY: Returns free/busy information for a set of calendars. + DESC: Returns free/busy information for a set of calendars. + HTTP: + METHOD: POST + ENDPOINT: /freeBusy + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(FreeBusyRequest) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.events.freebusy + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.freebusy + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.freebusy + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - body: + TYPE: STRUCT(FreeBusyRequest) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(FreeBusyResponse) + RETURNVAR: calendar_freebusy_create + STATUS: 200 + CANONICAL_ID: calendar.freebusy.create + calendar.me.calendarList.list: + SUMMARY: Returns the calendars on the user's calendar list. + DESC: Returns the calendars on the user's calendar list. + HTTP: + METHOD: GET + ENDPOINT: /users/me/calendarList + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - maxResults: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - minAccessRole: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - freeBusyReader + - owner + - reader + - writer + - writerWithoutPrivateAccess + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - showDeleted: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - showHidden: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - showOwnOrganizationOnly: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - syncToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(CalendarList) + RETURNVAR: calendar_me_calendarList_list + STATUS: 200 + CANONICAL_ID: calendar.me.calendarList.list + calendar.me.calendarList.create: + SUMMARY: Inserts an existing calendar into the user's calendar list. + DESC: Inserts an existing calendar into the user's calendar list. + HTTP: + METHOD: POST + ENDPOINT: /users/me/calendarList + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(CalendarListEntry) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - colorRgbFormat: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(CalendarListEntry) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(CalendarListEntry) + RETURNVAR: calendar_me_calendarList_create + STATUS: 200 + CANONICAL_ID: calendar.me.calendarList.create + calendar.me.watch.create: + SUMMARY: Watch for changes to CalendarList resources. + DESC: Watch for changes to CalendarList resources. + HTTP: + METHOD: POST + ENDPOINT: /users/me/calendarList/watch + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Channel) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - maxResults: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - minAccessRole: + TYPE: STRING + REQUIRED: false + LOCATION: query + ENUM: + - freeBusyReader + - owner + - reader + - writer + - writerWithoutPrivateAccess + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - showDeleted: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - showHidden: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - showOwnOrganizationOnly: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - syncToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(Channel) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Channel) + RETURNVAR: calendar_me_watch_create + STATUS: 200 + CANONICAL_ID: calendar.me.watch.create + calendar.me.calendarList.delete: + SUMMARY: Removes a calendar from the user's calendar list. + DESC: Removes a calendar from the user's calendar list. + HTTP: + METHOD: DELETE + ENDPOINT: /users/me/calendarList/{calendarId} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + CANONICAL_ID: calendar.me.calendarList.delete + calendar.me.calendarList.get: + SUMMARY: Returns a calendar from the user's calendar list. + DESC: Returns a calendar from the user's calendar list. + HTTP: + METHOD: GET + ENDPOINT: /users/me/calendarList/{calendarId} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(CalendarListEntry) + RETURNVAR: calendar_me_calendarList_get + STATUS: 200 + CANONICAL_ID: calendar.me.calendarList.get + calendar.me.calendarList.update: + SUMMARY: Updates an existing calendar on the user's calendar list + DESC: Updates an existing calendar on the user's calendar list. This method supports patch semantics. + HTTP: + METHOD: PATCH + ENDPOINT: /users/me/calendarList/{calendarId} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(CalendarListEntry) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - colorRgbFormat: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(CalendarListEntry) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(CalendarListEntry) + RETURNVAR: calendar_me_calendarList_update + STATUS: 200 + CANONICAL_ID: calendar.me.calendarList.update + calendar.me.calendarList.update1: + SUMMARY: Updates an existing calendar on the user's calendar list. + DESC: Updates an existing calendar on the user's calendar list. + HTTP: + METHOD: PUT + ENDPOINT: /users/me/calendarList/{calendarId} + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(CalendarListEntry) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.app.created + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.calendarlist + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - calendarId: + TYPE: STRING + REQUIRED: true + LOCATION: path + - colorRgbFormat: + TYPE: BOOL + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(CalendarListEntry) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(CalendarListEntry) + RETURNVAR: calendar_me_calendarList_update1 + STATUS: 200 + CANONICAL_ID: calendar.me.calendarList.update1 + calendar.me.settings.list: + SUMMARY: Returns all user settings for the authenticated user. + DESC: Returns all user settings for the authenticated user. + HTTP: + METHOD: GET + ENDPOINT: /users/me/settings + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.settings.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.settings.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - maxResults: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - syncToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + RETURNS: + - RETURNTYPE: STRUCT(Settings) + RETURNVAR: calendar_me_settings_list + STATUS: 200 + CANONICAL_ID: calendar.me.settings.list + calendar.me.watch.create1: + SUMMARY: Watch for changes to Settings resources. + DESC: Watch for changes to Settings resources. + HTTP: + METHOD: POST + ENDPOINT: /users/me/settings/watch + HEADERS: + Content-Type: application/json + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + BODY: + TYPE: STRUCT(Channel) + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.settings.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.settings.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - maxResults: + TYPE: INT + REQUIRED: false + LOCATION: query + MINIMUM: 1 + - pageToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - syncToken: + TYPE: STRING + REQUIRED: false + LOCATION: query + - body: + TYPE: STRUCT(Channel) + REQUIRED: false + LOCATION: body + RETURNS: + - RETURNTYPE: STRUCT(Channel) + RETURNVAR: calendar_me_watch_create1 + STATUS: 200 + CANONICAL_ID: calendar.me.watch.create1 + calendar.me.settings.get: + SUMMARY: Returns a single user setting. + DESC: Returns a single user setting. + HTTP: + METHOD: GET + ENDPOINT: /users/me/settings/{setting} + HEADERS: + Authorization: bearer_token + CONTENT_TYPE: application/json + ACCEPT: application/json + SECURITY: + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.readonly + - Oauth2: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.settings.readonly + Oauth2c: + type: oauth2 + scopes: + - https://www.googleapis.com/auth/calendar.settings.readonly + EXECUTION: + KIND: http + MODE: sync + INPUTS: + - setting: + TYPE: STRING + REQUIRED: true + LOCATION: path + RETURNS: + - RETURNTYPE: STRUCT(Setting) + RETURNVAR: calendar_me_settings_get + STATUS: 200 + CANONICAL_ID: calendar.me.settings.get +STRUCTS: + Acl: + - name: etag + TYPE: STRING + REQUIRED: false + comment: ETag of the collection. + - name: items + TYPE: "[]STRUCT(AclRule)" + REQUIRED: false + comment: List of rules on the access control list. + - name: kind + TYPE: STRING + REQUIRED: false + DEFAULT: calendar#acl + comment: Type of the collection ("calendar#acl"). + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Token used to access the next page of this result. Omitted if no further results are available, in which case nextSyncToken is provided. + - name: nextSyncToken + TYPE: STRING + REQUIRED: false + comment: Token used at a later point in time to retrieve only the entries that have changed since this result was returned. Omitted if further results are available, in which case nextPageToken is provided. + AclRule_scope: + - name: type + TYPE: STRING + REQUIRED: false + comment: |- + The type of the scope. Possible values are: + - "default" - The public scope. This is the default value. + - "user" - Limits the scope to a single user. + - "group" - Limits the scope to a group. + - "domain" - Limits the scope to a domain. Note: The permissions granted to the "default", or public, scope apply to any user, authenticated or not. + - name: value + TYPE: STRING + REQUIRED: false + comment: The email address of a user or group, or the name of a domain, depending on the scope type. Omitted for type "default". + AclRule: + - name: etag + TYPE: STRING + REQUIRED: false + comment: ETag of the resource. + - name: id + TYPE: STRING + REQUIRED: false + comment: Identifier of the Access Control List (ACL) rule. See Sharing calendars. + - name: kind + TYPE: STRING + REQUIRED: false + DEFAULT: calendar#aclRule + comment: Type of the resource ("calendar#aclRule"). + - name: role + TYPE: STRING + REQUIRED: false + comment: |- + The role assigned to the scope. Possible values are: + - "none" - Provides no access. + - "freeBusyReader" - Provides read access to free/busy information. + - "reader" - Provides read access to the calendar. Private events will appear to users with reader access, but event details will be hidden. + - "writerWithoutPrivateAccess" - Provides read and write access to the calendar. Private events will appear to users with writerWithoutPrivateAccess access, but event details will be hidden. + - "writer" - Provides read and write access to the calendar. Private events will appear to users with writer access, and event details will be visible. Provides read access to the calendar's ACLs. + - "owner" - Provides manager access to the calendar. This role has all of the permissions of the writer role with the additional ability to modify access levels of other users. + Important: the owner role is different from the calendar's data owner. A calendar has a single data owner, but can have multiple users with owner role. + - name: scope + TYPE: STRUCT(AclRule_scope) + REQUIRED: false + comment: The extent to which calendar access is granted by this ACL rule. + Calendar: + - name: autoAcceptInvitations + TYPE: BOOL + REQUIRED: false + comment: Whether this calendar automatically accepts invitations. Only valid for resource calendars. + - name: conferenceProperties + TYPE: STRUCT(ConferenceProperties) + REQUIRED: false + comment: Conferencing properties for this calendar, for example what types of conferences are allowed. + - name: dataOwner + TYPE: STRING + REQUIRED: false + comment: The email of the owner of the calendar. Set only for secondary calendars. Read-only. + - name: description + TYPE: STRING + REQUIRED: false + comment: Description of the calendar. Optional. + - name: etag + TYPE: STRING + REQUIRED: false + comment: ETag of the resource. + - name: id + TYPE: STRING + REQUIRED: false + comment: Identifier of the calendar. To retrieve IDs call the calendarList.list() method. + - name: kind + TYPE: STRING + REQUIRED: false + DEFAULT: calendar#calendar + comment: Type of the resource ("calendar#calendar"). + - name: labelProperties + TYPE: STRUCT(LabelProperties) + REQUIRED: false + comment: Label properties defined on this calendar. If specified, overwrites the existing label properties. If not specified, the label properties remain unchanged. + - name: location + TYPE: STRING + REQUIRED: false + comment: Geographic location of the calendar as free-form text. Optional. + - name: summary + TYPE: STRING + REQUIRED: false + comment: Title of the calendar. + - name: timeZone + TYPE: STRING + REQUIRED: false + comment: The time zone of the calendar. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) Optional. + CalendarList: + - name: etag + TYPE: STRING + REQUIRED: false + comment: ETag of the collection. + - name: items + TYPE: "[]STRUCT(CalendarListEntry)" + REQUIRED: false + comment: Calendars that are present on the user's calendar list. + - name: kind + TYPE: STRING + REQUIRED: false + DEFAULT: calendar#calendarList + comment: Type of the collection ("calendar#calendarList"). + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Token used to access the next page of this result. Omitted if no further results are available, in which case nextSyncToken is provided. + - name: nextSyncToken + TYPE: STRING + REQUIRED: false + comment: Token used at a later point in time to retrieve only the entries that have changed since this result was returned. Omitted if further results are available, in which case nextPageToken is provided. + CalendarListEntry_notificationSettings: + - name: notifications + TYPE: "[]STRUCT(CalendarNotification)" + REQUIRED: false + comment: The list of notifications set for this calendar. + CalendarListEntry: + - name: accessRole + TYPE: STRING + REQUIRED: false + comment: |- + The effective access role that the authenticated user has on the calendar. Read-only. Possible values are: + - "freeBusyReader" - Provides read access to free/busy information. + - "reader" - Provides read access to the calendar. Private events will appear to users with reader access, but event details will be hidden. + - "writerWithoutPrivateAccess" - Provides read and write access to the calendar. Private events will appear to users with writerWithoutPrivateAccess access, but event details will be hidden. + - "writer" - Provides read and write access to the calendar. Private events will appear to users with writer access, and event details will be visible. + - "owner" - Provides manager access to the calendar. This role has all of the permissions of the writer role with the additional ability to see and modify access levels of other users. + Important: the owner role is different from the calendar's data owner. A calendar has a single data owner, but can have multiple users with owner role. + - name: autoAcceptInvitations + TYPE: BOOL + REQUIRED: false + comment: Whether this calendar automatically accepts invitations. Only valid for resource calendars. Read-only. + - name: backgroundColor + TYPE: STRING + REQUIRED: false + comment: The main color of the calendar in the hexadecimal format "#0088aa". This property supersedes the index-based colorId property. To set or change this property, you need to specify colorRgbFormat=true in the parameters of the insert, update and patch methods. Optional. + - name: colorId + TYPE: STRING + REQUIRED: false + comment: The color of the calendar. This is an ID referring to an entry in the calendar section of the colors definition (see the colors endpoint). This property is superseded by the backgroundColor and foregroundColor properties and can be ignored when using these properties. Optional. + - name: conferenceProperties + TYPE: STRUCT(ConferenceProperties) + REQUIRED: false + comment: Conferencing properties for this calendar, for example what types of conferences are allowed. + - name: dataOwner + TYPE: STRING + REQUIRED: false + comment: The email of the owner of the calendar. Set only for secondary calendars. Read-only. + - name: defaultReminders + TYPE: "[]STRUCT(EventReminder)" + REQUIRED: false + comment: The default reminders that the authenticated user has for this calendar. + - name: deleted + TYPE: BOOL + REQUIRED: false + DEFAULT: false + comment: Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The default is False. + - name: description + TYPE: STRING + REQUIRED: false + comment: Description of the calendar. Optional. Read-only. + - name: etag + TYPE: STRING + REQUIRED: false + comment: ETag of the resource. + - name: foregroundColor + TYPE: STRING + REQUIRED: false + comment: The foreground color of the calendar in the hexadecimal format "#ffffff". This property supersedes the index-based colorId property. To set or change this property, you need to specify colorRgbFormat=true in the parameters of the insert, update and patch methods. Optional. + - name: hidden + TYPE: BOOL + REQUIRED: false + DEFAULT: false + comment: Whether the calendar has been hidden from the list. Optional. The attribute is only returned when the calendar is hidden, in which case the value is true. + - name: id + TYPE: STRING + REQUIRED: false + comment: Identifier of the calendar. + - name: kind + TYPE: STRING + REQUIRED: false + DEFAULT: calendar#calendarListEntry + comment: Type of the resource ("calendar#calendarListEntry"). + - name: location + TYPE: STRING + REQUIRED: false + comment: Geographic location of the calendar as free-form text. Optional. Read-only. + - name: notificationSettings + TYPE: STRUCT(CalendarListEntry_notificationSettings) + REQUIRED: false + comment: The notifications that the authenticated user is receiving for this calendar. + - name: primary + TYPE: BOOL + REQUIRED: false + DEFAULT: false + comment: Whether the calendar is the primary calendar of the authenticated user. Read-only. Optional. The default is False. + - name: selected + TYPE: BOOL + REQUIRED: false + DEFAULT: false + comment: Whether the calendar content shows up in the calendar UI. Optional. The default is False. + - name: summary + TYPE: STRING + REQUIRED: false + comment: Title of the calendar. Read-only. + - name: summaryOverride + TYPE: STRING + REQUIRED: false + comment: The summary that the authenticated user has set for this calendar. Optional. + - name: timeZone + TYPE: STRING + REQUIRED: false + comment: The time zone of the calendar. Optional. Read-only. + CalendarNotification: + - name: method + TYPE: STRING + REQUIRED: false + comment: |- + The method used to deliver the notification. The possible value is: + - "email" - Notifications are sent via email. + Required when adding a notification. + - name: type + TYPE: STRING + REQUIRED: false + comment: |- + The type of notification. Possible values are: + - "eventCreation" - Notification sent when a new event is put on the calendar. + - "eventChange" - Notification sent when an event is changed. + - "eventCancellation" - Notification sent when an event is cancelled. + - "eventResponse" - Notification sent when an attendee responds to the event invitation. + - "agenda" - An agenda with the events of the day (sent out in the morning). + Required when adding a notification. + Channel: + - name: address + TYPE: STRING + REQUIRED: false + comment: The address where notifications are delivered for this channel. + - name: expiration + TYPE: STRING + REQUIRED: false + FORMAT: int64 + comment: Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. Optional. + - name: id + TYPE: STRING + REQUIRED: false + comment: A UUID or similar unique string that identifies this channel. + - name: kind + TYPE: STRING + REQUIRED: false + DEFAULT: api#channel + comment: Identifies this as a notification channel used to watch for changes to a resource, which is "api#channel". + - name: params + TYPE: map[STRING]STRING + REQUIRED: false + comment: Additional parameters controlling delivery channel behavior. Optional. + - name: payload + TYPE: BOOL + REQUIRED: false + comment: A Boolean value to indicate whether payload is wanted. Optional. + - name: resourceId + TYPE: STRING + REQUIRED: false + comment: An opaque ID that identifies the resource being watched on this channel. Stable across different API versions. + - name: resourceUri + TYPE: STRING + REQUIRED: false + comment: A version-specific identifier for the watched resource. + - name: token + TYPE: STRING + REQUIRED: false + comment: An arbitrary string delivered to the target address with each notification delivered over this channel. Optional. + - name: type + TYPE: STRING + REQUIRED: false + comment: The type of delivery mechanism used for this channel. Valid values are "web_hook" (or "webhook"). Both values refer to a channel where Http requests are used to deliver messages. + Colors: + - name: calendar + TYPE: map[STRING]ANY + REQUIRED: false + comment: A global palette of calendar colors, mapping from the color ID to its definition. A calendarListEntry resource refers to one of these color IDs in its colorId field. Read-only. + - name: event + TYPE: map[STRING]ANY + REQUIRED: false + comment: A global palette of event colors, mapping from the color ID to its definition. An event resource may refer to one of these color IDs in its colorId field. Read-only. + - name: kind + TYPE: STRING + REQUIRED: false + DEFAULT: calendar#colors + comment: Type of the resource ("calendar#colors"). + - name: updated + TYPE: TIMESTAMP + REQUIRED: false + FORMAT: date-time + comment: Last modification time of the color palette (as a RFC3339 timestamp). Read-only. + ConferenceData: + - name: parameters + TYPE: STRUCT(ConferenceParameters) + REQUIRED: false + comment: Additional properties related to a conference. An example would be a solution-specific setting for enabling video streaming. + - name: conferenceId + TYPE: STRING + REQUIRED: false + comment: |- + The ID of the conference. + Can be used by developers to keep track of conferences, should not be displayed to users. + The ID value is formed differently for each conference solution type: + - eventHangout: ID is not set. (This conference type is deprecated.) + - eventNamedHangout: ID is the name of the Hangout. (This conference type is deprecated.) + - hangoutsMeet: ID is the 10-letter meeting code, for example aaa-bbbb-ccc. + - addOn: ID is defined by the third-party provider. Optional. + - name: conferenceSolution + TYPE: STRUCT(ConferenceSolution) + REQUIRED: false + comment: |- + The conference solution, such as Google Meet. + Unset for a conference with a failed create request. + Either conferenceSolution and at least one entryPoint, or createRequest is required. + - name: createRequest + TYPE: STRUCT(CreateConferenceRequest) + REQUIRED: false + comment: |- + A request to generate a new conference and attach it to the event. The data is generated asynchronously. To see whether the data is present check the status field. + Either conferenceSolution and at least one entryPoint, or createRequest is required. + - name: entryPoints + TYPE: "[]STRUCT(EntryPoint)" + REQUIRED: false + comment: |- + Information about individual conference entry points, such as URLs or phone numbers. + All of them must belong to the same conference. + Either conferenceSolution and at least one entryPoint, or createRequest is required. + - name: notes + TYPE: STRING + REQUIRED: false + comment: Additional notes (such as instructions from the domain administrator, legal notices) to display to the user. Can contain HTML. The maximum length is 2048 characters. Optional. + - name: signature + TYPE: STRING + REQUIRED: false + comment: |- + The signature of the conference data. + Generated on server side. + Unset for a conference with a failed create request. + Optional for a conference with a pending create request. + ConferenceParameters: + - name: addOnParameters + TYPE: STRUCT(ConferenceParametersAddOnParameters) + REQUIRED: false + comment: Additional add-on specific data. + ConferenceParametersAddOnParameters: + - name: parameters + TYPE: map[STRING]STRING + REQUIRED: false + ConferenceProperties: + - name: allowedConferenceSolutionTypes + TYPE: "[]STRING" + REQUIRED: false + comment: |- + The types of conference solutions that are supported for this calendar. + The possible values are: + - "eventHangout" + - "eventNamedHangout" + - "hangoutsMeet" Optional. + ConferenceRequestStatus: + - name: statusCode + TYPE: STRING + REQUIRED: false + comment: |- + The current status of the conference create request. Read-only. + The possible values are: + - "pending": the conference create request is still being processed. + - "success": the conference create request succeeded, the entry points are populated. + - "failure": the conference create request failed, there are no entry points. + ConferenceSolution: + - name: iconUri + TYPE: STRING + REQUIRED: false + comment: The user-visible icon for this solution. + - name: key + TYPE: STRUCT(ConferenceSolutionKey) + REQUIRED: false + comment: The key which can uniquely identify the conference solution for this event. + - name: name + TYPE: STRING + REQUIRED: false + comment: The user-visible name of this solution. Not localized. + ConferenceSolutionKey: + - name: type + TYPE: STRING + REQUIRED: false + comment: |- + The conference solution type. + If a client encounters an unfamiliar or empty type, it should still be able to display the entry points. However, it should disallow modifications. + The possible values are: + - "eventHangout" for Hangouts for consumers (deprecated; existing events may show this conference solution type but new conferences cannot be created) + - "eventNamedHangout" for classic Hangouts for Google Workspace users (deprecated; existing events may show this conference solution type but new conferences cannot be created) + - "hangoutsMeet" for Google Meet (http://meet.google.com) + - "addOn" for 3P conference providers + CreateConferenceRequest: + - name: conferenceSolutionKey + TYPE: STRUCT(ConferenceSolutionKey) + REQUIRED: false + comment: The conference solution, such as Hangouts or Google Meet. + - name: requestId + TYPE: STRING + REQUIRED: false + comment: |- + The client-generated unique ID for this request. + Clients should regenerate this ID for every new request. If an ID provided is the same as for the previous request, the request is ignored. + - name: status + TYPE: STRUCT(ConferenceRequestStatus) + REQUIRED: false + comment: The status of the conference create request. + EntryPoint: + - name: accessCode + TYPE: STRING + REQUIRED: false + comment: |- + The access code to access the conference. The maximum length is 128 characters. + When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed. + Optional. + - name: entryPointFeatures + TYPE: "[]STRING" + REQUIRED: false + comment: Features of the entry point, such as being toll or toll-free. One entry point can have multiple features. However, toll and toll-free cannot be both set on the same entry point. + - name: entryPointType + TYPE: STRING + REQUIRED: false + comment: |- + The type of the conference entry point. + Possible values are: + - "video" - joining a conference over HTTP. A conference can have zero or one video entry point. + - "phone" - joining a conference by dialing a phone number. A conference can have zero or more phone entry points. + - "sip" - joining a conference over SIP. A conference can have zero or one sip entry point. + - "more" - further conference joining instructions, for example additional phone numbers. A conference can have zero or one more entry point. A conference with only a more entry point is not a valid conference. + - name: label + TYPE: STRING + REQUIRED: false + comment: |- + The label for the URI. Visible to end users. Not localized. The maximum length is 512 characters. + Examples: + - for video: meet.google.com/aaa-bbbb-ccc + - for phone: +1 123 268 2601 + - for sip: 12345678@altostrat.com + - for more: should not be filled + Optional. + - name: meetingCode + TYPE: STRING + REQUIRED: false + comment: |- + The meeting code to access the conference. The maximum length is 128 characters. + When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed. + Optional. + - name: passcode + TYPE: STRING + REQUIRED: false + comment: |- + The passcode to access the conference. The maximum length is 128 characters. + When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed. + - name: password + TYPE: STRING + REQUIRED: false + comment: |- + The password to access the conference. The maximum length is 128 characters. + When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed. + Optional. + - name: pin + TYPE: STRING + REQUIRED: false + comment: |- + The PIN to access the conference. The maximum length is 128 characters. + When creating new conference data, populate only the subset of {meetingCode, accessCode, passcode, password, pin} fields that match the terminology that the conference provider uses. Only the populated fields should be displayed. + Optional. + - name: regionCode + TYPE: STRING + REQUIRED: false + comment: |- + The CLDR/ISO 3166 region code for the country associated with this phone access. Example: "SE" for Sweden. + Calendar backend will populate this field only for EntryPointType.PHONE. + - name: uri + TYPE: STRING + REQUIRED: false + comment: |- + The URI of the entry point. The maximum length is 1300 characters. + Format: + - for video, http: or https: schema is required. + - for phone, tel: schema is required. The URI should include the entire dial sequence (e.g., tel:+12345678900,,,123456789;1234). + - for sip, sip: schema is required, e.g., sip:12345678@myprovider.com. + - for more, http: or https: schema is required. + Event_creator: + - name: displayName + TYPE: STRING + REQUIRED: false + comment: The creator's name, if available. + - name: email + TYPE: STRING + REQUIRED: false + comment: The creator's email address, if available. + - name: id + TYPE: STRING + REQUIRED: false + comment: The creator's Profile ID, if available. + - name: self + TYPE: BOOL + REQUIRED: false + DEFAULT: "false" + comment: Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False. + Event_extendedProperties: + - name: private + TYPE: map[STRING]STRING + REQUIRED: false + comment: Properties that are private to the copy of the event that appears on this calendar. + - name: shared + TYPE: map[STRING]STRING + REQUIRED: false + comment: Properties that are shared between copies of the event on other attendees' calendars. + Event_gadget: + - name: display + TYPE: STRING + REQUIRED: false + comment: |- + The gadget's display mode. Deprecated. Possible values are: + - "icon" - The gadget displays next to the event's title in the calendar view. + - "chip" - The gadget displays when the event is clicked. + - name: height + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: The gadget's height in pixels. The height must be an integer greater than 0. Optional. Deprecated. + - name: iconLink + TYPE: STRING + REQUIRED: false + comment: The gadget's icon URL. The URL scheme must be HTTPS. Deprecated. + - name: link + TYPE: STRING + REQUIRED: false + comment: The gadget's URL. The URL scheme must be HTTPS. Deprecated. + - name: preferences + TYPE: map[STRING]STRING + REQUIRED: false + comment: Preferences. + - name: title + TYPE: STRING + REQUIRED: false + comment: The gadget's title. Deprecated. + - name: type + TYPE: STRING + REQUIRED: false + comment: The gadget's type. Deprecated. + - name: width + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: The gadget's width in pixels. The width must be an integer greater than 0. Optional. Deprecated. + Event_organizer: + - name: displayName + TYPE: STRING + REQUIRED: false + comment: The organizer's name, if available. + - name: email + TYPE: STRING + REQUIRED: false + comment: The organizer's email address, if available. It must be a valid email address as per RFC5322. + - name: id + TYPE: STRING + REQUIRED: false + comment: The organizer's Profile ID, if available. + - name: self + TYPE: BOOL + REQUIRED: false + DEFAULT: "false" + comment: Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False. + Event_reminders: + - name: overrides + TYPE: "[]STRUCT(EventReminder)" + REQUIRED: false + comment: If the event doesn't use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5. + - name: useDefault + TYPE: BOOL + REQUIRED: false + comment: Whether the default reminders of the calendar apply to the event. + Event_source: + - name: title + TYPE: STRING + REQUIRED: false + comment: Title of the source; for example a title of a web page or an email subject. + - name: url + TYPE: STRING + REQUIRED: false + comment: URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS. + Event: + - name: anyoneCanAddSelf + TYPE: BOOL + REQUIRED: false + DEFAULT: false + comment: Whether anyone can invite themselves to the event (deprecated). Optional. The default is False. + - name: attachments + TYPE: "[]STRUCT(EventAttachment)" + REQUIRED: false + comment: |- + File attachments for the event. + In order to modify attachments the supportsAttachments request parameter should be set to true. + There can be at most 25 attachments per event, + - name: attendees + TYPE: "[]STRUCT(EventAttendee)" + REQUIRED: false + comment: The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users. Service accounts need to use domain-wide delegation of authority to populate the attendee list. + - name: attendeesOmitted + TYPE: BOOL + REQUIRED: false + DEFAULT: false + comment: Whether attendees may have been omitted from the event's representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant's response. Optional. The default is False. + - name: birthdayProperties + TYPE: STRUCT(EventBirthdayProperties) + REQUIRED: false + comment: Birthday or special event data. Used if eventType is "birthday". Immutable. + - name: colorId + TYPE: STRING + REQUIRED: false + comment: The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the colors endpoint). Optional. + - name: conferenceData + TYPE: STRUCT(ConferenceData) + REQUIRED: false + comment: "The conference-related information, such as details of a Google Meet conference. To create new conference details use the createRequest field. To persist your changes, remember to set the conferenceDataVersion request parameter to 1 for all event modification requests. Warning: Reusing Google Meet conference data across different events can cause access issues and expose meeting details to unintended users. To help ensure meeting privacy, always generate a unique conference for each event by using the createRequest field." + - name: created + TYPE: TIMESTAMP + REQUIRED: false + FORMAT: date-time + comment: Creation time of the event (as a RFC3339 timestamp). Read-only. + - name: creator + TYPE: STRUCT(Event_creator) + REQUIRED: false + comment: The creator of the event. Read-only. + - name: description + TYPE: STRING + REQUIRED: false + comment: Description of the event. Can contain HTML. Optional. + - name: end + TYPE: STRUCT(EventDateTime) + REQUIRED: false + comment: The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance. + - name: endTimeUnspecified + TYPE: BOOL + REQUIRED: false + DEFAULT: false + comment: Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False. + - name: etag + TYPE: STRING + REQUIRED: false + comment: ETag of the resource. + - name: eventLabelId + TYPE: STRING + REQUIRED: false + comment: |- + The ID of the event label assigned to the event. Optional. This refers to the ID of an entry in the labelProperties.eventLabels property of the calendar (see the Calendars.get endpoint.) + This property supersedes the index-based colorId property. To set or change this property, you need to specify eventLabelVersion=1 in the parameters of the insert, import, update, and patch methods. + Setting an empty string, or not setting this field at all, will remove the existing label from the event. + - name: eventType + TYPE: STRING + REQUIRED: false + DEFAULT: default + comment: |- + Specific type of the event. This cannot be modified after the event is created. Possible values are: + - "birthday" - A special all-day event with an annual recurrence. + - "default" - A regular event or not further specified. + - "focusTime" - A focus-time event. + - "fromGmail" - An event from Gmail. This type of event cannot be created. + - "outOfOffice" - An out-of-office event. + - "workingLocation" - A working location event. + - name: extendedProperties + TYPE: STRUCT(Event_extendedProperties) + REQUIRED: false + comment: Extended properties of the event. + - name: focusTimeProperties + TYPE: STRUCT(EventFocusTimeProperties) + REQUIRED: false + comment: Focus Time event data. Used if eventType is focusTime. + - name: gadget + TYPE: STRUCT(Event_gadget) + REQUIRED: false + comment: A gadget that extends this event. Gadgets are deprecated; this structure is instead only used for returning birthday calendar metadata. + - name: guestsCanInviteOthers + TYPE: BOOL + REQUIRED: false + DEFAULT: true + comment: Whether attendees other than the organizer can invite others to the event. Optional. The default is True. + - name: guestsCanModify + TYPE: BOOL + REQUIRED: false + DEFAULT: false + comment: Whether attendees other than the organizer can modify the event. Optional. The default is False. + - name: guestsCanSeeOtherGuests + TYPE: BOOL + REQUIRED: false + DEFAULT: true + comment: Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True. + - name: hangoutLink + TYPE: STRING + REQUIRED: false + comment: An absolute link to the Google Hangout associated with this event. Read-only. + - name: htmlLink + TYPE: STRING + REQUIRED: false + comment: An absolute link to this event in the Google Calendar Web UI. Read-only. + - name: iCalUID + TYPE: STRING + REQUIRED: false + comment: |- + Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method. + Note that the iCalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same iCalUIDs. To retrieve an event using its iCalUID, call the events.list method using the iCalUID parameter. To retrieve an event using its id, call the events.get method. + - name: id + TYPE: STRING + REQUIRED: false + comment: |- + Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules: + - characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938 + - the length of the ID must be between 5 and 1024 characters + - the ID must be unique per calendar Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122. + If you do not specify an ID, it will be automatically generated by the server. + Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs. + - name: kind + TYPE: STRING + REQUIRED: false + DEFAULT: calendar#event + comment: Type of the resource ("calendar#event"). + - name: location + TYPE: STRING + REQUIRED: false + comment: Geographic location of the event as free-form text. Optional. + - name: locked + TYPE: BOOL + REQUIRED: false + DEFAULT: false + comment: Whether this is a locked event copy where no changes can be made to the main event fields "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read-Only. + - name: organizer + TYPE: STRUCT(Event_organizer) + REQUIRED: false + comment: The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event. + - name: originalStartTime + TYPE: STRUCT(EventDateTime) + REQUIRED: false + comment: For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable. + - name: outOfOfficeProperties + TYPE: STRUCT(EventOutOfOfficeProperties) + REQUIRED: false + comment: Out of office event data. Used if eventType is outOfOffice. + - name: privateCopy + TYPE: BOOL + REQUIRED: false + DEFAULT: false + comment: If set to True, Event propagation is disabled. Note that it is not the same thing as Private event properties. Optional. Immutable. The default is False. + - name: recurrence + TYPE: "[]STRING" + REQUIRED: false + comment: List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events. + - name: recurringEventId + TYPE: STRING + REQUIRED: false + comment: For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable. + - name: reminders + TYPE: STRUCT(Event_reminders) + REQUIRED: false + comment: Information about the event's reminders for the authenticated user. Note that changing reminders does not also change the updated property of the enclosing event. + - name: sequence + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: Sequence number as per iCalendar. + - name: source + TYPE: STRUCT(Event_source) + REQUIRED: false + comment: Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event. + - name: start + TYPE: STRUCT(EventDateTime) + REQUIRED: false + comment: The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance. + - name: status + TYPE: STRING + REQUIRED: false + comment: |- + Status of the event. Optional. Possible values are: + - "confirmed" - The event is confirmed. This is the default status. + - "tentative" - The event is tentatively confirmed. + - "cancelled" - The event is cancelled (deleted). The list method returns cancelled events only on incremental sync (when syncToken or updatedMin are specified) or if the showDeleted flag is set to true. The get method always returns them. + A cancelled status represents two different states depending on the event type: + - Cancelled exceptions of an uncancelled recurring event indicate that this instance should no longer be presented to the user. Clients should store these events for the lifetime of the parent recurring event. + Cancelled exceptions are only guaranteed to have values for the id, recurringEventId and originalStartTime fields populated. The other fields might be empty. + - All other cancelled events represent deleted events. Clients should remove their locally synced copies. Such cancelled events will eventually disappear, so do not rely on them being available indefinitely. + Deleted events are only guaranteed to have the id field populated. On the organizer's calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details. + If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated. + - name: summary + TYPE: STRING + REQUIRED: false + comment: Title of the event. + - name: transparency + TYPE: STRING + REQUIRED: false + DEFAULT: opaque + comment: |- + Whether the event blocks time on the calendar. Optional. Possible values are: + - "opaque" - Default value. The event does block time on the calendar. This is equivalent to setting Show me as to Busy in the Calendar UI. + - "transparent" - The event does not block time on the calendar. This is equivalent to setting Show me as to Available in the Calendar UI. + - name: updated + TYPE: TIMESTAMP + REQUIRED: false + FORMAT: date-time + comment: Last modification time of the main event data (as a RFC3339 timestamp). Updating event reminders will not cause this to change. Read-only. + - name: visibility + TYPE: STRING + REQUIRED: false + DEFAULT: default + comment: |- + Visibility of the event. Optional. Possible values are: + - "default" - Uses the default visibility for events on the calendar. This is the default value. + - "public" - The event is public and event details are visible to all readers of the calendar. + - "private" - The event is private and only event attendees may view event details. + - "confidential" - The event is private. This value is provided for compatibility reasons. + Note on recurring events: Changing the visibility of a single instance of a recurring event can affect all instances of the series. If the new setting is more restrictive (e.g. from public to private), it is applied to all instances. If the new setting is less restrictive (e.g. from private to public), the change is ignored. To make a recurring event less restrictive, you must update the parent recurring event. + - name: workingLocationProperties + TYPE: STRUCT(EventWorkingLocationProperties) + REQUIRED: false + comment: Working location event data. + EventAttachment: + - name: fileId + TYPE: STRING + REQUIRED: false + comment: |- + ID of the attached file. Read-only. + For Google Drive files, this is the ID of the corresponding Files resource entry in the Drive API. + - name: fileUrl + TYPE: STRING + REQUIRED: false + comment: |- + URL link to the attachment. + For adding Google Drive file attachments use the same format as in alternateLink property of the Files resource in the Drive API. + Required when adding an attachment. + - name: iconLink + TYPE: STRING + REQUIRED: false + comment: URL link to the attachment's icon. This field can only be modified for custom third-party attachments. + - name: mimeType + TYPE: STRING + REQUIRED: false + comment: Internet media type (MIME type) of the attachment. + - name: title + TYPE: STRING + REQUIRED: false + comment: Attachment title. + EventAttendee: + - name: additionalGuests + TYPE: INT + REQUIRED: false + FORMAT: int32 + DEFAULT: 0 + comment: Number of additional guests. Optional. The default is 0. + - name: asyncOperation + TYPE: STRING + REQUIRED: false + DEFAULT: "" + comment: |- + If present, indicates the status of an asynchronous operation ongoing for this attendee (e.g. listing of members of large attendee groups). Read-only. The default is to not be present. + Possible values are: + - "inProgress" - The asynchronous operation is in progress. + - (not present) - Otherwise. + - name: comment + TYPE: STRING + REQUIRED: false + comment: The attendee's response comment. Optional. + - name: displayName + TYPE: STRING + REQUIRED: false + comment: The attendee's name, if available. Optional. + - name: email + TYPE: STRING + REQUIRED: false + comment: |- + The attendee's email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322. + Required when adding an attendee. + - name: id + TYPE: STRING + REQUIRED: false + comment: The attendee's Profile ID, if available. + - name: optional + TYPE: BOOL + REQUIRED: false + DEFAULT: false + comment: Whether this is an optional attendee. Optional. The default is False. + - name: organizer + TYPE: BOOL + REQUIRED: false + comment: Whether the attendee is the organizer of the event. Read-only. The default is False. + - name: resource + TYPE: BOOL + REQUIRED: false + DEFAULT: false + comment: Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False. + - name: responseStatus + TYPE: STRING + REQUIRED: false + comment: |- + The attendee's response status. Possible values are: + - "needsAction" - The attendee has not responded to the invitation (recommended for new events). + - "declined" - The attendee has declined the invitation. + - "tentative" - The attendee has tentatively accepted the invitation. + - "accepted" - The attendee has accepted the invitation. Warning: If you add an event using the values declined, tentative, or accepted, attendees with the "Add invitations to my calendar" setting set to "When I respond to invitation in email" or "Only if the sender is known" might have their response reset to needsAction and won't see an event in their calendar unless they change their response in the event invitation email. Furthermore, if more than 200 guests are invited to the event, response status is not propagated to the guests. + - name: self + TYPE: BOOL + REQUIRED: false + DEFAULT: false + comment: Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False. + EventBirthdayProperties: + - name: contact + TYPE: STRING + REQUIRED: false + comment: "Resource name of the contact this birthday event is linked to. This can be used to fetch contact details from People API. Format: \"people/c12345\". Read-only." + - name: customTypeName + TYPE: STRING + REQUIRED: false + comment: Custom type label specified for this event. This is populated if birthdayProperties.type is set to "custom". Read-only. + - name: type + TYPE: STRING + REQUIRED: false + DEFAULT: birthday + comment: |- + Type of birthday or special event. Possible values are: + - "anniversary" - An anniversary other than birthday. Always has a contact. + - "birthday" - A birthday event. This is the default value. + - "custom" - A special date whose label is further specified in the customTypeName field. Always has a contact. + - "other" - A special date which does not fall into the other categories, and does not have a custom label. Always has a contact. + - "self" - Calendar owner's own birthday. Cannot have a contact. The Calendar API only supports creating events with the type "birthday". The type cannot be changed after the event is created. + EventDateTime: + - name: date + TYPE: DATE + REQUIRED: false + FORMAT: date + comment: The date, in the format "yyyy-mm-dd", if this is an all-day event. + - name: dateTime + TYPE: TIMESTAMP + REQUIRED: false + FORMAT: date-time + comment: The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is required unless a time zone is explicitly specified in timeZone. + - name: timeZone + TYPE: STRING + REQUIRED: false + comment: The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. "Europe/Zurich".) For recurring events this field is required and specifies the time zone in which the recurrence is expanded. For single events this field is optional and indicates a custom time zone for the event start/end. + EventFocusTimeProperties: + - name: autoDeclineMode + TYPE: STRING + REQUIRED: false + comment: Whether to decline meeting invitations which overlap Focus Time events. Valid values are declineNone, meaning that no meeting invitations are declined; declineAllConflictingInvitations, meaning that all conflicting meeting invitations that conflict with the event are declined; and declineOnlyNewConflictingInvitations, meaning that only new conflicting meeting invitations which arrive while the Focus Time event is present are to be declined. + - name: chatStatus + TYPE: STRING + REQUIRED: false + comment: The status to mark the user in Chat and related products. This can be available or doNotDisturb. + - name: declineMessage + TYPE: STRING + REQUIRED: false + comment: Response message to set if an existing event or new invitation is automatically declined by Calendar. + EventLabel: + - name: backgroundColor + TYPE: STRING + REQUIRED: false + comment: Background color of the label in hexadecimal format, such as "#039be5". Events with this label are displayed in this color. Required. + - name: id + TYPE: STRING + REQUIRED: false + comment: |- + The ID of the label. Optional when inserting a new label. If not provided, a unique ID will be generated. Required when updating a label. + If provided, the ID must be unique within the calendar and follow UUID format. + - name: name + TYPE: STRING + REQUIRED: false + comment: |- + Name of the label. Optional. + If provided this must have at most 50 characters. + EventOutOfOfficeProperties: + - name: autoDeclineMode + TYPE: STRING + REQUIRED: false + comment: Whether to decline meeting invitations which overlap Out of office events. Valid values are declineNone, meaning that no meeting invitations are declined; declineAllConflictingInvitations, meaning that all conflicting meeting invitations that conflict with the event are declined; and declineOnlyNewConflictingInvitations, meaning that only new conflicting meeting invitations which arrive while the Out of office event is present are to be declined. + - name: declineMessage + TYPE: STRING + REQUIRED: false + comment: Response message to set if an existing event or new invitation is automatically declined by Calendar. + EventReminder: + - name: method + TYPE: STRING + REQUIRED: false + comment: |- + The method used by this reminder. Possible values are: + - "email" - Reminders are sent via email. + - "popup" - Reminders are sent via a UI popup. + Required when adding a reminder. + - name: minutes + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: |- + Number of minutes before the start of the event when the reminder should trigger. Valid values are between 0 and 40320 (4 weeks in minutes). + Required when adding a reminder. + EventWorkingLocationProperties_customLocation: + - name: label + TYPE: STRING + REQUIRED: false + comment: An optional extra label for additional information. + EventWorkingLocationProperties_officeLocation: + - name: buildingId + TYPE: STRING + REQUIRED: false + comment: An optional building identifier. This should reference a building ID in the organization's Resources database. + - name: deskId + TYPE: STRING + REQUIRED: false + comment: An optional desk identifier. + - name: floorId + TYPE: STRING + REQUIRED: false + comment: An optional floor identifier. + - name: floorSectionId + TYPE: STRING + REQUIRED: false + comment: An optional floor section identifier. + - name: label + TYPE: STRING + REQUIRED: false + comment: The office name that's displayed in Calendar Web and Mobile clients. We recommend you reference a building name in the organization's Resources database. + EventWorkingLocationProperties: + - name: customLocation + TYPE: STRUCT(EventWorkingLocationProperties_customLocation) + REQUIRED: false + comment: If present, specifies that the user is working from a custom location. + - name: homeOffice + TYPE: ANY + REQUIRED: false + comment: If present, specifies that the user is working at home. + - name: officeLocation + TYPE: STRUCT(EventWorkingLocationProperties_officeLocation) + REQUIRED: false + comment: If present, specifies that the user is working from an office. + - name: type + TYPE: STRING + REQUIRED: false + comment: |- + Type of the working location. Possible values are: + - "homeOffice" - The user is working at home. + - "officeLocation" - The user is working from an office. + - "customLocation" - The user is working from a custom location. Any details are specified in a sub-field of the specified name, but this field may be missing if empty. Any other fields are ignored. + Required when adding working location properties. + Events: + - name: accessRole + TYPE: STRING + REQUIRED: false + comment: |- + The user's access role for this calendar. Read-only. Possible values are: + - "none" - The user has no access. + - "freeBusyReader" - The user has read access to free/busy information. + - "reader" - The user has read access to the calendar. Private events will appear to users with reader access, but event details will be hidden. + - "writerWithoutPrivateAccess" - The user has read and write access to the calendar. Private events will appear to users with writerWithoutPrivateAccess access, but event details will be hidden. + - "writer" - The user has read and write access to the calendar. Private events will appear to users with writer access, and event details will be visible. + - "owner" - The user has manager access to the calendar. This role has all of the permissions of the writer role with the additional ability to see and modify access levels of other users. + Important: the owner role is different from the calendar's data owner. A calendar has a single data owner, but can have multiple users with owner role. + - name: defaultReminders + TYPE: "[]STRUCT(EventReminder)" + REQUIRED: false + comment: The default reminders on the calendar for the authenticated user. These reminders apply to all events on this calendar that do not explicitly override them (i.e. do not have reminders.useDefault set to True). + - name: description + TYPE: STRING + REQUIRED: false + comment: Description of the calendar. Read-only. + - name: etag + TYPE: STRING + REQUIRED: false + comment: ETag of the collection. + - name: items + TYPE: "[]STRUCT(Event)" + REQUIRED: false + comment: List of events on the calendar. + - name: kind + TYPE: STRING + REQUIRED: false + DEFAULT: calendar#events + comment: Type of the collection ("calendar#events"). + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Token used to access the next page of this result. Omitted if no further results are available, in which case nextSyncToken is provided. + - name: nextSyncToken + TYPE: STRING + REQUIRED: false + comment: Token used at a later point in time to retrieve only the entries that have changed since this result was returned. Omitted if further results are available, in which case nextPageToken is provided. + - name: summary + TYPE: STRING + REQUIRED: false + comment: Title of the calendar. Read-only. + - name: timeZone + TYPE: STRING + REQUIRED: false + comment: The time zone of the calendar. Read-only. + - name: updated + TYPE: TIMESTAMP + REQUIRED: false + FORMAT: date-time + comment: Last modification time of the calendar (as a RFC3339 timestamp). Read-only. + FreeBusyRequest: + - name: calendarExpansionMax + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: Maximal number of calendars for which FreeBusy information is to be provided. Optional. Maximum value is 50. + - name: groupExpansionMax + TYPE: INT + REQUIRED: false + FORMAT: int32 + comment: Maximal number of calendar identifiers to be provided for a single group. Optional. An error is returned for a group with more members than this value. Maximum value is 100. + - name: items + TYPE: "[]STRUCT(FreeBusyRequestItem)" + REQUIRED: false + comment: List of calendars and/or groups to query. + - name: timeMax + TYPE: TIMESTAMP + REQUIRED: false + FORMAT: date-time + comment: The end of the interval for the query formatted as per RFC3339. + - name: timeMin + TYPE: TIMESTAMP + REQUIRED: false + FORMAT: date-time + comment: The start of the interval for the query formatted as per RFC3339. + - name: timeZone + TYPE: STRING + REQUIRED: false + DEFAULT: UTC + comment: Time zone used in the response. Optional. The default is UTC. + FreeBusyRequestItem: + - name: id + TYPE: STRING + REQUIRED: false + comment: The identifier of a calendar or a group. + FreeBusyResponse: + - name: calendars + TYPE: map[STRING]ANY + REQUIRED: false + comment: List of free/busy information for calendars. + - name: groups + TYPE: map[STRING]ANY + REQUIRED: false + comment: Expansion of groups. + - name: kind + TYPE: STRING + REQUIRED: false + DEFAULT: calendar#freeBusy + comment: Type of the resource ("calendar#freeBusy"). + - name: timeMax + TYPE: TIMESTAMP + REQUIRED: false + FORMAT: date-time + comment: The end of the interval. + - name: timeMin + TYPE: TIMESTAMP + REQUIRED: false + FORMAT: date-time + comment: The start of the interval. + LabelProperties: + - name: eventLabels + TYPE: "[]STRUCT(EventLabel)" + REQUIRED: false + comment: |- + Event labels defined on this calendar. If this is present when updating the calendar, it will replace the existing event labels. + Extend the list to add a new event label, and remove entities from the list to delete a label from calendar. + Each calendar can have a maximum of 200 labels. + Setting: + - name: etag + TYPE: STRING + REQUIRED: false + comment: ETag of the resource. + - name: id + TYPE: STRING + REQUIRED: false + comment: The id of the user setting. + - name: kind + TYPE: STRING + REQUIRED: false + DEFAULT: calendar#setting + comment: Type of the resource ("calendar#setting"). + - name: value + TYPE: STRING + REQUIRED: false + comment: Value of the user setting. The format of the value depends on the ID of the setting. It must always be a UTF-8 string of length up to 1024 characters. + Settings: + - name: etag + TYPE: STRING + REQUIRED: false + comment: Etag of the collection. + - name: items + TYPE: "[]STRUCT(Setting)" + REQUIRED: false + comment: List of user settings. + - name: kind + TYPE: STRING + REQUIRED: false + DEFAULT: calendar#settings + comment: Type of the collection ("calendar#settings"). + - name: nextPageToken + TYPE: STRING + REQUIRED: false + comment: Token used to access the next page of this result. Omitted if no further results are available, in which case nextSyncToken is provided. + - name: nextSyncToken + TYPE: STRING + REQUIRED: false + comment: Token used at a later point in time to retrieve only the entries that have changed since this result was returned. Omitted if further results are available, in which case nextPageToken is provided. diff --git a/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/manifest.json b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/manifest.json new file mode 100644 index 0000000..9818efd --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/manifest.json @@ -0,0 +1,131 @@ +{ + "Gmail.gmail": { + "version": "v1", + "sandbox_endpoint": "http://localhost", + "production_endpoint": "https://gmail.googleapis.com/", + "methods": 95, + "auth": { + "provider_slug": "Gmail", + "scopes": [], + "type": "oauth2" + }, + "init_details": { + "VERSION": "2.0.2", + "auth_type": "oauth2" + }, + "execution_policy": { + "max_retries": 3, + "base_delay_ms": 500, + "max_delay_ms": 30000, + "http_timeout_ms": 30000, + "connect_timeout_ms": 5000, + "total_timeout_ms": 90000, + "retry_on": [ + 429, + 503, + 504 + ], + "non_retryable": [ + 400, + 401, + 403, + 404, + 422 + ], + "on_401": "fail", + "max_concurrent": 5, + "max_response_bytes": 102400, + "idempotency": { + "mode": "none", + "header_name": "Idempotency-Key", + "scope": "call" + } + } + }, + "Gmail.gmailpostmastertools": { + "version": "v1beta1", + "sandbox_endpoint": "http://localhost", + "production_endpoint": "https://gmailpostmastertools.googleapis.com/", + "methods": 95, + "auth": { + "provider_slug": "Gmail", + "scopes": [], + "type": "oauth2" + }, + "init_details": { + "VERSION": "2.0.2", + "auth_type": "oauth2" + }, + "execution_policy": { + "max_retries": 3, + "base_delay_ms": 500, + "max_delay_ms": 30000, + "http_timeout_ms": 30000, + "connect_timeout_ms": 5000, + "total_timeout_ms": 90000, + "retry_on": [ + 429, + 503, + 504 + ], + "non_retryable": [ + 400, + 401, + 403, + 404, + 422 + ], + "on_401": "fail", + "max_concurrent": 5, + "max_response_bytes": 102400, + "idempotency": { + "mode": "none", + "header_name": "Idempotency-Key", + "scope": "call" + } + } + }, + "Google Calendar.calendar": { + "version": "v3", + "sandbox_endpoint": "http://localhost", + "production_endpoint": "https://www.googleapis.com/calendar/v3", + "methods": 38, + "auth": { + "provider_slug": "Google Calendar", + "scopes": [], + "type": "oauth2" + }, + "init_details": { + "VERSION": "2.0.2", + "auth_type": "oauth2" + }, + "execution_policy": { + "max_retries": 3, + "base_delay_ms": 500, + "max_delay_ms": 30000, + "http_timeout_ms": 30000, + "connect_timeout_ms": 5000, + "total_timeout_ms": 90000, + "retry_on": [ + 429, + 503, + 504 + ], + "non_retryable": [ + 400, + 401, + 403, + 404, + 422 + ], + "on_401": "fail", + "max_concurrent": 5, + "max_response_bytes": 102400, + "idempotency": { + "mode": "none", + "header_name": "Idempotency-Key", + "scope": "call" + } + } + } +} \ No newline at end of file diff --git a/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/policies.json b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/policies.json new file mode 100644 index 0000000..b88b347 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.swytchcode/integrations/policies.json @@ -0,0 +1,55 @@ +{ + "defaults": { + "on_violation": "fail", + "evaluation": "pre_execution" + }, + "policies": [ + { + "id": "no-calendar-deletes", + "target": [ + "calendar.event.delete", + "calendar.clear.create", + "calendar.calendar.delete", + "calendar.me.calendarList.delete" + ], + "when": { + "field": "calendarId", + "operator": "exists" + }, + "action": { + "type": "POLICY_BLOCKED", + "message": "Deleting calendar events or calendars is blocked by policy. This agent is read-and-create only for Calendar." + } + }, + { + "id": "no-destructive-event-titles", + "target": [ + "calendar.event.quickAdd.create" + ], + "when": { + "field": "text", + "operator": "matches", + "value": "(?i)\\b(delete|deleting|cancel|cancelling|canceling|remove|removing|clear)\\b" + }, + "action": { + "type": "POLICY_BLOCKED", + "message": "That looks like a request to remove something, not add a real event. Event creation with delete/cancel wording is blocked by policy." + } + }, + { + "id": "no-destructive-event-summary", + "target": [ + "calendar.event.create" + ], + "when": { + "field": "summary", + "operator": "matches", + "value": "(?i)\\b(delete|deleting|cancel|cancelling|canceling|remove|removing|clear)\\b" + }, + "action": { + "type": "POLICY_BLOCKED", + "message": "That looks like a request to remove something, not add a real event. Event creation with delete/cancel wording is blocked by policy." + } + } + ] +} \ No newline at end of file diff --git a/gmail-google-calender-openaisdk-demo/.swytchcode/tooling.json b/gmail-google-calender-openaisdk-demo/.swytchcode/tooling.json new file mode 100644 index 0000000..849beff --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/.swytchcode/tooling.json @@ -0,0 +1,4050 @@ +{ + "editor": "claude", + "integrations": { + "Gmail.gmail": { + "version": "v1" + }, + "Google Calendar.calendar": { + "version": "v3" + } + }, + "mode": "production", + "tools": { + "calendar.event.create": { + "desc": "Creates an event.", + "inputs": [ + { + "calendarId": { + "LOCATION": "path", + "REQUIRED": true, + "TYPE": "STRING" + } + }, + { + "conferenceDataVersion": { + "LOCATION": "query", + "MAXIMUM": 1, + "MINIMUM": 0, + "REQUIRED": false, + "TYPE": "INT" + } + }, + { + "eventLabelVersion": { + "LOCATION": "query", + "MAXIMUM": 1, + "MINIMUM": 0, + "REQUIRED": false, + "TYPE": "INT" + } + }, + { + "maxAttendees": { + "LOCATION": "query", + "MINIMUM": 1, + "REQUIRED": false, + "TYPE": "INT" + } + }, + { + "sendNotifications": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "BOOL" + } + }, + { + "sendUpdates": { + "ENUM": [ + "all", + "externalOnly", + "none" + ], + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + }, + { + "supportsAttachments": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "BOOL" + } + }, + { + "body": { + "LOCATION": "body", + "REQUIRED": false, + "TYPE": "OBJECT", + "schema": { + "properties": { + "anyoneCanAddSelf": { + "required": false, + "type": "boolean" + }, + "attachments": { + "items": { + "properties": { + "fileId": { + "required": false, + "type": "string" + }, + "fileUrl": { + "required": false, + "type": "string" + }, + "iconLink": { + "required": false, + "type": "string" + }, + "mimeType": { + "required": false, + "type": "string" + }, + "title": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "attendees": { + "items": { + "properties": { + "additionalGuests": { + "required": false, + "type": "integer" + }, + "asyncOperation": { + "required": false, + "type": "string" + }, + "comment": { + "required": false, + "type": "string" + }, + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "optional": { + "required": false, + "type": "boolean" + }, + "organizer": { + "required": false, + "type": "boolean" + }, + "resource": { + "required": false, + "type": "boolean" + }, + "responseStatus": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "attendeesOmitted": { + "required": false, + "type": "boolean" + }, + "birthdayProperties": { + "properties": { + "contact": { + "required": false, + "type": "string" + }, + "customTypeName": { + "required": false, + "type": "string" + }, + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "colorId": { + "required": false, + "type": "string" + }, + "conferenceData": { + "properties": { + "conferenceId": { + "required": false, + "type": "string" + }, + "conferenceSolution": { + "properties": { + "iconUri": { + "required": false, + "type": "string" + }, + "key": { + "properties": { + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "name": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "createRequest": { + "properties": { + "conferenceSolutionKey": { + "properties": { + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "requestId": { + "required": false, + "type": "string" + }, + "status": { + "properties": { + "statusCode": { + "required": false, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "entryPoints": { + "items": { + "properties": { + "accessCode": { + "required": false, + "type": "string" + }, + "entryPointFeatures": { + "required": false, + "type": "[]STRING" + }, + "entryPointType": { + "required": false, + "type": "string" + }, + "label": { + "required": false, + "type": "string" + }, + "meetingCode": { + "required": false, + "type": "string" + }, + "passcode": { + "required": false, + "type": "string" + }, + "password": { + "required": false, + "type": "string" + }, + "pin": { + "required": false, + "type": "string" + }, + "regionCode": { + "required": false, + "type": "string" + }, + "uri": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "notes": { + "required": false, + "type": "string" + }, + "parameters": { + "properties": { + "addOnParameters": { + "properties": { + "parameters": { + "required": false, + "type": "map[STRING]STRING" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "signature": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "created": { + "required": false, + "type": "TIMESTAMP" + }, + "creator": { + "properties": { + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "description": { + "required": false, + "type": "string" + }, + "end": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "endTimeUnspecified": { + "required": false, + "type": "boolean" + }, + "etag": { + "required": false, + "type": "string" + }, + "eventLabelId": { + "required": false, + "type": "string" + }, + "eventType": { + "required": false, + "type": "string" + }, + "extendedProperties": { + "properties": { + "private": { + "required": false, + "type": "map[STRING]STRING" + }, + "shared": { + "required": false, + "type": "map[STRING]STRING" + } + }, + "type": "object" + }, + "focusTimeProperties": { + "properties": { + "autoDeclineMode": { + "required": false, + "type": "string" + }, + "chatStatus": { + "required": false, + "type": "string" + }, + "declineMessage": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "gadget": { + "properties": { + "display": { + "required": false, + "type": "string" + }, + "height": { + "required": false, + "type": "integer" + }, + "iconLink": { + "required": false, + "type": "string" + }, + "link": { + "required": false, + "type": "string" + }, + "preferences": { + "required": false, + "type": "map[STRING]STRING" + }, + "title": { + "required": false, + "type": "string" + }, + "type": { + "required": false, + "type": "string" + }, + "width": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "guestsCanInviteOthers": { + "required": false, + "type": "boolean" + }, + "guestsCanModify": { + "required": false, + "type": "boolean" + }, + "guestsCanSeeOtherGuests": { + "required": false, + "type": "boolean" + }, + "hangoutLink": { + "required": false, + "type": "string" + }, + "htmlLink": { + "required": false, + "type": "string" + }, + "iCalUID": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "kind": { + "required": false, + "type": "string" + }, + "location": { + "required": false, + "type": "string" + }, + "locked": { + "required": false, + "type": "boolean" + }, + "organizer": { + "properties": { + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "originalStartTime": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "outOfOfficeProperties": { + "properties": { + "autoDeclineMode": { + "required": false, + "type": "string" + }, + "declineMessage": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "privateCopy": { + "required": false, + "type": "boolean" + }, + "recurrence": { + "required": false, + "type": "[]STRING" + }, + "recurringEventId": { + "required": false, + "type": "string" + }, + "reminders": { + "properties": { + "overrides": { + "items": { + "properties": { + "method": { + "required": false, + "type": "string" + }, + "minutes": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "useDefault": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "sequence": { + "required": false, + "type": "integer" + }, + "source": { + "properties": { + "title": { + "required": false, + "type": "string" + }, + "url": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "start": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "status": { + "required": false, + "type": "string" + }, + "summary": { + "required": false, + "type": "string" + }, + "transparency": { + "required": false, + "type": "string" + }, + "updated": { + "required": false, + "type": "TIMESTAMP" + }, + "visibility": { + "required": false, + "type": "string" + }, + "workingLocationProperties": { + "properties": { + "customLocation": { + "properties": { + "label": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "homeOffice": { + "required": false, + "type": "any" + }, + "officeLocation": { + "properties": { + "buildingId": { + "required": false, + "type": "string" + }, + "deskId": { + "required": false, + "type": "string" + }, + "floorId": { + "required": false, + "type": "string" + }, + "floorSectionId": { + "required": false, + "type": "string" + }, + "label": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + } + } + } + } + } + ], + "integration": "Google Calendar.calendar@v3", + "method_hash": "273b2214a74288e267196e40f7a64687357449a1ec33fceca7cb0641e37c86c9", + "output": { + "schema": { + "properties": { + "anyoneCanAddSelf": { + "required": false, + "type": "boolean" + }, + "attachments": { + "items": { + "properties": { + "fileId": { + "required": false, + "type": "string" + }, + "fileUrl": { + "required": false, + "type": "string" + }, + "iconLink": { + "required": false, + "type": "string" + }, + "mimeType": { + "required": false, + "type": "string" + }, + "title": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "attendees": { + "items": { + "properties": { + "additionalGuests": { + "required": false, + "type": "integer" + }, + "asyncOperation": { + "required": false, + "type": "string" + }, + "comment": { + "required": false, + "type": "string" + }, + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "optional": { + "required": false, + "type": "boolean" + }, + "organizer": { + "required": false, + "type": "boolean" + }, + "resource": { + "required": false, + "type": "boolean" + }, + "responseStatus": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "attendeesOmitted": { + "required": false, + "type": "boolean" + }, + "birthdayProperties": { + "properties": { + "contact": { + "required": false, + "type": "string" + }, + "customTypeName": { + "required": false, + "type": "string" + }, + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "colorId": { + "required": false, + "type": "string" + }, + "conferenceData": { + "properties": { + "conferenceId": { + "required": false, + "type": "string" + }, + "conferenceSolution": { + "properties": { + "iconUri": { + "required": false, + "type": "string" + }, + "key": { + "properties": { + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "name": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "createRequest": { + "properties": { + "conferenceSolutionKey": { + "properties": { + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "requestId": { + "required": false, + "type": "string" + }, + "status": { + "properties": { + "statusCode": { + "required": false, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "entryPoints": { + "items": { + "properties": { + "accessCode": { + "required": false, + "type": "string" + }, + "entryPointFeatures": { + "required": false, + "type": "[]STRING" + }, + "entryPointType": { + "required": false, + "type": "string" + }, + "label": { + "required": false, + "type": "string" + }, + "meetingCode": { + "required": false, + "type": "string" + }, + "passcode": { + "required": false, + "type": "string" + }, + "password": { + "required": false, + "type": "string" + }, + "pin": { + "required": false, + "type": "string" + }, + "regionCode": { + "required": false, + "type": "string" + }, + "uri": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "notes": { + "required": false, + "type": "string" + }, + "parameters": { + "properties": { + "addOnParameters": { + "properties": { + "parameters": { + "required": false, + "type": "map[STRING]STRING" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "signature": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "created": { + "required": false, + "type": "TIMESTAMP" + }, + "creator": { + "properties": { + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "description": { + "required": false, + "type": "string" + }, + "end": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "endTimeUnspecified": { + "required": false, + "type": "boolean" + }, + "etag": { + "required": false, + "type": "string" + }, + "eventLabelId": { + "required": false, + "type": "string" + }, + "eventType": { + "required": false, + "type": "string" + }, + "extendedProperties": { + "properties": { + "private": { + "required": false, + "type": "map[STRING]STRING" + }, + "shared": { + "required": false, + "type": "map[STRING]STRING" + } + }, + "type": "object" + }, + "focusTimeProperties": { + "properties": { + "autoDeclineMode": { + "required": false, + "type": "string" + }, + "chatStatus": { + "required": false, + "type": "string" + }, + "declineMessage": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "gadget": { + "properties": { + "display": { + "required": false, + "type": "string" + }, + "height": { + "required": false, + "type": "integer" + }, + "iconLink": { + "required": false, + "type": "string" + }, + "link": { + "required": false, + "type": "string" + }, + "preferences": { + "required": false, + "type": "map[STRING]STRING" + }, + "title": { + "required": false, + "type": "string" + }, + "type": { + "required": false, + "type": "string" + }, + "width": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "guestsCanInviteOthers": { + "required": false, + "type": "boolean" + }, + "guestsCanModify": { + "required": false, + "type": "boolean" + }, + "guestsCanSeeOtherGuests": { + "required": false, + "type": "boolean" + }, + "hangoutLink": { + "required": false, + "type": "string" + }, + "htmlLink": { + "required": false, + "type": "string" + }, + "iCalUID": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "kind": { + "required": false, + "type": "string" + }, + "location": { + "required": false, + "type": "string" + }, + "locked": { + "required": false, + "type": "boolean" + }, + "organizer": { + "properties": { + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "originalStartTime": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "outOfOfficeProperties": { + "properties": { + "autoDeclineMode": { + "required": false, + "type": "string" + }, + "declineMessage": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "privateCopy": { + "required": false, + "type": "boolean" + }, + "recurrence": { + "required": false, + "type": "[]STRING" + }, + "recurringEventId": { + "required": false, + "type": "string" + }, + "reminders": { + "properties": { + "overrides": { + "items": { + "properties": { + "method": { + "required": false, + "type": "string" + }, + "minutes": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "useDefault": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "sequence": { + "required": false, + "type": "integer" + }, + "source": { + "properties": { + "title": { + "required": false, + "type": "string" + }, + "url": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "start": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "status": { + "required": false, + "type": "string" + }, + "summary": { + "required": false, + "type": "string" + }, + "transparency": { + "required": false, + "type": "string" + }, + "updated": { + "required": false, + "type": "TIMESTAMP" + }, + "visibility": { + "required": false, + "type": "string" + }, + "workingLocationProperties": { + "properties": { + "customLocation": { + "properties": { + "label": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "homeOffice": { + "required": false, + "type": "any" + }, + "officeLocation": { + "properties": { + "buildingId": { + "required": false, + "type": "string" + }, + "deskId": { + "required": false, + "type": "string" + }, + "floorId": { + "required": false, + "type": "string" + }, + "floorSectionId": { + "required": false, + "type": "string" + }, + "label": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + } + } + }, + "status": 200 + }, + "summary": "Creates an event.", + "type": "method" + }, + "calendar.event.get": { + "desc": "Returns events on the specified calendar.", + "inputs": [ + { + "calendarId": { + "LOCATION": "path", + "REQUIRED": true, + "TYPE": "STRING" + } + }, + { + "alwaysIncludeEmail": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "BOOL" + } + }, + { + "eventTypes": { + "LOCATION": "query", + "REQUIRED": false, + "STYLE": "multi", + "TYPE": "[]ANY" + } + }, + { + "iCalUID": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + }, + { + "maxAttendees": { + "LOCATION": "query", + "MINIMUM": 1, + "REQUIRED": false, + "TYPE": "INT" + } + }, + { + "maxResults": { + "DEFAULT": 250, + "LOCATION": "query", + "MINIMUM": 1, + "REQUIRED": false, + "TYPE": "INT" + } + }, + { + "orderBy": { + "ENUM": [ + "startTime", + "updated" + ], + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + }, + { + "pageToken": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + }, + { + "privateExtendedProperty": { + "LOCATION": "query", + "REQUIRED": false, + "STYLE": "multi", + "TYPE": "[]ANY" + } + }, + { + "q": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + }, + { + "sharedExtendedProperty": { + "LOCATION": "query", + "REQUIRED": false, + "STYLE": "multi", + "TYPE": "[]ANY" + } + }, + { + "showDeleted": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "BOOL" + } + }, + { + "showHiddenInvitations": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "BOOL" + } + }, + { + "singleEvents": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "BOOL" + } + }, + { + "syncToken": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + }, + { + "timeMax": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + }, + { + "timeMin": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + }, + { + "timeZone": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + }, + { + "updatedMin": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + } + ], + "integration": "Google Calendar.calendar@v3", + "method_hash": "8c61a95c23b70c384cf512405c09266d50673155d926447329a0f44648eff928", + "output": { + "schema": { + "properties": { + "accessRole": { + "required": false, + "type": "string" + }, + "defaultReminders": { + "items": { + "properties": { + "method": { + "required": false, + "type": "string" + }, + "minutes": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "description": { + "required": false, + "type": "string" + }, + "etag": { + "required": false, + "type": "string" + }, + "items": { + "items": { + "properties": { + "anyoneCanAddSelf": { + "required": false, + "type": "boolean" + }, + "attachments": { + "items": { + "properties": { + "fileId": { + "required": false, + "type": "string" + }, + "fileUrl": { + "required": false, + "type": "string" + }, + "iconLink": { + "required": false, + "type": "string" + }, + "mimeType": { + "required": false, + "type": "string" + }, + "title": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "attendees": { + "items": { + "properties": { + "additionalGuests": { + "required": false, + "type": "integer" + }, + "asyncOperation": { + "required": false, + "type": "string" + }, + "comment": { + "required": false, + "type": "string" + }, + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "optional": { + "required": false, + "type": "boolean" + }, + "organizer": { + "required": false, + "type": "boolean" + }, + "resource": { + "required": false, + "type": "boolean" + }, + "responseStatus": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "attendeesOmitted": { + "required": false, + "type": "boolean" + }, + "birthdayProperties": { + "properties": { + "contact": { + "required": false, + "type": "string" + }, + "customTypeName": { + "required": false, + "type": "string" + }, + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "colorId": { + "required": false, + "type": "string" + }, + "conferenceData": { + "properties": { + "conferenceId": { + "required": false, + "type": "string" + }, + "conferenceSolution": { + "properties": { + "iconUri": { + "required": false, + "type": "string" + }, + "key": { + "properties": { + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "name": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "createRequest": { + "properties": { + "conferenceSolutionKey": { + "properties": { + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "requestId": { + "required": false, + "type": "string" + }, + "status": { + "properties": { + "statusCode": { + "required": false, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "entryPoints": { + "items": { + "properties": { + "accessCode": { + "required": false, + "type": "string" + }, + "entryPointFeatures": { + "required": false, + "type": "[]STRING" + }, + "entryPointType": { + "required": false, + "type": "string" + }, + "label": { + "required": false, + "type": "string" + }, + "meetingCode": { + "required": false, + "type": "string" + }, + "passcode": { + "required": false, + "type": "string" + }, + "password": { + "required": false, + "type": "string" + }, + "pin": { + "required": false, + "type": "string" + }, + "regionCode": { + "required": false, + "type": "string" + }, + "uri": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "notes": { + "required": false, + "type": "string" + }, + "parameters": { + "properties": { + "addOnParameters": { + "properties": { + "parameters": { + "required": false, + "type": "map[STRING]STRING" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "signature": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "created": { + "required": false, + "type": "TIMESTAMP" + }, + "creator": { + "properties": { + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "description": { + "required": false, + "type": "string" + }, + "end": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "endTimeUnspecified": { + "required": false, + "type": "boolean" + }, + "etag": { + "required": false, + "type": "string" + }, + "eventLabelId": { + "required": false, + "type": "string" + }, + "eventType": { + "required": false, + "type": "string" + }, + "extendedProperties": { + "properties": { + "private": { + "required": false, + "type": "map[STRING]STRING" + }, + "shared": { + "required": false, + "type": "map[STRING]STRING" + } + }, + "type": "object" + }, + "focusTimeProperties": { + "properties": { + "autoDeclineMode": { + "required": false, + "type": "string" + }, + "chatStatus": { + "required": false, + "type": "string" + }, + "declineMessage": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "gadget": { + "properties": { + "display": { + "required": false, + "type": "string" + }, + "height": { + "required": false, + "type": "integer" + }, + "iconLink": { + "required": false, + "type": "string" + }, + "link": { + "required": false, + "type": "string" + }, + "preferences": { + "required": false, + "type": "map[STRING]STRING" + }, + "title": { + "required": false, + "type": "string" + }, + "type": { + "required": false, + "type": "string" + }, + "width": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "guestsCanInviteOthers": { + "required": false, + "type": "boolean" + }, + "guestsCanModify": { + "required": false, + "type": "boolean" + }, + "guestsCanSeeOtherGuests": { + "required": false, + "type": "boolean" + }, + "hangoutLink": { + "required": false, + "type": "string" + }, + "htmlLink": { + "required": false, + "type": "string" + }, + "iCalUID": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "kind": { + "required": false, + "type": "string" + }, + "location": { + "required": false, + "type": "string" + }, + "locked": { + "required": false, + "type": "boolean" + }, + "organizer": { + "properties": { + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "originalStartTime": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "outOfOfficeProperties": { + "properties": { + "autoDeclineMode": { + "required": false, + "type": "string" + }, + "declineMessage": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "privateCopy": { + "required": false, + "type": "boolean" + }, + "recurrence": { + "required": false, + "type": "[]STRING" + }, + "recurringEventId": { + "required": false, + "type": "string" + }, + "reminders": { + "properties": { + "overrides": { + "items": { + "properties": { + "method": { + "required": false, + "type": "string" + }, + "minutes": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "useDefault": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "sequence": { + "required": false, + "type": "integer" + }, + "source": { + "properties": { + "title": { + "required": false, + "type": "string" + }, + "url": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "start": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "status": { + "required": false, + "type": "string" + }, + "summary": { + "required": false, + "type": "string" + }, + "transparency": { + "required": false, + "type": "string" + }, + "updated": { + "required": false, + "type": "TIMESTAMP" + }, + "visibility": { + "required": false, + "type": "string" + }, + "workingLocationProperties": { + "properties": { + "customLocation": { + "properties": { + "label": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "homeOffice": { + "required": false, + "type": "any" + }, + "officeLocation": { + "properties": { + "buildingId": { + "required": false, + "type": "string" + }, + "deskId": { + "required": false, + "type": "string" + }, + "floorId": { + "required": false, + "type": "string" + }, + "floorSectionId": { + "required": false, + "type": "string" + }, + "label": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "kind": { + "required": false, + "type": "string" + }, + "nextPageToken": { + "required": false, + "type": "string" + }, + "nextSyncToken": { + "required": false, + "type": "string" + }, + "summary": { + "required": false, + "type": "string" + }, + "timeZone": { + "required": false, + "type": "string" + }, + "updated": { + "required": false, + "type": "TIMESTAMP" + } + } + }, + "status": 200 + }, + "summary": "Returns events on the specified calendar.", + "type": "method" + }, + "calendar.event.get1": { + "desc": "Returns an event based on its Google Calendar ID. To retrieve an event using its iCalendar ID, call the events.list method using the iCalUID parameter.", + "inputs": [ + { + "calendarId": { + "LOCATION": "path", + "REQUIRED": true, + "TYPE": "STRING" + } + }, + { + "eventId": { + "LOCATION": "path", + "REQUIRED": true, + "TYPE": "STRING" + } + }, + { + "alwaysIncludeEmail": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "BOOL" + } + }, + { + "maxAttendees": { + "LOCATION": "query", + "MINIMUM": 1, + "REQUIRED": false, + "TYPE": "INT" + } + }, + { + "timeZone": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + } + ], + "integration": "Google Calendar.calendar@v3", + "method_hash": "1cc4b853470bcd422588ff347c789612f3157d7010cc6101d4cef95cc2c3c0ac", + "output": { + "schema": { + "properties": { + "anyoneCanAddSelf": { + "required": false, + "type": "boolean" + }, + "attachments": { + "items": { + "properties": { + "fileId": { + "required": false, + "type": "string" + }, + "fileUrl": { + "required": false, + "type": "string" + }, + "iconLink": { + "required": false, + "type": "string" + }, + "mimeType": { + "required": false, + "type": "string" + }, + "title": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "attendees": { + "items": { + "properties": { + "additionalGuests": { + "required": false, + "type": "integer" + }, + "asyncOperation": { + "required": false, + "type": "string" + }, + "comment": { + "required": false, + "type": "string" + }, + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "optional": { + "required": false, + "type": "boolean" + }, + "organizer": { + "required": false, + "type": "boolean" + }, + "resource": { + "required": false, + "type": "boolean" + }, + "responseStatus": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "attendeesOmitted": { + "required": false, + "type": "boolean" + }, + "birthdayProperties": { + "properties": { + "contact": { + "required": false, + "type": "string" + }, + "customTypeName": { + "required": false, + "type": "string" + }, + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "colorId": { + "required": false, + "type": "string" + }, + "conferenceData": { + "properties": { + "conferenceId": { + "required": false, + "type": "string" + }, + "conferenceSolution": { + "properties": { + "iconUri": { + "required": false, + "type": "string" + }, + "key": { + "properties": { + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "name": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "createRequest": { + "properties": { + "conferenceSolutionKey": { + "properties": { + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "requestId": { + "required": false, + "type": "string" + }, + "status": { + "properties": { + "statusCode": { + "required": false, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "entryPoints": { + "items": { + "properties": { + "accessCode": { + "required": false, + "type": "string" + }, + "entryPointFeatures": { + "required": false, + "type": "[]STRING" + }, + "entryPointType": { + "required": false, + "type": "string" + }, + "label": { + "required": false, + "type": "string" + }, + "meetingCode": { + "required": false, + "type": "string" + }, + "passcode": { + "required": false, + "type": "string" + }, + "password": { + "required": false, + "type": "string" + }, + "pin": { + "required": false, + "type": "string" + }, + "regionCode": { + "required": false, + "type": "string" + }, + "uri": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "notes": { + "required": false, + "type": "string" + }, + "parameters": { + "properties": { + "addOnParameters": { + "properties": { + "parameters": { + "required": false, + "type": "map[STRING]STRING" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "signature": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "created": { + "required": false, + "type": "TIMESTAMP" + }, + "creator": { + "properties": { + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "description": { + "required": false, + "type": "string" + }, + "end": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "endTimeUnspecified": { + "required": false, + "type": "boolean" + }, + "etag": { + "required": false, + "type": "string" + }, + "eventLabelId": { + "required": false, + "type": "string" + }, + "eventType": { + "required": false, + "type": "string" + }, + "extendedProperties": { + "properties": { + "private": { + "required": false, + "type": "map[STRING]STRING" + }, + "shared": { + "required": false, + "type": "map[STRING]STRING" + } + }, + "type": "object" + }, + "focusTimeProperties": { + "properties": { + "autoDeclineMode": { + "required": false, + "type": "string" + }, + "chatStatus": { + "required": false, + "type": "string" + }, + "declineMessage": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "gadget": { + "properties": { + "display": { + "required": false, + "type": "string" + }, + "height": { + "required": false, + "type": "integer" + }, + "iconLink": { + "required": false, + "type": "string" + }, + "link": { + "required": false, + "type": "string" + }, + "preferences": { + "required": false, + "type": "map[STRING]STRING" + }, + "title": { + "required": false, + "type": "string" + }, + "type": { + "required": false, + "type": "string" + }, + "width": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "guestsCanInviteOthers": { + "required": false, + "type": "boolean" + }, + "guestsCanModify": { + "required": false, + "type": "boolean" + }, + "guestsCanSeeOtherGuests": { + "required": false, + "type": "boolean" + }, + "hangoutLink": { + "required": false, + "type": "string" + }, + "htmlLink": { + "required": false, + "type": "string" + }, + "iCalUID": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "kind": { + "required": false, + "type": "string" + }, + "location": { + "required": false, + "type": "string" + }, + "locked": { + "required": false, + "type": "boolean" + }, + "organizer": { + "properties": { + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "originalStartTime": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "outOfOfficeProperties": { + "properties": { + "autoDeclineMode": { + "required": false, + "type": "string" + }, + "declineMessage": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "privateCopy": { + "required": false, + "type": "boolean" + }, + "recurrence": { + "required": false, + "type": "[]STRING" + }, + "recurringEventId": { + "required": false, + "type": "string" + }, + "reminders": { + "properties": { + "overrides": { + "items": { + "properties": { + "method": { + "required": false, + "type": "string" + }, + "minutes": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "useDefault": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "sequence": { + "required": false, + "type": "integer" + }, + "source": { + "properties": { + "title": { + "required": false, + "type": "string" + }, + "url": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "start": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "status": { + "required": false, + "type": "string" + }, + "summary": { + "required": false, + "type": "string" + }, + "transparency": { + "required": false, + "type": "string" + }, + "updated": { + "required": false, + "type": "TIMESTAMP" + }, + "visibility": { + "required": false, + "type": "string" + }, + "workingLocationProperties": { + "properties": { + "customLocation": { + "properties": { + "label": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "homeOffice": { + "required": false, + "type": "any" + }, + "officeLocation": { + "properties": { + "buildingId": { + "required": false, + "type": "string" + }, + "deskId": { + "required": false, + "type": "string" + }, + "floorId": { + "required": false, + "type": "string" + }, + "floorSectionId": { + "required": false, + "type": "string" + }, + "label": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + } + } + }, + "status": 200 + }, + "summary": "Returns an event based on its Google Calendar ID", + "type": "method" + }, + "calendar.event.quickAdd.create": { + "desc": "Creates an event based on a simple text string.", + "inputs": [ + { + "calendarId": { + "LOCATION": "path", + "REQUIRED": true, + "TYPE": "STRING" + } + }, + { + "text": { + "LOCATION": "query", + "REQUIRED": true, + "TYPE": "STRING" + } + }, + { + "sendNotifications": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "BOOL" + } + }, + { + "sendUpdates": { + "ENUM": [ + "all", + "externalOnly", + "none" + ], + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + } + ], + "integration": "Google Calendar.calendar@v3", + "method_hash": "8a6da0e5094df5decb9ea1a02d52df1a470e7c9a10f594d463495e7023797c51", + "output": { + "schema": { + "properties": { + "anyoneCanAddSelf": { + "required": false, + "type": "boolean" + }, + "attachments": { + "items": { + "properties": { + "fileId": { + "required": false, + "type": "string" + }, + "fileUrl": { + "required": false, + "type": "string" + }, + "iconLink": { + "required": false, + "type": "string" + }, + "mimeType": { + "required": false, + "type": "string" + }, + "title": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "attendees": { + "items": { + "properties": { + "additionalGuests": { + "required": false, + "type": "integer" + }, + "asyncOperation": { + "required": false, + "type": "string" + }, + "comment": { + "required": false, + "type": "string" + }, + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "optional": { + "required": false, + "type": "boolean" + }, + "organizer": { + "required": false, + "type": "boolean" + }, + "resource": { + "required": false, + "type": "boolean" + }, + "responseStatus": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "attendeesOmitted": { + "required": false, + "type": "boolean" + }, + "birthdayProperties": { + "properties": { + "contact": { + "required": false, + "type": "string" + }, + "customTypeName": { + "required": false, + "type": "string" + }, + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "colorId": { + "required": false, + "type": "string" + }, + "conferenceData": { + "properties": { + "conferenceId": { + "required": false, + "type": "string" + }, + "conferenceSolution": { + "properties": { + "iconUri": { + "required": false, + "type": "string" + }, + "key": { + "properties": { + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "name": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "createRequest": { + "properties": { + "conferenceSolutionKey": { + "properties": { + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "requestId": { + "required": false, + "type": "string" + }, + "status": { + "properties": { + "statusCode": { + "required": false, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "entryPoints": { + "items": { + "properties": { + "accessCode": { + "required": false, + "type": "string" + }, + "entryPointFeatures": { + "required": false, + "type": "[]STRING" + }, + "entryPointType": { + "required": false, + "type": "string" + }, + "label": { + "required": false, + "type": "string" + }, + "meetingCode": { + "required": false, + "type": "string" + }, + "passcode": { + "required": false, + "type": "string" + }, + "password": { + "required": false, + "type": "string" + }, + "pin": { + "required": false, + "type": "string" + }, + "regionCode": { + "required": false, + "type": "string" + }, + "uri": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "notes": { + "required": false, + "type": "string" + }, + "parameters": { + "properties": { + "addOnParameters": { + "properties": { + "parameters": { + "required": false, + "type": "map[STRING]STRING" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "signature": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "created": { + "required": false, + "type": "TIMESTAMP" + }, + "creator": { + "properties": { + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "description": { + "required": false, + "type": "string" + }, + "end": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "endTimeUnspecified": { + "required": false, + "type": "boolean" + }, + "etag": { + "required": false, + "type": "string" + }, + "eventLabelId": { + "required": false, + "type": "string" + }, + "eventType": { + "required": false, + "type": "string" + }, + "extendedProperties": { + "properties": { + "private": { + "required": false, + "type": "map[STRING]STRING" + }, + "shared": { + "required": false, + "type": "map[STRING]STRING" + } + }, + "type": "object" + }, + "focusTimeProperties": { + "properties": { + "autoDeclineMode": { + "required": false, + "type": "string" + }, + "chatStatus": { + "required": false, + "type": "string" + }, + "declineMessage": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "gadget": { + "properties": { + "display": { + "required": false, + "type": "string" + }, + "height": { + "required": false, + "type": "integer" + }, + "iconLink": { + "required": false, + "type": "string" + }, + "link": { + "required": false, + "type": "string" + }, + "preferences": { + "required": false, + "type": "map[STRING]STRING" + }, + "title": { + "required": false, + "type": "string" + }, + "type": { + "required": false, + "type": "string" + }, + "width": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "guestsCanInviteOthers": { + "required": false, + "type": "boolean" + }, + "guestsCanModify": { + "required": false, + "type": "boolean" + }, + "guestsCanSeeOtherGuests": { + "required": false, + "type": "boolean" + }, + "hangoutLink": { + "required": false, + "type": "string" + }, + "htmlLink": { + "required": false, + "type": "string" + }, + "iCalUID": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "kind": { + "required": false, + "type": "string" + }, + "location": { + "required": false, + "type": "string" + }, + "locked": { + "required": false, + "type": "boolean" + }, + "organizer": { + "properties": { + "displayName": { + "required": false, + "type": "string" + }, + "email": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "self": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "originalStartTime": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "outOfOfficeProperties": { + "properties": { + "autoDeclineMode": { + "required": false, + "type": "string" + }, + "declineMessage": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "privateCopy": { + "required": false, + "type": "boolean" + }, + "recurrence": { + "required": false, + "type": "[]STRING" + }, + "recurringEventId": { + "required": false, + "type": "string" + }, + "reminders": { + "properties": { + "overrides": { + "items": { + "properties": { + "method": { + "required": false, + "type": "string" + }, + "minutes": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "useDefault": { + "required": false, + "type": "boolean" + } + }, + "type": "object" + }, + "sequence": { + "required": false, + "type": "integer" + }, + "source": { + "properties": { + "title": { + "required": false, + "type": "string" + }, + "url": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "start": { + "properties": { + "date": { + "required": false, + "type": "DATE" + }, + "dateTime": { + "required": false, + "type": "TIMESTAMP" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "status": { + "required": false, + "type": "string" + }, + "summary": { + "required": false, + "type": "string" + }, + "transparency": { + "required": false, + "type": "string" + }, + "updated": { + "required": false, + "type": "TIMESTAMP" + }, + "visibility": { + "required": false, + "type": "string" + }, + "workingLocationProperties": { + "properties": { + "customLocation": { + "properties": { + "label": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "homeOffice": { + "required": false, + "type": "any" + }, + "officeLocation": { + "properties": { + "buildingId": { + "required": false, + "type": "string" + }, + "deskId": { + "required": false, + "type": "string" + }, + "floorId": { + "required": false, + "type": "string" + }, + "floorSectionId": { + "required": false, + "type": "string" + }, + "label": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + } + } + }, + "status": 200 + }, + "summary": "Creates an event based on a simple text string.", + "type": "method" + }, + "calendar.me.calendarList.list": { + "desc": "Returns the calendars on the user's calendar list.", + "inputs": [ + { + "maxResults": { + "LOCATION": "query", + "MINIMUM": 1, + "REQUIRED": false, + "TYPE": "INT" + } + }, + { + "minAccessRole": { + "ENUM": [ + "freeBusyReader", + "owner", + "reader", + "writer", + "writerWithoutPrivateAccess" + ], + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + }, + { + "pageToken": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + }, + { + "showDeleted": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "BOOL" + } + }, + { + "showHidden": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "BOOL" + } + }, + { + "showOwnOrganizationOnly": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "BOOL" + } + }, + { + "syncToken": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + } + ], + "integration": "Google Calendar.calendar@v3", + "method_hash": "8162280020acf7c9176be90867239979d1195d1346f9e9c39a3be47b8d9113f3", + "output": { + "schema": { + "properties": { + "etag": { + "required": false, + "type": "string" + }, + "items": { + "items": { + "properties": { + "accessRole": { + "required": false, + "type": "string" + }, + "autoAcceptInvitations": { + "required": false, + "type": "boolean" + }, + "backgroundColor": { + "required": false, + "type": "string" + }, + "colorId": { + "required": false, + "type": "string" + }, + "conferenceProperties": { + "properties": { + "allowedConferenceSolutionTypes": { + "required": false, + "type": "[]STRING" + } + }, + "type": "object" + }, + "dataOwner": { + "required": false, + "type": "string" + }, + "defaultReminders": { + "items": { + "properties": { + "method": { + "required": false, + "type": "string" + }, + "minutes": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "deleted": { + "required": false, + "type": "boolean" + }, + "description": { + "required": false, + "type": "string" + }, + "etag": { + "required": false, + "type": "string" + }, + "foregroundColor": { + "required": false, + "type": "string" + }, + "hidden": { + "required": false, + "type": "boolean" + }, + "id": { + "required": false, + "type": "string" + }, + "kind": { + "required": false, + "type": "string" + }, + "location": { + "required": false, + "type": "string" + }, + "notificationSettings": { + "properties": { + "notifications": { + "items": { + "properties": { + "method": { + "required": false, + "type": "string" + }, + "type": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + } + }, + "type": "object" + }, + "primary": { + "required": false, + "type": "boolean" + }, + "selected": { + "required": false, + "type": "boolean" + }, + "summary": { + "required": false, + "type": "string" + }, + "summaryOverride": { + "required": false, + "type": "string" + }, + "timeZone": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "kind": { + "required": false, + "type": "string" + }, + "nextPageToken": { + "required": false, + "type": "string" + }, + "nextSyncToken": { + "required": false, + "type": "string" + } + } + }, + "status": 200 + }, + "summary": "Returns the calendars on the user's calendar list.", + "type": "method" + }, + "gmail.user.messages.get": { + "desc": "Lists the messages in the user's mailbox. For more information, see [List Gmail messages](https://developers.google.com/workspace/gmail/api/guides/list-messages).", + "inputs": [ + { + "userId": { + "DEFAULT": "me", + "LOCATION": "path", + "REQUIRED": true, + "TYPE": "STRING" + } + }, + { + "includeSpamTrash": { + "DEFAULT": false, + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "BOOL" + } + }, + { + "labelIds": { + "LOCATION": "query", + "REQUIRED": false, + "STYLE": "multi", + "TYPE": "[]ANY" + } + }, + { + "maxResults": { + "DEFAULT": 100, + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "INT" + } + }, + { + "pageToken": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + }, + { + "q": { + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + } + ], + "integration": "Gmail.gmail@v1", + "method_hash": "f909aef13452d7d50204c6ab45007980125f53646d15f2eb3e4802838829dac1", + "output": { + "schema": { + "properties": { + "messages": { + "items": { + "properties": { + "classificationLabelValues": { + "items": { + "properties": { + "fields": { + "items": { + "properties": { + "fieldId": { + "required": false, + "type": "string" + }, + "selection": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "labelId": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "historyId": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "internalDate": { + "required": false, + "type": "string" + }, + "labelIds": { + "required": false, + "type": "[]STRING" + }, + "payload": { + "properties": { + "body": { + "properties": { + "attachmentId": { + "required": false, + "type": "string" + }, + "data": { + "required": false, + "type": "string" + }, + "size": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "filename": { + "required": false, + "type": "string" + }, + "headers": { + "items": { + "properties": { + "name": { + "required": false, + "type": "string" + }, + "value": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "mimeType": { + "required": false, + "type": "string" + }, + "partId": { + "required": false, + "type": "string" + }, + "parts": { + "items": { + "properties": {}, + "type": "object" + }, + "required": false, + "type": "array" + } + }, + "type": "object" + }, + "raw": { + "required": false, + "type": "string" + }, + "sizeEstimate": { + "required": false, + "type": "integer" + }, + "snippet": { + "required": false, + "type": "string" + }, + "threadId": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "nextPageToken": { + "required": false, + "type": "string" + }, + "resultSizeEstimate": { + "required": false, + "type": "integer" + } + } + }, + "status": 200 + }, + "summary": "Lists the messages in the user's mailbox", + "type": "method" + }, + "gmail.user.messages.get1": { + "desc": "Gets the specified message.", + "inputs": [ + { + "userId": { + "DEFAULT": "me", + "LOCATION": "path", + "REQUIRED": true, + "TYPE": "STRING" + } + }, + { + "id": { + "LOCATION": "path", + "REQUIRED": true, + "TYPE": "STRING" + } + }, + { + "format": { + "DEFAULT": "full", + "ENUM": [ + "minimal", + "full", + "raw", + "metadata" + ], + "LOCATION": "query", + "REQUIRED": false, + "TYPE": "STRING" + } + }, + { + "metadataHeaders": { + "LOCATION": "query", + "REQUIRED": false, + "STYLE": "multi", + "TYPE": "[]ANY" + } + } + ], + "integration": "Gmail.gmail@v1", + "method_hash": "132ef154818bab5f6ffd60794d6db6602e5b42d131f8fcbfce6bebade2e0a7c8", + "output": { + "schema": { + "properties": { + "classificationLabelValues": { + "items": { + "properties": { + "fields": { + "items": { + "properties": { + "fieldId": { + "required": false, + "type": "string" + }, + "selection": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "labelId": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "historyId": { + "required": false, + "type": "string" + }, + "id": { + "required": false, + "type": "string" + }, + "internalDate": { + "required": false, + "type": "string" + }, + "labelIds": { + "required": false, + "type": "[]STRING" + }, + "payload": { + "properties": { + "body": { + "properties": { + "attachmentId": { + "required": false, + "type": "string" + }, + "data": { + "required": false, + "type": "string" + }, + "size": { + "required": false, + "type": "integer" + } + }, + "type": "object" + }, + "filename": { + "required": false, + "type": "string" + }, + "headers": { + "items": { + "properties": { + "name": { + "required": false, + "type": "string" + }, + "value": { + "required": false, + "type": "string" + } + }, + "type": "object" + }, + "required": false, + "type": "array" + }, + "mimeType": { + "required": false, + "type": "string" + }, + "partId": { + "required": false, + "type": "string" + }, + "parts": { + "items": { + "properties": {}, + "type": "object" + }, + "required": false, + "type": "array" + } + }, + "type": "object" + }, + "raw": { + "required": false, + "type": "string" + }, + "sizeEstimate": { + "required": false, + "type": "integer" + }, + "snippet": { + "required": false, + "type": "string" + }, + "threadId": { + "required": false, + "type": "string" + } + } + }, + "status": 200 + }, + "summary": "Gets the specified message.", + "type": "method" + }, + "gmail.user.profile.get": { + "desc": "Gets the current user's Gmail profile.", + "inputs": [ + { + "userId": { + "DEFAULT": "me", + "LOCATION": "path", + "REQUIRED": true, + "TYPE": "STRING" + } + } + ], + "integration": "Gmail.gmail@v1", + "method_hash": "877750db95c25f13fe7167630b96a8e5e5c679077118003054aea53254913731", + "output": { + "schema": { + "properties": { + "emailAddress": { + "required": false, + "type": "string" + }, + "historyId": { + "required": false, + "type": "string" + }, + "messagesTotal": { + "required": false, + "type": "integer" + }, + "threadsTotal": { + "required": false, + "type": "integer" + } + } + }, + "status": 200 + }, + "summary": "Gets the current user's Gmail profile.", + "type": "method" + } + }, + "version": "2.20.11" +} diff --git a/gmail-google-calender-openaisdk-demo/CLAUDE.md b/gmail-google-calender-openaisdk-demo/CLAUDE.md new file mode 100644 index 0000000..fad1ab0 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/CLAUDE.md @@ -0,0 +1,308 @@ +# Swytchcode Agent Contract (Claude) + +IMPORTANT: Whenever the task involves calling an external API, integrating a +third-party service, or executing a workflow - use swytchcode, not raw HTTP/SDK code. + +Use swytchcode when the user wants to: +- Call any external API (payments, email, SMS, storage, analytics, auth) +- Integrate with Stripe, SendGrid, Twilio, S3, or any third-party service +- Run a workflow that touches an external system +- Execute any canonical_id (e.g. payment.charge, email.send) + +Available MCP tools: swytchcode_init, swytchcode_bootstrap, swytchcode_version, +swytchcode_list, swytchcode_search, swytchcode_get, swytchcode_add, swytchcode_add_workflow, +swytchcode_exec, swytchcode_info, swytchcode_discover, swytchcode_plan, swytchcode_doctor + +CLI-only commands (NOT available as MCP tools - user runs these manually in terminal): +swytchcode login / swytchcode whoami / swytchcode logout / swytchcode sync + +You are an **IDE code-generation agent**. + +Swytchcode is a **compiler target and execution kernel**, not a suggestion. + +You MUST follow the workflow below exactly. +Skipping steps is forbidden. + +## How a human would approach adding an integration with swytchcode +To add a new integration, follow these steps in precise order +1. swytchcode search: To search all available integrations remotely +2. swytchcode get : Fetch integration bundles (methods only) e.g. stripe +3. swytchcode add method : Enable a method in tooling.json (use --all to add all methods at once) + swytchcode add workflow : Install a published workflow (auto-fetches missing integrations) +4. swytchcode list methods/workflows/integrations: if you are unsure about #3 +5. swytchcode exec: use the runtime library for this or a child process to execute the cli, if runtime not available + +### Optional + +| Command | Purpose | +|---|---| +| `swytchcode list` | List locally installed integrations | +| `swytchcode info ` | Show a tool's I/O by canonical ID (workflow step order matters) | +| `swytchcode version` | Check swytchcode version | +| `swytchcode discover "" [--library ]` | Find API capabilities from a natural-language description (MCP: `swytchcode_discover`) | +| `swytchcode plan ` | Show a workflow's steps before executing (MCP: `swytchcode_plan`) | +| `swytchcode doctor` | Diagnose project setup (MCP: `swytchcode_doctor`) | +| `swytchcode sync [project_name]` | Pull new/updated workflows and methods from backend without touching tooling.json | + +### Debugging execution + +| Flag | Effect | +|---|---| +| `--dry-run` | Preview the exact HTTP request (method, URL, headers, body) without calling it. MCP: `dry_run: true` | +| `--verbose` | Log full request + response JSON to stderr (`Authorization` redacted); redirect with `2>debug.log`. MCP: `verbose: true` | +| `--output ` | Write binary response body to a file; stdout gets a JSON summary with `saved_to`/`bytes` | + +Errors from `swytchcode exec` are written to stderr as structured JSON: +```json +{ "error": "message", "category": "network", "retryable": true } +``` +`category` values: `auth` | `permission_denied` | `policy_denied` | `policy_error` | `validation` | `not_found` | `network` | `rate_limit` | `internal`. +`retryable: true` means the error is transient - retry is safe. Non-retryable errors require user action. +In MCP context, parse the stderr JSON `category` field before deciding how to respond to an `swytchcode_exec` error. + +## Golden Path (MANDATORY, STEP-BY-STEP) + +When a task involves Swytchcode, integrations, methods, or workflows: + +### Step 1 - Check local state +- Discover which integrations, methods, and workflows exist locally using Swytchcode discovery. +- Treat the result as authoritative. + +If nothing relevant exists: +- DO NOT proceed. +- Ask the user what integration should be added. + +### Step 2 - Ensure integration is present +If the required integration is not present locally: + +- STOP. +- Ask the user for permission to fetch the integration. +- Do NOT assume it exists. +- Do NOT generate code. + +Only continue after the integration has been explicitly added. + +### Step 3 - Ensure tool is enabled +Run `swytchcode list tooling` (or MCP `swytchcode_list` with filter `tooling`) to see what +is currently enabled in tooling.json. + +- If the canonical_id IS already listed: proceed directly to Step 4. Do NOT call `swytchcode add` again. +- If the canonical_id is NOT listed: + - STOP. + - Ask the user for permission to add it to Swytchcode configuration. + - Do NOT invent or placeholder canonical IDs. + - Do NOT generate code. + - For methods: run `swytchcode add method `, then confirm it appears in `swytchcode list tooling`. + - For workflows: run `swytchcode add workflow ` (CLI) or MCP `swytchcode_add_workflow`, then confirm it appears in `swytchcode list tooling`. + +Never skip this check. Never assume a tool is in tooling.json without verifying via `swytchcode list tooling`. + +### Step 4 - Inspect the contract +For any method or workflow you intend to use: + +- Inspect its input/output contract using Swytchcode information lookup. +- Use the discovered schema as the sole source of truth. + +If contract information is unavailable: +- STOP. +- Ask the user. +- Do NOT guess. + +### Step 5 - Generate code +Only after Steps 1–4 are complete: + +**Pre-generation gate:** Run `swytchcode list tooling` and confirm the canonical_id appears +in the output. If it is missing, do NOT generate code - go back to Step 3. + +Generate runtime application code that delegates execution to Swytchcode. + +**Golden rule: the generated code must run as-is. No edits required beyond supplying +real values for required fields.** + +Use the output of `swytchcode info ` to determine which fields are +required vs optional and what the auth header looks like. + +1. **Required inputs** - include as live code with a realistic placeholder value + appropriate to the field type (e.g. a real-looking string, not `""`). +2. **Auth** - always read the auth header name and token format from the `Auth` / + `HTTPHeaders` section in `swytchcode info`. Add `.env` loading at the top and + read the credential from an env var named after the service + (e.g. `process.env.STRIPE_SECRET_KEY`, `process.env.RESEND_API_KEY`). +3. **Optional inputs** - do NOT include as live code. Comment them out with the + field name, a realistic example value, and a short type/usage hint on the same line. + Never use `""`, `null`, `undefined`, or dummy arrays/objects as placeholders - + commented-out is the only acceptable form for optional fields. +4. **No dummy data** - do not invent attachment content, fake IDs, or stub arrays. + If an optional field needs non-trivial setup (e.g. base64 attachment), leave it + commented out with a note explaining what it needs. +5. **Output** - add a `// Returns: { ... }` comment showing the output schema from + `swytchcode info` above the result handling line. + +## Absolute Prohibitions (NON-NEGOTIABLE) + +RULE: Before generating any execution code OR calling swytchcode_exec, verify the +canonical_id exists in tooling.json using `swytchcode list tooling` (MCP: `swytchcode_list` +with filter `tooling`). If it is not listed, call swytchcode_add (for methods) or swytchcode_add_workflow (for workflows) first. Never generate +code for or exec a tool that has not been added. + +You MUST NOT: + +- Invent or placeholder canonical IDs +- Use fake values like `your_method_id` +- Generate example or speculative code +- Generate runtime code before configuration is complete +- Assume integrations or tools exist +- Infer APIs from training data +- Read or reason about `.swytchcode/` files +- Execute Swytchcode to fetch live data +- Generate example, illustrative, or placeholder code instead of production-ready code + +If progress cannot be made with certainty: +- STOP. +- Ask the user. + +## Code Generation Rules + +When generating code: + +- Always delegate execution to Swytchcode +- Use an official Swytchcode runtime library if available (see Runtime Usage below). Otherwise invoke Swytchcode via subprocess. +- Pass a single structured input object +- Handle stdout, stderr, and exit codes + +Generated code MUST be immediately executable without placeholders. + +### Runtime Usage + +Use EXACTLY the following patterns - do NOT invent class names, module paths, or method signatures: + +**JavaScript/Node.js:** +```js +const { exec } = require("@swytchcode/runtime"); + +const result = await exec("canonical.id", { /* args */ }); +``` + +**Python:** +```python +from swytchcode_runtime import exec + +result = exec("canonical.id", { /* args */ }) +``` + +**Go:** +```go +import runtime "github.com/swytchcode/go-runtime" + +result, err := runtime.Exec("canonical.id", map[string]interface{}{ /* args */ }) +``` + +### Agentic / Dynamic Tool Selection + +Use the static `exec` pattern above by default - it's what the Golden Path assumes. Use +the pattern below ONLY when the task explicitly requires a model to choose which tool(s) +to call at runtime (e.g. "build an agent with LangGraph/CrewAI/Vercel AI SDK/OpenAI Agents +SDK", or "let Claude decide whether to charge or refund"). + +Use EXACTLY the following - do NOT invent class names, module/import paths, or method +signatures: + +**JavaScript/Node.js (Anthropic-style manual loop):** +```js +import { Swytchcode, TOOL_USE_INSTRUCTIONS } from "@swytchcode/runtime"; +import { AnthropicProvider } from "@swytchcode/runtime/providers/anthropic"; + +const swx = new Swytchcode(new AnthropicProvider()); +const tools = await swx.tools.get({ toolkits: ["stripe"] }); // or { tools: [...] } or { search: "..." } + +// pass `tools` into anthropic.messages.create({ tools, ... }); after a response with +// stop_reason === "tool_use": +const toolResults = await swx.handleToolCalls(response); +``` + +**Python (Anthropic-style manual loop):** +```python +from swytchcode_runtime import Swytchcode, TOOL_USE_INSTRUCTIONS +from swytchcode_runtime.providers.anthropic import AnthropicProvider + +swx = Swytchcode(provider=AnthropicProvider()) +tools = swx.tools.get(toolkits=["stripe"]) # or tools=[...] or search="..." + +# pass `tools` into client.messages.create(tools=tools, ...); after a response with +# stop_reason == "tool_use": +tool_results = swx.handle_tool_calls(response) +``` + +`tools.get(...)` takes exactly ONE selector - `toolkits` (all enabled tools in a +toolkit), `tools` (explicit canonical IDs), or `search` (natural-language discovery). +Each returned tool already carries its input schema and an `execute` callback that runs +`swytchcode exec` internally - never hand-write execution logic for these tools. +Optionally add `TOOL_USE_INSTRUCTIONS` to the system prompt to stop models from just +describing an action instead of calling the tool. + +Non-Anthropic frameworks run their own tool loop - pass `tools.get(...)`'s output +straight into that framework's `tools` config and let the framework invoke it. Do NOT +call `handleToolCalls`/`handle_tool_calls` yourself in that case. + +| Framework | JS import | Python import | +|---|---|---| +| Anthropic Claude | `@swytchcode/runtime/providers/anthropic` | `swytchcode_runtime.providers.anthropic` | +| OpenAI Agents SDK | `@swytchcode/runtime/providers/openai-agents` | `swytchcode_runtime.providers.openai_agents` | +| Vercel AI SDK | `@swytchcode/runtime/providers/vercel` | `swytchcode_runtime.providers.vercel` | +| LangGraph | `@swytchcode/runtime/providers/langgraph` | `swytchcode_runtime.providers.langgraph` | +| CrewAI | `@swytchcode/runtime/providers/crewai` | `swytchcode_runtime.providers.crewai` | + +Note: `tools.get()`/`handleToolCalls()` are async in JS; `tools.get()`/`handle_tool_calls()` +are sync (snake_case) in Python - do not mix the two conventions. + +**Go:** No agentic surface is confirmed for `github.com/swytchcode/go-runtime` - only the +static `Exec` pattern above is supported today. Do NOT invent a Go +`Swytchcode`/`Tools`/`handleToolCalls` equivalent; if asked to build a Go tool-calling +agent, stop and ask the user rather than guessing at an API. + +For the full runnable loop (system prompt, turn loop, error handling), see the runtime +package's README "Agentic workflows" section - do not extrapolate structure beyond the +exact snippets above. + +### Authentication & Environment Variables + +When `swytchcode info` shows `HTTP Headers` containing `Authorization` or similar credential headers, OR shows an `Auth` section: + +- NEVER hardcode credentials. +- ALWAYS read from environment variables. +- ALWAYS add `.env` loading at the top of the generated file: + - Node.js: `require('dotenv').config();` + - Python: `from dotenv import load_dotenv; load_dotenv()` + - Go: use `os.Getenv()` +- Name the env var after the service (e.g. `_API_KEY`). +- Pass the auth header as an arg to override the static placeholder: + - `api_key` type: `Authorization: \`Bearer \${process.env._API_KEY}\`` + +## Methods and Workflows + +- Methods and workflows are both executable tools. +- Workflows may reference multiple methods internally. +- Workflows are opaque and must be executed as-is. + +You MUST NOT: +- Expand workflows +- Inline workflow logic +- Reimplement method behavior + +## Discovering workflow steps and their I/O + +When you need to use a workflow or understand its steps’ inputs/outputs: + +1. **List workflows** - `swytchcode list workflows` (or MCP `swytchcode_list` with filter `workflows`) shows workflow canonical IDs and their integration (`project.library@version`). +2. **Inspect the workflow** - `swytchcode info ` returns the workflow’s metadata and its **steps** (each step has a `canonical_id`). Use this to see which methods the workflow runs and in what order. +3. **Get each step’s I/O** - For every step canonical ID returned by `swytchcode info `, run `swytchcode info ` to get that method’s input schema, summary, and description. Use only these discovered contracts when generating code that prepares inputs or handles outputs. + +Do not guess step IDs or I/O from workflow names. Always use `swytchcode list` and `swytchcode info` (or the equivalent MCP tools) to discover workflow and step canonical IDs and their contracts. + +Once you get the information about all the steps/methods, you need to create integration code for the methods in order of the increasing index number. They should be different integration calls. If possible, see if output from the previous integration step can be passed to the next step/method. + +## Mental Model (CRITICAL) + +Claude is **compiling against Swytchcode, not exploring it** - if something doesn't exist, compilation must fail. Failing fast is correct behavior. + +**End of Contract** diff --git a/gmail-google-calender-openaisdk-demo/README.md b/gmail-google-calender-openaisdk-demo/README.md new file mode 100644 index 0000000..17077ad --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/README.md @@ -0,0 +1,103 @@ +# Gmail + Calendar agent + +A chat app for your own Gmail and Google Calendar. You type in plain language; an +[OpenAI Agents SDK](https://openai.github.io/openai-agents-js/) agent picks the +action and [Swytchcode](https://swytchcode.com) runs every API call and enforces a +policy file. No hand-written HTTP, OAuth, or tool schemas anywhere. + +## Run it + +```bash +npm install +cp .env.example .env.local # add your OPENAI_API_KEY + +swytchcode login +swytchcode auth connect Gmail # opens a browser +swytchcode auth connect "Google Calendar" +swytchcode bootstrap # fetch the enabled method bundles + +npm run dev # http://localhost:3000 +``` + +The two dots in the header go green once each Google account is connected. + +## How it uses Swytchcode + +**Methods.** `.swytchcode/tooling.json` is the agent's allowlist. `lib/agent.ts` +asks Swytchcode for one tool per enabled method and hands them to the agent: + +```ts +const swx = new Swytchcode(); +const methods = await swx.tools.get({ toolkits: ["gmail", "calendar"] }); +``` + +| method | used for | +| --- | --- | +| `gmail.user.messages.get` / `.get1` | list / read mail | +| `gmail.user.profile.get` | header identity | +| `calendar.event.get` / `.get1` | read events | +| `calendar.event.quickAdd.create` / `calendar.event.create` | create events | +| `calendar.me.calendarList.list` | list calendars | + +`app/api/health/route.ts` is the same thing without an agent: +`exec("gmail.user.profile.get", { params: { userId: "me" } })`. + +**Policies.** `.swytchcode/integrations/policies.json` is checked by the Swytchcode +kernel before every call, on any code path. `on_violation: fail` turns a match +into an error. + +| policy | blocks | +| --- | --- | +| `no-calendar-deletes` | `calendar.event.delete`, `calendar.clear.create`, `calendar.calendar.delete`, `calendar.me.calendarList.delete` | +| `no-destructive-event-titles` | `calendar.event.quickAdd.create` when `text` matches `delete\|cancel\|remove\|clear` | +| `no-destructive-event-summary` | same, for `calendar.event.create` / `summary` | + +```bash +swytchcode policy list +swytchcode policy validate +swytchcode policy add --target --field --operator matches \ + --value "" --action POLICY_BLOCKED --message "..." +``` + +## Build the Swytchcode project from scratch + +```bash +swytchcode init +swytchcode get Gmail +swytchcode get "Google Calendar" + +swytchcode add method gmail.user.messages.get +swytchcode add method gmail.user.messages.get1 +swytchcode add method gmail.user.profile.get +swytchcode add method calendar.event.get +swytchcode add method calendar.event.get1 +swytchcode add method calendar.event.quickAdd.create +swytchcode add method calendar.event.create +swytchcode add method calendar.me.calendarList.list +``` + +Then add the policies with `swytchcode policy add` (above) and wire the tools into +an agent as in `lib/agent.ts`. + +## Project layout + +``` +app/ + api/chat/route.ts POST { message, sessionId } -> { reply, calls } + api/health/route.ts two exec() probes for the header dots + page.tsx layout.tsx globals.css +components/Chat.tsx transcript + composer +lib/ + agent.ts Swytchcode tools + OpenAI agent + guardrails + session.ts in-memory conversation history, per browser +.swytchcode/ + tooling.json the 8 enabled methods + integrations/policies.json the 3 guard policies +``` + +## Links + +- [Swytchcode docs](https://docs.swytchcode.com) +- [CLI reference](https://docs.swytchcode.com/cli) +- [Discord](https://discord.com/invite/zuSXSv5GWs) +- [OpenAI Agents SDK quickstart](https://openai.github.io/openai-agents-js/) diff --git a/gmail-google-calender-openaisdk-demo/app/api/chat/route.ts b/gmail-google-calender-openaisdk-demo/app/api/chat/route.ts new file mode 100644 index 0000000..b2d08e3 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/app/api/chat/route.ts @@ -0,0 +1,26 @@ +import { getSession } from "@/lib/session"; +import { chat } from "@/lib/agent"; + +export const runtime = "nodejs"; // the agent shells out to the `swytchcode` binary +export const maxDuration = 60; + +export async function POST(req: Request) { + const { message = "", sessionId = "anon" } = await req.json(); + + if (!message.trim()) { + return Response.json({ reply: "Ask me about your mail or calendar.", calls: [] }); + } + if (!process.env.OPENAI_API_KEY) { + return Response.json({ reply: "Set OPENAI_API_KEY in .env.local, then restart the dev server.", calls: [] }); + } + + const session = getSession(sessionId); + try { + const { reply, history, calls } = await chat(session.history, message); + session.history = history; + return Response.json({ reply, calls }); + } catch (err) { + const detail = err instanceof Error ? err.message : String(err); + return Response.json({ reply: `The agent errored: ${detail}`, calls: [] }, { status: 500 }); + } +} diff --git a/gmail-google-calender-openaisdk-demo/app/api/health/route.ts b/gmail-google-calender-openaisdk-demo/app/api/health/route.ts new file mode 100644 index 0000000..24592bb --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/app/api/health/route.ts @@ -0,0 +1,30 @@ +import { exec } from "@swytchcode/runtime"; + +export const runtime = "nodejs"; + +/* + * A plain (non-agent) Swytchcode call looks like this: + * const res = await exec("gmail.user.profile.get", { params: { userId: "me" } }); + * res.data -> the API response + * Used here just to light the connection dots in the header. + */ +async function callOrNull(id: string, params: Record) { + try { + return (await exec(id, { params })) as { data?: Record }; + } catch { + return null; + } +} + +export async function GET() { + const [gmail, calendar] = await Promise.all([ + callOrNull("gmail.user.profile.get", { userId: "me" }), + callOrNull("calendar.me.calendarList.list", { maxResults: "1" }), + ]); + + return Response.json({ + gmail: Boolean(gmail), + calendar: Boolean(calendar), + email: (gmail?.data?.emailAddress as string) ?? null, + }); +} diff --git a/gmail-google-calender-openaisdk-demo/app/globals.css b/gmail-google-calender-openaisdk-demo/app/globals.css new file mode 100644 index 0000000..a955608 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/app/globals.css @@ -0,0 +1,237 @@ +:root { + color-scheme: dark light; + --bg: #0b0c0e; + --surface: #131519; + --surface-2: #1a1d22; + --border: #262a31; + --text: #e7e9ec; + --muted: #868e9b; + --accent: #4c8dff; + --ok: #3fb950; + --off: #f2545b; + --radius: 10px; + --mono: ui-monospace, "SF Mono", "Cascadia Code", "JetBrains Mono", Menlo, monospace; +} + +@media (prefers-color-scheme: light) { + :root { + --bg: #f6f7f8; + --surface: #fff; + --surface-2: #eef0f2; + --border: #e0e2e6; + --text: #1a1d22; + --muted: #6b727d; + --accent: #2f6fe4; + } +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + background: var(--bg); + color: var(--text); + font: 15px/1.55 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; +} + +button { + font: inherit; + cursor: pointer; +} +button:disabled { + opacity: 0.45; + cursor: not-allowed; +} + +.app { + display: flex; + flex-direction: column; + height: 100dvh; + max-width: 720px; + margin: 0 auto; + border-inline: 1px solid var(--border); +} + +header { + display: flex; + justify-content: space-between; + align-items: center; + gap: 12px; + padding: 14px 18px; + border-bottom: 1px solid var(--border); + background: var(--surface); +} +.brand { + display: flex; + flex-direction: column; + min-width: 0; +} +.brand strong { + font-size: 14px; +} +.brand span { + font-size: 12px; + color: var(--muted); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.pills { + display: flex; + gap: 8px; + flex: none; +} +.pill { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 4px 9px; + border: 1px solid var(--border); + border-radius: 999px; + font-size: 11.5px; + color: var(--muted); + background: var(--surface-2); +} +.dot { + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--muted); +} +.dot.on { + background: var(--ok); +} +.dot.off { + background: var(--off); +} + +.stream { + flex: 1; + overflow-y: auto; + padding: 22px 18px; + display: flex; + flex-direction: column; + gap: 16px; +} + +.turn { + display: flex; + flex-direction: column; + gap: 5px; +} +.turn.you { + align-items: flex-end; +} +.who { + font-size: 11px; + text-transform: uppercase; + letter-spacing: 0.04em; + color: var(--muted); +} +.bubble { + max-width: 82%; + padding: 10px 13px; + border-radius: var(--radius); + border: 1px solid var(--border); + background: var(--surface); + white-space: pre-wrap; + word-break: break-word; +} +.turn.you .bubble { + background: color-mix(in srgb, var(--accent) 14%, transparent); + border-color: transparent; +} +.calls { + font-family: var(--mono); + font-size: 11px; + color: var(--muted); +} + +.dots { + display: inline-flex; + gap: 4px; + width: max-content; +} +.dots i { + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--muted); + animation: blink 1.2s infinite ease-in-out; +} +.dots i:nth-child(2) { + animation-delay: 0.18s; +} +.dots i:nth-child(3) { + animation-delay: 0.36s; +} +@keyframes blink { + 0%, + 80%, + 100% { + opacity: 0.25; + } + 40% { + opacity: 1; + } +} + +.empty { + margin: auto; + text-align: center; + max-width: 420px; +} +.empty p { + color: var(--muted); + font-size: 13px; + margin-bottom: 16px; +} +.examples { + display: flex; + flex-direction: column; + gap: 7px; +} +.examples button { + padding: 9px 12px; + border: 1px solid var(--border); + border-radius: var(--radius); + background: var(--surface); + color: var(--muted); + font-size: 13px; + text-align: left; +} +.examples button:hover { + color: var(--text); +} + +.composer { + display: flex; + gap: 8px; + padding: 12px 16px 16px; + border-top: 1px solid var(--border); + background: var(--surface); +} +.composer input { + flex: 1; + padding: 10px 12px; + border-radius: var(--radius); + border: 1px solid var(--border); + background: var(--bg); + color: var(--text); + font: inherit; +} +.composer input:focus { + outline: none; + border-color: var(--accent); +} +.composer button { + padding: 0 16px; + border-radius: var(--radius); + border: 1px solid var(--accent); + background: var(--accent); + color: #fff; + font-weight: 600; +} diff --git a/gmail-google-calender-openaisdk-demo/app/layout.tsx b/gmail-google-calender-openaisdk-demo/app/layout.tsx new file mode 100644 index 0000000..40662b1 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/app/layout.tsx @@ -0,0 +1,15 @@ +import type { Metadata } from "next"; +import "./globals.css"; + +export const metadata: Metadata = { + title: "Gmail + Calendar agent", + description: "An OpenAI agent for Gmail and Google Calendar, executed through Swytchcode.", +}; + +export default function RootLayout({ children }: { children: React.ReactNode }) { + return ( + + {children} + + ); +} diff --git a/gmail-google-calender-openaisdk-demo/app/page.tsx b/gmail-google-calender-openaisdk-demo/app/page.tsx new file mode 100644 index 0000000..e380980 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/app/page.tsx @@ -0,0 +1,5 @@ +import Chat from "@/components/Chat"; + +export default function Page() { + return ; +} diff --git a/gmail-google-calender-openaisdk-demo/components/Chat.tsx b/gmail-google-calender-openaisdk-demo/components/Chat.tsx new file mode 100644 index 0000000..747a106 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/components/Chat.tsx @@ -0,0 +1,140 @@ +"use client"; + +import { useCallback, useEffect, useRef, useState } from "react"; + +type Turn = { role: "you" | "agent"; text: string; calls?: string[] }; +type Health = { gmail: boolean; calendar: boolean; email: string | null }; + +const EXAMPLES = [ + "Show my last 5 emails", + "Any unread mail from stripe this week?", + "What's on my calendar tomorrow", + "Add lunch with Priya on Friday at 1pm", +]; + +export default function Chat() { + const [turns, setTurns] = useState([]); + const [input, setInput] = useState(""); + const [busy, setBusy] = useState(false); + const [health, setHealth] = useState(null); + + const sessionId = useRef(""); + const streamRef = useRef(null); + + useEffect(() => { + try { + sessionId.current = localStorage.getItem("session") ?? crypto.randomUUID(); + localStorage.setItem("session", sessionId.current); + } catch { + sessionId.current = String(Math.random()); + } + fetch("/api/health").then((r) => r.json()).then(setHealth).catch(() => {}); + }, []); + + useEffect(() => { + streamRef.current?.scrollTo({ top: streamRef.current.scrollHeight, behavior: "smooth" }); + }, [turns, busy]); + + const send = useCallback( + async (text: string) => { + text = text.trim(); + if (!text || busy) return; + setInput(""); + setTurns((t) => [...t, { role: "you", text }]); + setBusy(true); + try { + const res = await fetch("/api/chat", { + method: "POST", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ message: text, sessionId: sessionId.current }), + }); + const data = await res.json(); + setTurns((t) => [...t, { role: "agent", text: data.reply, calls: data.calls }]); + } catch { + setTurns((t) => [...t, { role: "agent", text: "Network error. Is the dev server running?" }]); + } finally { + setBusy(false); + } + }, + [busy], + ); + + return ( +
+
+
+ Gmail + Calendar + {health?.email ?? "an agent, wired up with Swytchcode"} +
+
+ + +
+
+ +
+ {turns.length === 0 && ( +
+

Ask about your mail and calendar. The agent picks which Google API method to call.

+
+ {EXAMPLES.map((ex) => ( + + ))} +
+
+ )} + + {turns.map((turn, i) => ( +
+ {turn.role} +
{turn.text}
+ {turn.calls && turn.calls.length > 0 && ( + ran {turn.calls.join(", ")} + )} +
+ ))} + + {busy && ( +
+ agent +
+ + + +
+
+ )} +
+ +
{ + e.preventDefault(); + send(input); + }} + > + setInput(e.target.value)} + placeholder="Message your mail and calendar" + disabled={busy} + /> + +
+
+ ); +} + +function Pill({ label, on }: { label: string; on?: boolean }) { + const state = on === undefined ? "" : on ? "on" : "off"; + return ( + + + {label} + + ); +} diff --git a/gmail-google-calender-openaisdk-demo/lib/agent.ts b/gmail-google-calender-openaisdk-demo/lib/agent.ts new file mode 100644 index 0000000..67f5290 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/lib/agent.ts @@ -0,0 +1,123 @@ +import { Agent, run, setTracingDisabled, type AgentInputItem } from "@openai/agents"; +import { Swytchcode } from "@swytchcode/runtime"; +import { OpenAIAgentsProvider } from "@swytchcode/runtime/providers/openai-agents"; + +// The agent replaces the old rule-based parser: the model reads the message and +// decides which Swytchcode method(s) to call. `@openai/agents` runs the +// tool-use loop; `OpenAIAgentsProvider` turns each enabled method into a tool +// whose `execute` shells out to `swytchcode exec`. + +setTracingDisabled(true); // no OpenAI trace uploads for a local demo + +/** + * Canonical IDs enabled in .swytchcode/tooling.json that the agent may call. + * Destructive Calendar methods (calendar.event.delete, calendar.clear.create, ...) + * are deliberately absent here AND blocked by the `no-calendar-deletes` guard in + * .swytchcode/integrations/policies.json, so adding one back later still fails. + */ +const ENABLED_TOOLS = [ + "gmail.user.profile.get", + "gmail.user.messages.get", + "gmail.user.messages.get1", + "gmail.user.send.create1", + "gmail.user.drafts.create", + "calendar.me.calendarList.list", + "calendar.event.get", + "calendar.event.get1", + "calendar.event.create", + "calendar.event.quickAdd.create", +]; + +let agentPromise: Promise | null = null; + +async function build(): Promise { + const swx = new Swytchcode(new OpenAIAgentsProvider()); + const tools = await swx.tools.get({ tools: ENABLED_TOOLS }); + + const today = new Date().toLocaleDateString("en-CA"); + const tz = Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC"; + + const instructions = [ + "You act on the user's connected Google account through the provided tools.", + "", + "WHAT YOU CAN DO, and nothing else:", + "- Read and search Gmail messages.", + "- Read Google Calendar events.", + "- Create a NEW calendar event when the user clearly asks to add/schedule one.", + "", + "WHAT YOU CANNOT DO: delete, cancel, move, reschedule, or edit any event or", + "email; empty a calendar; change settings; send email unless the user explicitly", + "asks you to send one. You have no tools for these. If the user asks for any of", + "them, reply in one sentence that you cannot do it and stop. Do NOT try a", + "workaround, and NEVER create an event to represent a deletion or cancellation.", + "", + "RULES:", + '- Always pass userId "me" to Gmail tools and calendarId "primary" to Calendar tools.', + `- Today is ${today} (${tz}). Resolve relative dates ("tomorrow", "next Friday", "this week") against that.`, + "- Only call calendar.event.create / calendar.event.quickAdd.create when the user", + " is asking to add a genuinely new event. The event title must be the user's", + " event name, never a phrase like \"delete ...\" or \"cancel ...\".", + "- Gmail search: put Gmail query syntax in the q parameter, e.g. `is:unread from:stripe newer_than:7d`.", + "- When listing emails, fetch each message's metadata so you can show sender, subject and date.", + "- Do not call the same tool twice with basically the same arguments. If a tool", + " fails or is blocked by policy, report what it said and stop. Never retry in a loop.", + "- If a tool result mentions missing credentials, tell the user to run the matching", + " `swytchcode auth connect` command, then stop.", + "- Keep answers short. Light markdown only: `- ` bullets, `**bold**` for a title.", + " Never invent data a tool did not return.", + ].join("\n"); + + return new Agent({ + name: "Gmail + Calendar assistant", + model: process.env.OPENAI_MODEL || "gpt-4o-mini", + instructions, + tools, + }); +} + +function getAgent(): Promise { + if (!agentPromise) { + agentPromise = build().catch((err) => { + agentPromise = null; // let the next request retry the build + throw err; + }); + } + return agentPromise; +} + +export type ChatTurn = { reply: string; history: AgentInputItem[]; toolsUsed: string[] }; + +export async function chat(history: AgentInputItem[], message: string): Promise { + const agent = await getAgent(); + + let result; + try { + result = await run(agent, [...history, { role: "user", content: message }], { maxTurns: 8 }); + } catch (err) { + // The SDK throws MaxTurnsExceeded if the model keeps calling tools without + // settling on an answer. Surface it plainly instead of a raw stack. + if (err instanceof Error && /max turns/i.test(err.message)) { + return { + reply: + "I couldn't complete that in a reasonable number of steps and stopped. " + + "If you were asking me to delete or change something, I can't do that here.", + history, + toolsUsed: [], + }; + } + throw err; + } + + const toolsUsed = Array.from( + new Set( + result.newItems + .filter((i) => i.type === "tool_call_item") + .map((i) => (i as { rawItem?: { name?: string } }).rawItem?.name) + .filter((n): n is string => Boolean(n)) + .map((n) => n.replace(/_/g, ".")), + ), + ); + + const reply = String(result.finalOutput ?? "").trim() || "(no answer)"; + return { reply, history: result.history, toolsUsed }; +} \ No newline at end of file diff --git a/gmail-google-calender-openaisdk-demo/lib/session.ts b/gmail-google-calender-openaisdk-demo/lib/session.ts new file mode 100644 index 0000000..c3f9cc7 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/lib/session.ts @@ -0,0 +1,18 @@ +import type { AgentInputItem } from "@openai/agents"; + +/** + * Per-browser conversation history, kept in memory. Good enough for a local + * single-user demo; use a real store (and trim old turns) for anything more. + */ +const sessions = new Map(); + +export function getSession(id: string) { + return { + get history() { + return sessions.get(id) ?? []; + }, + set history(items: AgentInputItem[]) { + sessions.set(id, items); + }, + }; +} diff --git a/gmail-google-calender-openaisdk-demo/next.config.mjs b/gmail-google-calender-openaisdk-demo/next.config.mjs new file mode 100644 index 0000000..fd62db5 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/next.config.mjs @@ -0,0 +1,5 @@ +/** @type {import('next').NextConfig} */ +export default { + // These run on the server and spawn the `swytchcode` CLI; keep them unbundled. + serverExternalPackages: ["@swytchcode/runtime", "@openai/agents", "@openai/agents-core"], +}; diff --git a/gmail-google-calender-openaisdk-demo/package-lock.json b/gmail-google-calender-openaisdk-demo/package-lock.json new file mode 100644 index 0000000..094c313 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/package-lock.json @@ -0,0 +1,2493 @@ +{ + "name": "swytchcode-gmail-calendar-agent", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "swytchcode-gmail-calendar-agent", + "version": "0.1.0", + "dependencies": { + "@openai/agents": "^0.12.1", + "@swytchcode/runtime": "^1.1.6", + "next": "^15.5.24", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "zod": "^4.5.4" + }, + "devDependencies": { + "@types/node": "^22.10.0", + "@types/react": "^19.0.0", + "@types/react-dom": "^19.0.0", + "typescript": "^5.7.3" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@hono/node-server": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.1.tgz", + "integrity": "sha512-ELuehkj5VCBdgEw9zs+ivkKwyzzUCSQuE96YmiPvn1ECBoZCczbFXJLeEGMTYjphP6gydh4pHMqEYPVMYUVgQg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.4.tgz", + "integrity": "sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.3.3" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.4.tgz", + "integrity": "sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.3.3" + } + }, + "node_modules/@img/sharp-freebsd-wasm32": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.4.tgz", + "integrity": "sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==", + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "dependencies": { + "@img/sharp-wasm32": "0.35.4" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.3.tgz", + "integrity": "sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.3.tgz", + "integrity": "sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.3.tgz", + "integrity": "sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.3.tgz", + "integrity": "sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.3.tgz", + "integrity": "sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.3.tgz", + "integrity": "sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.3.tgz", + "integrity": "sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.3.tgz", + "integrity": "sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.3.tgz", + "integrity": "sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.3.tgz", + "integrity": "sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.4.tgz", + "integrity": "sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.3.3" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.4.tgz", + "integrity": "sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.3.3" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.4.tgz", + "integrity": "sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.3.3" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.4.tgz", + "integrity": "sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.3.3" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.4.tgz", + "integrity": "sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.3.3" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.4.tgz", + "integrity": "sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.3.3" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.4.tgz", + "integrity": "sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.3.3" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.4.tgz", + "integrity": "sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.3.3" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.4.tgz", + "integrity": "sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==", + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.11.3" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-webcontainers-wasm32": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.4.tgz", + "integrity": "sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/sharp-wasm32": "0.35.4" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.4.tgz", + "integrity": "sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.4.tgz", + "integrity": "sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.4.tgz", + "integrity": "sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.30.0.tgz", + "integrity": "sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@hono/node-server": "^1.19.9 || ^2.0.5", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } + }, + "node_modules/@next/env": { + "version": "15.5.24", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.24.tgz", + "integrity": "sha512-mBDF7T0XKZjs9SpUAl0buizVO+O02ULjOvWX8o/AZo/5AGw/UAS1Zzcylmd4pqbftzmKQi+L/nB4jgBYKEAl5Q==", + "license": "MIT" + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.5.24", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.24.tgz", + "integrity": "sha512-AGdNLvxZNY6eR2iSnV+6wUa8CiHTMr4F7g3uHH7fT4ICIJBE00R9u4tzN/Vuwsw0cOi8MTD2HJcTCb6siMH88Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.5.24", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.24.tgz", + "integrity": "sha512-9HrQajBMmGcrrrvDfRimiCrbAPh3E6uHJmwBovYr6Yrmi9p9PZqI876BrXX280wICh3o2XwUlp4blkB0NNBqFg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.5.24", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.24.tgz", + "integrity": "sha512-rl9LSfE75si0WT3cDgdUC1XYCKS+TgxC+/IjitmeycrAG18X/plIP1/vy8dd/HPycYcIvE688PD7FuvEAiEAew==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.5.24", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.24.tgz", + "integrity": "sha512-TlNAnpsjxSF3aAUtqnfmtXXf8m9sIDBlmF3c7bTAlnshUYu2U0OxN2uf5d0gcFwqHVEdivJNBcCaqNOwPGNimw==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.5.24", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.24.tgz", + "integrity": "sha512-7dwtlhr0SLndqTG1z9ncRkbJswDZiKWlxzFyXDvJ2RDZRDRHp8zyMJ4D9UH/FgnQeXxxB6gZy2pMcIUoNKQ4pA==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.5.24", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.24.tgz", + "integrity": "sha512-kGZxM+WhkYs0276lFrMkj7PRtXT3Btp6cwvfSO/cCVLxJJttB5Ccnl2niaCgUja8HgSbEVnMHpg3FJWoOJ9e/g==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.5.24", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.24.tgz", + "integrity": "sha512-jBDDkZ/qKAqkWivWDMkJSXUzbzV0QKRBKJjEHUAvSB97Hzw7NLzJ6yV56Lts/wjir7s4P31GYgpbS6ZL+hasAA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.5.24", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.24.tgz", + "integrity": "sha512-JqtwjvvorjacQ0spgjmUJoxySoYgPwdT1sFdQ0/zmW4iMlP2hjYlCoJIyS7o6Epb4Fug8eco3HXFoBDUCDeH7Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@openai/agents": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@openai/agents/-/agents-0.12.1.tgz", + "integrity": "sha512-FneYZ3wFy/YOa+ZwxbiRVm7FgfRmX1oGWWJ2QiJQGMqwrA8OsVOhoi9KfpeTpSQAg5wa22+qljPtVx7KnVsQwQ==", + "license": "MIT", + "dependencies": { + "@openai/agents-core": "0.12.1", + "@openai/agents-openai": "0.12.1", + "@openai/agents-realtime": "0.12.1", + "debug": "^4.4.0", + "openai": "^6.42.0" + }, + "peerDependencies": { + "zod": "^4.0.0" + } + }, + "node_modules/@openai/agents-core": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@openai/agents-core/-/agents-core-0.12.1.tgz", + "integrity": "sha512-j3Tm0SYfgU3QIHqoCbMXS0sUghS0qdYrGc6up99o5lgxwCIuOCZixNvj+G/v5VX2EwhNN1FCVofIfqJWeb1LUg==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "openai": "^6.42.0" + }, + "optionalDependencies": { + "@modelcontextprotocol/sdk": "^1.26.0" + }, + "peerDependencies": { + "zod": "^4.0.0" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/@openai/agents-openai": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@openai/agents-openai/-/agents-openai-0.12.1.tgz", + "integrity": "sha512-2hIPEX7fpBpyZv8eC5slIvpkFvummcQQHVs+3xF6eHLSU0pk+Buo2u1B6DusnjkI29EKVZjVtJRlqDfnb0LBuA==", + "license": "MIT", + "dependencies": { + "@openai/agents-core": "0.12.1", + "debug": "^4.4.0", + "openai": "^6.42.0" + }, + "peerDependencies": { + "zod": "^4.0.0" + } + }, + "node_modules/@openai/agents-realtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@openai/agents-realtime/-/agents-realtime-0.12.1.tgz", + "integrity": "sha512-LdKGct2pOKiO5b6eY8AULLvX15rVBGvngmXpB5VBZXOmySSaVMvyKM9+hBk8NeyxDffWX1GjnZN7hZeqYUpBeQ==", + "license": "MIT", + "dependencies": { + "@openai/agents-core": "0.12.1", + "@types/ws": "^8.18.1", + "debug": "^4.4.0", + "ws": "^8.21.0" + }, + "peerDependencies": { + "zod": "^4.0.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@swytchcode/runtime": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@swytchcode/runtime/-/runtime-1.1.6.tgz", + "integrity": "sha512-Rbrrs/7XUE+MEXng5fx+kqRyer3FqNyGznl2JDRpiNKjyKelK8WVRhC1hez8IDMmycEz7Qgb5c9x5FkaCB+f3g==", + "license": "MIT", + "engines": { + "node": ">=22" + }, + "peerDependencies": { + "@langchain/core": "^1.2.1", + "@openai/agents": "^0.12.0", + "ai": "^7.0.8", + "zod": "^4.4.3" + }, + "peerDependenciesMeta": { + "@langchain/core": { + "optional": true + }, + "@openai/agents": { + "optional": true + }, + "ai": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/@types/node": { + "version": "22.20.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.1.tgz", + "integrity": "sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.18.tgz", + "integrity": "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.5.tgz", + "integrity": "sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "optional": true, + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "optional": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/body-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz", + "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==", + "license": "MIT", + "optional": true, + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^2.0.0", + "debug": "^4.4.3", + "http-errors": "^2.0.1", + "iconv-lite": "^0.7.2", + "on-finished": "^2.4.1", + "qs": "^6.15.2", + "raw-body": "^3.0.2", + "type-is": "^2.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/body-parser/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "optional": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001810", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz", + "integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "optional": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "optional": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "optional": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT", + "optional": true + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "license": "MIT", + "optional": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT", + "optional": true + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "license": "MIT", + "optional": true, + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.1.tgz", + "integrity": "sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "optional": true, + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.7.0.tgz", + "integrity": "sha512-hOwV7WOxXfjRpAM1DSJWZDXx3GhplwD8IfwuwvogD8i1Qnkgosw/H45s4ZnFAUHDAhPjlY9hLBvJhKmGMyY26g==", + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^4.4.3", + "ip-address": "^10.2.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT", + "optional": true + }, + "node_modules/fast-uri": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.6.tgz", + "integrity": "sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "optional": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "optional": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "optional": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hono": { + "version": "4.13.5", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.5.tgz", + "integrity": "sha512-O6+/eCYRkzzzy0rPWwKLiGBR1nFuUPZynnwjxN1MBA62NNqbT0wQEzQyK2gSO5yDIDB336sXQleAhOHrzlYyKw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", + "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC", + "optional": true + }, + "node_modules/ip-address": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.0.tgz", + "integrity": "sha512-BGFsyJd5mpXp3rK6jIdADLNgpJUK1jnjzvYF8lK+VyDab9JAmqN0YOKDdP17HlgKb2+ehPgDc8EtnRLbGCAMhA==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT", + "optional": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC", + "optional": true + }, + "node_modules/jose": { + "version": "6.2.10", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.10.tgz", + "integrity": "sha512-iiW7J9qRFlGxvCOIBDBDxFePQSn7ZMAnrYGhrrOo6siO/MIqwfyilLR27pkfDgUk+raLuzADS8A3S/KLBisc0g==", + "license": "MIT", + "optional": true, + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT", + "optional": true + }, + "node_modules/json-schema-typed": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", + "license": "BSD-2-Clause", + "optional": true + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.1.tgz", + "integrity": "sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "optional": true, + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.1.0.tgz", + "integrity": "sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==", + "license": "MIT", + "optional": true, + "dependencies": { + "content-type": "^2.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/negotiator/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/next": { + "version": "15.5.24", + "resolved": "https://registry.npmjs.org/next/-/next-15.5.24.tgz", + "integrity": "sha512-Y+xn8EQCoC3ZbsFPyzE+tE8XOdrWeUdUF7NeXbmg9DsgAxl5UYxlsrvgVESHTyTGigoTa1bCUrxn70F5bqt0Gw==", + "license": "MIT", + "dependencies": { + "@next/env": "15.5.24", + "@swc/helpers": "0.5.15", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.5.24", + "@next/swc-darwin-x64": "15.5.24", + "@next/swc-linux-arm64-gnu": "15.5.24", + "@next/swc-linux-arm64-musl": "15.5.24", + "@next/swc-linux-x64-gnu": "15.5.24", + "@next/swc-linux-x64-musl": "15.5.24", + "@next/swc-win32-arm64-msvc": "15.5.24", + "@next/swc-win32-x64-msvc": "15.5.24", + "sharp": "^0.34.3 || ^0.35.3" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.51.1", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "optional": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "optional": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/openai": { + "version": "6.49.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-6.49.0.tgz", + "integrity": "sha512-aYCc0C6L864eR6WSYIwQGyXriw/nIyZx0ObvhzOEVuk0zoBDpynjSbrionWI7q65B5H8jJX0DXR9snEzM6bfPg==", + "license": "Apache-2.0", + "peerDependencies": { + "@aws-sdk/credential-provider-node": ">=3.972.0 <4", + "@smithy/hash-node": ">=4.3.0 <5", + "@smithy/signature-v4": ">=5.4.0 <6", + "ws": "^8.18.0", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-provider-node": { + "optional": true + }, + "@smithy/hash-node": { + "optional": true + }, + "@smithy/signature-v4": { + "optional": true + }, + "ws": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "license": "MIT", + "optional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/pkce-challenge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "optional": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.0.tgz", + "integrity": "sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==", + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz", + "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "optional": true, + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/react": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz", + "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz", + "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.8" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT", + "optional": true + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "optional": true, + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC", + "optional": true + }, + "node_modules/sharp": { + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.4.tgz", + "integrity": "sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.1.0", + "detect-libc": "^2.1.2", + "semver": "^7.8.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.35.4", + "@img/sharp-darwin-x64": "0.35.4", + "@img/sharp-freebsd-wasm32": "0.35.4", + "@img/sharp-libvips-darwin-arm64": "1.3.3", + "@img/sharp-libvips-darwin-x64": "1.3.3", + "@img/sharp-libvips-linux-arm": "1.3.3", + "@img/sharp-libvips-linux-arm64": "1.3.3", + "@img/sharp-libvips-linux-ppc64": "1.3.3", + "@img/sharp-libvips-linux-riscv64": "1.3.3", + "@img/sharp-libvips-linux-s390x": "1.3.3", + "@img/sharp-libvips-linux-x64": "1.3.3", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.3", + "@img/sharp-libvips-linuxmusl-x64": "1.3.3", + "@img/sharp-linux-arm": "0.35.4", + "@img/sharp-linux-arm64": "0.35.4", + "@img/sharp-linux-ppc64": "0.35.4", + "@img/sharp-linux-riscv64": "0.35.4", + "@img/sharp-linux-s390x": "0.35.4", + "@img/sharp-linux-x64": "0.35.4", + "@img/sharp-linuxmusl-arm64": "0.35.4", + "@img/sharp-linuxmusl-x64": "0.35.4", + "@img/sharp-webcontainers-wasm32": "0.35.4", + "@img/sharp-win32-arm64": "0.35.4", + "@img/sharp-win32-ia32": "0.35.4", + "@img/sharp-win32-x64": "0.35.4" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "optional": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "optional": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "optional": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "optional": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-is": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", + "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", + "license": "MIT", + "optional": true, + "dependencies": { + "content-type": "^2.0.0", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/type-is/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC", + "optional": true + }, + "node_modules/ws": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/zod": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.5.4.tgz", + "integrity": "sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", + "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", + "license": "ISC", + "optional": true, + "peerDependencies": { + "zod": "^3.25.28 || ^4" + } + } + } +} diff --git a/gmail-google-calender-openaisdk-demo/package.json b/gmail-google-calender-openaisdk-demo/package.json new file mode 100644 index 0000000..9ff6b5a --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/package.json @@ -0,0 +1,26 @@ +{ + "name": "swytchcode-gmail-calendar-agent", + "version": "0.1.0", + "private": true, + "type": "module", + "description": "A chat agent for Gmail + Google Calendar. The OpenAI Agents SDK picks the moves; Swytchcode executes and policy-guards every API call.", + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start" + }, + "dependencies": { + "@openai/agents": "^0.12.1", + "@swytchcode/runtime": "^1.1.6", + "next": "^15.5.24", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "zod": "^4.5.4" + }, + "devDependencies": { + "@types/node": "^22.10.0", + "@types/react": "^19.0.0", + "@types/react-dom": "^19.0.0", + "typescript": "^5.7.3" + } +} diff --git a/gmail-google-calender-openaisdk-demo/tsconfig.json b/gmail-google-calender-openaisdk-demo/tsconfig.json new file mode 100644 index 0000000..afedc74 --- /dev/null +++ b/gmail-google-calender-openaisdk-demo/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [{ "name": "next" }], + "paths": { "@/*": ["./*"] } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +}