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.
+---
+
+
+
+