diff --git a/packages/backend/src/apps/pdf-monkey/dynamic-data/index.js b/packages/backend/src/apps/pdf-monkey/dynamic-data/index.js new file mode 100644 index 00000000..c527a785 --- /dev/null +++ b/packages/backend/src/apps/pdf-monkey/dynamic-data/index.js @@ -0,0 +1,4 @@ +import listTemplates from './list-templates/index.js'; +import listWorkspaces from './list-workspaces/index.js'; + +export default [listTemplates, listWorkspaces]; diff --git a/packages/backend/src/apps/pdf-monkey/dynamic-data/list-templates/index.js b/packages/backend/src/apps/pdf-monkey/dynamic-data/list-templates/index.js new file mode 100644 index 00000000..cd40e17b --- /dev/null +++ b/packages/backend/src/apps/pdf-monkey/dynamic-data/list-templates/index.js @@ -0,0 +1,39 @@ +export default { + name: 'List templates', + key: 'listTemplates', + + async run($) { + const templates = { + data: [], + }; + const workspaceId = $.step.parameters.workspaceId; + let next = false; + + const params = { + page: 'all', + 'q[workspace_id]': workspaceId, + }; + + if (!workspaceId) { + return templates; + } + + do { + const { data } = await $.http.get('/v1/document_template_cards', params); + next = data.meta.next_page; + + if (!data?.document_template_cards?.length) { + return; + } + + for (const template of data.document_template_cards) { + templates.data.push({ + value: template.id, + name: template.identifier, + }); + } + } while (next); + + return templates; + }, +}; diff --git a/packages/backend/src/apps/pdf-monkey/dynamic-data/list-workspaces/index.js b/packages/backend/src/apps/pdf-monkey/dynamic-data/list-workspaces/index.js new file mode 100644 index 00000000..a1c0596b --- /dev/null +++ b/packages/backend/src/apps/pdf-monkey/dynamic-data/list-workspaces/index.js @@ -0,0 +1,29 @@ +export default { + name: 'List workspaces', + key: 'listWorkspaces', + + async run($) { + const workspaces = { + data: [], + }; + let next = false; + + do { + const { data } = await $.http.get('/v1/workspace_cards'); + next = data.meta.next_page; + + if (!data?.workspace_cards?.length) { + return; + } + + for (const workspace of data.workspace_cards) { + workspaces.data.push({ + value: workspace.id, + name: workspace.identifier, + }); + } + } while (next); + + return workspaces; + }, +}; diff --git a/packages/backend/src/apps/pdf-monkey/index.js b/packages/backend/src/apps/pdf-monkey/index.js index 298eda98..1ec0b8f0 100644 --- a/packages/backend/src/apps/pdf-monkey/index.js +++ b/packages/backend/src/apps/pdf-monkey/index.js @@ -1,6 +1,8 @@ import defineApp from '../../helpers/define-app.js'; import addAuthHeader from './common/add-auth-header.js'; import auth from './auth/index.js'; +import triggers from './triggers/index.js'; +import dynamicData from './dynamic-data/index.js'; export default defineApp({ name: 'PDFMonkey', @@ -13,4 +15,6 @@ export default defineApp({ primaryColor: '376794', beforeRequest: [addAuthHeader], auth, + triggers, + dynamicData, }); diff --git a/packages/backend/src/apps/pdf-monkey/triggers/documents-generated/index.js b/packages/backend/src/apps/pdf-monkey/triggers/documents-generated/index.js new file mode 100644 index 00000000..3e1a9ade --- /dev/null +++ b/packages/backend/src/apps/pdf-monkey/triggers/documents-generated/index.js @@ -0,0 +1,99 @@ +import defineTrigger from '../../../../helpers/define-trigger.js'; + +export default defineTrigger({ + name: 'Documents Generated', + key: 'documentsGenerated', + pollInterval: 15, + description: + 'Triggers upon the successful completion of document generation.', + arguments: [ + { + label: 'Workspace', + key: 'workspaceId', + type: 'dropdown', + required: true, + description: '', + variables: true, + source: { + type: 'query', + name: 'getDynamicData', + arguments: [ + { + name: 'key', + value: 'listWorkspaces', + }, + ], + }, + }, + { + label: 'Templates', + key: 'templateIds', + type: 'dynamic', + required: false, + description: 'Apply this trigger exclusively for particular templates.', + fields: [ + { + label: 'Template', + key: 'templateId', + type: 'dropdown', + required: false, + depensOn: ['parameters.workspaceId'], + description: '', + variables: true, + source: { + type: 'query', + name: 'getDynamicData', + arguments: [ + { + name: 'key', + value: 'listTemplates', + }, + { + name: 'parameters.workspaceId', + value: '{parameters.workspaceId}', + }, + ], + }, + }, + ], + }, + ], + + async run($) { + const workspaceId = $.step.parameters.workspaceId; + const templateIds = $.step.parameters.templateIds; + const allTemplates = templateIds + .map((templateId) => templateId.templateId) + .join(','); + + const params = { + 'page[size]': 100, + 'q[workspace_id]': workspaceId, + 'q[status]': 'success', + }; + + if (!templateIds.length) { + params['q[document_template_id]'] = allTemplates; + } + + let next = false; + do { + const { data } = await $.http.get('/v1/document_cards', { params }); + + if (!data?.document_cards?.length) { + return; + } + + next = data.meta.next_page; + + for (const document of data.document_cards) { + $.pushTriggerItem({ + raw: document, + meta: { + internalId: document.id, + }, + }); + } + } while (next); + }, +}); diff --git a/packages/backend/src/apps/pdf-monkey/triggers/index.js b/packages/backend/src/apps/pdf-monkey/triggers/index.js new file mode 100644 index 00000000..fc2152f8 --- /dev/null +++ b/packages/backend/src/apps/pdf-monkey/triggers/index.js @@ -0,0 +1,3 @@ +import documentsGenerated from './documents-generated/index.js'; + +export default [documentsGenerated]; diff --git a/packages/docs/pages/.vitepress/config.js b/packages/docs/pages/.vitepress/config.js index 9143c85c..de07e952 100644 --- a/packages/docs/pages/.vitepress/config.js +++ b/packages/docs/pages/.vitepress/config.js @@ -256,7 +256,10 @@ export default defineConfig({ text: 'PDFMonkey', collapsible: true, collapsed: true, - items: [{ text: 'Connection', link: '/apps/pdf-monkey/connection' }], + items: [ + { text: 'Triggers', link: '/apps/pdf-monkey/triggers' }, + { text: 'Connection', link: '/apps/pdf-monkey/connection' }, + ], }, { text: 'Pipedrive', diff --git a/packages/docs/pages/apps/pdf-monkey/triggers.md b/packages/docs/pages/apps/pdf-monkey/triggers.md new file mode 100644 index 00000000..1e0f48e1 --- /dev/null +++ b/packages/docs/pages/apps/pdf-monkey/triggers.md @@ -0,0 +1,12 @@ +--- +favicon: /favicons/pdf-monkey.svg +items: + - name: Documents Generated + desc: Triggers upon the successful completion of document generation. +--- + + + +