diff --git a/packages/backend/src/apps/invoice-ninja/triggers/index.ts b/packages/backend/src/apps/invoice-ninja/triggers/index.ts index 50e47334..9824f44d 100644 --- a/packages/backend/src/apps/invoice-ninja/triggers/index.ts +++ b/packages/backend/src/apps/invoice-ninja/triggers/index.ts @@ -1,5 +1,6 @@ import newClients from './new-clients'; import newCredits from './new-credits'; import newInvoices from './new-invoices'; +import newPayments from './new-payments'; -export default [newClients, newCredits, newInvoices]; +export default [newClients, newCredits, newInvoices, newPayments]; diff --git a/packages/backend/src/apps/invoice-ninja/triggers/new-payments/index.ts b/packages/backend/src/apps/invoice-ninja/triggers/new-payments/index.ts new file mode 100644 index 00000000..0ac897d7 --- /dev/null +++ b/packages/backend/src/apps/invoice-ninja/triggers/new-payments/index.ts @@ -0,0 +1,65 @@ +import Crypto from 'crypto'; +import isEmpty from 'lodash/isEmpty'; +import defineTrigger from '../../../../helpers/define-trigger'; + +type Response = { + data: { + data: { + id: string; + event_id: string; + target_url: string; + format: string; + }; + }; +}; + +export default defineTrigger({ + name: 'New payments', + key: 'newPayments', + type: 'webhook', + description: 'Triggers when a new payment is added.', + arguments: [], + + async run($) { + const dataItem = { + raw: $.request.body, + meta: { + internalId: Crypto.randomUUID(), + }, + }; + + $.pushTriggerItem(dataItem); + }, + + async testRun($) { + const lastExecutionStep = await $.getLastExecutionStep(); + + if (!isEmpty(lastExecutionStep?.dataOut)) { + $.pushTriggerItem({ + raw: lastExecutionStep.dataOut, + meta: { + internalId: '', + }, + }); + } + }, + + async registerHook($) { + const CREATE_PAYMENT_EVENT_ID = '4'; + + const payload = { + target_url: $.webhookUrl, + event_id: CREATE_PAYMENT_EVENT_ID, + format: 'JSON', + rest_method: 'post', + }; + + const response: Response = await $.http.post('/v1/webhooks', payload); + + await $.flow.setRemoteWebhookId(response.data.data.id); + }, + + async unregisterHook($) { + await $.http.delete(`/v1/webhooks/${$.flow.remoteWebhookId}`); + }, +}); diff --git a/packages/docs/pages/apps/invoice-ninja/triggers.md b/packages/docs/pages/apps/invoice-ninja/triggers.md index 458f24d5..cc46e562 100644 --- a/packages/docs/pages/apps/invoice-ninja/triggers.md +++ b/packages/docs/pages/apps/invoice-ninja/triggers.md @@ -7,6 +7,8 @@ items: desc: Triggers when a new credit is added. - name: New invoices desc: Triggers when a new invoice is added. + - name: New payments + desc: Triggers when a new payment is added. ---