diff --git a/components/gmail/actions/add-label-to-email/add-label-to-email.mjs b/components/gmail/actions/add-label-to-email/add-label-to-email.mjs index 854a6e78d58f9..309815f1aaefa 100644 --- a/components/gmail/actions/add-label-to-email/add-label-to-email.mjs +++ b/components/gmail/actions/add-label-to-email/add-label-to-email.mjs @@ -4,7 +4,7 @@ export default { key: "gmail-add-label-to-email", name: "Add Label to Email", description: "Add label(s) to an email message. [See the docs](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/modify)", - version: "0.0.14", + version: "0.0.15", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/gmail/actions/approve-workflow/approve-workflow.mjs b/components/gmail/actions/approve-workflow/approve-workflow.mjs index 3aec5d678af7c..b70773e86c331 100644 --- a/components/gmail/actions/approve-workflow/approve-workflow.mjs +++ b/components/gmail/actions/approve-workflow/approve-workflow.mjs @@ -4,7 +4,7 @@ export default { key: "gmail-approve-workflow", name: "Approve Workflow", description: "Suspend the workflow until approved by email. [See the documentation](https://pipedream.com/docs/code/nodejs/rerun#flowsuspend)", - version: "0.0.11", + version: "0.0.12", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/gmail/actions/archive-email/archive-email.mjs b/components/gmail/actions/archive-email/archive-email.mjs index 38ac36c148f44..9f31ec48758f4 100644 --- a/components/gmail/actions/archive-email/archive-email.mjs +++ b/components/gmail/actions/archive-email/archive-email.mjs @@ -5,7 +5,7 @@ export default { key: "gmail-archive-email", name: "Archive Email", description: "Archive an email message. [See the documentation](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/modify)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/gmail/actions/create-draft/create-draft.mjs b/components/gmail/actions/create-draft/create-draft.mjs index a37be581f3cd8..9d8bd5e18cecb 100644 --- a/components/gmail/actions/create-draft/create-draft.mjs +++ b/components/gmail/actions/create-draft/create-draft.mjs @@ -6,7 +6,7 @@ export default { key: "gmail-create-draft", name: "Create Draft", description: "Create a draft from your Google Workspace email account. [See the documentation](https://developers.google.com/gmail/api/reference/rest/v1/users.drafts/create)", - version: "0.1.9", + version: "0.1.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/gmail/actions/create-label/create-label.mjs b/components/gmail/actions/create-label/create-label.mjs index a346b46a1b0b1..8922ce00f135d 100644 --- a/components/gmail/actions/create-label/create-label.mjs +++ b/components/gmail/actions/create-label/create-label.mjs @@ -6,7 +6,7 @@ export default { key: "gmail-create-label", name: "Create Label", description: "Create a new label in the connected account. [See the documentation](https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.labels/create)", - version: "0.0.3", + version: "0.0.4", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/gmail/actions/delete-email/delete-email.mjs b/components/gmail/actions/delete-email/delete-email.mjs index 246be149508c7..dcfadd4304548 100644 --- a/components/gmail/actions/delete-email/delete-email.mjs +++ b/components/gmail/actions/delete-email/delete-email.mjs @@ -5,7 +5,7 @@ export default { key: "gmail-delete-email", name: "Delete Email", description: "Moves the specified message to the trash. [See the documentation](https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.messages/trash)", - version: "0.0.3", + version: "0.0.4", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/gmail/actions/download-attachment/download-attachment.mjs b/components/gmail/actions/download-attachment/download-attachment.mjs index 723b274498db3..0906e065b8085 100644 --- a/components/gmail/actions/download-attachment/download-attachment.mjs +++ b/components/gmail/actions/download-attachment/download-attachment.mjs @@ -7,7 +7,7 @@ export default { key: "gmail-download-attachment", name: "Download Attachment", description: "Download an attachment by attachmentId to the /tmp directory. [See the documentation](https://developers.google.com/gmail/api/reference/rest/v1/users.messages.attachments/get)", - version: "0.0.14", + version: "0.0.15", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/gmail/actions/find-email/find-email.mjs b/components/gmail/actions/find-email/find-email.mjs index dc19aaab6c18e..005b774439a91 100644 --- a/components/gmail/actions/find-email/find-email.mjs +++ b/components/gmail/actions/find-email/find-email.mjs @@ -5,7 +5,7 @@ export default { key: "gmail-find-email", name: "Find Email", description: "Find an email using Google's Search Engine. [See the docs](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/list)", - version: "0.1.8", + version: "0.1.9", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/gmail/actions/get-send-as-alias/get-send-as-alias.mjs b/components/gmail/actions/get-send-as-alias/get-send-as-alias.mjs index 8135932a5c1b4..b7ace676a41e7 100644 --- a/components/gmail/actions/get-send-as-alias/get-send-as-alias.mjs +++ b/components/gmail/actions/get-send-as-alias/get-send-as-alias.mjs @@ -5,7 +5,7 @@ export default { key: "gmail-get-send-as-alias", name: "Get Send As Alias", description: "Get a send as alias for the authenticated user. [See the documentation](https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.settings.sendAs/get)", - version: "0.0.3", + version: "0.0.4", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/gmail/actions/list-labels/list-labels.mjs b/components/gmail/actions/list-labels/list-labels.mjs index a68f3e3b4838b..b7c191ebe829b 100644 --- a/components/gmail/actions/list-labels/list-labels.mjs +++ b/components/gmail/actions/list-labels/list-labels.mjs @@ -4,7 +4,7 @@ export default { key: "gmail-list-labels", name: "List Labels", description: "List all the existing labels in the connected account. [See the docs](https://developers.google.com/gmail/api/reference/rest/v1/users.labels/list)", - version: "0.0.10", + version: "0.0.11", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/gmail/actions/list-send-as-aliases/list-send-as-aliases.mjs b/components/gmail/actions/list-send-as-aliases/list-send-as-aliases.mjs index e108f9fba3c44..6e4467a3031a3 100644 --- a/components/gmail/actions/list-send-as-aliases/list-send-as-aliases.mjs +++ b/components/gmail/actions/list-send-as-aliases/list-send-as-aliases.mjs @@ -4,7 +4,7 @@ export default { key: "gmail-list-send-as-aliases", name: "List Send As Aliases", description: "List all send as aliases for the authenticated user. [See the documentation](https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.settings.sendAs/list)", - version: "0.0.3", + version: "0.0.4", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/gmail/actions/list-thread-messages/list-thread-messages.mjs b/components/gmail/actions/list-thread-messages/list-thread-messages.mjs new file mode 100644 index 0000000000000..53c1b3e45de39 --- /dev/null +++ b/components/gmail/actions/list-thread-messages/list-thread-messages.mjs @@ -0,0 +1,34 @@ +import gmail from "../../gmail.app.mjs"; + +export default { + key: "gmail-list-thread-messages", + name: "List Thread Messages", + description: "List messages in a thread. [See the docs](https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.threads/get)", + version: "0.0.1", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + type: "action", + props: { + gmail, + threadId: { + propDefinition: [ + gmail, + "threadId", + ], + }, + }, + async run({ $ }) { + const { messages = [] } = await this.gmail.getThread({ + threadId: this.threadId, + }); + + const suffix = messages.length === 1 + ? "" + : "s"; + $.export("$summary", `Successfully listed ${messages.length} message${suffix}`); + return messages; + }, +}; diff --git a/components/gmail/actions/remove-label-from-email/remove-label-from-email.mjs b/components/gmail/actions/remove-label-from-email/remove-label-from-email.mjs index 5478bcfb68d2f..669aecb3db672 100644 --- a/components/gmail/actions/remove-label-from-email/remove-label-from-email.mjs +++ b/components/gmail/actions/remove-label-from-email/remove-label-from-email.mjs @@ -4,7 +4,7 @@ export default { key: "gmail-remove-label-from-email", name: "Remove Label from Email", description: "Remove label(s) from an email message. [See the docs](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/modify)", - version: "0.0.12", + version: "0.0.13", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/gmail/actions/send-email/send-email.mjs b/components/gmail/actions/send-email/send-email.mjs index 450ab9e44e21b..2b1b7237465d8 100644 --- a/components/gmail/actions/send-email/send-email.mjs +++ b/components/gmail/actions/send-email/send-email.mjs @@ -6,7 +6,7 @@ export default { key: "gmail-send-email", name: "Send Email", description: "Send an email from your Google Workspace email account. [See the documentation](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/send)", - version: "0.2.1", + version: "0.2.2", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/gmail/actions/update-org-signature/update-org-signature.mjs b/components/gmail/actions/update-org-signature/update-org-signature.mjs index de36412542017..b4ba853860b77 100644 --- a/components/gmail/actions/update-org-signature/update-org-signature.mjs +++ b/components/gmail/actions/update-org-signature/update-org-signature.mjs @@ -8,7 +8,7 @@ export default { name: "Update Signature for Email in Organization", description: `Update the signature for a specific email address in an organization. A Google Cloud service account with delegated domain-wide authority is required for this action. [See the documentation](https://developers.google.com/gmail/api/reference/rest/v1/users.settings.sendAs/update)`, - version: "0.0.13", + version: "0.0.14", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/gmail/actions/update-primary-signature/update-primary-signature.mjs b/components/gmail/actions/update-primary-signature/update-primary-signature.mjs index aa1eda61b0658..e428caa24554c 100644 --- a/components/gmail/actions/update-primary-signature/update-primary-signature.mjs +++ b/components/gmail/actions/update-primary-signature/update-primary-signature.mjs @@ -4,7 +4,7 @@ export default { key: "gmail-update-primary-signature", name: "Update Signature for Primary Email Address", description: "Update the signature for the primary email address. [See the documentation](https://developers.google.com/gmail/api/reference/rest/v1/users.settings.sendAs/update)", - version: "0.0.13", + version: "0.0.14", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/gmail/gmail.app.mjs b/components/gmail/gmail.app.mjs index 1db7d515e9cfe..f2ac0dc972df8 100644 --- a/components/gmail/gmail.app.mjs +++ b/components/gmail/gmail.app.mjs @@ -3,12 +3,12 @@ import { axios, ConfigurationError, } from "@pipedream/platform"; +import { JWT } from "google-auth-library"; import { convert } from "html-to-text"; import mime from "mime/types/standard.js"; -import MailComposer from "nodemailer/lib/mail-composer/index.js"; import addressparser from "nodemailer/lib/addressparser/index.js"; +import MailComposer from "nodemailer/lib/mail-composer/index.js"; import constants from "./common/constants.mjs"; -import { JWT } from "google-auth-library"; export default { type: "app", @@ -166,6 +166,33 @@ export default { } }, }, + threadId: { + type: "string", + label: "Thread ID", + description: "Identifier of the thread to list messages from", + async options({ prevContext }) { + try { + const { + threads, nextPageToken, + } = await this.listThreads({ + pageToken: prevContext?.nextPageToken, + }); + return { + options: threads.map(({ + id: value, snippet: label, + }) => ({ + value, + label, + })), + context: { + nextPageToken, + }, + }; + } catch { + return []; + } + }, + }, q: { type: "string", label: "Search Query", @@ -421,6 +448,20 @@ export default { }); return data; }, + async listThreads(opts = {}) { + const { data } = await this._client().users.threads.list({ + userId: constants.USER_ID, + ...opts, + }); + return data; + }, + async getThread({ threadId }) { + const { data } = await this._client().users.threads.get({ + userId: constants.USER_ID, + id: threadId, + }); + return data; + }, async getProfile() { const { data } = await this._client().users.getProfile({ userId: constants.USER_ID, diff --git a/components/gmail/package.json b/components/gmail/package.json index 686558fca9de9..ecf0e61e51a96 100644 --- a/components/gmail/package.json +++ b/components/gmail/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/gmail", - "version": "1.3.5", + "version": "1.4.0", "description": "Pipedream Gmail Components", "main": "gmail.app.mjs", "keywords": [ diff --git a/components/gmail/sources/new-attachment-received/new-attachment-received.mjs b/components/gmail/sources/new-attachment-received/new-attachment-received.mjs index 5e4529b8d7fbf..a62c34d9f4e5a 100644 --- a/components/gmail/sources/new-attachment-received/new-attachment-received.mjs +++ b/components/gmail/sources/new-attachment-received/new-attachment-received.mjs @@ -8,7 +8,7 @@ export default { key: "gmail-new-attachment-received", name: "New Attachment Received", description: "Emit new event for each attachment in a message received. This source is capped at 100 max new messages per run.", - version: "0.2.2", + version: "0.2.3", type: "source", dedupe: "unique", props: { diff --git a/components/gmail/sources/new-email-matching-search/new-email-matching-search.mjs b/components/gmail/sources/new-email-matching-search/new-email-matching-search.mjs index 550952fa70ee3..cd49346a44c35 100644 --- a/components/gmail/sources/new-email-matching-search/new-email-matching-search.mjs +++ b/components/gmail/sources/new-email-matching-search/new-email-matching-search.mjs @@ -6,7 +6,7 @@ export default { key: "gmail-new-email-matching-search", name: "New Email Matching Search", description: "Emit new event when an email matching the search criteria is received. This source is capped at 100 max new messages per run.", - version: "0.1.2", + version: "0.1.3", type: "source", dedupe: "unique", props: { diff --git a/components/gmail/sources/new-email-received/new-email-received.mjs b/components/gmail/sources/new-email-received/new-email-received.mjs index 2cfd0fd6f53d6..6ab3de29841e3 100644 --- a/components/gmail/sources/new-email-received/new-email-received.mjs +++ b/components/gmail/sources/new-email-received/new-email-received.mjs @@ -15,7 +15,7 @@ export default { name: "New Email Received", description: "Emit new event when a new email is received.", type: "source", - version: "0.3.2", + version: "0.3.3", dedupe: "unique", props: { gmail, diff --git a/components/gmail/sources/new-labeled-email/new-labeled-email.mjs b/components/gmail/sources/new-labeled-email/new-labeled-email.mjs index f59d3d9441727..10a154b96ece9 100644 --- a/components/gmail/sources/new-labeled-email/new-labeled-email.mjs +++ b/components/gmail/sources/new-labeled-email/new-labeled-email.mjs @@ -8,7 +8,7 @@ export default { name: "New Labeled Email", description: "Emit new event when a new email is labeled.", type: "source", - version: "0.1.2", + version: "0.1.3", dedupe: "unique", props: { gmail, diff --git a/components/gmail/sources/new-sent-email/new-sent-email.mjs b/components/gmail/sources/new-sent-email/new-sent-email.mjs index 9be664f098247..40dfce53facbd 100644 --- a/components/gmail/sources/new-sent-email/new-sent-email.mjs +++ b/components/gmail/sources/new-sent-email/new-sent-email.mjs @@ -6,7 +6,7 @@ export default { key: "gmail-new-sent-email", name: "New Sent Email", description: "Emit new event for each new email sent. (Maximum of 100 events emited per execution)", - version: "0.1.2", + version: "0.1.3", type: "source", dedupe: "unique", props: {