From 43c34fcb7b4f4119928481ce43067ebbeb0cf085 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Tue, 20 Feb 2024 17:31:30 +0300 Subject: [PATCH] feat(bigin-by-zoho-crm): add new products trigger --- .../apps/bigin-by-zoho-crm/triggers/index.js | 3 +- .../triggers/new-products/index.js | 89 +++++++++++++++++++ .../pages/apps/bigin-by-zoho-crm/triggers.md | 2 + 3 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/apps/bigin-by-zoho-crm/triggers/new-products/index.js diff --git a/packages/backend/src/apps/bigin-by-zoho-crm/triggers/index.js b/packages/backend/src/apps/bigin-by-zoho-crm/triggers/index.js index 25afceab..babd4073 100644 --- a/packages/backend/src/apps/bigin-by-zoho-crm/triggers/index.js +++ b/packages/backend/src/apps/bigin-by-zoho-crm/triggers/index.js @@ -1,6 +1,7 @@ import newCalls from './new-calls/index.js'; import newCompanies from './new-companies/index.js'; import newContacts from './new-contacts/index.js'; +import newProducts from './new-products/index.js'; import newTasks from './new-tasks/index.js'; -export default [newCalls, newCompanies, newContacts, newTasks]; +export default [newCalls, newCompanies, newContacts, newProducts, newTasks]; diff --git a/packages/backend/src/apps/bigin-by-zoho-crm/triggers/new-products/index.js b/packages/backend/src/apps/bigin-by-zoho-crm/triggers/new-products/index.js new file mode 100644 index 00000000..a1d6a875 --- /dev/null +++ b/packages/backend/src/apps/bigin-by-zoho-crm/triggers/new-products/index.js @@ -0,0 +1,89 @@ +import Crypto from 'crypto'; +import defineTrigger from '../../../../helpers/define-trigger.js'; + +export default defineTrigger({ + name: 'New products', + key: 'newProducts', + type: 'webhook', + description: 'Triggers when a new product is created.', + arguments: [ + { + label: 'Organization', + key: 'organizationId', + type: 'dropdown', + required: true, + description: '', + variables: false, + source: { + type: 'query', + name: 'getDynamicData', + arguments: [ + { + name: 'key', + value: 'listOrganizations', + }, + ], + }, + }, + ], + + async run($) { + const dataItem = { + raw: $.request.body, + meta: { + internalId: Crypto.randomUUID(), + }, + }; + + $.pushTriggerItem(dataItem); + }, + + async testRun($) { + const organizationId = $.step.parameters.organizationId; + + const sampleEventData = { + ids: ['111111111111111111'], + token: null, + module: 'Products', + operation: 'insert', + channel_id: organizationId, + server_time: 1708426963120, + query_params: {}, + resource_uri: `${$.auth.data.apiDomain}/bigin/v1/Products`, + affected_fields: [], + }; + + const dataItem = { + raw: sampleEventData, + meta: { + internalId: sampleEventData.channel_id, + }, + }; + + $.pushTriggerItem(dataItem); + }, + + async registerHook($) { + const organizationId = $.step.parameters.organizationId; + + const payload = { + watch: [ + { + channel_id: organizationId, + notify_url: $.webhookUrl, + events: ['Products.create'], + }, + ], + }; + + await $.http.post('/bigin/v2/actions/watch', payload); + + await $.flow.setRemoteWebhookId(organizationId); + }, + + async unregisterHook($) { + await $.http.delete( + `/bigin/v2/actions/watch?channel_ids=${$.flow.remoteWebhookId}` + ); + }, +}); diff --git a/packages/docs/pages/apps/bigin-by-zoho-crm/triggers.md b/packages/docs/pages/apps/bigin-by-zoho-crm/triggers.md index fb8a36f8..4fe61558 100644 --- a/packages/docs/pages/apps/bigin-by-zoho-crm/triggers.md +++ b/packages/docs/pages/apps/bigin-by-zoho-crm/triggers.md @@ -7,6 +7,8 @@ items: desc: Triggers when a new company is created. - name: New contacts desc: Triggers when a new contact is created. + - name: New products + desc: Triggers when a new product is created. - name: New tasks desc: Triggers when a new task is created. ---