diff --git a/components/zendesk/actions/add-ticket-tags/add-ticket-tags.mjs b/components/zendesk/actions/add-ticket-tags/add-ticket-tags.mjs new file mode 100644 index 0000000000000..871e44663c82b --- /dev/null +++ b/components/zendesk/actions/add-ticket-tags/add-ticket-tags.mjs @@ -0,0 +1,48 @@ +import app from "../../zendesk.app.mjs"; + +export default { + key: "zendesk-add-ticket-tags", + 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", + props: { + app, + ticketId: { + propDefinition: [ + app, + "ticketId", + ], + }, + ticketTags: { + propDefinition: [ + app, + "ticketTags", + ], + description: "Array of tags to add to the ticket. These will be appended to any existing tags.", + }, + customSubdomain: { + propDefinition: [ + app, + "customSubdomain", + ], + }, + }, + async run({ $: step }) { + const { + ticketId, + ticketTags, + customSubdomain, + } = this; + + const response = await this.app.addTicketTags({ + step, + ticketId, + tags: ticketTags, + customSubdomain, + }); + + step.export("$summary", `Successfully added ${ticketTags.length} tag(s) to ticket ${ticketId}`); + return response; + }, +}; diff --git a/components/zendesk/actions/create-ticket/create-ticket.mjs b/components/zendesk/actions/create-ticket/create-ticket.mjs index 495eb1e1eb6fd..5825035c04107 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.4", + version: "0.1.5", props: { app, ticketCommentBody: { diff --git a/components/zendesk/actions/delete-ticket/delete-ticket.mjs b/components/zendesk/actions/delete-ticket/delete-ticket.mjs index d289eb19cb5ea..8a04291895dd9 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.4", + version: "0.1.5", 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 a8a0c8405563a..17d7063962217 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.2", + version: "0.0.3", props: { app, ticketId: { diff --git a/components/zendesk/actions/list-tickets/list-tickets.mjs b/components/zendesk/actions/list-tickets/list-tickets.mjs index aa0bfaa5db099..6b0e71c4eff4c 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.2", + version: "0.0.3", 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 new file mode 100644 index 0000000000000..9fe3c48395232 --- /dev/null +++ b/components/zendesk/actions/remove-ticket-tags/remove-ticket-tags.mjs @@ -0,0 +1,48 @@ +import app from "../../zendesk.app.mjs"; + +export default { + key: "zendesk-remove-ticket-tags", + 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", + props: { + app, + ticketId: { + propDefinition: [ + app, + "ticketId", + ], + }, + ticketTags: { + propDefinition: [ + app, + "ticketTags", + ], + description: "Array of tags to remove from the ticket.", + }, + customSubdomain: { + propDefinition: [ + app, + "customSubdomain", + ], + }, + }, + async run({ $: step }) { + const { + ticketId, + ticketTags, + customSubdomain, + } = this; + + const response = await this.app.removeTicketTags({ + step, + ticketId, + tags: ticketTags, + customSubdomain, + }); + + step.export("$summary", `Successfully removed ${ticketTags.length} tag(s) from ticket ${ticketId}`); + return response; + }, +}; diff --git a/components/zendesk/actions/search-tickets/search-tickets.mjs b/components/zendesk/actions/search-tickets/search-tickets.mjs index 49279e18052f9..0ba5a398e1e3f 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.2", + version: "0.0.3", 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 new file mode 100644 index 0000000000000..6aa5599d34ee6 --- /dev/null +++ b/components/zendesk/actions/set-ticket-tags/set-ticket-tags.mjs @@ -0,0 +1,47 @@ +import app from "../../zendesk.app.mjs"; + +export default { + key: "zendesk-set-ticket-tags", + 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", + props: { + app, + ticketId: { + propDefinition: [ + app, + "ticketId", + ], + }, + ticketTags: { + propDefinition: [ + app, + "ticketTags", + ], + }, + customSubdomain: { + propDefinition: [ + app, + "customSubdomain", + ], + }, + }, + async run({ $: step }) { + const { + ticketId, + ticketTags, + customSubdomain, + } = this; + + const response = await this.app.setTicketTags({ + step, + ticketId, + tags: ticketTags, + customSubdomain, + }); + + step.export("$summary", `Successfully set ${ticketTags.length} tag(s) on ticket ${ticketId}`); + return response; + }, +}; diff --git a/components/zendesk/actions/update-ticket/update-ticket.mjs b/components/zendesk/actions/update-ticket/update-ticket.mjs index 48a5cd8110504..8d29427729332 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. [See the documentation](https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/#update-ticket).", type: "action", - version: "0.1.4", + version: "0.1.5", props: { app, ticketId: { diff --git a/components/zendesk/package.json b/components/zendesk/package.json index cdc67d18c656b..ecdf28511d96f 100644 --- a/components/zendesk/package.json +++ b/components/zendesk/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/zendesk", - "version": "0.7.1", + "version": "0.8.0", "description": "Pipedream Zendesk Components", "main": "zendesk.app.mjs", "keywords": [ diff --git a/components/zendesk/sources/new-ticket/new-ticket.mjs b/components/zendesk/sources/new-ticket/new-ticket.mjs index 3ba6ae70efa3a..5bfd7ce49c8d5 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.4", + version: "0.2.5", 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 3e20b6ff80961..3aa085c714ba1 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.4", + version: "0.0.5", 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 d2dadcf360499..f44f5b0731577 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.4", + version: "0.2.5", 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 370151aa0c45f..dfc23f2014886 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.4", + version: "0.2.5", 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 070c22e173693..9672a7fc67158 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.4", + version: "0.2.5", 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 e2b3bafd318bf..0118c9d3e47ad 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.4", + version: "0.2.5", dedupe: "unique", methods: { ...common.methods, diff --git a/components/zendesk/zendesk.app.mjs b/components/zendesk/zendesk.app.mjs index 6ae5e33c7cd90..2e829e0608d3f 100644 --- a/components/zendesk/zendesk.app.mjs +++ b/components/zendesk/zendesk.app.mjs @@ -189,6 +189,12 @@ export default { description: "For Enterprise Zendesk accounts: optionally specify the subdomain to use. This will override the subdomain that was provided when connecting your Zendesk account to Pipedream. For example, if you Zendesk URL is https://examplehelp.zendesk.com, your subdomain is `examplehelp`", optional: true, }, + ticketTags: { + type: "string[]", + label: "Tags", + description: "Array of tags to apply to the ticket. These will replace any existing tags on the ticket.", + optional: true, + }, }, methods: { getUrl(path, customSubdomain) { @@ -315,5 +321,68 @@ export default { args.params.page += 1; } }, + /** + * Set tags on a ticket (replaces all existing tags) + * @param {object} args - Arguments object + * @param {string} args.ticketId - The ticket ID + * @param {string[]} args.tags - Array of tags to set + * @param {string} args.customSubdomain - Optional custom subdomain + * @returns {Promise} API response + */ + setTicketTags({ + ticketId, tags, customSubdomain, ...args + }) { + return this.makeRequest({ + method: "PUT", + path: `/tickets/${ticketId}/tags.json`, + customSubdomain, + data: { + tags, + }, + ...args, + }); + }, + /** + * Add tags to a ticket (appends to existing tags) + * @param {object} args - Arguments object + * @param {string} args.ticketId - The ticket ID + * @param {string[]} args.tags - Array of tags to add + * @param {string} args.customSubdomain - Optional custom subdomain + * @returns {Promise} API response + */ + addTicketTags({ + ticketId, tags, customSubdomain, ...args + }) { + return this.makeRequest({ + method: "POST", + path: `/tickets/${ticketId}/tags.json`, + customSubdomain, + data: { + tags, + }, + ...args, + }); + }, + /** + * Remove specific tags from a ticket + * @param {object} args - Arguments object + * @param {string} args.ticketId - The ticket ID + * @param {string[]} args.tags - Array of tags to remove + * @param {string} args.customSubdomain - Optional custom subdomain + * @returns {Promise} API response + */ + removeTicketTags({ + ticketId, tags, customSubdomain, ...args + }) { + return this.makeRequest({ + method: "DELETE", + path: `/tickets/${ticketId}/tags.json`, + customSubdomain, + data: { + tags, + }, + ...args, + }); + }, }, };