@workbuddy/piece-workbuddy-edge 1.0.10 → 1.0.12
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 +1 -1
- package/src/lib/actions/agents.d.ts.map +1 -1
- package/src/lib/actions/agents.js +4 -2
- package/src/lib/actions/agents.js.map +1 -1
- package/src/lib/actions/agents.ts +6 -2
- package/src/lib/actions/attachments.d.ts.map +1 -1
- package/src/lib/actions/attachments.js +2 -1
- package/src/lib/actions/attachments.js.map +1 -1
- package/src/lib/actions/attachments.ts +3 -1
- package/src/lib/actions/jobs-activities.d.ts.map +1 -1
- package/src/lib/actions/jobs-activities.js +18 -13
- package/src/lib/actions/jobs-activities.js.map +1 -1
- package/src/lib/actions/jobs-activities.ts +23 -13
- package/src/lib/actions/jobs-files.js +4 -4
- package/src/lib/actions/jobs-files.js.map +1 -1
- package/src/lib/actions/jobs-files.ts +4 -4
- package/src/lib/actions/jobs-tasks.d.ts.map +1 -1
- package/src/lib/actions/jobs-tasks.js +10 -8
- package/src/lib/actions/jobs-tasks.js.map +1 -1
- package/src/lib/actions/jobs-tasks.ts +13 -8
- package/src/lib/actions/jobs.d.ts.map +1 -1
- package/src/lib/actions/jobs.js +4 -2
- package/src/lib/actions/jobs.js.map +1 -1
- package/src/lib/actions/jobs.ts +7 -2
- package/src/lib/actions/mcp.d.ts.map +1 -1
- package/src/lib/actions/mcp.js +2 -1
- package/src/lib/actions/mcp.js.map +1 -1
- package/src/lib/actions/mcp.ts +3 -1
- package/src/lib/actions/stages-activities.d.ts.map +1 -1
- package/src/lib/actions/stages-activities.js +18 -13
- package/src/lib/actions/stages-activities.js.map +1 -1
- package/src/lib/actions/stages-activities.ts +23 -13
- package/src/lib/actions/stages-files.js +4 -4
- package/src/lib/actions/stages-files.js.map +1 -1
- package/src/lib/actions/stages-files.ts +4 -4
- package/src/lib/actions/stages-resources.d.ts.map +1 -1
- package/src/lib/actions/stages-resources.js +4 -2
- package/src/lib/actions/stages-resources.js.map +1 -1
- package/src/lib/actions/stages-resources.ts +6 -2
- package/src/lib/actions/stages-tasks.d.ts.map +1 -1
- package/src/lib/actions/stages-tasks.js +10 -8
- package/src/lib/actions/stages-tasks.js.map +1 -1
- package/src/lib/actions/stages-tasks.ts +13 -8
- package/src/lib/actions/stages.d.ts +6 -2
- package/src/lib/actions/stages.d.ts.map +1 -1
- package/src/lib/actions/stages.js +61 -11
- package/src/lib/actions/stages.js.map +1 -1
- package/src/lib/actions/stages.ts +72 -11
- package/src/lib/actions/webhooks-v2.js +9 -9
- package/src/lib/actions/webhooks-v2.js.map +1 -1
- package/src/lib/actions/webhooks-v2.ts +9 -9
- package/src/lib/triggers/activity.d.ts.map +1 -1
- package/src/lib/triggers/activity.js +54 -42
- package/src/lib/triggers/activity.js.map +1 -1
- package/src/lib/triggers/activity.ts +54 -42
- package/src/lib/triggers/bill.d.ts.map +1 -1
- package/src/lib/triggers/bill.js +80 -64
- package/src/lib/triggers/bill.js.map +1 -1
- package/src/lib/triggers/bill.ts +80 -64
- package/src/lib/triggers/invoice.d.ts.map +1 -1
- package/src/lib/triggers/invoice.js +80 -64
- package/src/lib/triggers/invoice.js.map +1 -1
- package/src/lib/triggers/invoice.ts +80 -64
- package/src/lib/triggers/job.d.ts.map +1 -1
- package/src/lib/triggers/job.js +160 -144
- package/src/lib/triggers/job.js.map +1 -1
- package/src/lib/triggers/job.ts +160 -144
- package/src/lib/triggers/lead.d.ts.map +1 -1
- package/src/lib/triggers/lead.js +72 -56
- package/src/lib/triggers/lead.js.map +1 -1
- package/src/lib/triggers/lead.ts +72 -56
- package/src/lib/triggers/opportunity.d.ts.map +1 -1
- package/src/lib/triggers/opportunity.js +72 -56
- package/src/lib/triggers/opportunity.js.map +1 -1
- package/src/lib/triggers/opportunity.ts +72 -56
- package/src/lib/triggers/quote.d.ts.map +1 -1
- package/src/lib/triggers/quote.js +80 -64
- package/src/lib/triggers/quote.js.map +1 -1
- package/src/lib/triggers/quote.ts +80 -64
- package/src/lib/triggers/stage.d.ts.map +1 -1
- package/src/lib/triggers/stage.js +188 -172
- package/src/lib/triggers/stage.js.map +1 -1
- package/src/lib/triggers/stage.ts +188 -172
- package/src/lib/triggers/task.d.ts.map +1 -1
- package/src/lib/triggers/task.js +76 -60
- package/src/lib/triggers/task.js.map +1 -1
- package/src/lib/triggers/task.ts +76 -60
|
@@ -186,26 +186,51 @@ export const stage_created_trigger = createTrigger({
|
|
|
186
186
|
}),
|
|
187
187
|
},
|
|
188
188
|
sampleData: {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
189
|
+
id: 'whd_019ceacb-232b-764f-8dfd-748e1a226de2',
|
|
190
|
+
event: 'Stage Created',
|
|
191
|
+
action: 'create',
|
|
192
|
+
createdAt: '2026-03-14T05:21:47.307Z',
|
|
193
|
+
webhookTimestamp: 1773465707307,
|
|
194
|
+
data: {
|
|
195
|
+
workOrder: {
|
|
196
|
+
id: '507f1f77bcf86cd799439011',
|
|
197
|
+
name: 'Foundation Work',
|
|
198
|
+
workOrderNumber: 'J10001-5039',
|
|
199
|
+
jobNumber: 'J10001',
|
|
200
|
+
description: 'Sample stage description',
|
|
201
|
+
status: 'In Progress',
|
|
202
|
+
previousStatus: 'Open',
|
|
203
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
204
|
+
updatedAt: '2026-03-05T10:00:00.000Z',
|
|
205
|
+
startDate: '2026-03-05T08:00:00.000Z',
|
|
206
|
+
dueDate: '2026-03-10T17:00:00.000Z',
|
|
207
|
+
completedDate: null,
|
|
208
|
+
finalisedDate: null,
|
|
209
|
+
customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
210
|
+
owner: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
211
|
+
stageOwner: { id: '507f1f77bcf86cd799439011', name: 'Jane Doe' },
|
|
212
|
+
technician: { id: '507f1f77bcf86cd799439011', name: 'Mike Tech' },
|
|
213
|
+
subcontractor: null,
|
|
214
|
+
priority: { id: '507f1f77bcf86cd799439011', name: 'High' },
|
|
215
|
+
site: {
|
|
216
|
+
id: '507f1f77bcf86cd799439011',
|
|
217
|
+
name: 'Main Office',
|
|
218
|
+
address: {
|
|
219
|
+
street: '123 Main St',
|
|
220
|
+
suburb: 'Sydney',
|
|
221
|
+
state: 'NSW',
|
|
222
|
+
postcode: '2000',
|
|
223
|
+
country: 'Australia',
|
|
224
|
+
formatted: '123 Main St, Sydney NSW 2000',
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
workCategory: { id: '507f1f77bcf86cd799439011', name: 'Electrical' },
|
|
228
|
+
labels: [{ id: '507f1f77bcf86cd799439011', name: 'Urgent' }],
|
|
229
|
+
zones: [{ id: '507f1f77bcf86cd799439011', name: 'North' }],
|
|
230
|
+
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
231
|
+
},
|
|
206
232
|
technician: { id: '507f1f77bcf86cd799439011', name: 'Mike Tech' },
|
|
207
|
-
|
|
208
|
-
priority: { id: '507f1f77bcf86cd799439011', name: 'High' },
|
|
233
|
+
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
209
234
|
site: {
|
|
210
235
|
id: '507f1f77bcf86cd799439011',
|
|
211
236
|
name: 'Main Office',
|
|
@@ -218,24 +243,6 @@ export const stage_created_trigger = createTrigger({
|
|
|
218
243
|
formatted: '123 Main St, Sydney NSW 2000',
|
|
219
244
|
},
|
|
220
245
|
},
|
|
221
|
-
workCategory: { id: '507f1f77bcf86cd799439011', name: 'Electrical' },
|
|
222
|
-
labels: [{ id: '507f1f77bcf86cd799439011', name: 'Urgent' }],
|
|
223
|
-
zones: [{ id: '507f1f77bcf86cd799439011', name: 'North' }],
|
|
224
|
-
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
225
|
-
},
|
|
226
|
-
technician: { id: '507f1f77bcf86cd799439011', name: 'Mike Tech' },
|
|
227
|
-
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
228
|
-
site: {
|
|
229
|
-
id: '507f1f77bcf86cd799439011',
|
|
230
|
-
name: 'Main Office',
|
|
231
|
-
address: {
|
|
232
|
-
street: '123 Main St',
|
|
233
|
-
suburb: 'Sydney',
|
|
234
|
-
state: 'NSW',
|
|
235
|
-
postcode: '2000',
|
|
236
|
-
country: 'Australia',
|
|
237
|
-
formatted: '123 Main St, Sydney NSW 2000',
|
|
238
|
-
},
|
|
239
246
|
},
|
|
240
247
|
},
|
|
241
248
|
type: TriggerStrategy.WEBHOOK,
|
|
@@ -254,7 +261,7 @@ export const stage_created_trigger = createTrigger({
|
|
|
254
261
|
if (context.propsValue.stageStatus?.length)
|
|
255
262
|
filters.stageStatus = context.propsValue.stageStatus.map((v: string) => JSON.parse(v));
|
|
256
263
|
if (context.propsValue.schedulingTag?.length) filters.schedulingTag = context.propsValue.schedulingTag;
|
|
257
|
-
// Register webhook with WorkBuddy v2 API
|
|
264
|
+
// Register webhook with WorkBuddy v2 API
|
|
258
265
|
const response = await httpClient.sendRequest<{ data: { id: string } }>({
|
|
259
266
|
method: HttpMethod.POST,
|
|
260
267
|
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
@@ -286,18 +293,15 @@ export const stage_created_trigger = createTrigger({
|
|
|
286
293
|
const webhookId = await context.store.get<string>('webhookId');
|
|
287
294
|
|
|
288
295
|
if (webhookId) {
|
|
289
|
-
//
|
|
296
|
+
// Delete webhook to avoid stale subscriptions causing duplicate trigger deliveries
|
|
290
297
|
await httpClient.sendRequest({
|
|
291
|
-
method: HttpMethod.
|
|
298
|
+
method: HttpMethod.DELETE,
|
|
292
299
|
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
293
300
|
headers: {
|
|
294
301
|
Authorization: `Bearer ${token}`,
|
|
295
302
|
'Content-Type': 'application/json',
|
|
296
303
|
'X-WorkBuddy-Version': '2026-01',
|
|
297
304
|
},
|
|
298
|
-
body: {
|
|
299
|
-
status: 'paused',
|
|
300
|
-
},
|
|
301
305
|
});
|
|
302
306
|
}
|
|
303
307
|
},
|
|
@@ -491,26 +495,51 @@ export const stage_updated_trigger = createTrigger({
|
|
|
491
495
|
}),
|
|
492
496
|
},
|
|
493
497
|
sampleData: {
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
498
|
+
id: 'whd_019ceacb-232b-764f-8dfd-748e1a226de2',
|
|
499
|
+
event: 'Stage Updated',
|
|
500
|
+
action: 'update',
|
|
501
|
+
createdAt: '2026-03-14T05:21:47.307Z',
|
|
502
|
+
webhookTimestamp: 1773465707307,
|
|
503
|
+
data: {
|
|
504
|
+
workOrder: {
|
|
505
|
+
id: '507f1f77bcf86cd799439011',
|
|
506
|
+
name: 'Foundation Work',
|
|
507
|
+
workOrderNumber: 'J10001-5039',
|
|
508
|
+
jobNumber: 'J10001',
|
|
509
|
+
description: 'Sample stage description',
|
|
510
|
+
status: 'In Progress',
|
|
511
|
+
previousStatus: 'Open',
|
|
512
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
513
|
+
updatedAt: '2026-03-05T10:00:00.000Z',
|
|
514
|
+
startDate: '2026-03-05T08:00:00.000Z',
|
|
515
|
+
dueDate: '2026-03-10T17:00:00.000Z',
|
|
516
|
+
completedDate: null,
|
|
517
|
+
finalisedDate: null,
|
|
518
|
+
customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
519
|
+
owner: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
520
|
+
stageOwner: { id: '507f1f77bcf86cd799439011', name: 'Jane Doe' },
|
|
521
|
+
technician: { id: '507f1f77bcf86cd799439011', name: 'Mike Tech' },
|
|
522
|
+
subcontractor: null,
|
|
523
|
+
priority: { id: '507f1f77bcf86cd799439011', name: 'High' },
|
|
524
|
+
site: {
|
|
525
|
+
id: '507f1f77bcf86cd799439011',
|
|
526
|
+
name: 'Main Office',
|
|
527
|
+
address: {
|
|
528
|
+
street: '123 Main St',
|
|
529
|
+
suburb: 'Sydney',
|
|
530
|
+
state: 'NSW',
|
|
531
|
+
postcode: '2000',
|
|
532
|
+
country: 'Australia',
|
|
533
|
+
formatted: '123 Main St, Sydney NSW 2000',
|
|
534
|
+
},
|
|
535
|
+
},
|
|
536
|
+
workCategory: { id: '507f1f77bcf86cd799439011', name: 'Electrical' },
|
|
537
|
+
labels: [{ id: '507f1f77bcf86cd799439011', name: 'Urgent' }],
|
|
538
|
+
zones: [{ id: '507f1f77bcf86cd799439011', name: 'North' }],
|
|
539
|
+
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
540
|
+
},
|
|
511
541
|
technician: { id: '507f1f77bcf86cd799439011', name: 'Mike Tech' },
|
|
512
|
-
|
|
513
|
-
priority: { id: '507f1f77bcf86cd799439011', name: 'High' },
|
|
542
|
+
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
514
543
|
site: {
|
|
515
544
|
id: '507f1f77bcf86cd799439011',
|
|
516
545
|
name: 'Main Office',
|
|
@@ -523,24 +552,6 @@ export const stage_updated_trigger = createTrigger({
|
|
|
523
552
|
formatted: '123 Main St, Sydney NSW 2000',
|
|
524
553
|
},
|
|
525
554
|
},
|
|
526
|
-
workCategory: { id: '507f1f77bcf86cd799439011', name: 'Electrical' },
|
|
527
|
-
labels: [{ id: '507f1f77bcf86cd799439011', name: 'Urgent' }],
|
|
528
|
-
zones: [{ id: '507f1f77bcf86cd799439011', name: 'North' }],
|
|
529
|
-
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
530
|
-
},
|
|
531
|
-
technician: { id: '507f1f77bcf86cd799439011', name: 'Mike Tech' },
|
|
532
|
-
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
533
|
-
site: {
|
|
534
|
-
id: '507f1f77bcf86cd799439011',
|
|
535
|
-
name: 'Main Office',
|
|
536
|
-
address: {
|
|
537
|
-
street: '123 Main St',
|
|
538
|
-
suburb: 'Sydney',
|
|
539
|
-
state: 'NSW',
|
|
540
|
-
postcode: '2000',
|
|
541
|
-
country: 'Australia',
|
|
542
|
-
formatted: '123 Main St, Sydney NSW 2000',
|
|
543
|
-
},
|
|
544
555
|
},
|
|
545
556
|
},
|
|
546
557
|
type: TriggerStrategy.WEBHOOK,
|
|
@@ -559,7 +570,7 @@ export const stage_updated_trigger = createTrigger({
|
|
|
559
570
|
if (context.propsValue.stageStatus?.length)
|
|
560
571
|
filters.stageStatus = context.propsValue.stageStatus.map((v: string) => JSON.parse(v));
|
|
561
572
|
if (context.propsValue.schedulingTag?.length) filters.schedulingTag = context.propsValue.schedulingTag;
|
|
562
|
-
// Register webhook with WorkBuddy v2 API
|
|
573
|
+
// Register webhook with WorkBuddy v2 API
|
|
563
574
|
const response = await httpClient.sendRequest<{ data: { id: string } }>({
|
|
564
575
|
method: HttpMethod.POST,
|
|
565
576
|
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
@@ -591,18 +602,15 @@ export const stage_updated_trigger = createTrigger({
|
|
|
591
602
|
const webhookId = await context.store.get<string>('webhookId');
|
|
592
603
|
|
|
593
604
|
if (webhookId) {
|
|
594
|
-
//
|
|
605
|
+
// Delete webhook to avoid stale subscriptions causing duplicate trigger deliveries
|
|
595
606
|
await httpClient.sendRequest({
|
|
596
|
-
method: HttpMethod.
|
|
607
|
+
method: HttpMethod.DELETE,
|
|
597
608
|
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
598
609
|
headers: {
|
|
599
610
|
Authorization: `Bearer ${token}`,
|
|
600
611
|
'Content-Type': 'application/json',
|
|
601
612
|
'X-WorkBuddy-Version': '2026-01',
|
|
602
613
|
},
|
|
603
|
-
body: {
|
|
604
|
-
status: 'paused',
|
|
605
|
-
},
|
|
606
614
|
});
|
|
607
615
|
}
|
|
608
616
|
},
|
|
@@ -796,26 +804,51 @@ export const stage_status_changed_trigger = createTrigger({
|
|
|
796
804
|
}),
|
|
797
805
|
},
|
|
798
806
|
sampleData: {
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
807
|
+
id: 'whd_019ceacb-232b-764f-8dfd-748e1a226de2',
|
|
808
|
+
event: 'Stage Status Changed',
|
|
809
|
+
action: 'update',
|
|
810
|
+
createdAt: '2026-03-14T05:21:47.307Z',
|
|
811
|
+
webhookTimestamp: 1773465707307,
|
|
812
|
+
data: {
|
|
813
|
+
workOrder: {
|
|
814
|
+
id: '507f1f77bcf86cd799439011',
|
|
815
|
+
name: 'Foundation Work',
|
|
816
|
+
workOrderNumber: 'J10001-5039',
|
|
817
|
+
jobNumber: 'J10001',
|
|
818
|
+
description: 'Sample stage description',
|
|
819
|
+
status: 'In Progress',
|
|
820
|
+
previousStatus: 'Open',
|
|
821
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
822
|
+
updatedAt: '2026-03-05T10:00:00.000Z',
|
|
823
|
+
startDate: '2026-03-05T08:00:00.000Z',
|
|
824
|
+
dueDate: '2026-03-10T17:00:00.000Z',
|
|
825
|
+
completedDate: null,
|
|
826
|
+
finalisedDate: null,
|
|
827
|
+
customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
828
|
+
owner: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
829
|
+
stageOwner: { id: '507f1f77bcf86cd799439011', name: 'Jane Doe' },
|
|
830
|
+
technician: { id: '507f1f77bcf86cd799439011', name: 'Mike Tech' },
|
|
831
|
+
subcontractor: null,
|
|
832
|
+
priority: { id: '507f1f77bcf86cd799439011', name: 'High' },
|
|
833
|
+
site: {
|
|
834
|
+
id: '507f1f77bcf86cd799439011',
|
|
835
|
+
name: 'Main Office',
|
|
836
|
+
address: {
|
|
837
|
+
street: '123 Main St',
|
|
838
|
+
suburb: 'Sydney',
|
|
839
|
+
state: 'NSW',
|
|
840
|
+
postcode: '2000',
|
|
841
|
+
country: 'Australia',
|
|
842
|
+
formatted: '123 Main St, Sydney NSW 2000',
|
|
843
|
+
},
|
|
844
|
+
},
|
|
845
|
+
workCategory: { id: '507f1f77bcf86cd799439011', name: 'Electrical' },
|
|
846
|
+
labels: [{ id: '507f1f77bcf86cd799439011', name: 'Urgent' }],
|
|
847
|
+
zones: [{ id: '507f1f77bcf86cd799439011', name: 'North' }],
|
|
848
|
+
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
849
|
+
},
|
|
816
850
|
technician: { id: '507f1f77bcf86cd799439011', name: 'Mike Tech' },
|
|
817
|
-
|
|
818
|
-
priority: { id: '507f1f77bcf86cd799439011', name: 'High' },
|
|
851
|
+
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
819
852
|
site: {
|
|
820
853
|
id: '507f1f77bcf86cd799439011',
|
|
821
854
|
name: 'Main Office',
|
|
@@ -828,24 +861,6 @@ export const stage_status_changed_trigger = createTrigger({
|
|
|
828
861
|
formatted: '123 Main St, Sydney NSW 2000',
|
|
829
862
|
},
|
|
830
863
|
},
|
|
831
|
-
workCategory: { id: '507f1f77bcf86cd799439011', name: 'Electrical' },
|
|
832
|
-
labels: [{ id: '507f1f77bcf86cd799439011', name: 'Urgent' }],
|
|
833
|
-
zones: [{ id: '507f1f77bcf86cd799439011', name: 'North' }],
|
|
834
|
-
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
835
|
-
},
|
|
836
|
-
technician: { id: '507f1f77bcf86cd799439011', name: 'Mike Tech' },
|
|
837
|
-
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
838
|
-
site: {
|
|
839
|
-
id: '507f1f77bcf86cd799439011',
|
|
840
|
-
name: 'Main Office',
|
|
841
|
-
address: {
|
|
842
|
-
street: '123 Main St',
|
|
843
|
-
suburb: 'Sydney',
|
|
844
|
-
state: 'NSW',
|
|
845
|
-
postcode: '2000',
|
|
846
|
-
country: 'Australia',
|
|
847
|
-
formatted: '123 Main St, Sydney NSW 2000',
|
|
848
|
-
},
|
|
849
864
|
},
|
|
850
865
|
},
|
|
851
866
|
type: TriggerStrategy.WEBHOOK,
|
|
@@ -864,7 +879,7 @@ export const stage_status_changed_trigger = createTrigger({
|
|
|
864
879
|
if (context.propsValue.stageStatus?.length)
|
|
865
880
|
filters.stageStatus = context.propsValue.stageStatus.map((v: string) => JSON.parse(v));
|
|
866
881
|
if (context.propsValue.schedulingTag?.length) filters.schedulingTag = context.propsValue.schedulingTag;
|
|
867
|
-
// Register webhook with WorkBuddy v2 API
|
|
882
|
+
// Register webhook with WorkBuddy v2 API
|
|
868
883
|
const response = await httpClient.sendRequest<{ data: { id: string } }>({
|
|
869
884
|
method: HttpMethod.POST,
|
|
870
885
|
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
@@ -896,18 +911,15 @@ export const stage_status_changed_trigger = createTrigger({
|
|
|
896
911
|
const webhookId = await context.store.get<string>('webhookId');
|
|
897
912
|
|
|
898
913
|
if (webhookId) {
|
|
899
|
-
//
|
|
914
|
+
// Delete webhook to avoid stale subscriptions causing duplicate trigger deliveries
|
|
900
915
|
await httpClient.sendRequest({
|
|
901
|
-
method: HttpMethod.
|
|
916
|
+
method: HttpMethod.DELETE,
|
|
902
917
|
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
903
918
|
headers: {
|
|
904
919
|
Authorization: `Bearer ${token}`,
|
|
905
920
|
'Content-Type': 'application/json',
|
|
906
921
|
'X-WorkBuddy-Version': '2026-01',
|
|
907
922
|
},
|
|
908
|
-
body: {
|
|
909
|
-
status: 'paused',
|
|
910
|
-
},
|
|
911
923
|
});
|
|
912
924
|
}
|
|
913
925
|
},
|
|
@@ -1101,26 +1113,51 @@ export const stage_deleted_trigger = createTrigger({
|
|
|
1101
1113
|
}),
|
|
1102
1114
|
},
|
|
1103
1115
|
sampleData: {
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1116
|
+
id: 'whd_019ceacb-232b-764f-8dfd-748e1a226de2',
|
|
1117
|
+
event: 'Stage Deleted',
|
|
1118
|
+
action: 'remove',
|
|
1119
|
+
createdAt: '2026-03-14T05:21:47.307Z',
|
|
1120
|
+
webhookTimestamp: 1773465707307,
|
|
1121
|
+
data: {
|
|
1122
|
+
workOrder: {
|
|
1123
|
+
id: '507f1f77bcf86cd799439011',
|
|
1124
|
+
name: 'Foundation Work',
|
|
1125
|
+
workOrderNumber: 'J10001-5039',
|
|
1126
|
+
jobNumber: 'J10001',
|
|
1127
|
+
description: 'Sample stage description',
|
|
1128
|
+
status: 'In Progress',
|
|
1129
|
+
previousStatus: 'Open',
|
|
1130
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
1131
|
+
updatedAt: '2026-03-05T10:00:00.000Z',
|
|
1132
|
+
startDate: '2026-03-05T08:00:00.000Z',
|
|
1133
|
+
dueDate: '2026-03-10T17:00:00.000Z',
|
|
1134
|
+
completedDate: null,
|
|
1135
|
+
finalisedDate: null,
|
|
1136
|
+
customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
1137
|
+
owner: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
1138
|
+
stageOwner: { id: '507f1f77bcf86cd799439011', name: 'Jane Doe' },
|
|
1139
|
+
technician: { id: '507f1f77bcf86cd799439011', name: 'Mike Tech' },
|
|
1140
|
+
subcontractor: null,
|
|
1141
|
+
priority: { id: '507f1f77bcf86cd799439011', name: 'High' },
|
|
1142
|
+
site: {
|
|
1143
|
+
id: '507f1f77bcf86cd799439011',
|
|
1144
|
+
name: 'Main Office',
|
|
1145
|
+
address: {
|
|
1146
|
+
street: '123 Main St',
|
|
1147
|
+
suburb: 'Sydney',
|
|
1148
|
+
state: 'NSW',
|
|
1149
|
+
postcode: '2000',
|
|
1150
|
+
country: 'Australia',
|
|
1151
|
+
formatted: '123 Main St, Sydney NSW 2000',
|
|
1152
|
+
},
|
|
1153
|
+
},
|
|
1154
|
+
workCategory: { id: '507f1f77bcf86cd799439011', name: 'Electrical' },
|
|
1155
|
+
labels: [{ id: '507f1f77bcf86cd799439011', name: 'Urgent' }],
|
|
1156
|
+
zones: [{ id: '507f1f77bcf86cd799439011', name: 'North' }],
|
|
1157
|
+
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
1158
|
+
},
|
|
1121
1159
|
technician: { id: '507f1f77bcf86cd799439011', name: 'Mike Tech' },
|
|
1122
|
-
|
|
1123
|
-
priority: { id: '507f1f77bcf86cd799439011', name: 'High' },
|
|
1160
|
+
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
1124
1161
|
site: {
|
|
1125
1162
|
id: '507f1f77bcf86cd799439011',
|
|
1126
1163
|
name: 'Main Office',
|
|
@@ -1133,24 +1170,6 @@ export const stage_deleted_trigger = createTrigger({
|
|
|
1133
1170
|
formatted: '123 Main St, Sydney NSW 2000',
|
|
1134
1171
|
},
|
|
1135
1172
|
},
|
|
1136
|
-
workCategory: { id: '507f1f77bcf86cd799439011', name: 'Electrical' },
|
|
1137
|
-
labels: [{ id: '507f1f77bcf86cd799439011', name: 'Urgent' }],
|
|
1138
|
-
zones: [{ id: '507f1f77bcf86cd799439011', name: 'North' }],
|
|
1139
|
-
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
1140
|
-
},
|
|
1141
|
-
technician: { id: '507f1f77bcf86cd799439011', name: 'Mike Tech' },
|
|
1142
|
-
billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
1143
|
-
site: {
|
|
1144
|
-
id: '507f1f77bcf86cd799439011',
|
|
1145
|
-
name: 'Main Office',
|
|
1146
|
-
address: {
|
|
1147
|
-
street: '123 Main St',
|
|
1148
|
-
suburb: 'Sydney',
|
|
1149
|
-
state: 'NSW',
|
|
1150
|
-
postcode: '2000',
|
|
1151
|
-
country: 'Australia',
|
|
1152
|
-
formatted: '123 Main St, Sydney NSW 2000',
|
|
1153
|
-
},
|
|
1154
1173
|
},
|
|
1155
1174
|
},
|
|
1156
1175
|
type: TriggerStrategy.WEBHOOK,
|
|
@@ -1169,7 +1188,7 @@ export const stage_deleted_trigger = createTrigger({
|
|
|
1169
1188
|
if (context.propsValue.stageStatus?.length)
|
|
1170
1189
|
filters.stageStatus = context.propsValue.stageStatus.map((v: string) => JSON.parse(v));
|
|
1171
1190
|
if (context.propsValue.schedulingTag?.length) filters.schedulingTag = context.propsValue.schedulingTag;
|
|
1172
|
-
// Register webhook with WorkBuddy v2 API
|
|
1191
|
+
// Register webhook with WorkBuddy v2 API
|
|
1173
1192
|
const response = await httpClient.sendRequest<{ data: { id: string } }>({
|
|
1174
1193
|
method: HttpMethod.POST,
|
|
1175
1194
|
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
@@ -1201,18 +1220,15 @@ export const stage_deleted_trigger = createTrigger({
|
|
|
1201
1220
|
const webhookId = await context.store.get<string>('webhookId');
|
|
1202
1221
|
|
|
1203
1222
|
if (webhookId) {
|
|
1204
|
-
//
|
|
1223
|
+
// Delete webhook to avoid stale subscriptions causing duplicate trigger deliveries
|
|
1205
1224
|
await httpClient.sendRequest({
|
|
1206
|
-
method: HttpMethod.
|
|
1225
|
+
method: HttpMethod.DELETE,
|
|
1207
1226
|
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
1208
1227
|
headers: {
|
|
1209
1228
|
Authorization: `Bearer ${token}`,
|
|
1210
1229
|
'Content-Type': 'application/json',
|
|
1211
1230
|
'X-WorkBuddy-Version': '2026-01',
|
|
1212
1231
|
},
|
|
1213
|
-
body: {
|
|
1214
|
-
status: 'paused',
|
|
1215
|
-
},
|
|
1216
1232
|
});
|
|
1217
1233
|
}
|
|
1218
1234
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAY,MAAM,gCAAgC,CAAC;AAI1F,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAY,MAAM,gCAAgC,CAAC;AAI1F,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8G/B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8G/B,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8GtC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8G/B,CAAC"}
|