@workbuddy/piece-workbuddy-edge 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +24 -0
- package/src/index.d.ts +8 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +199 -0
- package/src/index.js.map +1 -0
- package/src/index.ts +354 -0
- package/src/lib/actions/attachments.d.ts +17 -0
- package/src/lib/actions/attachments.d.ts.map +1 -0
- package/src/lib/actions/attachments.js +79 -0
- package/src/lib/actions/attachments.js.map +1 -0
- package/src/lib/actions/attachments.ts +85 -0
- package/src/lib/actions/crm->-companies.d.ts +16 -0
- package/src/lib/actions/crm->-companies.d.ts.map +1 -0
- package/src/lib/actions/crm->-companies.js +77 -0
- package/src/lib/actions/crm->-companies.js.map +1 -0
- package/src/lib/actions/crm->-companies.ts +84 -0
- package/src/lib/actions/crm->-contacts.d.ts +16 -0
- package/src/lib/actions/crm->-contacts.d.ts.map +1 -0
- package/src/lib/actions/crm->-contacts.js +77 -0
- package/src/lib/actions/crm->-contacts.js.map +1 -0
- package/src/lib/actions/crm->-contacts.ts +84 -0
- package/src/lib/actions/crm->-contractors.d.ts +16 -0
- package/src/lib/actions/crm->-contractors.d.ts.map +1 -0
- package/src/lib/actions/crm->-contractors.js +77 -0
- package/src/lib/actions/crm->-contractors.js.map +1 -0
- package/src/lib/actions/crm->-contractors.ts +84 -0
- package/src/lib/actions/crm->-customers.d.ts +35 -0
- package/src/lib/actions/crm->-customers.d.ts.map +1 -0
- package/src/lib/actions/crm->-customers.js +180 -0
- package/src/lib/actions/crm->-customers.js.map +1 -0
- package/src/lib/actions/crm->-customers.ts +203 -0
- package/src/lib/actions/crm->-employees.d.ts +16 -0
- package/src/lib/actions/crm->-employees.d.ts.map +1 -0
- package/src/lib/actions/crm->-employees.js +77 -0
- package/src/lib/actions/crm->-employees.js.map +1 -0
- package/src/lib/actions/crm->-employees.ts +84 -0
- package/src/lib/actions/crm->-external-users.d.ts +16 -0
- package/src/lib/actions/crm->-external-users.d.ts.map +1 -0
- package/src/lib/actions/crm->-external-users.js +77 -0
- package/src/lib/actions/crm->-external-users.js.map +1 -0
- package/src/lib/actions/crm->-external-users.ts +84 -0
- package/src/lib/actions/crm->-invites.d.ts +16 -0
- package/src/lib/actions/crm->-invites.d.ts.map +1 -0
- package/src/lib/actions/crm->-invites.js +77 -0
- package/src/lib/actions/crm->-invites.js.map +1 -0
- package/src/lib/actions/crm->-invites.ts +84 -0
- package/src/lib/actions/crm->-sites.d.ts +17 -0
- package/src/lib/actions/crm->-sites.d.ts.map +1 -0
- package/src/lib/actions/crm->-sites.js +86 -0
- package/src/lib/actions/crm->-sites.js.map +1 -0
- package/src/lib/actions/crm->-sites.ts +95 -0
- package/src/lib/actions/crm->-suppliers.d.ts +16 -0
- package/src/lib/actions/crm->-suppliers.d.ts.map +1 -0
- package/src/lib/actions/crm->-suppliers.js +77 -0
- package/src/lib/actions/crm->-suppliers.js.map +1 -0
- package/src/lib/actions/crm->-suppliers.ts +84 -0
- package/src/lib/actions/data-export.d.ts +11 -0
- package/src/lib/actions/data-export.d.ts.map +1 -0
- package/src/lib/actions/data-export.js +78 -0
- package/src/lib/actions/data-export.js.map +1 -0
- package/src/lib/actions/data-export.ts +82 -0
- package/src/lib/actions/index.d.ts +25 -0
- package/src/lib/actions/index.d.ts.map +1 -0
- package/src/lib/actions/index.js +41 -0
- package/src/lib/actions/index.js.map +1 -0
- package/src/lib/actions/index.ts +24 -0
- package/src/lib/actions/jobs->-activities.d.ts +87 -0
- package/src/lib/actions/jobs->-activities.d.ts.map +1 -0
- package/src/lib/actions/jobs->-activities.js +445 -0
- package/src/lib/actions/jobs->-activities.js.map +1 -0
- package/src/lib/actions/jobs->-activities.ts +473 -0
- package/src/lib/actions/jobs->-contacts.d.ts +31 -0
- package/src/lib/actions/jobs->-contacts.d.ts.map +1 -0
- package/src/lib/actions/jobs->-contacts.js +129 -0
- package/src/lib/actions/jobs->-contacts.js.map +1 -0
- package/src/lib/actions/jobs->-contacts.ts +141 -0
- package/src/lib/actions/jobs->-files.d.ts +31 -0
- package/src/lib/actions/jobs->-files.d.ts.map +1 -0
- package/src/lib/actions/jobs->-files.js +129 -0
- package/src/lib/actions/jobs->-files.js.map +1 -0
- package/src/lib/actions/jobs->-files.ts +141 -0
- package/src/lib/actions/jobs->-tasks.d.ts +75 -0
- package/src/lib/actions/jobs->-tasks.d.ts.map +1 -0
- package/src/lib/actions/jobs->-tasks.js +395 -0
- package/src/lib/actions/jobs->-tasks.js.map +1 -0
- package/src/lib/actions/jobs->-tasks.ts +417 -0
- package/src/lib/actions/jobs.d.ts +148 -0
- package/src/lib/actions/jobs.d.ts.map +1 -0
- package/src/lib/actions/jobs.js +800 -0
- package/src/lib/actions/jobs.js.map +1 -0
- package/src/lib/actions/jobs.ts +846 -0
- package/src/lib/actions/mcp-context.d.ts +16 -0
- package/src/lib/actions/mcp-context.d.ts.map +1 -0
- package/src/lib/actions/mcp-context.js +82 -0
- package/src/lib/actions/mcp-context.js.map +1 -0
- package/src/lib/actions/mcp-context.ts +86 -0
- package/src/lib/actions/mcp.d.ts +21 -0
- package/src/lib/actions/mcp.d.ts.map +1 -0
- package/src/lib/actions/mcp.js +104 -0
- package/src/lib/actions/mcp.js.map +1 -0
- package/src/lib/actions/mcp.ts +112 -0
- package/src/lib/actions/settings.d.ts +57 -0
- package/src/lib/actions/settings.d.ts.map +1 -0
- package/src/lib/actions/settings.js +257 -0
- package/src/lib/actions/settings.js.map +1 -0
- package/src/lib/actions/settings.ts +301 -0
- package/src/lib/actions/stages->-activities.d.ts +87 -0
- package/src/lib/actions/stages->-activities.d.ts.map +1 -0
- package/src/lib/actions/stages->-activities.js +445 -0
- package/src/lib/actions/stages->-activities.js.map +1 -0
- package/src/lib/actions/stages->-activities.ts +473 -0
- package/src/lib/actions/stages->-files.d.ts +31 -0
- package/src/lib/actions/stages->-files.d.ts.map +1 -0
- package/src/lib/actions/stages->-files.js +129 -0
- package/src/lib/actions/stages->-files.js.map +1 -0
- package/src/lib/actions/stages->-files.ts +141 -0
- package/src/lib/actions/stages->-resources.d.ts +58 -0
- package/src/lib/actions/stages->-resources.d.ts.map +1 -0
- package/src/lib/actions/stages->-resources.js +279 -0
- package/src/lib/actions/stages->-resources.js.map +1 -0
- package/src/lib/actions/stages->-resources.ts +302 -0
- package/src/lib/actions/stages->-tasks.d.ts +77 -0
- package/src/lib/actions/stages->-tasks.d.ts.map +1 -0
- package/src/lib/actions/stages->-tasks.js +405 -0
- package/src/lib/actions/stages->-tasks.js.map +1 -0
- package/src/lib/actions/stages->-tasks.ts +427 -0
- package/src/lib/actions/stages.d.ts +85 -0
- package/src/lib/actions/stages.d.ts.map +1 -0
- package/src/lib/actions/stages.js +417 -0
- package/src/lib/actions/stages.js.map +1 -0
- package/src/lib/actions/stages.ts +452 -0
- package/src/lib/actions/webhooks-v2.d.ts +72 -0
- package/src/lib/actions/webhooks-v2.d.ts.map +1 -0
- package/src/lib/actions/webhooks-v2.js +297 -0
- package/src/lib/actions/webhooks-v2.js.map +1 -0
- package/src/lib/actions/webhooks-v2.ts +337 -0
- package/src/lib/actions/webhooks.d.ts +48 -0
- package/src/lib/actions/webhooks.d.ts.map +1 -0
- package/src/lib/actions/webhooks.js +292 -0
- package/src/lib/actions/webhooks.js.map +1 -0
- package/src/lib/actions/webhooks.ts +318 -0
- package/src/lib/auth.d.ts +18 -0
- package/src/lib/auth.d.ts.map +1 -0
- package/src/lib/auth.js +77 -0
- package/src/lib/auth.js.map +1 -0
- package/src/lib/auth.ts +84 -0
- package/src/lib/common/index.d.ts +11 -0
- package/src/lib/common/index.d.ts.map +1 -0
- package/src/lib/common/index.js +8 -0
- package/src/lib/common/index.js.map +1 -0
- package/src/lib/common/index.ts +12 -0
- package/src/lib/triggers/activity.d.ts +77 -0
- package/src/lib/triggers/activity.d.ts.map +1 -0
- package/src/lib/triggers/activity.js +241 -0
- package/src/lib/triggers/activity.js.map +1 -0
- package/src/lib/triggers/activity.ts +261 -0
- package/src/lib/triggers/allocation.d.ts +53 -0
- package/src/lib/triggers/allocation.d.ts.map +1 -0
- package/src/lib/triggers/allocation.js +181 -0
- package/src/lib/triggers/allocation.js.map +1 -0
- package/src/lib/triggers/allocation.ts +198 -0
- package/src/lib/triggers/bill.d.ts +102 -0
- package/src/lib/triggers/bill.d.ts.map +1 -0
- package/src/lib/triggers/bill.js +327 -0
- package/src/lib/triggers/bill.js.map +1 -0
- package/src/lib/triggers/bill.ts +355 -0
- package/src/lib/triggers/form.d.ts +19 -0
- package/src/lib/triggers/form.d.ts.map +1 -0
- package/src/lib/triggers/form.js +65 -0
- package/src/lib/triggers/form.js.map +1 -0
- package/src/lib/triggers/form.ts +68 -0
- package/src/lib/triggers/index.d.ts +10 -0
- package/src/lib/triggers/index.d.ts.map +1 -0
- package/src/lib/triggers/index.js +26 -0
- package/src/lib/triggers/index.js.map +1 -0
- package/src/lib/triggers/index.ts +9 -0
- package/src/lib/triggers/invoice.d.ts +102 -0
- package/src/lib/triggers/invoice.d.ts.map +1 -0
- package/src/lib/triggers/invoice.js +327 -0
- package/src/lib/triggers/invoice.js.map +1 -0
- package/src/lib/triggers/invoice.ts +355 -0
- package/src/lib/triggers/item.d.ts +53 -0
- package/src/lib/triggers/item.d.ts.map +1 -0
- package/src/lib/triggers/item.js +181 -0
- package/src/lib/triggers/item.js.map +1 -0
- package/src/lib/triggers/item.ts +198 -0
- package/src/lib/triggers/job.d.ts +102 -0
- package/src/lib/triggers/job.d.ts.map +1 -0
- package/src/lib/triggers/job.js +419 -0
- package/src/lib/triggers/job.js.map +1 -0
- package/src/lib/triggers/job.ts +447 -0
- package/src/lib/triggers/lead.d.ts +102 -0
- package/src/lib/triggers/lead.d.ts.map +1 -0
- package/src/lib/triggers/lead.js +319 -0
- package/src/lib/triggers/lead.js.map +1 -0
- package/src/lib/triggers/lead.ts +347 -0
- package/src/lib/triggers/opportunity.d.ts +102 -0
- package/src/lib/triggers/opportunity.d.ts.map +1 -0
- package/src/lib/triggers/opportunity.js +319 -0
- package/src/lib/triggers/opportunity.js.map +1 -0
- package/src/lib/triggers/opportunity.ts +347 -0
- package/src/lib/triggers/quote.d.ts +102 -0
- package/src/lib/triggers/quote.d.ts.map +1 -0
- package/src/lib/triggers/quote.js +327 -0
- package/src/lib/triggers/quote.js.map +1 -0
- package/src/lib/triggers/quote.ts +355 -0
- package/src/lib/triggers/site.d.ts +19 -0
- package/src/lib/triggers/site.d.ts.map +1 -0
- package/src/lib/triggers/site.js +65 -0
- package/src/lib/triggers/site.js.map +1 -0
- package/src/lib/triggers/site.ts +68 -0
- package/src/lib/triggers/stage.d.ts +102 -0
- package/src/lib/triggers/stage.d.ts.map +1 -0
- package/src/lib/triggers/stage.js +487 -0
- package/src/lib/triggers/stage.js.map +1 -0
- package/src/lib/triggers/stage.ts +515 -0
- package/src/lib/triggers/task.d.ts +102 -0
- package/src/lib/triggers/task.d.ts.map +1 -0
- package/src/lib/triggers/task.js +323 -0
- package/src/lib/triggers/task.js.map +1 -0
- package/src/lib/triggers/task.ts +351 -0
- package/src/lib/workbuddy.svg +5 -0
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.task_deleted_trigger = exports.task_status_changed_trigger = exports.task_updated_trigger = exports.task_created_trigger = void 0;
|
|
4
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
5
|
+
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
6
|
+
const auth_1 = require("../auth");
|
|
7
|
+
exports.task_created_trigger = (0, pieces_framework_1.createTrigger)({
|
|
8
|
+
name: 'TaskCreated',
|
|
9
|
+
auth: auth_1.workbuddyAuth,
|
|
10
|
+
displayName: 'Task Created',
|
|
11
|
+
description: 'Triggered when a new task is created',
|
|
12
|
+
props: {
|
|
13
|
+
filters: pieces_framework_1.Property.Json({
|
|
14
|
+
displayName: 'Filters',
|
|
15
|
+
description: 'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
|
|
16
|
+
required: false,
|
|
17
|
+
defaultValue: {},
|
|
18
|
+
}),
|
|
19
|
+
},
|
|
20
|
+
sampleData: {
|
|
21
|
+
task: {
|
|
22
|
+
id: '507f1f77bcf86cd799439011',
|
|
23
|
+
name: 'Complete inspection',
|
|
24
|
+
status: 'Open',
|
|
25
|
+
dueDate: '2026-03-10T17:00:00.000Z',
|
|
26
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
27
|
+
assignee: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
28
|
+
job: { id: '507f1f77bcf86cd799439011', name: 'J10001' },
|
|
29
|
+
stage: { id: '507f1f77bcf86cd799439011', name: 'Foundation Work' },
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
type: pieces_framework_1.TriggerStrategy.WEBHOOK,
|
|
33
|
+
async onEnable(context) {
|
|
34
|
+
const token = await (0, auth_1.getAccessToken)(context.auth);
|
|
35
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
36
|
+
// Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
|
|
37
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
38
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
39
|
+
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
40
|
+
headers: {
|
|
41
|
+
Authorization: `Bearer ${token}`,
|
|
42
|
+
'Content-Type': 'application/json',
|
|
43
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
44
|
+
},
|
|
45
|
+
body: {
|
|
46
|
+
name: `Activepieces: Task Created`,
|
|
47
|
+
url: context.webhookUrl,
|
|
48
|
+
entity: 'task',
|
|
49
|
+
events: ['Task Created'],
|
|
50
|
+
...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
|
|
51
|
+
? { filters: context.propsValue.filters }
|
|
52
|
+
: {}),
|
|
53
|
+
workflow: {
|
|
54
|
+
platform: 'activepieces',
|
|
55
|
+
integrationId: context.webhookUrl,
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
// Store webhook ID for cleanup
|
|
60
|
+
await context.store.put('webhookId', response.body.data.id);
|
|
61
|
+
},
|
|
62
|
+
async onDisable(context) {
|
|
63
|
+
const token = await (0, auth_1.getAccessToken)(context.auth);
|
|
64
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
65
|
+
const webhookId = await context.store.get('webhookId');
|
|
66
|
+
if (webhookId) {
|
|
67
|
+
// Pause webhook (server keeps it for potential reactivation)
|
|
68
|
+
await pieces_common_1.httpClient.sendRequest({
|
|
69
|
+
method: pieces_common_1.HttpMethod.PATCH,
|
|
70
|
+
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
71
|
+
headers: {
|
|
72
|
+
Authorization: `Bearer ${token}`,
|
|
73
|
+
'Content-Type': 'application/json',
|
|
74
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
75
|
+
},
|
|
76
|
+
body: {
|
|
77
|
+
status: 'paused',
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
async run(context) {
|
|
83
|
+
return [context.payload.body];
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
exports.task_updated_trigger = (0, pieces_framework_1.createTrigger)({
|
|
87
|
+
name: 'TaskUpdated',
|
|
88
|
+
auth: auth_1.workbuddyAuth,
|
|
89
|
+
displayName: 'Task Updated',
|
|
90
|
+
description: 'Triggered when a task is updated',
|
|
91
|
+
props: {
|
|
92
|
+
filters: pieces_framework_1.Property.Json({
|
|
93
|
+
displayName: 'Filters',
|
|
94
|
+
description: 'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
|
|
95
|
+
required: false,
|
|
96
|
+
defaultValue: {},
|
|
97
|
+
}),
|
|
98
|
+
},
|
|
99
|
+
sampleData: {
|
|
100
|
+
task: {
|
|
101
|
+
id: '507f1f77bcf86cd799439011',
|
|
102
|
+
name: 'Complete inspection',
|
|
103
|
+
status: 'Open',
|
|
104
|
+
dueDate: '2026-03-10T17:00:00.000Z',
|
|
105
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
106
|
+
assignee: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
107
|
+
job: { id: '507f1f77bcf86cd799439011', name: 'J10001' },
|
|
108
|
+
stage: { id: '507f1f77bcf86cd799439011', name: 'Foundation Work' },
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
type: pieces_framework_1.TriggerStrategy.WEBHOOK,
|
|
112
|
+
async onEnable(context) {
|
|
113
|
+
const token = await (0, auth_1.getAccessToken)(context.auth);
|
|
114
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
115
|
+
// Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
|
|
116
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
117
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
118
|
+
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
119
|
+
headers: {
|
|
120
|
+
Authorization: `Bearer ${token}`,
|
|
121
|
+
'Content-Type': 'application/json',
|
|
122
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
123
|
+
},
|
|
124
|
+
body: {
|
|
125
|
+
name: `Activepieces: Task Updated`,
|
|
126
|
+
url: context.webhookUrl,
|
|
127
|
+
entity: 'task',
|
|
128
|
+
events: ['Task Updated'],
|
|
129
|
+
...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
|
|
130
|
+
? { filters: context.propsValue.filters }
|
|
131
|
+
: {}),
|
|
132
|
+
workflow: {
|
|
133
|
+
platform: 'activepieces',
|
|
134
|
+
integrationId: context.webhookUrl,
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
// Store webhook ID for cleanup
|
|
139
|
+
await context.store.put('webhookId', response.body.data.id);
|
|
140
|
+
},
|
|
141
|
+
async onDisable(context) {
|
|
142
|
+
const token = await (0, auth_1.getAccessToken)(context.auth);
|
|
143
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
144
|
+
const webhookId = await context.store.get('webhookId');
|
|
145
|
+
if (webhookId) {
|
|
146
|
+
// Pause webhook (server keeps it for potential reactivation)
|
|
147
|
+
await pieces_common_1.httpClient.sendRequest({
|
|
148
|
+
method: pieces_common_1.HttpMethod.PATCH,
|
|
149
|
+
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
150
|
+
headers: {
|
|
151
|
+
Authorization: `Bearer ${token}`,
|
|
152
|
+
'Content-Type': 'application/json',
|
|
153
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
154
|
+
},
|
|
155
|
+
body: {
|
|
156
|
+
status: 'paused',
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
async run(context) {
|
|
162
|
+
return [context.payload.body];
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
exports.task_status_changed_trigger = (0, pieces_framework_1.createTrigger)({
|
|
166
|
+
name: 'TaskStatusChanged',
|
|
167
|
+
auth: auth_1.workbuddyAuth,
|
|
168
|
+
displayName: 'Task Status Changed',
|
|
169
|
+
description: 'Triggered when a task status changes',
|
|
170
|
+
props: {
|
|
171
|
+
filters: pieces_framework_1.Property.Json({
|
|
172
|
+
displayName: 'Filters',
|
|
173
|
+
description: 'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
|
|
174
|
+
required: false,
|
|
175
|
+
defaultValue: {},
|
|
176
|
+
}),
|
|
177
|
+
},
|
|
178
|
+
sampleData: {
|
|
179
|
+
task: {
|
|
180
|
+
id: '507f1f77bcf86cd799439011',
|
|
181
|
+
name: 'Complete inspection',
|
|
182
|
+
status: 'Open',
|
|
183
|
+
dueDate: '2026-03-10T17:00:00.000Z',
|
|
184
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
185
|
+
assignee: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
186
|
+
job: { id: '507f1f77bcf86cd799439011', name: 'J10001' },
|
|
187
|
+
stage: { id: '507f1f77bcf86cd799439011', name: 'Foundation Work' },
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
type: pieces_framework_1.TriggerStrategy.WEBHOOK,
|
|
191
|
+
async onEnable(context) {
|
|
192
|
+
const token = await (0, auth_1.getAccessToken)(context.auth);
|
|
193
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
194
|
+
// Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
|
|
195
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
196
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
197
|
+
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
198
|
+
headers: {
|
|
199
|
+
Authorization: `Bearer ${token}`,
|
|
200
|
+
'Content-Type': 'application/json',
|
|
201
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
202
|
+
},
|
|
203
|
+
body: {
|
|
204
|
+
name: `Activepieces: Task Status Changed`,
|
|
205
|
+
url: context.webhookUrl,
|
|
206
|
+
entity: 'task',
|
|
207
|
+
events: ['Task Status Changed'],
|
|
208
|
+
...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
|
|
209
|
+
? { filters: context.propsValue.filters }
|
|
210
|
+
: {}),
|
|
211
|
+
workflow: {
|
|
212
|
+
platform: 'activepieces',
|
|
213
|
+
integrationId: context.webhookUrl,
|
|
214
|
+
},
|
|
215
|
+
},
|
|
216
|
+
});
|
|
217
|
+
// Store webhook ID for cleanup
|
|
218
|
+
await context.store.put('webhookId', response.body.data.id);
|
|
219
|
+
},
|
|
220
|
+
async onDisable(context) {
|
|
221
|
+
const token = await (0, auth_1.getAccessToken)(context.auth);
|
|
222
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
223
|
+
const webhookId = await context.store.get('webhookId');
|
|
224
|
+
if (webhookId) {
|
|
225
|
+
// Pause webhook (server keeps it for potential reactivation)
|
|
226
|
+
await pieces_common_1.httpClient.sendRequest({
|
|
227
|
+
method: pieces_common_1.HttpMethod.PATCH,
|
|
228
|
+
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
229
|
+
headers: {
|
|
230
|
+
Authorization: `Bearer ${token}`,
|
|
231
|
+
'Content-Type': 'application/json',
|
|
232
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
233
|
+
},
|
|
234
|
+
body: {
|
|
235
|
+
status: 'paused',
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
async run(context) {
|
|
241
|
+
return [context.payload.body];
|
|
242
|
+
},
|
|
243
|
+
});
|
|
244
|
+
exports.task_deleted_trigger = (0, pieces_framework_1.createTrigger)({
|
|
245
|
+
name: 'TaskDeleted',
|
|
246
|
+
auth: auth_1.workbuddyAuth,
|
|
247
|
+
displayName: 'Task Deleted',
|
|
248
|
+
description: 'Triggered when a task is deleted',
|
|
249
|
+
props: {
|
|
250
|
+
filters: pieces_framework_1.Property.Json({
|
|
251
|
+
displayName: 'Filters',
|
|
252
|
+
description: 'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
|
|
253
|
+
required: false,
|
|
254
|
+
defaultValue: {},
|
|
255
|
+
}),
|
|
256
|
+
},
|
|
257
|
+
sampleData: {
|
|
258
|
+
task: {
|
|
259
|
+
id: '507f1f77bcf86cd799439011',
|
|
260
|
+
name: 'Complete inspection',
|
|
261
|
+
status: 'Open',
|
|
262
|
+
dueDate: '2026-03-10T17:00:00.000Z',
|
|
263
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
264
|
+
assignee: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
265
|
+
job: { id: '507f1f77bcf86cd799439011', name: 'J10001' },
|
|
266
|
+
stage: { id: '507f1f77bcf86cd799439011', name: 'Foundation Work' },
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
type: pieces_framework_1.TriggerStrategy.WEBHOOK,
|
|
270
|
+
async onEnable(context) {
|
|
271
|
+
const token = await (0, auth_1.getAccessToken)(context.auth);
|
|
272
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
273
|
+
// Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
|
|
274
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
275
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
276
|
+
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
277
|
+
headers: {
|
|
278
|
+
Authorization: `Bearer ${token}`,
|
|
279
|
+
'Content-Type': 'application/json',
|
|
280
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
281
|
+
},
|
|
282
|
+
body: {
|
|
283
|
+
name: `Activepieces: Task Deleted`,
|
|
284
|
+
url: context.webhookUrl,
|
|
285
|
+
entity: 'task',
|
|
286
|
+
events: ['Task Deleted'],
|
|
287
|
+
...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
|
|
288
|
+
? { filters: context.propsValue.filters }
|
|
289
|
+
: {}),
|
|
290
|
+
workflow: {
|
|
291
|
+
platform: 'activepieces',
|
|
292
|
+
integrationId: context.webhookUrl,
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
});
|
|
296
|
+
// Store webhook ID for cleanup
|
|
297
|
+
await context.store.put('webhookId', response.body.data.id);
|
|
298
|
+
},
|
|
299
|
+
async onDisable(context) {
|
|
300
|
+
const token = await (0, auth_1.getAccessToken)(context.auth);
|
|
301
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
302
|
+
const webhookId = await context.store.get('webhookId');
|
|
303
|
+
if (webhookId) {
|
|
304
|
+
// Pause webhook (server keeps it for potential reactivation)
|
|
305
|
+
await pieces_common_1.httpClient.sendRequest({
|
|
306
|
+
method: pieces_common_1.HttpMethod.PATCH,
|
|
307
|
+
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
308
|
+
headers: {
|
|
309
|
+
Authorization: `Bearer ${token}`,
|
|
310
|
+
'Content-Type': 'application/json',
|
|
311
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
312
|
+
},
|
|
313
|
+
body: {
|
|
314
|
+
status: 'paused',
|
|
315
|
+
},
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
async run(context) {
|
|
320
|
+
return [context.payload.body];
|
|
321
|
+
},
|
|
322
|
+
});
|
|
323
|
+
//# sourceMappingURL=task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["task.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import { createTrigger, TriggerStrategy, Property } from '@activepieces/pieces-framework';
|
|
2
|
+
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
|
|
3
|
+
import { workbuddyAuth, getAccessToken } from '../auth';
|
|
4
|
+
|
|
5
|
+
export const task_created_trigger = createTrigger({
|
|
6
|
+
name: 'TaskCreated',
|
|
7
|
+
auth: workbuddyAuth,
|
|
8
|
+
displayName: 'Task Created',
|
|
9
|
+
description: 'Triggered when a new task is created',
|
|
10
|
+
props: {
|
|
11
|
+
filters: Property.Json({
|
|
12
|
+
displayName: 'Filters',
|
|
13
|
+
description:
|
|
14
|
+
'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
|
|
15
|
+
required: false,
|
|
16
|
+
defaultValue: {},
|
|
17
|
+
}),
|
|
18
|
+
},
|
|
19
|
+
sampleData: {
|
|
20
|
+
task: {
|
|
21
|
+
id: '507f1f77bcf86cd799439011',
|
|
22
|
+
name: 'Complete inspection',
|
|
23
|
+
status: 'Open',
|
|
24
|
+
dueDate: '2026-03-10T17:00:00.000Z',
|
|
25
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
26
|
+
assignee: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
27
|
+
job: { id: '507f1f77bcf86cd799439011', name: 'J10001' },
|
|
28
|
+
stage: { id: '507f1f77bcf86cd799439011', name: 'Foundation Work' },
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
type: TriggerStrategy.WEBHOOK,
|
|
32
|
+
|
|
33
|
+
async onEnable(context) {
|
|
34
|
+
const token = await getAccessToken(context.auth);
|
|
35
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
36
|
+
|
|
37
|
+
// Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
|
|
38
|
+
const response = await httpClient.sendRequest<{ data: { id: string } }>({
|
|
39
|
+
method: HttpMethod.POST,
|
|
40
|
+
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
41
|
+
headers: {
|
|
42
|
+
Authorization: `Bearer ${token}`,
|
|
43
|
+
'Content-Type': 'application/json',
|
|
44
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
45
|
+
},
|
|
46
|
+
body: {
|
|
47
|
+
name: `Activepieces: Task Created`,
|
|
48
|
+
url: context.webhookUrl,
|
|
49
|
+
entity: 'task',
|
|
50
|
+
events: ['Task Created'],
|
|
51
|
+
...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
|
|
52
|
+
? { filters: context.propsValue.filters }
|
|
53
|
+
: {}),
|
|
54
|
+
workflow: {
|
|
55
|
+
platform: 'activepieces',
|
|
56
|
+
integrationId: context.webhookUrl,
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// Store webhook ID for cleanup
|
|
62
|
+
await context.store.put('webhookId', response.body.data.id);
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
async onDisable(context) {
|
|
66
|
+
const token = await getAccessToken(context.auth);
|
|
67
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
68
|
+
const webhookId = await context.store.get<string>('webhookId');
|
|
69
|
+
|
|
70
|
+
if (webhookId) {
|
|
71
|
+
// Pause webhook (server keeps it for potential reactivation)
|
|
72
|
+
await httpClient.sendRequest({
|
|
73
|
+
method: HttpMethod.PATCH,
|
|
74
|
+
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
75
|
+
headers: {
|
|
76
|
+
Authorization: `Bearer ${token}`,
|
|
77
|
+
'Content-Type': 'application/json',
|
|
78
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
79
|
+
},
|
|
80
|
+
body: {
|
|
81
|
+
status: 'paused',
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
async run(context) {
|
|
88
|
+
return [context.payload.body];
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
export const task_updated_trigger = createTrigger({
|
|
93
|
+
name: 'TaskUpdated',
|
|
94
|
+
auth: workbuddyAuth,
|
|
95
|
+
displayName: 'Task Updated',
|
|
96
|
+
description: 'Triggered when a task is updated',
|
|
97
|
+
props: {
|
|
98
|
+
filters: Property.Json({
|
|
99
|
+
displayName: 'Filters',
|
|
100
|
+
description:
|
|
101
|
+
'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
|
|
102
|
+
required: false,
|
|
103
|
+
defaultValue: {},
|
|
104
|
+
}),
|
|
105
|
+
},
|
|
106
|
+
sampleData: {
|
|
107
|
+
task: {
|
|
108
|
+
id: '507f1f77bcf86cd799439011',
|
|
109
|
+
name: 'Complete inspection',
|
|
110
|
+
status: 'Open',
|
|
111
|
+
dueDate: '2026-03-10T17:00:00.000Z',
|
|
112
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
113
|
+
assignee: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
114
|
+
job: { id: '507f1f77bcf86cd799439011', name: 'J10001' },
|
|
115
|
+
stage: { id: '507f1f77bcf86cd799439011', name: 'Foundation Work' },
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
type: TriggerStrategy.WEBHOOK,
|
|
119
|
+
|
|
120
|
+
async onEnable(context) {
|
|
121
|
+
const token = await getAccessToken(context.auth);
|
|
122
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
123
|
+
|
|
124
|
+
// Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
|
|
125
|
+
const response = await httpClient.sendRequest<{ data: { id: string } }>({
|
|
126
|
+
method: HttpMethod.POST,
|
|
127
|
+
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
128
|
+
headers: {
|
|
129
|
+
Authorization: `Bearer ${token}`,
|
|
130
|
+
'Content-Type': 'application/json',
|
|
131
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
132
|
+
},
|
|
133
|
+
body: {
|
|
134
|
+
name: `Activepieces: Task Updated`,
|
|
135
|
+
url: context.webhookUrl,
|
|
136
|
+
entity: 'task',
|
|
137
|
+
events: ['Task Updated'],
|
|
138
|
+
...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
|
|
139
|
+
? { filters: context.propsValue.filters }
|
|
140
|
+
: {}),
|
|
141
|
+
workflow: {
|
|
142
|
+
platform: 'activepieces',
|
|
143
|
+
integrationId: context.webhookUrl,
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
// Store webhook ID for cleanup
|
|
149
|
+
await context.store.put('webhookId', response.body.data.id);
|
|
150
|
+
},
|
|
151
|
+
|
|
152
|
+
async onDisable(context) {
|
|
153
|
+
const token = await getAccessToken(context.auth);
|
|
154
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
155
|
+
const webhookId = await context.store.get<string>('webhookId');
|
|
156
|
+
|
|
157
|
+
if (webhookId) {
|
|
158
|
+
// Pause webhook (server keeps it for potential reactivation)
|
|
159
|
+
await httpClient.sendRequest({
|
|
160
|
+
method: HttpMethod.PATCH,
|
|
161
|
+
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
162
|
+
headers: {
|
|
163
|
+
Authorization: `Bearer ${token}`,
|
|
164
|
+
'Content-Type': 'application/json',
|
|
165
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
166
|
+
},
|
|
167
|
+
body: {
|
|
168
|
+
status: 'paused',
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
|
|
174
|
+
async run(context) {
|
|
175
|
+
return [context.payload.body];
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
export const task_status_changed_trigger = createTrigger({
|
|
180
|
+
name: 'TaskStatusChanged',
|
|
181
|
+
auth: workbuddyAuth,
|
|
182
|
+
displayName: 'Task Status Changed',
|
|
183
|
+
description: 'Triggered when a task status changes',
|
|
184
|
+
props: {
|
|
185
|
+
filters: Property.Json({
|
|
186
|
+
displayName: 'Filters',
|
|
187
|
+
description:
|
|
188
|
+
'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
|
|
189
|
+
required: false,
|
|
190
|
+
defaultValue: {},
|
|
191
|
+
}),
|
|
192
|
+
},
|
|
193
|
+
sampleData: {
|
|
194
|
+
task: {
|
|
195
|
+
id: '507f1f77bcf86cd799439011',
|
|
196
|
+
name: 'Complete inspection',
|
|
197
|
+
status: 'Open',
|
|
198
|
+
dueDate: '2026-03-10T17:00:00.000Z',
|
|
199
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
200
|
+
assignee: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
201
|
+
job: { id: '507f1f77bcf86cd799439011', name: 'J10001' },
|
|
202
|
+
stage: { id: '507f1f77bcf86cd799439011', name: 'Foundation Work' },
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
type: TriggerStrategy.WEBHOOK,
|
|
206
|
+
|
|
207
|
+
async onEnable(context) {
|
|
208
|
+
const token = await getAccessToken(context.auth);
|
|
209
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
210
|
+
|
|
211
|
+
// Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
|
|
212
|
+
const response = await httpClient.sendRequest<{ data: { id: string } }>({
|
|
213
|
+
method: HttpMethod.POST,
|
|
214
|
+
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
215
|
+
headers: {
|
|
216
|
+
Authorization: `Bearer ${token}`,
|
|
217
|
+
'Content-Type': 'application/json',
|
|
218
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
219
|
+
},
|
|
220
|
+
body: {
|
|
221
|
+
name: `Activepieces: Task Status Changed`,
|
|
222
|
+
url: context.webhookUrl,
|
|
223
|
+
entity: 'task',
|
|
224
|
+
events: ['Task Status Changed'],
|
|
225
|
+
...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
|
|
226
|
+
? { filters: context.propsValue.filters }
|
|
227
|
+
: {}),
|
|
228
|
+
workflow: {
|
|
229
|
+
platform: 'activepieces',
|
|
230
|
+
integrationId: context.webhookUrl,
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
// Store webhook ID for cleanup
|
|
236
|
+
await context.store.put('webhookId', response.body.data.id);
|
|
237
|
+
},
|
|
238
|
+
|
|
239
|
+
async onDisable(context) {
|
|
240
|
+
const token = await getAccessToken(context.auth);
|
|
241
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
242
|
+
const webhookId = await context.store.get<string>('webhookId');
|
|
243
|
+
|
|
244
|
+
if (webhookId) {
|
|
245
|
+
// Pause webhook (server keeps it for potential reactivation)
|
|
246
|
+
await httpClient.sendRequest({
|
|
247
|
+
method: HttpMethod.PATCH,
|
|
248
|
+
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
249
|
+
headers: {
|
|
250
|
+
Authorization: `Bearer ${token}`,
|
|
251
|
+
'Content-Type': 'application/json',
|
|
252
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
253
|
+
},
|
|
254
|
+
body: {
|
|
255
|
+
status: 'paused',
|
|
256
|
+
},
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
|
|
261
|
+
async run(context) {
|
|
262
|
+
return [context.payload.body];
|
|
263
|
+
},
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
export const task_deleted_trigger = createTrigger({
|
|
267
|
+
name: 'TaskDeleted',
|
|
268
|
+
auth: workbuddyAuth,
|
|
269
|
+
displayName: 'Task Deleted',
|
|
270
|
+
description: 'Triggered when a task is deleted',
|
|
271
|
+
props: {
|
|
272
|
+
filters: Property.Json({
|
|
273
|
+
displayName: 'Filters',
|
|
274
|
+
description:
|
|
275
|
+
'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
|
|
276
|
+
required: false,
|
|
277
|
+
defaultValue: {},
|
|
278
|
+
}),
|
|
279
|
+
},
|
|
280
|
+
sampleData: {
|
|
281
|
+
task: {
|
|
282
|
+
id: '507f1f77bcf86cd799439011',
|
|
283
|
+
name: 'Complete inspection',
|
|
284
|
+
status: 'Open',
|
|
285
|
+
dueDate: '2026-03-10T17:00:00.000Z',
|
|
286
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
287
|
+
assignee: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
288
|
+
job: { id: '507f1f77bcf86cd799439011', name: 'J10001' },
|
|
289
|
+
stage: { id: '507f1f77bcf86cd799439011', name: 'Foundation Work' },
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
type: TriggerStrategy.WEBHOOK,
|
|
293
|
+
|
|
294
|
+
async onEnable(context) {
|
|
295
|
+
const token = await getAccessToken(context.auth);
|
|
296
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
297
|
+
|
|
298
|
+
// Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
|
|
299
|
+
const response = await httpClient.sendRequest<{ data: { id: string } }>({
|
|
300
|
+
method: HttpMethod.POST,
|
|
301
|
+
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
302
|
+
headers: {
|
|
303
|
+
Authorization: `Bearer ${token}`,
|
|
304
|
+
'Content-Type': 'application/json',
|
|
305
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
306
|
+
},
|
|
307
|
+
body: {
|
|
308
|
+
name: `Activepieces: Task Deleted`,
|
|
309
|
+
url: context.webhookUrl,
|
|
310
|
+
entity: 'task',
|
|
311
|
+
events: ['Task Deleted'],
|
|
312
|
+
...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
|
|
313
|
+
? { filters: context.propsValue.filters }
|
|
314
|
+
: {}),
|
|
315
|
+
workflow: {
|
|
316
|
+
platform: 'activepieces',
|
|
317
|
+
integrationId: context.webhookUrl,
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
// Store webhook ID for cleanup
|
|
323
|
+
await context.store.put('webhookId', response.body.data.id);
|
|
324
|
+
},
|
|
325
|
+
|
|
326
|
+
async onDisable(context) {
|
|
327
|
+
const token = await getAccessToken(context.auth);
|
|
328
|
+
const baseUrl = context.auth.props.baseUrl;
|
|
329
|
+
const webhookId = await context.store.get<string>('webhookId');
|
|
330
|
+
|
|
331
|
+
if (webhookId) {
|
|
332
|
+
// Pause webhook (server keeps it for potential reactivation)
|
|
333
|
+
await httpClient.sendRequest({
|
|
334
|
+
method: HttpMethod.PATCH,
|
|
335
|
+
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
336
|
+
headers: {
|
|
337
|
+
Authorization: `Bearer ${token}`,
|
|
338
|
+
'Content-Type': 'application/json',
|
|
339
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
340
|
+
},
|
|
341
|
+
body: {
|
|
342
|
+
status: 'paused',
|
|
343
|
+
},
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
|
|
348
|
+
async run(context) {
|
|
349
|
+
return [context.payload.body];
|
|
350
|
+
},
|
|
351
|
+
});
|