@workbuddy/piece-workbuddy-vnext 1.0.4 → 1.0.6
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/index.d.ts.map +1 -1
- package/src/index.js +89 -83
- package/src/index.js.map +1 -1
- package/src/index.ts +29 -17
- package/src/lib/actions/agents.d.ts.map +1 -1
- package/src/lib/actions/agents.js +6 -4
- package/src/lib/actions/agents.js.map +1 -1
- package/src/lib/actions/agents.ts +8 -4
- 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/{crm->-companies.d.ts → crm-companies.d.ts} +1 -1
- package/src/lib/actions/crm-companies.d.ts.map +1 -0
- package/src/lib/actions/{crm->-companies.js → crm-companies.js} +1 -1
- package/src/lib/actions/{crm->-invites.js.map → crm-companies.js.map} +1 -1
- package/src/lib/actions/{crm->-contacts.d.ts → crm-contacts.d.ts} +1 -1
- package/src/lib/actions/crm-contacts.d.ts.map +1 -0
- package/src/lib/actions/{crm->-contacts.js → crm-contacts.js} +1 -1
- package/src/lib/actions/crm-contacts.js.map +1 -0
- package/src/lib/actions/{crm->-contractors.d.ts → crm-contractors.d.ts} +1 -1
- package/src/lib/actions/crm-contractors.d.ts.map +1 -0
- package/src/lib/actions/{crm->-contractors.js → crm-contractors.js} +1 -1
- package/src/lib/actions/{crm->-employees.js.map → crm-contractors.js.map} +1 -1
- package/src/lib/actions/{crm->-customers.d.ts → crm-customers.d.ts} +1 -1
- package/src/lib/actions/crm-customers.d.ts.map +1 -0
- package/src/lib/actions/{crm->-customers.js → crm-customers.js} +1 -1
- package/src/lib/actions/crm-customers.js.map +1 -0
- package/src/lib/actions/{crm->-employees.d.ts → crm-employees.d.ts} +1 -1
- package/src/lib/actions/crm-employees.d.ts.map +1 -0
- package/src/lib/actions/{crm->-employees.js → crm-employees.js} +1 -1
- package/src/lib/actions/crm-employees.js.map +1 -0
- package/src/lib/actions/{crm->-external-users.d.ts → crm-external-users.d.ts} +1 -1
- package/src/lib/actions/crm-external-users.d.ts.map +1 -0
- package/src/lib/actions/{crm->-external-users.js → crm-external-users.js} +1 -1
- package/src/lib/actions/crm-external-users.js.map +1 -0
- package/src/lib/actions/{crm->-invites.d.ts → crm-invites.d.ts} +1 -1
- package/src/lib/actions/crm-invites.d.ts.map +1 -0
- package/src/lib/actions/{crm->-invites.js → crm-invites.js} +1 -1
- package/src/lib/actions/crm-invites.js.map +1 -0
- package/src/lib/actions/{crm->-sites.d.ts → crm-sites.d.ts} +1 -1
- package/src/lib/actions/crm-sites.d.ts.map +1 -0
- package/src/lib/actions/{crm->-sites.js → crm-sites.js} +1 -1
- package/src/lib/actions/crm-sites.js.map +1 -0
- package/src/lib/actions/{crm->-suppliers.d.ts → crm-suppliers.d.ts} +1 -1
- package/src/lib/actions/crm-suppliers.d.ts.map +1 -0
- package/src/lib/actions/{crm->-suppliers.js → crm-suppliers.js} +1 -1
- package/src/lib/actions/crm-suppliers.js.map +1 -0
- package/src/lib/actions/flags.d.ts +34 -0
- package/src/lib/actions/flags.d.ts.map +1 -0
- package/src/lib/actions/flags.js +185 -0
- package/src/lib/actions/flags.js.map +1 -0
- package/src/lib/actions/flags.ts +201 -0
- package/src/lib/actions/index.d.ts +18 -17
- package/src/lib/actions/index.d.ts.map +1 -1
- package/src/lib/actions/index.js +18 -17
- package/src/lib/actions/index.js.map +1 -1
- package/src/lib/actions/index.ts +18 -17
- package/src/lib/actions/{jobs->-activities.d.ts → jobs-activities.d.ts} +15 -5
- package/src/lib/actions/jobs-activities.d.ts.map +1 -0
- package/src/lib/actions/{jobs->-activities.js → jobs-activities.js} +110 -59
- package/src/lib/actions/jobs-activities.js.map +1 -0
- package/src/lib/actions/{jobs->-activities.ts → jobs-activities.ts} +118 -57
- package/src/lib/actions/{jobs->-contacts.d.ts → jobs-contacts.d.ts} +1 -1
- package/src/lib/actions/jobs-contacts.d.ts.map +1 -0
- package/src/lib/actions/{jobs->-contacts.js → jobs-contacts.js} +5 -5
- package/src/lib/actions/jobs-contacts.js.map +1 -0
- package/src/lib/actions/{jobs->-contacts.ts → jobs-contacts.ts} +4 -4
- package/src/lib/actions/{jobs->-files.d.ts → jobs-files.d.ts} +1 -1
- package/src/lib/actions/jobs-files.d.ts.map +1 -0
- package/src/lib/actions/{jobs->-files.js → jobs-files.js} +9 -9
- package/src/lib/actions/jobs-files.js.map +1 -0
- package/src/lib/actions/{jobs->-files.ts → jobs-files.ts} +8 -8
- package/src/lib/actions/{jobs->-tasks.d.ts → jobs-tasks.d.ts} +4 -2
- package/src/lib/actions/jobs-tasks.d.ts.map +1 -0
- package/src/lib/actions/{jobs->-tasks.js → jobs-tasks.js} +61 -37
- package/src/lib/actions/jobs-tasks.js.map +1 -0
- package/src/lib/actions/{jobs->-tasks.ts → jobs-tasks.ts} +64 -36
- package/src/lib/actions/jobs.d.ts +4 -3
- package/src/lib/actions/jobs.d.ts.map +1 -1
- package/src/lib/actions/jobs.js +90 -72
- package/src/lib/actions/jobs.js.map +1 -1
- package/src/lib/actions/jobs.ts +94 -72
- package/src/lib/actions/mcp.d.ts +1 -1
- package/src/lib/actions/mcp.d.ts.map +1 -1
- package/src/lib/actions/mcp.js +7 -6
- package/src/lib/actions/mcp.js.map +1 -1
- package/src/lib/actions/mcp.ts +8 -6
- package/src/lib/actions/settings.js +1 -1
- package/src/lib/actions/settings.js.map +1 -1
- package/src/lib/actions/settings.ts +1 -1
- package/src/lib/actions/{stages->-activities.d.ts → stages-activities.d.ts} +24 -5
- package/src/lib/actions/stages-activities.d.ts.map +1 -0
- package/src/lib/actions/{stages->-activities.js → stages-activities.js} +164 -68
- package/src/lib/actions/stages-activities.js.map +1 -0
- package/src/lib/actions/{stages->-activities.ts → stages-activities.ts} +172 -66
- package/src/lib/actions/{stages->-files.d.ts → stages-files.d.ts} +5 -1
- package/src/lib/actions/stages-files.d.ts.map +1 -0
- package/src/lib/actions/{stages->-files.js → stages-files.js} +35 -15
- package/src/lib/actions/stages-files.js.map +1 -0
- package/src/lib/actions/{stages->-files.ts → stages-files.ts} +34 -14
- package/src/lib/actions/{stages->-resources.d.ts → stages-resources.d.ts} +1 -1
- package/src/lib/actions/stages-resources.d.ts.map +1 -0
- package/src/lib/actions/{stages->-resources.js → stages-resources.js} +7 -5
- package/src/lib/actions/stages-resources.js.map +1 -0
- package/src/lib/actions/{stages->-resources.ts → stages-resources.ts} +8 -4
- package/src/lib/actions/{stages->-tasks.d.ts → stages-tasks.d.ts} +8 -2
- package/src/lib/actions/stages-tasks.d.ts.map +1 -0
- package/src/lib/actions/{stages->-tasks.js → stages-tasks.js} +91 -47
- package/src/lib/actions/stages-tasks.js.map +1 -0
- package/src/lib/actions/{stages->-tasks.ts → stages-tasks.ts} +94 -46
- 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 +77 -27
- package/src/lib/actions/stages.js.map +1 -1
- package/src/lib/actions/stages.ts +88 -27
- package/src/lib/actions/webhooks-v2.js +15 -15
- package/src/lib/actions/webhooks-v2.js.map +1 -1
- package/src/lib/actions/webhooks-v2.ts +15 -15
- package/src/lib/auth.js +2 -2
- package/src/lib/auth.js.map +1 -1
- package/src/lib/auth.ts +2 -2
- 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 +240 -48
- package/src/lib/triggers/bill.d.ts.map +1 -1
- package/src/lib/triggers/bill.js +368 -88
- package/src/lib/triggers/bill.js.map +1 -1
- package/src/lib/triggers/bill.ts +368 -88
- package/src/lib/triggers/invoice.d.ts +240 -48
- package/src/lib/triggers/invoice.d.ts.map +1 -1
- package/src/lib/triggers/invoice.js +368 -88
- package/src/lib/triggers/invoice.js.map +1 -1
- package/src/lib/triggers/invoice.ts +368 -88
- package/src/lib/triggers/job.d.ts +640 -128
- package/src/lib/triggers/job.d.ts.map +1 -1
- package/src/lib/triggers/job.js +928 -208
- package/src/lib/triggers/job.js.map +1 -1
- package/src/lib/triggers/job.ts +928 -208
- package/src/lib/triggers/lead.d.ts +400 -80
- package/src/lib/triggers/lead.d.ts.map +1 -1
- package/src/lib/triggers/lead.js +552 -96
- package/src/lib/triggers/lead.js.map +1 -1
- package/src/lib/triggers/lead.ts +552 -96
- package/src/lib/triggers/opportunity.d.ts +320 -64
- package/src/lib/triggers/opportunity.d.ts.map +1 -1
- package/src/lib/triggers/opportunity.js +456 -88
- package/src/lib/triggers/opportunity.js.map +1 -1
- package/src/lib/triggers/opportunity.ts +456 -88
- package/src/lib/triggers/quote.d.ts +240 -48
- package/src/lib/triggers/quote.d.ts.map +1 -1
- package/src/lib/triggers/quote.js +368 -88
- package/src/lib/triggers/quote.js.map +1 -1
- package/src/lib/triggers/quote.ts +368 -88
- package/src/lib/triggers/stage.d.ts +480 -96
- package/src/lib/triggers/stage.d.ts.map +1 -1
- package/src/lib/triggers/stage.js +764 -220
- package/src/lib/triggers/stage.js.map +1 -1
- package/src/lib/triggers/stage.ts +764 -220
- package/src/lib/triggers/task.d.ts +80 -16
- package/src/lib/triggers/task.d.ts.map +1 -1
- package/src/lib/triggers/task.js +172 -68
- package/src/lib/triggers/task.js.map +1 -1
- package/src/lib/triggers/task.ts +172 -68
- package/src/lib/actions/crm->-companies.d.ts.map +0 -1
- package/src/lib/actions/crm->-companies.js.map +0 -1
- package/src/lib/actions/crm->-contacts.d.ts.map +0 -1
- package/src/lib/actions/crm->-contacts.js.map +0 -1
- package/src/lib/actions/crm->-contractors.d.ts.map +0 -1
- package/src/lib/actions/crm->-contractors.js.map +0 -1
- package/src/lib/actions/crm->-customers.d.ts.map +0 -1
- package/src/lib/actions/crm->-customers.js.map +0 -1
- package/src/lib/actions/crm->-employees.d.ts.map +0 -1
- package/src/lib/actions/crm->-external-users.d.ts.map +0 -1
- package/src/lib/actions/crm->-external-users.js.map +0 -1
- package/src/lib/actions/crm->-invites.d.ts.map +0 -1
- package/src/lib/actions/crm->-sites.d.ts.map +0 -1
- package/src/lib/actions/crm->-sites.js.map +0 -1
- package/src/lib/actions/crm->-suppliers.d.ts.map +0 -1
- package/src/lib/actions/crm->-suppliers.js.map +0 -1
- package/src/lib/actions/jobs->-activities.d.ts.map +0 -1
- package/src/lib/actions/jobs->-activities.js.map +0 -1
- package/src/lib/actions/jobs->-contacts.d.ts.map +0 -1
- package/src/lib/actions/jobs->-contacts.js.map +0 -1
- package/src/lib/actions/jobs->-files.d.ts.map +0 -1
- package/src/lib/actions/jobs->-files.js.map +0 -1
- package/src/lib/actions/jobs->-tasks.d.ts.map +0 -1
- package/src/lib/actions/jobs->-tasks.js.map +0 -1
- package/src/lib/actions/stages->-activities.d.ts.map +0 -1
- package/src/lib/actions/stages->-activities.js.map +0 -1
- package/src/lib/actions/stages->-files.d.ts.map +0 -1
- package/src/lib/actions/stages->-files.js.map +0 -1
- package/src/lib/actions/stages->-resources.d.ts.map +0 -1
- package/src/lib/actions/stages->-resources.js.map +0 -1
- package/src/lib/actions/stages->-tasks.d.ts.map +0 -1
- package/src/lib/actions/stages->-tasks.js.map +0 -1
- /package/src/lib/actions/{crm->-companies.ts → crm-companies.ts} +0 -0
- /package/src/lib/actions/{crm->-contacts.ts → crm-contacts.ts} +0 -0
- /package/src/lib/actions/{crm->-contractors.ts → crm-contractors.ts} +0 -0
- /package/src/lib/actions/{crm->-customers.ts → crm-customers.ts} +0 -0
- /package/src/lib/actions/{crm->-employees.ts → crm-employees.ts} +0 -0
- /package/src/lib/actions/{crm->-external-users.ts → crm-external-users.ts} +0 -0
- /package/src/lib/actions/{crm->-invites.ts → crm-invites.ts} +0 -0
- /package/src/lib/actions/{crm->-sites.ts → crm-sites.ts} +0 -0
- /package/src/lib/actions/{crm->-suppliers.ts → crm-suppliers.ts} +0 -0
package/src/lib/triggers/lead.js
CHANGED
|
@@ -10,20 +10,86 @@ exports.lead_created_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
10
10
|
displayName: 'Lead Created',
|
|
11
11
|
description: 'Triggered when a new lead is created',
|
|
12
12
|
props: {
|
|
13
|
-
customer: pieces_framework_1.Property.
|
|
13
|
+
customer: pieces_framework_1.Property.MultiSelectDropdown({
|
|
14
14
|
displayName: 'Filter by Customer',
|
|
15
|
-
description: 'Only trigger for specific customer
|
|
15
|
+
description: 'Only trigger for specific customer',
|
|
16
16
|
required: false,
|
|
17
|
+
auth: auth_1.workbuddyAuth,
|
|
18
|
+
refreshers: [],
|
|
19
|
+
options: async ({ auth }) => {
|
|
20
|
+
const authValue = auth;
|
|
21
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
22
|
+
const baseUrl = authValue.props.baseUrl;
|
|
23
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
24
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
25
|
+
url: `${baseUrl}/api/v2/public/customers`,
|
|
26
|
+
headers: {
|
|
27
|
+
Authorization: `Bearer ${token}`,
|
|
28
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
const items = response.body?.items || [];
|
|
32
|
+
return {
|
|
33
|
+
options: items.map((item) => ({
|
|
34
|
+
label: item.name,
|
|
35
|
+
value: item.id,
|
|
36
|
+
})),
|
|
37
|
+
};
|
|
38
|
+
},
|
|
17
39
|
}),
|
|
18
|
-
billingCompany: pieces_framework_1.Property.
|
|
40
|
+
billingCompany: pieces_framework_1.Property.MultiSelectDropdown({
|
|
19
41
|
displayName: 'Filter by Billing Company',
|
|
20
|
-
description: 'Only trigger for specific billing company
|
|
42
|
+
description: 'Only trigger for specific billing company',
|
|
21
43
|
required: false,
|
|
44
|
+
auth: auth_1.workbuddyAuth,
|
|
45
|
+
refreshers: [],
|
|
46
|
+
options: async ({ auth }) => {
|
|
47
|
+
const authValue = auth;
|
|
48
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
49
|
+
const baseUrl = authValue.props.baseUrl;
|
|
50
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
51
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
52
|
+
url: `${baseUrl}/api/v2/public/companies`,
|
|
53
|
+
headers: {
|
|
54
|
+
Authorization: `Bearer ${token}`,
|
|
55
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
const items = response.body?.items || [];
|
|
59
|
+
return {
|
|
60
|
+
options: items.map((item) => ({
|
|
61
|
+
label: item.name,
|
|
62
|
+
value: item.id,
|
|
63
|
+
})),
|
|
64
|
+
};
|
|
65
|
+
},
|
|
22
66
|
}),
|
|
23
|
-
tag: pieces_framework_1.Property.
|
|
67
|
+
tag: pieces_framework_1.Property.MultiSelectDropdown({
|
|
24
68
|
displayName: 'Filter by Tags',
|
|
25
|
-
description: 'Only trigger for specific tags
|
|
69
|
+
description: 'Only trigger for specific tags',
|
|
26
70
|
required: false,
|
|
71
|
+
auth: auth_1.workbuddyAuth,
|
|
72
|
+
refreshers: [],
|
|
73
|
+
options: async ({ auth }) => {
|
|
74
|
+
const authValue = auth;
|
|
75
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
76
|
+
const baseUrl = authValue.props.baseUrl;
|
|
77
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
78
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
79
|
+
url: `${baseUrl}/api/v2/public/settings/tags`,
|
|
80
|
+
headers: {
|
|
81
|
+
Authorization: `Bearer ${token}`,
|
|
82
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
const items = response.body?.items || [];
|
|
86
|
+
return {
|
|
87
|
+
options: items.map((item) => ({
|
|
88
|
+
label: item.name,
|
|
89
|
+
value: item.id,
|
|
90
|
+
})),
|
|
91
|
+
};
|
|
92
|
+
},
|
|
27
93
|
}),
|
|
28
94
|
leadStage: pieces_framework_1.Property.Array({
|
|
29
95
|
displayName: 'Filter by Stage',
|
|
@@ -35,26 +101,77 @@ exports.lead_created_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
35
101
|
description: 'Only trigger for specific source IDs',
|
|
36
102
|
required: false,
|
|
37
103
|
}),
|
|
38
|
-
owner: pieces_framework_1.Property.
|
|
104
|
+
owner: pieces_framework_1.Property.MultiSelectDropdown({
|
|
39
105
|
displayName: 'Filter by Owner',
|
|
40
|
-
description: 'Only trigger for specific owner
|
|
106
|
+
description: 'Only trigger for specific owner',
|
|
41
107
|
required: false,
|
|
108
|
+
auth: auth_1.workbuddyAuth,
|
|
109
|
+
refreshers: [],
|
|
110
|
+
options: async ({ auth }) => {
|
|
111
|
+
const authValue = auth;
|
|
112
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
113
|
+
const baseUrl = authValue.props.baseUrl;
|
|
114
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
115
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
116
|
+
url: `${baseUrl}/api/v2/public/employees`,
|
|
117
|
+
headers: {
|
|
118
|
+
Authorization: `Bearer ${token}`,
|
|
119
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
const items = response.body?.items || [];
|
|
123
|
+
return {
|
|
124
|
+
options: items.map((item) => ({
|
|
125
|
+
label: item.name,
|
|
126
|
+
value: item.id,
|
|
127
|
+
})),
|
|
128
|
+
};
|
|
129
|
+
},
|
|
42
130
|
}),
|
|
43
|
-
type: pieces_framework_1.Property.
|
|
131
|
+
type: pieces_framework_1.Property.MultiSelectDropdown({
|
|
44
132
|
displayName: 'Filter by Job Type',
|
|
45
|
-
description: 'Only trigger for specific job type
|
|
133
|
+
description: 'Only trigger for specific job type',
|
|
46
134
|
required: false,
|
|
135
|
+
auth: auth_1.workbuddyAuth,
|
|
136
|
+
refreshers: [],
|
|
137
|
+
options: async ({ auth }) => {
|
|
138
|
+
const authValue = auth;
|
|
139
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
140
|
+
const baseUrl = authValue.props.baseUrl;
|
|
141
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
142
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
143
|
+
url: `${baseUrl}/api/v2/public/settings/job-types`,
|
|
144
|
+
headers: {
|
|
145
|
+
Authorization: `Bearer ${token}`,
|
|
146
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
const items = response.body?.items || [];
|
|
150
|
+
return {
|
|
151
|
+
options: items.map((item) => ({
|
|
152
|
+
label: item.name,
|
|
153
|
+
value: item.id,
|
|
154
|
+
})),
|
|
155
|
+
};
|
|
156
|
+
},
|
|
47
157
|
}),
|
|
48
158
|
},
|
|
49
159
|
sampleData: {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
160
|
+
id: 'whd_019ceacb-232b-764f-8dfd-748e1a226de2',
|
|
161
|
+
event: 'Lead Created',
|
|
162
|
+
action: 'create',
|
|
163
|
+
createdAt: '2026-03-14T05:21:47.307Z',
|
|
164
|
+
webhookTimestamp: 1773465707307,
|
|
165
|
+
data: {
|
|
166
|
+
lead: {
|
|
167
|
+
id: '507f1f77bcf86cd799439011',
|
|
168
|
+
name: 'New Lead',
|
|
169
|
+
status: 'New',
|
|
170
|
+
source: 'website',
|
|
171
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
172
|
+
customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
173
|
+
owner: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
174
|
+
},
|
|
58
175
|
},
|
|
59
176
|
},
|
|
60
177
|
type: pieces_framework_1.TriggerStrategy.WEBHOOK,
|
|
@@ -77,7 +194,7 @@ exports.lead_created_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
77
194
|
filters.owner = context.propsValue.owner;
|
|
78
195
|
if (context.propsValue.type?.length)
|
|
79
196
|
filters.type = context.propsValue.type;
|
|
80
|
-
// Register webhook with WorkBuddy v2 API
|
|
197
|
+
// Register webhook with WorkBuddy v2 API
|
|
81
198
|
const response = await pieces_common_1.httpClient.sendRequest({
|
|
82
199
|
method: pieces_common_1.HttpMethod.POST,
|
|
83
200
|
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
@@ -106,18 +223,15 @@ exports.lead_created_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
106
223
|
const baseUrl = context.auth.props.baseUrl;
|
|
107
224
|
const webhookId = await context.store.get('webhookId');
|
|
108
225
|
if (webhookId) {
|
|
109
|
-
//
|
|
226
|
+
// Delete webhook to avoid stale subscriptions causing duplicate trigger deliveries
|
|
110
227
|
await pieces_common_1.httpClient.sendRequest({
|
|
111
|
-
method: pieces_common_1.HttpMethod.
|
|
228
|
+
method: pieces_common_1.HttpMethod.DELETE,
|
|
112
229
|
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
113
230
|
headers: {
|
|
114
231
|
Authorization: `Bearer ${token}`,
|
|
115
232
|
'Content-Type': 'application/json',
|
|
116
233
|
'X-WorkBuddy-Version': '2026-01',
|
|
117
234
|
},
|
|
118
|
-
body: {
|
|
119
|
-
status: 'paused',
|
|
120
|
-
},
|
|
121
235
|
});
|
|
122
236
|
}
|
|
123
237
|
},
|
|
@@ -131,20 +245,86 @@ exports.lead_updated_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
131
245
|
displayName: 'Lead Updated',
|
|
132
246
|
description: 'Triggered when a lead is updated',
|
|
133
247
|
props: {
|
|
134
|
-
customer: pieces_framework_1.Property.
|
|
248
|
+
customer: pieces_framework_1.Property.MultiSelectDropdown({
|
|
135
249
|
displayName: 'Filter by Customer',
|
|
136
|
-
description: 'Only trigger for specific customer
|
|
250
|
+
description: 'Only trigger for specific customer',
|
|
137
251
|
required: false,
|
|
252
|
+
auth: auth_1.workbuddyAuth,
|
|
253
|
+
refreshers: [],
|
|
254
|
+
options: async ({ auth }) => {
|
|
255
|
+
const authValue = auth;
|
|
256
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
257
|
+
const baseUrl = authValue.props.baseUrl;
|
|
258
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
259
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
260
|
+
url: `${baseUrl}/api/v2/public/customers`,
|
|
261
|
+
headers: {
|
|
262
|
+
Authorization: `Bearer ${token}`,
|
|
263
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
264
|
+
},
|
|
265
|
+
});
|
|
266
|
+
const items = response.body?.items || [];
|
|
267
|
+
return {
|
|
268
|
+
options: items.map((item) => ({
|
|
269
|
+
label: item.name,
|
|
270
|
+
value: item.id,
|
|
271
|
+
})),
|
|
272
|
+
};
|
|
273
|
+
},
|
|
138
274
|
}),
|
|
139
|
-
billingCompany: pieces_framework_1.Property.
|
|
275
|
+
billingCompany: pieces_framework_1.Property.MultiSelectDropdown({
|
|
140
276
|
displayName: 'Filter by Billing Company',
|
|
141
|
-
description: 'Only trigger for specific billing company
|
|
277
|
+
description: 'Only trigger for specific billing company',
|
|
142
278
|
required: false,
|
|
279
|
+
auth: auth_1.workbuddyAuth,
|
|
280
|
+
refreshers: [],
|
|
281
|
+
options: async ({ auth }) => {
|
|
282
|
+
const authValue = auth;
|
|
283
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
284
|
+
const baseUrl = authValue.props.baseUrl;
|
|
285
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
286
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
287
|
+
url: `${baseUrl}/api/v2/public/companies`,
|
|
288
|
+
headers: {
|
|
289
|
+
Authorization: `Bearer ${token}`,
|
|
290
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
291
|
+
},
|
|
292
|
+
});
|
|
293
|
+
const items = response.body?.items || [];
|
|
294
|
+
return {
|
|
295
|
+
options: items.map((item) => ({
|
|
296
|
+
label: item.name,
|
|
297
|
+
value: item.id,
|
|
298
|
+
})),
|
|
299
|
+
};
|
|
300
|
+
},
|
|
143
301
|
}),
|
|
144
|
-
tag: pieces_framework_1.Property.
|
|
302
|
+
tag: pieces_framework_1.Property.MultiSelectDropdown({
|
|
145
303
|
displayName: 'Filter by Tags',
|
|
146
|
-
description: 'Only trigger for specific tags
|
|
304
|
+
description: 'Only trigger for specific tags',
|
|
147
305
|
required: false,
|
|
306
|
+
auth: auth_1.workbuddyAuth,
|
|
307
|
+
refreshers: [],
|
|
308
|
+
options: async ({ auth }) => {
|
|
309
|
+
const authValue = auth;
|
|
310
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
311
|
+
const baseUrl = authValue.props.baseUrl;
|
|
312
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
313
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
314
|
+
url: `${baseUrl}/api/v2/public/settings/tags`,
|
|
315
|
+
headers: {
|
|
316
|
+
Authorization: `Bearer ${token}`,
|
|
317
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
318
|
+
},
|
|
319
|
+
});
|
|
320
|
+
const items = response.body?.items || [];
|
|
321
|
+
return {
|
|
322
|
+
options: items.map((item) => ({
|
|
323
|
+
label: item.name,
|
|
324
|
+
value: item.id,
|
|
325
|
+
})),
|
|
326
|
+
};
|
|
327
|
+
},
|
|
148
328
|
}),
|
|
149
329
|
leadStage: pieces_framework_1.Property.Array({
|
|
150
330
|
displayName: 'Filter by Stage',
|
|
@@ -156,26 +336,77 @@ exports.lead_updated_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
156
336
|
description: 'Only trigger for specific source IDs',
|
|
157
337
|
required: false,
|
|
158
338
|
}),
|
|
159
|
-
owner: pieces_framework_1.Property.
|
|
339
|
+
owner: pieces_framework_1.Property.MultiSelectDropdown({
|
|
160
340
|
displayName: 'Filter by Owner',
|
|
161
|
-
description: 'Only trigger for specific owner
|
|
341
|
+
description: 'Only trigger for specific owner',
|
|
162
342
|
required: false,
|
|
343
|
+
auth: auth_1.workbuddyAuth,
|
|
344
|
+
refreshers: [],
|
|
345
|
+
options: async ({ auth }) => {
|
|
346
|
+
const authValue = auth;
|
|
347
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
348
|
+
const baseUrl = authValue.props.baseUrl;
|
|
349
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
350
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
351
|
+
url: `${baseUrl}/api/v2/public/employees`,
|
|
352
|
+
headers: {
|
|
353
|
+
Authorization: `Bearer ${token}`,
|
|
354
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
355
|
+
},
|
|
356
|
+
});
|
|
357
|
+
const items = response.body?.items || [];
|
|
358
|
+
return {
|
|
359
|
+
options: items.map((item) => ({
|
|
360
|
+
label: item.name,
|
|
361
|
+
value: item.id,
|
|
362
|
+
})),
|
|
363
|
+
};
|
|
364
|
+
},
|
|
163
365
|
}),
|
|
164
|
-
type: pieces_framework_1.Property.
|
|
366
|
+
type: pieces_framework_1.Property.MultiSelectDropdown({
|
|
165
367
|
displayName: 'Filter by Job Type',
|
|
166
|
-
description: 'Only trigger for specific job type
|
|
368
|
+
description: 'Only trigger for specific job type',
|
|
167
369
|
required: false,
|
|
370
|
+
auth: auth_1.workbuddyAuth,
|
|
371
|
+
refreshers: [],
|
|
372
|
+
options: async ({ auth }) => {
|
|
373
|
+
const authValue = auth;
|
|
374
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
375
|
+
const baseUrl = authValue.props.baseUrl;
|
|
376
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
377
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
378
|
+
url: `${baseUrl}/api/v2/public/settings/job-types`,
|
|
379
|
+
headers: {
|
|
380
|
+
Authorization: `Bearer ${token}`,
|
|
381
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
382
|
+
},
|
|
383
|
+
});
|
|
384
|
+
const items = response.body?.items || [];
|
|
385
|
+
return {
|
|
386
|
+
options: items.map((item) => ({
|
|
387
|
+
label: item.name,
|
|
388
|
+
value: item.id,
|
|
389
|
+
})),
|
|
390
|
+
};
|
|
391
|
+
},
|
|
168
392
|
}),
|
|
169
393
|
},
|
|
170
394
|
sampleData: {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
395
|
+
id: 'whd_019ceacb-232b-764f-8dfd-748e1a226de2',
|
|
396
|
+
event: 'Lead Updated',
|
|
397
|
+
action: 'update',
|
|
398
|
+
createdAt: '2026-03-14T05:21:47.307Z',
|
|
399
|
+
webhookTimestamp: 1773465707307,
|
|
400
|
+
data: {
|
|
401
|
+
lead: {
|
|
402
|
+
id: '507f1f77bcf86cd799439011',
|
|
403
|
+
name: 'New Lead',
|
|
404
|
+
status: 'New',
|
|
405
|
+
source: 'website',
|
|
406
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
407
|
+
customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
408
|
+
owner: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
409
|
+
},
|
|
179
410
|
},
|
|
180
411
|
},
|
|
181
412
|
type: pieces_framework_1.TriggerStrategy.WEBHOOK,
|
|
@@ -198,7 +429,7 @@ exports.lead_updated_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
198
429
|
filters.owner = context.propsValue.owner;
|
|
199
430
|
if (context.propsValue.type?.length)
|
|
200
431
|
filters.type = context.propsValue.type;
|
|
201
|
-
// Register webhook with WorkBuddy v2 API
|
|
432
|
+
// Register webhook with WorkBuddy v2 API
|
|
202
433
|
const response = await pieces_common_1.httpClient.sendRequest({
|
|
203
434
|
method: pieces_common_1.HttpMethod.POST,
|
|
204
435
|
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
@@ -227,18 +458,15 @@ exports.lead_updated_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
227
458
|
const baseUrl = context.auth.props.baseUrl;
|
|
228
459
|
const webhookId = await context.store.get('webhookId');
|
|
229
460
|
if (webhookId) {
|
|
230
|
-
//
|
|
461
|
+
// Delete webhook to avoid stale subscriptions causing duplicate trigger deliveries
|
|
231
462
|
await pieces_common_1.httpClient.sendRequest({
|
|
232
|
-
method: pieces_common_1.HttpMethod.
|
|
463
|
+
method: pieces_common_1.HttpMethod.DELETE,
|
|
233
464
|
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
234
465
|
headers: {
|
|
235
466
|
Authorization: `Bearer ${token}`,
|
|
236
467
|
'Content-Type': 'application/json',
|
|
237
468
|
'X-WorkBuddy-Version': '2026-01',
|
|
238
469
|
},
|
|
239
|
-
body: {
|
|
240
|
-
status: 'paused',
|
|
241
|
-
},
|
|
242
470
|
});
|
|
243
471
|
}
|
|
244
472
|
},
|
|
@@ -252,20 +480,86 @@ exports.lead_status_changed_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
252
480
|
displayName: 'Lead Status Changed',
|
|
253
481
|
description: 'Triggered when a lead status changes',
|
|
254
482
|
props: {
|
|
255
|
-
customer: pieces_framework_1.Property.
|
|
483
|
+
customer: pieces_framework_1.Property.MultiSelectDropdown({
|
|
256
484
|
displayName: 'Filter by Customer',
|
|
257
|
-
description: 'Only trigger for specific customer
|
|
485
|
+
description: 'Only trigger for specific customer',
|
|
258
486
|
required: false,
|
|
487
|
+
auth: auth_1.workbuddyAuth,
|
|
488
|
+
refreshers: [],
|
|
489
|
+
options: async ({ auth }) => {
|
|
490
|
+
const authValue = auth;
|
|
491
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
492
|
+
const baseUrl = authValue.props.baseUrl;
|
|
493
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
494
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
495
|
+
url: `${baseUrl}/api/v2/public/customers`,
|
|
496
|
+
headers: {
|
|
497
|
+
Authorization: `Bearer ${token}`,
|
|
498
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
499
|
+
},
|
|
500
|
+
});
|
|
501
|
+
const items = response.body?.items || [];
|
|
502
|
+
return {
|
|
503
|
+
options: items.map((item) => ({
|
|
504
|
+
label: item.name,
|
|
505
|
+
value: item.id,
|
|
506
|
+
})),
|
|
507
|
+
};
|
|
508
|
+
},
|
|
259
509
|
}),
|
|
260
|
-
billingCompany: pieces_framework_1.Property.
|
|
510
|
+
billingCompany: pieces_framework_1.Property.MultiSelectDropdown({
|
|
261
511
|
displayName: 'Filter by Billing Company',
|
|
262
|
-
description: 'Only trigger for specific billing company
|
|
512
|
+
description: 'Only trigger for specific billing company',
|
|
263
513
|
required: false,
|
|
514
|
+
auth: auth_1.workbuddyAuth,
|
|
515
|
+
refreshers: [],
|
|
516
|
+
options: async ({ auth }) => {
|
|
517
|
+
const authValue = auth;
|
|
518
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
519
|
+
const baseUrl = authValue.props.baseUrl;
|
|
520
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
521
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
522
|
+
url: `${baseUrl}/api/v2/public/companies`,
|
|
523
|
+
headers: {
|
|
524
|
+
Authorization: `Bearer ${token}`,
|
|
525
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
526
|
+
},
|
|
527
|
+
});
|
|
528
|
+
const items = response.body?.items || [];
|
|
529
|
+
return {
|
|
530
|
+
options: items.map((item) => ({
|
|
531
|
+
label: item.name,
|
|
532
|
+
value: item.id,
|
|
533
|
+
})),
|
|
534
|
+
};
|
|
535
|
+
},
|
|
264
536
|
}),
|
|
265
|
-
tag: pieces_framework_1.Property.
|
|
537
|
+
tag: pieces_framework_1.Property.MultiSelectDropdown({
|
|
266
538
|
displayName: 'Filter by Tags',
|
|
267
|
-
description: 'Only trigger for specific tags
|
|
539
|
+
description: 'Only trigger for specific tags',
|
|
268
540
|
required: false,
|
|
541
|
+
auth: auth_1.workbuddyAuth,
|
|
542
|
+
refreshers: [],
|
|
543
|
+
options: async ({ auth }) => {
|
|
544
|
+
const authValue = auth;
|
|
545
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
546
|
+
const baseUrl = authValue.props.baseUrl;
|
|
547
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
548
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
549
|
+
url: `${baseUrl}/api/v2/public/settings/tags`,
|
|
550
|
+
headers: {
|
|
551
|
+
Authorization: `Bearer ${token}`,
|
|
552
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
553
|
+
},
|
|
554
|
+
});
|
|
555
|
+
const items = response.body?.items || [];
|
|
556
|
+
return {
|
|
557
|
+
options: items.map((item) => ({
|
|
558
|
+
label: item.name,
|
|
559
|
+
value: item.id,
|
|
560
|
+
})),
|
|
561
|
+
};
|
|
562
|
+
},
|
|
269
563
|
}),
|
|
270
564
|
leadStage: pieces_framework_1.Property.Array({
|
|
271
565
|
displayName: 'Filter by Stage',
|
|
@@ -277,26 +571,77 @@ exports.lead_status_changed_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
277
571
|
description: 'Only trigger for specific source IDs',
|
|
278
572
|
required: false,
|
|
279
573
|
}),
|
|
280
|
-
owner: pieces_framework_1.Property.
|
|
574
|
+
owner: pieces_framework_1.Property.MultiSelectDropdown({
|
|
281
575
|
displayName: 'Filter by Owner',
|
|
282
|
-
description: 'Only trigger for specific owner
|
|
576
|
+
description: 'Only trigger for specific owner',
|
|
283
577
|
required: false,
|
|
578
|
+
auth: auth_1.workbuddyAuth,
|
|
579
|
+
refreshers: [],
|
|
580
|
+
options: async ({ auth }) => {
|
|
581
|
+
const authValue = auth;
|
|
582
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
583
|
+
const baseUrl = authValue.props.baseUrl;
|
|
584
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
585
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
586
|
+
url: `${baseUrl}/api/v2/public/employees`,
|
|
587
|
+
headers: {
|
|
588
|
+
Authorization: `Bearer ${token}`,
|
|
589
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
590
|
+
},
|
|
591
|
+
});
|
|
592
|
+
const items = response.body?.items || [];
|
|
593
|
+
return {
|
|
594
|
+
options: items.map((item) => ({
|
|
595
|
+
label: item.name,
|
|
596
|
+
value: item.id,
|
|
597
|
+
})),
|
|
598
|
+
};
|
|
599
|
+
},
|
|
284
600
|
}),
|
|
285
|
-
type: pieces_framework_1.Property.
|
|
601
|
+
type: pieces_framework_1.Property.MultiSelectDropdown({
|
|
286
602
|
displayName: 'Filter by Job Type',
|
|
287
|
-
description: 'Only trigger for specific job type
|
|
603
|
+
description: 'Only trigger for specific job type',
|
|
288
604
|
required: false,
|
|
605
|
+
auth: auth_1.workbuddyAuth,
|
|
606
|
+
refreshers: [],
|
|
607
|
+
options: async ({ auth }) => {
|
|
608
|
+
const authValue = auth;
|
|
609
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
610
|
+
const baseUrl = authValue.props.baseUrl;
|
|
611
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
612
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
613
|
+
url: `${baseUrl}/api/v2/public/settings/job-types`,
|
|
614
|
+
headers: {
|
|
615
|
+
Authorization: `Bearer ${token}`,
|
|
616
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
617
|
+
},
|
|
618
|
+
});
|
|
619
|
+
const items = response.body?.items || [];
|
|
620
|
+
return {
|
|
621
|
+
options: items.map((item) => ({
|
|
622
|
+
label: item.name,
|
|
623
|
+
value: item.id,
|
|
624
|
+
})),
|
|
625
|
+
};
|
|
626
|
+
},
|
|
289
627
|
}),
|
|
290
628
|
},
|
|
291
629
|
sampleData: {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
630
|
+
id: 'whd_019ceacb-232b-764f-8dfd-748e1a226de2',
|
|
631
|
+
event: 'Lead Status Changed',
|
|
632
|
+
action: 'update',
|
|
633
|
+
createdAt: '2026-03-14T05:21:47.307Z',
|
|
634
|
+
webhookTimestamp: 1773465707307,
|
|
635
|
+
data: {
|
|
636
|
+
lead: {
|
|
637
|
+
id: '507f1f77bcf86cd799439011',
|
|
638
|
+
name: 'New Lead',
|
|
639
|
+
status: 'New',
|
|
640
|
+
source: 'website',
|
|
641
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
642
|
+
customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
643
|
+
owner: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
644
|
+
},
|
|
300
645
|
},
|
|
301
646
|
},
|
|
302
647
|
type: pieces_framework_1.TriggerStrategy.WEBHOOK,
|
|
@@ -319,7 +664,7 @@ exports.lead_status_changed_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
319
664
|
filters.owner = context.propsValue.owner;
|
|
320
665
|
if (context.propsValue.type?.length)
|
|
321
666
|
filters.type = context.propsValue.type;
|
|
322
|
-
// Register webhook with WorkBuddy v2 API
|
|
667
|
+
// Register webhook with WorkBuddy v2 API
|
|
323
668
|
const response = await pieces_common_1.httpClient.sendRequest({
|
|
324
669
|
method: pieces_common_1.HttpMethod.POST,
|
|
325
670
|
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
@@ -348,18 +693,15 @@ exports.lead_status_changed_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
348
693
|
const baseUrl = context.auth.props.baseUrl;
|
|
349
694
|
const webhookId = await context.store.get('webhookId');
|
|
350
695
|
if (webhookId) {
|
|
351
|
-
//
|
|
696
|
+
// Delete webhook to avoid stale subscriptions causing duplicate trigger deliveries
|
|
352
697
|
await pieces_common_1.httpClient.sendRequest({
|
|
353
|
-
method: pieces_common_1.HttpMethod.
|
|
698
|
+
method: pieces_common_1.HttpMethod.DELETE,
|
|
354
699
|
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
355
700
|
headers: {
|
|
356
701
|
Authorization: `Bearer ${token}`,
|
|
357
702
|
'Content-Type': 'application/json',
|
|
358
703
|
'X-WorkBuddy-Version': '2026-01',
|
|
359
704
|
},
|
|
360
|
-
body: {
|
|
361
|
-
status: 'paused',
|
|
362
|
-
},
|
|
363
705
|
});
|
|
364
706
|
}
|
|
365
707
|
},
|
|
@@ -373,20 +715,86 @@ exports.lead_deleted_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
373
715
|
displayName: 'Lead Deleted',
|
|
374
716
|
description: 'Triggered when a lead is deleted',
|
|
375
717
|
props: {
|
|
376
|
-
customer: pieces_framework_1.Property.
|
|
718
|
+
customer: pieces_framework_1.Property.MultiSelectDropdown({
|
|
377
719
|
displayName: 'Filter by Customer',
|
|
378
|
-
description: 'Only trigger for specific customer
|
|
720
|
+
description: 'Only trigger for specific customer',
|
|
379
721
|
required: false,
|
|
722
|
+
auth: auth_1.workbuddyAuth,
|
|
723
|
+
refreshers: [],
|
|
724
|
+
options: async ({ auth }) => {
|
|
725
|
+
const authValue = auth;
|
|
726
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
727
|
+
const baseUrl = authValue.props.baseUrl;
|
|
728
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
729
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
730
|
+
url: `${baseUrl}/api/v2/public/customers`,
|
|
731
|
+
headers: {
|
|
732
|
+
Authorization: `Bearer ${token}`,
|
|
733
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
734
|
+
},
|
|
735
|
+
});
|
|
736
|
+
const items = response.body?.items || [];
|
|
737
|
+
return {
|
|
738
|
+
options: items.map((item) => ({
|
|
739
|
+
label: item.name,
|
|
740
|
+
value: item.id,
|
|
741
|
+
})),
|
|
742
|
+
};
|
|
743
|
+
},
|
|
380
744
|
}),
|
|
381
|
-
billingCompany: pieces_framework_1.Property.
|
|
745
|
+
billingCompany: pieces_framework_1.Property.MultiSelectDropdown({
|
|
382
746
|
displayName: 'Filter by Billing Company',
|
|
383
|
-
description: 'Only trigger for specific billing company
|
|
747
|
+
description: 'Only trigger for specific billing company',
|
|
384
748
|
required: false,
|
|
749
|
+
auth: auth_1.workbuddyAuth,
|
|
750
|
+
refreshers: [],
|
|
751
|
+
options: async ({ auth }) => {
|
|
752
|
+
const authValue = auth;
|
|
753
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
754
|
+
const baseUrl = authValue.props.baseUrl;
|
|
755
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
756
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
757
|
+
url: `${baseUrl}/api/v2/public/companies`,
|
|
758
|
+
headers: {
|
|
759
|
+
Authorization: `Bearer ${token}`,
|
|
760
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
761
|
+
},
|
|
762
|
+
});
|
|
763
|
+
const items = response.body?.items || [];
|
|
764
|
+
return {
|
|
765
|
+
options: items.map((item) => ({
|
|
766
|
+
label: item.name,
|
|
767
|
+
value: item.id,
|
|
768
|
+
})),
|
|
769
|
+
};
|
|
770
|
+
},
|
|
385
771
|
}),
|
|
386
|
-
tag: pieces_framework_1.Property.
|
|
772
|
+
tag: pieces_framework_1.Property.MultiSelectDropdown({
|
|
387
773
|
displayName: 'Filter by Tags',
|
|
388
|
-
description: 'Only trigger for specific tags
|
|
774
|
+
description: 'Only trigger for specific tags',
|
|
389
775
|
required: false,
|
|
776
|
+
auth: auth_1.workbuddyAuth,
|
|
777
|
+
refreshers: [],
|
|
778
|
+
options: async ({ auth }) => {
|
|
779
|
+
const authValue = auth;
|
|
780
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
781
|
+
const baseUrl = authValue.props.baseUrl;
|
|
782
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
783
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
784
|
+
url: `${baseUrl}/api/v2/public/settings/tags`,
|
|
785
|
+
headers: {
|
|
786
|
+
Authorization: `Bearer ${token}`,
|
|
787
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
788
|
+
},
|
|
789
|
+
});
|
|
790
|
+
const items = response.body?.items || [];
|
|
791
|
+
return {
|
|
792
|
+
options: items.map((item) => ({
|
|
793
|
+
label: item.name,
|
|
794
|
+
value: item.id,
|
|
795
|
+
})),
|
|
796
|
+
};
|
|
797
|
+
},
|
|
390
798
|
}),
|
|
391
799
|
leadStage: pieces_framework_1.Property.Array({
|
|
392
800
|
displayName: 'Filter by Stage',
|
|
@@ -398,26 +806,77 @@ exports.lead_deleted_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
398
806
|
description: 'Only trigger for specific source IDs',
|
|
399
807
|
required: false,
|
|
400
808
|
}),
|
|
401
|
-
owner: pieces_framework_1.Property.
|
|
809
|
+
owner: pieces_framework_1.Property.MultiSelectDropdown({
|
|
402
810
|
displayName: 'Filter by Owner',
|
|
403
|
-
description: 'Only trigger for specific owner
|
|
811
|
+
description: 'Only trigger for specific owner',
|
|
404
812
|
required: false,
|
|
813
|
+
auth: auth_1.workbuddyAuth,
|
|
814
|
+
refreshers: [],
|
|
815
|
+
options: async ({ auth }) => {
|
|
816
|
+
const authValue = auth;
|
|
817
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
818
|
+
const baseUrl = authValue.props.baseUrl;
|
|
819
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
820
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
821
|
+
url: `${baseUrl}/api/v2/public/employees`,
|
|
822
|
+
headers: {
|
|
823
|
+
Authorization: `Bearer ${token}`,
|
|
824
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
825
|
+
},
|
|
826
|
+
});
|
|
827
|
+
const items = response.body?.items || [];
|
|
828
|
+
return {
|
|
829
|
+
options: items.map((item) => ({
|
|
830
|
+
label: item.name,
|
|
831
|
+
value: item.id,
|
|
832
|
+
})),
|
|
833
|
+
};
|
|
834
|
+
},
|
|
405
835
|
}),
|
|
406
|
-
type: pieces_framework_1.Property.
|
|
836
|
+
type: pieces_framework_1.Property.MultiSelectDropdown({
|
|
407
837
|
displayName: 'Filter by Job Type',
|
|
408
|
-
description: 'Only trigger for specific job type
|
|
838
|
+
description: 'Only trigger for specific job type',
|
|
409
839
|
required: false,
|
|
840
|
+
auth: auth_1.workbuddyAuth,
|
|
841
|
+
refreshers: [],
|
|
842
|
+
options: async ({ auth }) => {
|
|
843
|
+
const authValue = auth;
|
|
844
|
+
const token = await (0, auth_1.getAccessToken)(authValue);
|
|
845
|
+
const baseUrl = authValue.props.baseUrl;
|
|
846
|
+
const response = await pieces_common_1.httpClient.sendRequest({
|
|
847
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
848
|
+
url: `${baseUrl}/api/v2/public/settings/job-types`,
|
|
849
|
+
headers: {
|
|
850
|
+
Authorization: `Bearer ${token}`,
|
|
851
|
+
'X-WorkBuddy-Version': '2026-01',
|
|
852
|
+
},
|
|
853
|
+
});
|
|
854
|
+
const items = response.body?.items || [];
|
|
855
|
+
return {
|
|
856
|
+
options: items.map((item) => ({
|
|
857
|
+
label: item.name,
|
|
858
|
+
value: item.id,
|
|
859
|
+
})),
|
|
860
|
+
};
|
|
861
|
+
},
|
|
410
862
|
}),
|
|
411
863
|
},
|
|
412
864
|
sampleData: {
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
865
|
+
id: 'whd_019ceacb-232b-764f-8dfd-748e1a226de2',
|
|
866
|
+
event: 'Lead Deleted',
|
|
867
|
+
action: 'remove',
|
|
868
|
+
createdAt: '2026-03-14T05:21:47.307Z',
|
|
869
|
+
webhookTimestamp: 1773465707307,
|
|
870
|
+
data: {
|
|
871
|
+
lead: {
|
|
872
|
+
id: '507f1f77bcf86cd799439011',
|
|
873
|
+
name: 'New Lead',
|
|
874
|
+
status: 'New',
|
|
875
|
+
source: 'website',
|
|
876
|
+
createdAt: '2026-03-05T10:00:00.000Z',
|
|
877
|
+
customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
|
|
878
|
+
owner: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
|
|
879
|
+
},
|
|
421
880
|
},
|
|
422
881
|
},
|
|
423
882
|
type: pieces_framework_1.TriggerStrategy.WEBHOOK,
|
|
@@ -440,7 +899,7 @@ exports.lead_deleted_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
440
899
|
filters.owner = context.propsValue.owner;
|
|
441
900
|
if (context.propsValue.type?.length)
|
|
442
901
|
filters.type = context.propsValue.type;
|
|
443
|
-
// Register webhook with WorkBuddy v2 API
|
|
902
|
+
// Register webhook with WorkBuddy v2 API
|
|
444
903
|
const response = await pieces_common_1.httpClient.sendRequest({
|
|
445
904
|
method: pieces_common_1.HttpMethod.POST,
|
|
446
905
|
url: `${baseUrl}/api/v2/public/webhooks`,
|
|
@@ -469,18 +928,15 @@ exports.lead_deleted_trigger = (0, pieces_framework_1.createTrigger)({
|
|
|
469
928
|
const baseUrl = context.auth.props.baseUrl;
|
|
470
929
|
const webhookId = await context.store.get('webhookId');
|
|
471
930
|
if (webhookId) {
|
|
472
|
-
//
|
|
931
|
+
// Delete webhook to avoid stale subscriptions causing duplicate trigger deliveries
|
|
473
932
|
await pieces_common_1.httpClient.sendRequest({
|
|
474
|
-
method: pieces_common_1.HttpMethod.
|
|
933
|
+
method: pieces_common_1.HttpMethod.DELETE,
|
|
475
934
|
url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
|
|
476
935
|
headers: {
|
|
477
936
|
Authorization: `Bearer ${token}`,
|
|
478
937
|
'Content-Type': 'application/json',
|
|
479
938
|
'X-WorkBuddy-Version': '2026-01',
|
|
480
939
|
},
|
|
481
|
-
body: {
|
|
482
|
-
status: 'paused',
|
|
483
|
-
},
|
|
484
940
|
});
|
|
485
941
|
}
|
|
486
942
|
},
|