From b9a4b209dbb4e48c57060a88a2fb97aeaae5eb6d Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Tue, 22 Jul 2025 17:27:50 -0400 Subject: [PATCH 1/4] new components --- .../actions/get-user-info/get-user-info.mjs | 28 +++++ .../actions/list-locales/list-locales.mjs | 21 ++++ .../actions/list-macros/list-macros.mjs | 99 +++++++++++++++ .../list-ticket-comments.mjs | 56 +++++++++ components/zendesk/package.json | 2 +- components/zendesk/sources/common/polling.mjs | 23 ++++ components/zendesk/sources/common/webhook.mjs | 18 +-- .../sources/locale-updated/locale-updated.mjs | 29 +++++ .../new-ticket-comment-added.mjs | 93 ++++++++++++++ components/zendesk/zendesk.app.mjs | 117 ++++++++++++++++++ 10 files changed, 477 insertions(+), 9 deletions(-) create mode 100644 components/zendesk/actions/get-user-info/get-user-info.mjs create mode 100644 components/zendesk/actions/list-locales/list-locales.mjs create mode 100644 components/zendesk/actions/list-macros/list-macros.mjs create mode 100644 components/zendesk/actions/list-ticket-comments/list-ticket-comments.mjs create mode 100644 components/zendesk/sources/common/polling.mjs create mode 100644 components/zendesk/sources/locale-updated/locale-updated.mjs create mode 100644 components/zendesk/sources/new-ticket-comment-added/new-ticket-comment-added.mjs diff --git a/components/zendesk/actions/get-user-info/get-user-info.mjs b/components/zendesk/actions/get-user-info/get-user-info.mjs new file mode 100644 index 0000000000000..8f6e03b94a6f5 --- /dev/null +++ b/components/zendesk/actions/get-user-info/get-user-info.mjs @@ -0,0 +1,28 @@ +import zendesk from "../../zendesk.app.mjs"; + +export default { + key: "zendesk-get-user-info", + name: "Get User Info", + description: "Retrieves information about a specific user. [See the documentation](https://developer.zendesk.com/api-reference/ticketing/users/users/#show-user).", + version: "0.0.1", + type: "action", + props: { + zendesk, + userId: { + propDefinition: [ + zendesk, + "userId", + ], + }, + }, + async run({ $: step }) { + const response = await this.zendesk.getUserInfo({ + step, + userId: this.userId, + }); + + step.export("$summary", `Successfully retrieved user info for ${response.user.name}`); + + return response; + }, +}; diff --git a/components/zendesk/actions/list-locales/list-locales.mjs b/components/zendesk/actions/list-locales/list-locales.mjs new file mode 100644 index 0000000000000..035f86e3d56b5 --- /dev/null +++ b/components/zendesk/actions/list-locales/list-locales.mjs @@ -0,0 +1,21 @@ +import zendesk from "../../zendesk.app.mjs"; + +export default { + key: "zendesk-list-locales", + name: "List Locales", + description: "Retrieves all locales. [See the documentation](https://developer.zendesk.com/api-reference/ticketing/account-configuration/locales/).", + version: "0.0.1", + type: "action", + props: { + zendesk, + }, + async run({ $: step }) { + const { locales } = await this.zendesk.listLocales(); + + step.export("$summary", `Successfully retrieved ${locales.length} locale${locales.length === 1 + ? "" + : "s"}`); + + return locales; + }, +}; diff --git a/components/zendesk/actions/list-macros/list-macros.mjs b/components/zendesk/actions/list-macros/list-macros.mjs new file mode 100644 index 0000000000000..d5b4ae4f412cb --- /dev/null +++ b/components/zendesk/actions/list-macros/list-macros.mjs @@ -0,0 +1,99 @@ +import zendesk from "../../zendesk.app.mjs"; + +export default { + key: "zendesk-list-macros", + name: "List Macros", + description: "Retrieves all macros. [See the documentation](https://developer.zendesk.com/api-reference/ticketing/business-rules/macros/#list-macros).", + version: "0.0.1", + type: "action", + props: { + zendesk, + access: { + type: "string", + label: "Access", + description: "The access level of the macros to return", + options: [ + "personal", + "agents", + "shared", + "account", + ], + optional: true, + }, + active: { + type: "boolean", + label: "Active", + description: "Filter by active macros if `true` or inactive macros if `false`", + optional: true, + }, + macroCategory: { + propDefinition: [ + zendesk, + "macroCategory", + ], + }, + groupId: { + propDefinition: [ + zendesk, + "groupId", + ], + }, + sortBy: { + type: "string", + label: "Sort By", + description: "The field to sort the results by", + options: [ + "alphabetical", + "created_at", + "updated_at", + "usage_1h", + "usage_24h", + "usage_7d", + "usage_30d", + ], + optional: true, + }, + sortOrder: { + propDefinition: [ + zendesk, + "sortOrder", + ], + }, + limit: { + propDefinition: [ + zendesk, + "limit", + ], + description: "Maximum number of macros to return", + }, + }, + async run({ $: step }) { + const results = this.zendesk.paginate({ + fn: this.zendesk.listMacros, + args: { + step, + params: { + access: this.access, + active: this.active, + category: this.macroCategory, + group_id: this.groupId, + sort_by: this.sortBy, + sort_order: this.sortOrder, + }, + }, + resourceKey: "macros", + max: this.limit, + }); + + const macros = []; + for await (const macro of results) { + macros.push(macro); + } + + step.export("$summary", `Successfully retrieved ${macros.length} macro${macros.length === 1 + ? "" + : "s"}`); + + return macros; + }, +}; diff --git a/components/zendesk/actions/list-ticket-comments/list-ticket-comments.mjs b/components/zendesk/actions/list-ticket-comments/list-ticket-comments.mjs new file mode 100644 index 0000000000000..2554eef62d59c --- /dev/null +++ b/components/zendesk/actions/list-ticket-comments/list-ticket-comments.mjs @@ -0,0 +1,56 @@ +import zendesk from "../../zendesk.app.mjs"; + +export default { + key: "zendesk-list-ticket-comments", + name: "List Ticket Comments", + description: "Retrieves all comments for a specific ticket. [See the documentation](https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_comments/#list-comments).", + version: "0.0.1", + type: "action", + props: { + zendesk, + ticketId: { + propDefinition: [ + zendesk, + "ticketId", + ], + }, + sortOrder: { + propDefinition: [ + zendesk, + "sortOrder", + ], + }, + limit: { + propDefinition: [ + zendesk, + "limit", + ], + description: "Maximum number of comments to return", + }, + }, + async run({ $: step }) { + const results = this.zendesk.paginate({ + fn: this.zendesk.listTicketComments, + args: { + step, + ticketId: this.ticketId, + params: { + sort_order: this.sortOrder, + }, + }, + resourceKey: "comments", + max: this.limit, + }); + + const comments = []; + for await (const comment of results) { + comments.push(comment); + } + + step.export("$summary", `Successfully retrieved ${comments.length} comment${comments.length === 1 + ? "" + : "s"}`); + + return comments; + }, +}; diff --git a/components/zendesk/package.json b/components/zendesk/package.json index f3bd8778a20e4..ecdf28511d96f 100644 --- a/components/zendesk/package.json +++ b/components/zendesk/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/zendesk", - "version": "0.7.2", + "version": "0.8.0", "description": "Pipedream Zendesk Components", "main": "zendesk.app.mjs", "keywords": [ diff --git a/components/zendesk/sources/common/polling.mjs b/components/zendesk/sources/common/polling.mjs new file mode 100644 index 0000000000000..efd13dd1b58a7 --- /dev/null +++ b/components/zendesk/sources/common/polling.mjs @@ -0,0 +1,23 @@ +import zendesk from "../../zendesk.app.mjs"; +import { DEFAULT_POLLING_SOURCE_TIMER_INTERVAL } from "@pipedream/platform"; + +export default { + props: { + zendesk, + db: "$.service.db", + timer: { + type: "$.interface.timer", + default: { + intervalSeconds: DEFAULT_POLLING_SOURCE_TIMER_INTERVAL, + }, + }, + }, + methods: { + _getLastTs() { + return this.db.get("lastTs") || 0; + }, + _setLastTs(ts) { + this.db.set("lastTs", ts); + }, + }, +}; diff --git a/components/zendesk/sources/common/webhook.mjs b/components/zendesk/sources/common/webhook.mjs index bc1382c5a2835..126d6d1108556 100644 --- a/components/zendesk/sources/common/webhook.mjs +++ b/components/zendesk/sources/common/webhook.mjs @@ -212,6 +212,15 @@ export default { isRelevant() { return true; }, + emitEvent(payload) { + const ts = Date.parse(payload.updatedAt); + const id = `${payload.ticketId}-${ts}`; + this.$emit(payload, { + id, + summary: payload.title || payload.ticketId, + ts, + }); + }, }, async run(event) { const { @@ -241,13 +250,6 @@ export default { return; } - const ts = Date.parse(payload.updatedAt); - const id = `${payload.ticketId}-${ts}`; - - this.$emit(payload, { - id, - summary: payload.title || payload.ticketId, - ts, - }); + this.emitEvent(payload); }, }; diff --git a/components/zendesk/sources/locale-updated/locale-updated.mjs b/components/zendesk/sources/locale-updated/locale-updated.mjs new file mode 100644 index 0000000000000..855aade43155f --- /dev/null +++ b/components/zendesk/sources/locale-updated/locale-updated.mjs @@ -0,0 +1,29 @@ +import common from "../common/polling.mjs"; + +export default { + ...common, + key: "zendesk-locale-updated", + name: "Locale Updated", + type: "source", + description: "Emit new event when a locale has been updated", + version: "0.0.1", + dedupe: "unique", + async run() { + const lastTs = this._getLastTs(); + let maxTs = lastTs; + + const { locales } = await this.zendesk.listLocales(); + for (const locale of locales) { + const ts = Date.parse(locale.updated_at); + if (ts > lastTs) { + this.$emit(locale, { + id: `${locale.id}-${ts}`, + summary: locale.name, + ts, + }); + maxTs = Math.max(maxTs, ts); + } + } + this._setLastTs(maxTs); + }, +}; diff --git a/components/zendesk/sources/new-ticket-comment-added/new-ticket-comment-added.mjs b/components/zendesk/sources/new-ticket-comment-added/new-ticket-comment-added.mjs new file mode 100644 index 0000000000000..ddd36c927ca26 --- /dev/null +++ b/components/zendesk/sources/new-ticket-comment-added/new-ticket-comment-added.mjs @@ -0,0 +1,93 @@ +import common from "../common/ticket.mjs"; + +export default { + ...common, + name: "New Ticket Comment Added (Instant)", + key: "zendesk-new-ticket-comment-added", + type: "source", + description: "Emit new event when a ticket comment has been added", + version: "0.0.1", + dedupe: "unique", + methods: { + ...common.methods, + _getLastTs() { + return this.db.get("lastTs"); + }, + _setLastTs(ts) { + this.db.set("lastTs", ts); + }, + getWebhookName() { + return "Ticket Comment Added Webhook"; + }, + getTriggerTitle() { + return "Ticket Comment Added Trigger"; + }, + getTriggerConditions() { + return { + all: [ + { + field: "update_type", + value: "Change", + }, + ], + }; + }, + getTriggerPayload() { + const payload = common.methods.getTriggerPayload.call(this); + return { + ...payload, + ticketComments: "{{ticket.comments}}", + }; + }, + convertCommentsToJson(raw) { + return [ + ...raw.matchAll(/#/g), + ].map((match) => { + const fields = match[1] + .split(",") + .map((part) => part.trim()) + .map((pair) => { + const [ + key, + value, + ] = pair.split(/:\s+/); + // Clean up values: remove extra quotes or cast to appropriate types + let cleaned = value; + if (cleaned === "nil") cleaned = null; + else if (cleaned === "true") cleaned = true; + else if (cleaned === "false") cleaned = false; + else if (/^\d+$/.test(cleaned)) cleaned = parseInt(cleaned, 10); + else if (/^".*"$/.test(cleaned)) cleaned = cleaned.slice(1, -1); + return [ + key, + cleaned, + ]; + }); + return Object.fromEntries(fields); + }); + }, + isRelevant(payload) { + const lastTs = this._getLastTs() || 0; + let maxTs = lastTs; + const comments = this.convertCommentsToJson(payload.ticketComments); + for (const comment of comments) { + const ts = Date.parse(comment.created_at); + maxTs = Math.max(maxTs, ts); + } + this._setLastTs(maxTs); + return comments.length > 0 && maxTs > lastTs; + }, + emitEvent(payload) { + payload.ticketComments = this.convertCommentsToJson(payload.ticketComments); + for (const comment of payload.ticketComments) { + const ts = Date.parse(comment.created_at); + const id = `${payload.ticketId}-${ts}`; + this.$emit(comment, { + id, + summary: comment.value, + ts, + }); + } + }, + }, +}; diff --git a/components/zendesk/zendesk.app.mjs b/components/zendesk/zendesk.app.mjs index 81e5f865ee428..e81bf805e991d 100644 --- a/components/zendesk/zendesk.app.mjs +++ b/components/zendesk/zendesk.app.mjs @@ -101,6 +101,77 @@ export default { }; }, }, + userId: { + type: "string", + label: "User ID", + description: "The ID of the user", + async options({ prevContext }) { + const { afterCursor } = prevContext; + + const { + users, + meta, + } = await this.listUsers({ + params: { + [constants.PAGE_SIZE_PARAM]: constants.DEFAULT_LIMIT, + [constants.PAGE_AFTER_PARAM]: afterCursor, + }, + }); + + return { + context: { + afterCursor: meta.after_cursor, + }, + options: users.map(({ + id, name, + }) => ({ + label: name, + value: id, + })), + }; + }, + }, + groupId: { + type: "string", + label: "Group ID", + description: "The ID of the group", + optional: true, + async options({ prevContext }) { + const { afterCursor } = prevContext; + + const { + groups, + meta, + } = await this.listGroups({ + params: { + [constants.PAGE_SIZE_PARAM]: constants.DEFAULT_LIMIT, + [constants.PAGE_AFTER_PARAM]: afterCursor, + }, + }); + + return { + context: { + afterCursor: meta.after_cursor, + }, + options: groups.map(({ + id, name, + }) => ({ + label: name, + value: id, + })), + }; + }, + }, + macroCategory: { + type: "string", + label: "Macro Category", + description: "The category of the macro", + optional: true, + async options() { + const { categories } = await this.listMacroCategories(); + return categories.map((category) => category); + }, + }, fields: { type: "string[]", label: "Fields", @@ -234,6 +305,14 @@ export default { ...args, }); }, + getUserInfo({ + userId, ...args + }) { + return this.makeRequest({ + path: `/users/${userId}`, + ...args, + }); + }, searchTickets(args = {}) { return this.makeRequest({ path: "/search", @@ -290,6 +369,44 @@ export default { ...args, }); }, + listTicketComments({ + ticketId, ...args + } = {}) { + return this.makeRequest({ + path: `/tickets/${ticketId}/comments`, + ...args, + }); + }, + listUsers(args = {}) { + return this.makeRequest({ + path: "/users", + ...args, + }); + }, + listLocales(args = {}) { + return this.makeRequest({ + path: "/locales", + ...args, + }); + }, + listMacros(args = {}) { + return this.makeRequest({ + path: "/macros", + ...args, + }); + }, + listMacroCategories(args = {}) { + return this.makeRequest({ + path: "/macros/categories", + ...args, + }); + }, + listGroups(args = {}) { + return this.makeRequest({ + path: "/groups", + ...args, + }); + }, async *paginate({ fn, args, resourceKey, max, }) { From cf43a1f7837c997ea726c19f3adf5d6d6936ca13 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Tue, 22 Jul 2025 17:29:10 -0400 Subject: [PATCH 2/4] pnpm-lock.yaml --- pnpm-lock.yaml | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 58a3859a8ef1e..f793d9249f401 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1042,8 +1042,7 @@ importers: components/ascora: {} - components/ashby_job_postings_api: - specifiers: {} + components/ashby_job_postings_api: {} components/asin_data_api: {} @@ -2593,8 +2592,7 @@ importers: specifier: ^0.0.1-security version: 0.0.1-security - components/click_sign: - specifiers: {} + components/click_sign: {} components/clickfunnels: dependencies: @@ -6204,8 +6202,7 @@ importers: components/helpdesk: {} - components/helpdocs: - specifiers: {} + components/helpdocs: {} components/helper_functions: dependencies: @@ -16154,7 +16151,7 @@ importers: version: 3.1.7 ts-jest: specifier: ^29.2.5 - version: 29.2.5(@babel/core@8.0.0-alpha.13)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@8.0.0-alpha.13))(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0))(typescript@5.7.2) + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0))(typescript@5.7.2) tsup: specifier: ^8.3.6 version: 8.3.6(@microsoft/api-extractor@7.47.12(@types/node@20.17.30))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.4)(typescript@5.7.2)(yaml@2.6.1) @@ -16197,7 +16194,7 @@ importers: version: 3.1.0 jest: specifier: ^29.1.2 - version: 29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0) + version: 29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0) type-fest: specifier: ^4.15.0 version: 4.27.0 @@ -37305,6 +37302,8 @@ snapshots: '@putout/operator-filesystem': 5.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3)) '@putout/operator-json': 2.2.0 putout: 36.13.1(eslint@8.57.1)(typescript@5.6.3) + transitivePeerDependencies: + - supports-color '@putout/operator-regexp@1.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3))': dependencies: @@ -51386,7 +51385,7 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.5(@babel/core@8.0.0-alpha.13)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@8.0.0-alpha.13))(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0))(typescript@5.7.2): + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0))(typescript@5.7.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -51400,10 +51399,10 @@ snapshots: typescript: 5.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 8.0.0-alpha.13 + '@babel/core': 7.26.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@8.0.0-alpha.13) + babel-jest: 29.7.0(@babel/core@7.26.0) ts-jest@29.2.5(@babel/core@8.0.0-alpha.13)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@8.0.0-alpha.13))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0))(typescript@5.6.3): dependencies: From 22c1f70bc7ee6baa7072fc398bcfd92d532e4149 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Tue, 22 Jul 2025 17:33:25 -0400 Subject: [PATCH 3/4] versions --- components/zendesk/actions/add-ticket-tags/add-ticket-tags.mjs | 2 +- components/zendesk/actions/create-ticket/create-ticket.mjs | 2 +- components/zendesk/actions/delete-ticket/delete-ticket.mjs | 2 +- components/zendesk/actions/get-ticket-info/get-ticket-info.mjs | 2 +- components/zendesk/actions/list-tickets/list-tickets.mjs | 2 +- .../zendesk/actions/remove-ticket-tags/remove-ticket-tags.mjs | 2 +- components/zendesk/actions/search-tickets/search-tickets.mjs | 2 +- components/zendesk/actions/set-ticket-tags/set-ticket-tags.mjs | 2 +- components/zendesk/actions/update-ticket/update-ticket.mjs | 2 +- components/zendesk/sources/new-ticket/new-ticket.mjs | 2 +- .../sources/ticket-added-to-view/ticket-added-to-view.mjs | 2 +- components/zendesk/sources/ticket-closed/ticket-closed.mjs | 2 +- components/zendesk/sources/ticket-pended/ticket-pended.mjs | 2 +- components/zendesk/sources/ticket-solved/ticket-solved.mjs | 2 +- components/zendesk/sources/ticket-updated/ticket-updated.mjs | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/components/zendesk/actions/add-ticket-tags/add-ticket-tags.mjs b/components/zendesk/actions/add-ticket-tags/add-ticket-tags.mjs index 871e44663c82b..d663c7e657d6f 100644 --- a/components/zendesk/actions/add-ticket-tags/add-ticket-tags.mjs +++ b/components/zendesk/actions/add-ticket-tags/add-ticket-tags.mjs @@ -5,7 +5,7 @@ export default { name: "Add Ticket Tags", description: "Add tags to a ticket (appends to existing tags). [See the documentation](https://developer.zendesk.com/api-reference/ticketing/ticket-management/tags/#add-tags).", type: "action", - version: "0.0.1", + version: "0.0.2", props: { app, ticketId: { diff --git a/components/zendesk/actions/create-ticket/create-ticket.mjs b/components/zendesk/actions/create-ticket/create-ticket.mjs index 5825035c04107..65d06b6480984 100644 --- a/components/zendesk/actions/create-ticket/create-ticket.mjs +++ b/components/zendesk/actions/create-ticket/create-ticket.mjs @@ -5,7 +5,7 @@ export default { name: "Create Ticket", description: "Creates a ticket. [See the documentation](https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/#create-ticket).", type: "action", - version: "0.1.5", + version: "0.1.6", props: { app, ticketCommentBody: { diff --git a/components/zendesk/actions/delete-ticket/delete-ticket.mjs b/components/zendesk/actions/delete-ticket/delete-ticket.mjs index 8a04291895dd9..6c6de189374df 100644 --- a/components/zendesk/actions/delete-ticket/delete-ticket.mjs +++ b/components/zendesk/actions/delete-ticket/delete-ticket.mjs @@ -5,7 +5,7 @@ export default { name: "Delete Ticket", description: "Deletes a ticket. [See the documentation](https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/#delete-ticket).", type: "action", - version: "0.1.5", + version: "0.1.6", props: { app, ticketId: { diff --git a/components/zendesk/actions/get-ticket-info/get-ticket-info.mjs b/components/zendesk/actions/get-ticket-info/get-ticket-info.mjs index 17d7063962217..fc9e0d2adbfcc 100644 --- a/components/zendesk/actions/get-ticket-info/get-ticket-info.mjs +++ b/components/zendesk/actions/get-ticket-info/get-ticket-info.mjs @@ -5,7 +5,7 @@ export default { name: "Get Ticket Info", description: "Retrieves information about a specific ticket. [See the documentation](https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/#show-ticket).", type: "action", - version: "0.0.3", + version: "0.0.4", props: { app, ticketId: { diff --git a/components/zendesk/actions/list-tickets/list-tickets.mjs b/components/zendesk/actions/list-tickets/list-tickets.mjs index 6b0e71c4eff4c..03355f0b3088e 100644 --- a/components/zendesk/actions/list-tickets/list-tickets.mjs +++ b/components/zendesk/actions/list-tickets/list-tickets.mjs @@ -5,7 +5,7 @@ export default { name: "List Tickets", description: "Retrieves a list of tickets. [See the documentation](https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/#list-tickets).", type: "action", - version: "0.0.3", + version: "0.0.4", props: { app, sortBy: { diff --git a/components/zendesk/actions/remove-ticket-tags/remove-ticket-tags.mjs b/components/zendesk/actions/remove-ticket-tags/remove-ticket-tags.mjs index 9fe3c48395232..b1ebf6e18b302 100644 --- a/components/zendesk/actions/remove-ticket-tags/remove-ticket-tags.mjs +++ b/components/zendesk/actions/remove-ticket-tags/remove-ticket-tags.mjs @@ -5,7 +5,7 @@ export default { name: "Remove Ticket Tags", description: "Remove specific tags from a ticket. [See the documentation](https://developer.zendesk.com/api-reference/ticketing/ticket-management/tags/#remove-tags).", type: "action", - version: "0.0.1", + version: "0.0.2", props: { app, ticketId: { diff --git a/components/zendesk/actions/search-tickets/search-tickets.mjs b/components/zendesk/actions/search-tickets/search-tickets.mjs index 0ba5a398e1e3f..cbc8e20916a7d 100644 --- a/components/zendesk/actions/search-tickets/search-tickets.mjs +++ b/components/zendesk/actions/search-tickets/search-tickets.mjs @@ -5,7 +5,7 @@ export default { name: "Search Tickets", description: "Searches for tickets using Zendesk's search API. [See the documentation](https://developer.zendesk.com/api-reference/ticketing/ticket-management/search/#search-tickets).", type: "action", - version: "0.0.3", + version: "0.0.4", props: { app, query: { diff --git a/components/zendesk/actions/set-ticket-tags/set-ticket-tags.mjs b/components/zendesk/actions/set-ticket-tags/set-ticket-tags.mjs index 6aa5599d34ee6..5f6c50746f457 100644 --- a/components/zendesk/actions/set-ticket-tags/set-ticket-tags.mjs +++ b/components/zendesk/actions/set-ticket-tags/set-ticket-tags.mjs @@ -5,7 +5,7 @@ export default { name: "Set Ticket Tags", description: "Set tags on a ticket (replaces all existing tags). [See the documentation](https://developer.zendesk.com/api-reference/ticketing/ticket-management/tags/#set-tags).", type: "action", - version: "0.0.1", + version: "0.0.2", props: { app, ticketId: { diff --git a/components/zendesk/actions/update-ticket/update-ticket.mjs b/components/zendesk/actions/update-ticket/update-ticket.mjs index 1ff78de950280..6a97199349ddf 100644 --- a/components/zendesk/actions/update-ticket/update-ticket.mjs +++ b/components/zendesk/actions/update-ticket/update-ticket.mjs @@ -5,7 +5,7 @@ export default { name: "Update Ticket", description: "Updates a ticket and optionally manages tags. [See the documentation](https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/#update-ticket).", type: "action", - version: "0.1.5", + version: "0.1.6", props: { app, ticketId: { diff --git a/components/zendesk/sources/new-ticket/new-ticket.mjs b/components/zendesk/sources/new-ticket/new-ticket.mjs index 5bfd7ce49c8d5..8e00bac4ca314 100644 --- a/components/zendesk/sources/new-ticket/new-ticket.mjs +++ b/components/zendesk/sources/new-ticket/new-ticket.mjs @@ -6,7 +6,7 @@ export default { key: "zendesk-new-ticket", type: "source", description: "Emit new event when a ticket is created", - version: "0.2.5", + version: "0.2.6", dedupe: "unique", methods: { ...common.methods, diff --git a/components/zendesk/sources/ticket-added-to-view/ticket-added-to-view.mjs b/components/zendesk/sources/ticket-added-to-view/ticket-added-to-view.mjs index 3aa085c714ba1..ae785d533baec 100644 --- a/components/zendesk/sources/ticket-added-to-view/ticket-added-to-view.mjs +++ b/components/zendesk/sources/ticket-added-to-view/ticket-added-to-view.mjs @@ -5,7 +5,7 @@ export default { key: "zendesk-ticket-added-to-view", name: "New Ticket Added to View (Instant)", description: "Emit new event when a ticket is added to the specified view", - version: "0.0.5", + version: "0.0.6", type: "source", dedupe: "unique", props: { diff --git a/components/zendesk/sources/ticket-closed/ticket-closed.mjs b/components/zendesk/sources/ticket-closed/ticket-closed.mjs index f44f5b0731577..9f50d86ebf726 100644 --- a/components/zendesk/sources/ticket-closed/ticket-closed.mjs +++ b/components/zendesk/sources/ticket-closed/ticket-closed.mjs @@ -6,7 +6,7 @@ export default { key: "zendesk-ticket-closed", type: "source", description: "Emit new event when a ticket has changed to closed status", - version: "0.2.5", + version: "0.2.6", dedupe: "unique", methods: { ...common.methods, diff --git a/components/zendesk/sources/ticket-pended/ticket-pended.mjs b/components/zendesk/sources/ticket-pended/ticket-pended.mjs index dfc23f2014886..8b0bd503bc9b1 100644 --- a/components/zendesk/sources/ticket-pended/ticket-pended.mjs +++ b/components/zendesk/sources/ticket-pended/ticket-pended.mjs @@ -6,7 +6,7 @@ export default { key: "zendesk-ticket-pended", type: "source", description: "Emit new event when a ticket has changed to pending status", - version: "0.2.5", + version: "0.2.6", dedupe: "unique", methods: { ...common.methods, diff --git a/components/zendesk/sources/ticket-solved/ticket-solved.mjs b/components/zendesk/sources/ticket-solved/ticket-solved.mjs index 9672a7fc67158..6d87a69d986ec 100644 --- a/components/zendesk/sources/ticket-solved/ticket-solved.mjs +++ b/components/zendesk/sources/ticket-solved/ticket-solved.mjs @@ -6,7 +6,7 @@ export default { key: "zendesk-ticket-solved", type: "source", description: "Emit new event when a ticket has changed to solved status", - version: "0.2.5", + version: "0.2.6", dedupe: "unique", methods: { ...common.methods, diff --git a/components/zendesk/sources/ticket-updated/ticket-updated.mjs b/components/zendesk/sources/ticket-updated/ticket-updated.mjs index 0118c9d3e47ad..253d5e92d6233 100644 --- a/components/zendesk/sources/ticket-updated/ticket-updated.mjs +++ b/components/zendesk/sources/ticket-updated/ticket-updated.mjs @@ -6,7 +6,7 @@ export default { key: "zendesk-ticket-updated", type: "source", description: "Emit new event when a ticket has been updated", - version: "0.2.5", + version: "0.2.6", dedupe: "unique", methods: { ...common.methods, From 7e0132ba5e309538fae11ffafae763f2223c4898 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Thu, 24 Jul 2025 11:03:41 -0400 Subject: [PATCH 4/4] fix props --- .../new-ticket-comment-added.mjs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/components/zendesk/sources/new-ticket-comment-added/new-ticket-comment-added.mjs b/components/zendesk/sources/new-ticket-comment-added/new-ticket-comment-added.mjs index ddd36c927ca26..eb9cfdafb6876 100644 --- a/components/zendesk/sources/new-ticket-comment-added/new-ticket-comment-added.mjs +++ b/components/zendesk/sources/new-ticket-comment-added/new-ticket-comment-added.mjs @@ -1,3 +1,4 @@ +import app from "../../zendesk.app.mjs"; import common from "../common/ticket.mjs"; export default { @@ -8,6 +9,23 @@ export default { description: "Emit new event when a ticket comment has been added", version: "0.0.1", dedupe: "unique", + props: { + app, + db: "$.service.db", + http: "$.interface.http", + categoryId: { + propDefinition: [ + app, + "categoryId", + ], + }, + customSubdomain: { + propDefinition: [ + app, + "customSubdomain", + ], + }, + }, methods: { ...common.methods, _getLastTs() {