diff --git a/packages/backend/src/apps/pipedrive/auth/refresh-token.ts b/packages/backend/src/apps/pipedrive/auth/refresh-token.ts index 42994e38..4be1185d 100644 --- a/packages/backend/src/apps/pipedrive/auth/refresh-token.ts +++ b/packages/backend/src/apps/pipedrive/auth/refresh-token.ts @@ -19,6 +19,9 @@ const refreshToken = async ($: IGlobalVariable) => { params.toString(), { headers, + additionalProperties: { + skipAddingAuthHeader: true, + }, } ); diff --git a/packages/backend/src/apps/pipedrive/common/add-auth-header.ts b/packages/backend/src/apps/pipedrive/common/add-auth-header.ts index 8e7798b8..d15b043e 100644 --- a/packages/backend/src/apps/pipedrive/common/add-auth-header.ts +++ b/packages/backend/src/apps/pipedrive/common/add-auth-header.ts @@ -1,6 +1,9 @@ import { TBeforeRequest } from '@automatisch/types'; const addAuthHeader: TBeforeRequest = ($, requestConfig) => { + if (requestConfig.additionalProperties?.skipAddingAuthHeader) + return requestConfig; + if ($.auth.data?.accessToken) { requestConfig.headers.Authorization = `${$.auth.data.tokenType} ${$.auth.data.accessToken}`; } diff --git a/packages/backend/src/apps/pipedrive/triggers/index.ts b/packages/backend/src/apps/pipedrive/triggers/index.ts index 4e595290..4710bd8a 100644 --- a/packages/backend/src/apps/pipedrive/triggers/index.ts +++ b/packages/backend/src/apps/pipedrive/triggers/index.ts @@ -1,3 +1,4 @@ import newDeals from './new-deals'; +import newNotes from './new-notes'; -export default [newDeals]; +export default [newDeals, newNotes]; diff --git a/packages/backend/src/apps/pipedrive/triggers/new-notes/index.ts b/packages/backend/src/apps/pipedrive/triggers/new-notes/index.ts new file mode 100644 index 00000000..b4a2e89e --- /dev/null +++ b/packages/backend/src/apps/pipedrive/triggers/new-notes/index.ts @@ -0,0 +1,56 @@ +import defineTrigger from '../../../../helpers/define-trigger'; + +type Payload = { + start: number; + limit: number; + sort: string; +}; + +type ResponseData = { + data: { + id: number; + }[]; + additional_data: { + pagination: { + next_start: number; + }; + }; +}; + +export default defineTrigger({ + name: 'New notes', + key: 'newNotes', + pollInterval: 15, + description: 'Triggers when a new note is created.', + arguments: [], + + async run($) { + const params: Payload = { + start: 0, + limit: 100, + sort: 'add_time DESC', + }; + + do { + const { data } = await $.http.get( + `${$.auth.data.apiDomain}/api/v1/notes`, + { params } + ); + + if (!data?.data?.length) { + return; + } + + params.start = data.additional_data?.pagination?.next_start; + + for (const note of data.data) { + $.pushTriggerItem({ + raw: note, + meta: { + internalId: note.id.toString(), + }, + }); + } + } while (params.start); + }, +}); diff --git a/packages/docs/pages/apps/pipedrive/triggers.md b/packages/docs/pages/apps/pipedrive/triggers.md index e6b3b94d..1c78532d 100644 --- a/packages/docs/pages/apps/pipedrive/triggers.md +++ b/packages/docs/pages/apps/pipedrive/triggers.md @@ -3,6 +3,8 @@ favicon: /favicons/pipedrive.svg items: - name: New deals desc: Triggers when a new deal is created. + - name: New notes + desc: Triggers when a new note is created. ---