@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.
Files changed (222) hide show
  1. package/package.json +24 -0
  2. package/src/index.d.ts +8 -0
  3. package/src/index.d.ts.map +1 -0
  4. package/src/index.js +199 -0
  5. package/src/index.js.map +1 -0
  6. package/src/index.ts +354 -0
  7. package/src/lib/actions/attachments.d.ts +17 -0
  8. package/src/lib/actions/attachments.d.ts.map +1 -0
  9. package/src/lib/actions/attachments.js +79 -0
  10. package/src/lib/actions/attachments.js.map +1 -0
  11. package/src/lib/actions/attachments.ts +85 -0
  12. package/src/lib/actions/crm->-companies.d.ts +16 -0
  13. package/src/lib/actions/crm->-companies.d.ts.map +1 -0
  14. package/src/lib/actions/crm->-companies.js +77 -0
  15. package/src/lib/actions/crm->-companies.js.map +1 -0
  16. package/src/lib/actions/crm->-companies.ts +84 -0
  17. package/src/lib/actions/crm->-contacts.d.ts +16 -0
  18. package/src/lib/actions/crm->-contacts.d.ts.map +1 -0
  19. package/src/lib/actions/crm->-contacts.js +77 -0
  20. package/src/lib/actions/crm->-contacts.js.map +1 -0
  21. package/src/lib/actions/crm->-contacts.ts +84 -0
  22. package/src/lib/actions/crm->-contractors.d.ts +16 -0
  23. package/src/lib/actions/crm->-contractors.d.ts.map +1 -0
  24. package/src/lib/actions/crm->-contractors.js +77 -0
  25. package/src/lib/actions/crm->-contractors.js.map +1 -0
  26. package/src/lib/actions/crm->-contractors.ts +84 -0
  27. package/src/lib/actions/crm->-customers.d.ts +35 -0
  28. package/src/lib/actions/crm->-customers.d.ts.map +1 -0
  29. package/src/lib/actions/crm->-customers.js +180 -0
  30. package/src/lib/actions/crm->-customers.js.map +1 -0
  31. package/src/lib/actions/crm->-customers.ts +203 -0
  32. package/src/lib/actions/crm->-employees.d.ts +16 -0
  33. package/src/lib/actions/crm->-employees.d.ts.map +1 -0
  34. package/src/lib/actions/crm->-employees.js +77 -0
  35. package/src/lib/actions/crm->-employees.js.map +1 -0
  36. package/src/lib/actions/crm->-employees.ts +84 -0
  37. package/src/lib/actions/crm->-external-users.d.ts +16 -0
  38. package/src/lib/actions/crm->-external-users.d.ts.map +1 -0
  39. package/src/lib/actions/crm->-external-users.js +77 -0
  40. package/src/lib/actions/crm->-external-users.js.map +1 -0
  41. package/src/lib/actions/crm->-external-users.ts +84 -0
  42. package/src/lib/actions/crm->-invites.d.ts +16 -0
  43. package/src/lib/actions/crm->-invites.d.ts.map +1 -0
  44. package/src/lib/actions/crm->-invites.js +77 -0
  45. package/src/lib/actions/crm->-invites.js.map +1 -0
  46. package/src/lib/actions/crm->-invites.ts +84 -0
  47. package/src/lib/actions/crm->-sites.d.ts +17 -0
  48. package/src/lib/actions/crm->-sites.d.ts.map +1 -0
  49. package/src/lib/actions/crm->-sites.js +86 -0
  50. package/src/lib/actions/crm->-sites.js.map +1 -0
  51. package/src/lib/actions/crm->-sites.ts +95 -0
  52. package/src/lib/actions/crm->-suppliers.d.ts +16 -0
  53. package/src/lib/actions/crm->-suppliers.d.ts.map +1 -0
  54. package/src/lib/actions/crm->-suppliers.js +77 -0
  55. package/src/lib/actions/crm->-suppliers.js.map +1 -0
  56. package/src/lib/actions/crm->-suppliers.ts +84 -0
  57. package/src/lib/actions/data-export.d.ts +11 -0
  58. package/src/lib/actions/data-export.d.ts.map +1 -0
  59. package/src/lib/actions/data-export.js +78 -0
  60. package/src/lib/actions/data-export.js.map +1 -0
  61. package/src/lib/actions/data-export.ts +82 -0
  62. package/src/lib/actions/index.d.ts +25 -0
  63. package/src/lib/actions/index.d.ts.map +1 -0
  64. package/src/lib/actions/index.js +41 -0
  65. package/src/lib/actions/index.js.map +1 -0
  66. package/src/lib/actions/index.ts +24 -0
  67. package/src/lib/actions/jobs->-activities.d.ts +87 -0
  68. package/src/lib/actions/jobs->-activities.d.ts.map +1 -0
  69. package/src/lib/actions/jobs->-activities.js +445 -0
  70. package/src/lib/actions/jobs->-activities.js.map +1 -0
  71. package/src/lib/actions/jobs->-activities.ts +473 -0
  72. package/src/lib/actions/jobs->-contacts.d.ts +31 -0
  73. package/src/lib/actions/jobs->-contacts.d.ts.map +1 -0
  74. package/src/lib/actions/jobs->-contacts.js +129 -0
  75. package/src/lib/actions/jobs->-contacts.js.map +1 -0
  76. package/src/lib/actions/jobs->-contacts.ts +141 -0
  77. package/src/lib/actions/jobs->-files.d.ts +31 -0
  78. package/src/lib/actions/jobs->-files.d.ts.map +1 -0
  79. package/src/lib/actions/jobs->-files.js +129 -0
  80. package/src/lib/actions/jobs->-files.js.map +1 -0
  81. package/src/lib/actions/jobs->-files.ts +141 -0
  82. package/src/lib/actions/jobs->-tasks.d.ts +75 -0
  83. package/src/lib/actions/jobs->-tasks.d.ts.map +1 -0
  84. package/src/lib/actions/jobs->-tasks.js +395 -0
  85. package/src/lib/actions/jobs->-tasks.js.map +1 -0
  86. package/src/lib/actions/jobs->-tasks.ts +417 -0
  87. package/src/lib/actions/jobs.d.ts +148 -0
  88. package/src/lib/actions/jobs.d.ts.map +1 -0
  89. package/src/lib/actions/jobs.js +800 -0
  90. package/src/lib/actions/jobs.js.map +1 -0
  91. package/src/lib/actions/jobs.ts +846 -0
  92. package/src/lib/actions/mcp-context.d.ts +16 -0
  93. package/src/lib/actions/mcp-context.d.ts.map +1 -0
  94. package/src/lib/actions/mcp-context.js +82 -0
  95. package/src/lib/actions/mcp-context.js.map +1 -0
  96. package/src/lib/actions/mcp-context.ts +86 -0
  97. package/src/lib/actions/mcp.d.ts +21 -0
  98. package/src/lib/actions/mcp.d.ts.map +1 -0
  99. package/src/lib/actions/mcp.js +104 -0
  100. package/src/lib/actions/mcp.js.map +1 -0
  101. package/src/lib/actions/mcp.ts +112 -0
  102. package/src/lib/actions/settings.d.ts +57 -0
  103. package/src/lib/actions/settings.d.ts.map +1 -0
  104. package/src/lib/actions/settings.js +257 -0
  105. package/src/lib/actions/settings.js.map +1 -0
  106. package/src/lib/actions/settings.ts +301 -0
  107. package/src/lib/actions/stages->-activities.d.ts +87 -0
  108. package/src/lib/actions/stages->-activities.d.ts.map +1 -0
  109. package/src/lib/actions/stages->-activities.js +445 -0
  110. package/src/lib/actions/stages->-activities.js.map +1 -0
  111. package/src/lib/actions/stages->-activities.ts +473 -0
  112. package/src/lib/actions/stages->-files.d.ts +31 -0
  113. package/src/lib/actions/stages->-files.d.ts.map +1 -0
  114. package/src/lib/actions/stages->-files.js +129 -0
  115. package/src/lib/actions/stages->-files.js.map +1 -0
  116. package/src/lib/actions/stages->-files.ts +141 -0
  117. package/src/lib/actions/stages->-resources.d.ts +58 -0
  118. package/src/lib/actions/stages->-resources.d.ts.map +1 -0
  119. package/src/lib/actions/stages->-resources.js +279 -0
  120. package/src/lib/actions/stages->-resources.js.map +1 -0
  121. package/src/lib/actions/stages->-resources.ts +302 -0
  122. package/src/lib/actions/stages->-tasks.d.ts +77 -0
  123. package/src/lib/actions/stages->-tasks.d.ts.map +1 -0
  124. package/src/lib/actions/stages->-tasks.js +405 -0
  125. package/src/lib/actions/stages->-tasks.js.map +1 -0
  126. package/src/lib/actions/stages->-tasks.ts +427 -0
  127. package/src/lib/actions/stages.d.ts +85 -0
  128. package/src/lib/actions/stages.d.ts.map +1 -0
  129. package/src/lib/actions/stages.js +417 -0
  130. package/src/lib/actions/stages.js.map +1 -0
  131. package/src/lib/actions/stages.ts +452 -0
  132. package/src/lib/actions/webhooks-v2.d.ts +72 -0
  133. package/src/lib/actions/webhooks-v2.d.ts.map +1 -0
  134. package/src/lib/actions/webhooks-v2.js +297 -0
  135. package/src/lib/actions/webhooks-v2.js.map +1 -0
  136. package/src/lib/actions/webhooks-v2.ts +337 -0
  137. package/src/lib/actions/webhooks.d.ts +48 -0
  138. package/src/lib/actions/webhooks.d.ts.map +1 -0
  139. package/src/lib/actions/webhooks.js +292 -0
  140. package/src/lib/actions/webhooks.js.map +1 -0
  141. package/src/lib/actions/webhooks.ts +318 -0
  142. package/src/lib/auth.d.ts +18 -0
  143. package/src/lib/auth.d.ts.map +1 -0
  144. package/src/lib/auth.js +77 -0
  145. package/src/lib/auth.js.map +1 -0
  146. package/src/lib/auth.ts +84 -0
  147. package/src/lib/common/index.d.ts +11 -0
  148. package/src/lib/common/index.d.ts.map +1 -0
  149. package/src/lib/common/index.js +8 -0
  150. package/src/lib/common/index.js.map +1 -0
  151. package/src/lib/common/index.ts +12 -0
  152. package/src/lib/triggers/activity.d.ts +77 -0
  153. package/src/lib/triggers/activity.d.ts.map +1 -0
  154. package/src/lib/triggers/activity.js +241 -0
  155. package/src/lib/triggers/activity.js.map +1 -0
  156. package/src/lib/triggers/activity.ts +261 -0
  157. package/src/lib/triggers/allocation.d.ts +53 -0
  158. package/src/lib/triggers/allocation.d.ts.map +1 -0
  159. package/src/lib/triggers/allocation.js +181 -0
  160. package/src/lib/triggers/allocation.js.map +1 -0
  161. package/src/lib/triggers/allocation.ts +198 -0
  162. package/src/lib/triggers/bill.d.ts +102 -0
  163. package/src/lib/triggers/bill.d.ts.map +1 -0
  164. package/src/lib/triggers/bill.js +327 -0
  165. package/src/lib/triggers/bill.js.map +1 -0
  166. package/src/lib/triggers/bill.ts +355 -0
  167. package/src/lib/triggers/form.d.ts +19 -0
  168. package/src/lib/triggers/form.d.ts.map +1 -0
  169. package/src/lib/triggers/form.js +65 -0
  170. package/src/lib/triggers/form.js.map +1 -0
  171. package/src/lib/triggers/form.ts +68 -0
  172. package/src/lib/triggers/index.d.ts +10 -0
  173. package/src/lib/triggers/index.d.ts.map +1 -0
  174. package/src/lib/triggers/index.js +26 -0
  175. package/src/lib/triggers/index.js.map +1 -0
  176. package/src/lib/triggers/index.ts +9 -0
  177. package/src/lib/triggers/invoice.d.ts +102 -0
  178. package/src/lib/triggers/invoice.d.ts.map +1 -0
  179. package/src/lib/triggers/invoice.js +327 -0
  180. package/src/lib/triggers/invoice.js.map +1 -0
  181. package/src/lib/triggers/invoice.ts +355 -0
  182. package/src/lib/triggers/item.d.ts +53 -0
  183. package/src/lib/triggers/item.d.ts.map +1 -0
  184. package/src/lib/triggers/item.js +181 -0
  185. package/src/lib/triggers/item.js.map +1 -0
  186. package/src/lib/triggers/item.ts +198 -0
  187. package/src/lib/triggers/job.d.ts +102 -0
  188. package/src/lib/triggers/job.d.ts.map +1 -0
  189. package/src/lib/triggers/job.js +419 -0
  190. package/src/lib/triggers/job.js.map +1 -0
  191. package/src/lib/triggers/job.ts +447 -0
  192. package/src/lib/triggers/lead.d.ts +102 -0
  193. package/src/lib/triggers/lead.d.ts.map +1 -0
  194. package/src/lib/triggers/lead.js +319 -0
  195. package/src/lib/triggers/lead.js.map +1 -0
  196. package/src/lib/triggers/lead.ts +347 -0
  197. package/src/lib/triggers/opportunity.d.ts +102 -0
  198. package/src/lib/triggers/opportunity.d.ts.map +1 -0
  199. package/src/lib/triggers/opportunity.js +319 -0
  200. package/src/lib/triggers/opportunity.js.map +1 -0
  201. package/src/lib/triggers/opportunity.ts +347 -0
  202. package/src/lib/triggers/quote.d.ts +102 -0
  203. package/src/lib/triggers/quote.d.ts.map +1 -0
  204. package/src/lib/triggers/quote.js +327 -0
  205. package/src/lib/triggers/quote.js.map +1 -0
  206. package/src/lib/triggers/quote.ts +355 -0
  207. package/src/lib/triggers/site.d.ts +19 -0
  208. package/src/lib/triggers/site.d.ts.map +1 -0
  209. package/src/lib/triggers/site.js +65 -0
  210. package/src/lib/triggers/site.js.map +1 -0
  211. package/src/lib/triggers/site.ts +68 -0
  212. package/src/lib/triggers/stage.d.ts +102 -0
  213. package/src/lib/triggers/stage.d.ts.map +1 -0
  214. package/src/lib/triggers/stage.js +487 -0
  215. package/src/lib/triggers/stage.js.map +1 -0
  216. package/src/lib/triggers/stage.ts +515 -0
  217. package/src/lib/triggers/task.d.ts +102 -0
  218. package/src/lib/triggers/task.d.ts.map +1 -0
  219. package/src/lib/triggers/task.js +323 -0
  220. package/src/lib/triggers/task.js.map +1 -0
  221. package/src/lib/triggers/task.ts +351 -0
  222. package/src/lib/workbuddy.svg +5 -0
@@ -0,0 +1,447 @@
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 job_created_trigger = createTrigger({
6
+ name: 'JobCreated',
7
+ auth: workbuddyAuth,
8
+ displayName: 'Job Created',
9
+ description: 'Triggered when a new job 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
+ job: {
21
+ id: '507f1f77bcf86cd799439011',
22
+ mode: 'job',
23
+ jobNumber: 'J10001',
24
+ description: 'Sample job description',
25
+ status: 'Open',
26
+ source: 'web',
27
+ createdAt: '2026-03-05T10:00:00.000Z',
28
+ updatedAt: '2026-03-05T10:00:00.000Z',
29
+ startDate: '2026-03-05T10:00:00.000Z',
30
+ dueDate: '2026-03-15T10:00:00.000Z',
31
+ completedDate: null,
32
+ customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
33
+ customerPO: 'PO-1234',
34
+ customerWO: 'WO-5678',
35
+ owner: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
36
+ labels: [{ id: '507f1f77bcf86cd799439011', name: 'Urgent' }],
37
+ zones: [{ id: '507f1f77bcf86cd799439011', name: 'North' }],
38
+ site: {
39
+ id: '507f1f77bcf86cd799439011',
40
+ name: 'Main Office',
41
+ address: {
42
+ street: '123 Main St',
43
+ suburb: 'Sydney',
44
+ state: 'NSW',
45
+ postcode: '2000',
46
+ country: 'Australia',
47
+ formatted: '123 Main St, Sydney NSW 2000',
48
+ },
49
+ },
50
+ priority: { id: '507f1f77bcf86cd799439011', name: 'High' },
51
+ type: { id: '507f1f77bcf86cd799439011', name: 'Maintenance' },
52
+ billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
53
+ },
54
+ },
55
+ type: TriggerStrategy.WEBHOOK,
56
+
57
+ async onEnable(context) {
58
+ const token = await getAccessToken(context.auth);
59
+ const baseUrl = context.auth.props.baseUrl;
60
+
61
+ // Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
62
+ const response = await httpClient.sendRequest<{ data: { id: string } }>({
63
+ method: HttpMethod.POST,
64
+ url: `${baseUrl}/api/v2/public/webhooks`,
65
+ headers: {
66
+ Authorization: `Bearer ${token}`,
67
+ 'Content-Type': 'application/json',
68
+ 'X-WorkBuddy-Version': '2026-01',
69
+ },
70
+ body: {
71
+ name: `Activepieces: Job Created`,
72
+ url: context.webhookUrl,
73
+ entity: 'job',
74
+ events: ['Job Created'],
75
+ ...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
76
+ ? { filters: context.propsValue.filters }
77
+ : {}),
78
+ workflow: {
79
+ platform: 'activepieces',
80
+ integrationId: context.webhookUrl,
81
+ },
82
+ },
83
+ });
84
+
85
+ // Store webhook ID for cleanup
86
+ await context.store.put('webhookId', response.body.data.id);
87
+ },
88
+
89
+ async onDisable(context) {
90
+ const token = await getAccessToken(context.auth);
91
+ const baseUrl = context.auth.props.baseUrl;
92
+ const webhookId = await context.store.get<string>('webhookId');
93
+
94
+ if (webhookId) {
95
+ // Pause webhook (server keeps it for potential reactivation)
96
+ await httpClient.sendRequest({
97
+ method: HttpMethod.PATCH,
98
+ url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
99
+ headers: {
100
+ Authorization: `Bearer ${token}`,
101
+ 'Content-Type': 'application/json',
102
+ 'X-WorkBuddy-Version': '2026-01',
103
+ },
104
+ body: {
105
+ status: 'paused',
106
+ },
107
+ });
108
+ }
109
+ },
110
+
111
+ async run(context) {
112
+ return [context.payload.body];
113
+ },
114
+ });
115
+
116
+ export const job_updated_trigger = createTrigger({
117
+ name: 'JobUpdated',
118
+ auth: workbuddyAuth,
119
+ displayName: 'Job Updated',
120
+ description: 'Triggered when a job is updated',
121
+ props: {
122
+ filters: Property.Json({
123
+ displayName: 'Filters',
124
+ description:
125
+ 'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
126
+ required: false,
127
+ defaultValue: {},
128
+ }),
129
+ },
130
+ sampleData: {
131
+ job: {
132
+ id: '507f1f77bcf86cd799439011',
133
+ mode: 'job',
134
+ jobNumber: 'J10001',
135
+ description: 'Sample job description',
136
+ status: 'Open',
137
+ source: 'web',
138
+ createdAt: '2026-03-05T10:00:00.000Z',
139
+ updatedAt: '2026-03-05T10:00:00.000Z',
140
+ startDate: '2026-03-05T10:00:00.000Z',
141
+ dueDate: '2026-03-15T10:00:00.000Z',
142
+ completedDate: null,
143
+ customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
144
+ customerPO: 'PO-1234',
145
+ customerWO: 'WO-5678',
146
+ owner: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
147
+ labels: [{ id: '507f1f77bcf86cd799439011', name: 'Urgent' }],
148
+ zones: [{ id: '507f1f77bcf86cd799439011', name: 'North' }],
149
+ site: {
150
+ id: '507f1f77bcf86cd799439011',
151
+ name: 'Main Office',
152
+ address: {
153
+ street: '123 Main St',
154
+ suburb: 'Sydney',
155
+ state: 'NSW',
156
+ postcode: '2000',
157
+ country: 'Australia',
158
+ formatted: '123 Main St, Sydney NSW 2000',
159
+ },
160
+ },
161
+ priority: { id: '507f1f77bcf86cd799439011', name: 'High' },
162
+ type: { id: '507f1f77bcf86cd799439011', name: 'Maintenance' },
163
+ billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
164
+ },
165
+ },
166
+ type: TriggerStrategy.WEBHOOK,
167
+
168
+ async onEnable(context) {
169
+ const token = await getAccessToken(context.auth);
170
+ const baseUrl = context.auth.props.baseUrl;
171
+
172
+ // Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
173
+ const response = await httpClient.sendRequest<{ data: { id: string } }>({
174
+ method: HttpMethod.POST,
175
+ url: `${baseUrl}/api/v2/public/webhooks`,
176
+ headers: {
177
+ Authorization: `Bearer ${token}`,
178
+ 'Content-Type': 'application/json',
179
+ 'X-WorkBuddy-Version': '2026-01',
180
+ },
181
+ body: {
182
+ name: `Activepieces: Job Updated`,
183
+ url: context.webhookUrl,
184
+ entity: 'job',
185
+ events: ['Job Updated'],
186
+ ...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
187
+ ? { filters: context.propsValue.filters }
188
+ : {}),
189
+ workflow: {
190
+ platform: 'activepieces',
191
+ integrationId: context.webhookUrl,
192
+ },
193
+ },
194
+ });
195
+
196
+ // Store webhook ID for cleanup
197
+ await context.store.put('webhookId', response.body.data.id);
198
+ },
199
+
200
+ async onDisable(context) {
201
+ const token = await getAccessToken(context.auth);
202
+ const baseUrl = context.auth.props.baseUrl;
203
+ const webhookId = await context.store.get<string>('webhookId');
204
+
205
+ if (webhookId) {
206
+ // Pause webhook (server keeps it for potential reactivation)
207
+ await httpClient.sendRequest({
208
+ method: HttpMethod.PATCH,
209
+ url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
210
+ headers: {
211
+ Authorization: `Bearer ${token}`,
212
+ 'Content-Type': 'application/json',
213
+ 'X-WorkBuddy-Version': '2026-01',
214
+ },
215
+ body: {
216
+ status: 'paused',
217
+ },
218
+ });
219
+ }
220
+ },
221
+
222
+ async run(context) {
223
+ return [context.payload.body];
224
+ },
225
+ });
226
+
227
+ export const job_status_changed_trigger = createTrigger({
228
+ name: 'JobStatusChanged',
229
+ auth: workbuddyAuth,
230
+ displayName: 'Job Status Changed',
231
+ description: 'Triggered when a job status changes',
232
+ props: {
233
+ filters: Property.Json({
234
+ displayName: 'Filters',
235
+ description:
236
+ 'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
237
+ required: false,
238
+ defaultValue: {},
239
+ }),
240
+ },
241
+ sampleData: {
242
+ job: {
243
+ id: '507f1f77bcf86cd799439011',
244
+ mode: 'job',
245
+ jobNumber: 'J10001',
246
+ description: 'Sample job description',
247
+ status: 'Open',
248
+ source: 'web',
249
+ createdAt: '2026-03-05T10:00:00.000Z',
250
+ updatedAt: '2026-03-05T10:00:00.000Z',
251
+ startDate: '2026-03-05T10:00:00.000Z',
252
+ dueDate: '2026-03-15T10:00:00.000Z',
253
+ completedDate: null,
254
+ customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
255
+ customerPO: 'PO-1234',
256
+ customerWO: 'WO-5678',
257
+ owner: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
258
+ labels: [{ id: '507f1f77bcf86cd799439011', name: 'Urgent' }],
259
+ zones: [{ id: '507f1f77bcf86cd799439011', name: 'North' }],
260
+ site: {
261
+ id: '507f1f77bcf86cd799439011',
262
+ name: 'Main Office',
263
+ address: {
264
+ street: '123 Main St',
265
+ suburb: 'Sydney',
266
+ state: 'NSW',
267
+ postcode: '2000',
268
+ country: 'Australia',
269
+ formatted: '123 Main St, Sydney NSW 2000',
270
+ },
271
+ },
272
+ priority: { id: '507f1f77bcf86cd799439011', name: 'High' },
273
+ type: { id: '507f1f77bcf86cd799439011', name: 'Maintenance' },
274
+ billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
275
+ },
276
+ },
277
+ type: TriggerStrategy.WEBHOOK,
278
+
279
+ async onEnable(context) {
280
+ const token = await getAccessToken(context.auth);
281
+ const baseUrl = context.auth.props.baseUrl;
282
+
283
+ // Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
284
+ const response = await httpClient.sendRequest<{ data: { id: string } }>({
285
+ method: HttpMethod.POST,
286
+ url: `${baseUrl}/api/v2/public/webhooks`,
287
+ headers: {
288
+ Authorization: `Bearer ${token}`,
289
+ 'Content-Type': 'application/json',
290
+ 'X-WorkBuddy-Version': '2026-01',
291
+ },
292
+ body: {
293
+ name: `Activepieces: Job Status Changed`,
294
+ url: context.webhookUrl,
295
+ entity: 'job',
296
+ events: ['Job Status Changed'],
297
+ ...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
298
+ ? { filters: context.propsValue.filters }
299
+ : {}),
300
+ workflow: {
301
+ platform: 'activepieces',
302
+ integrationId: context.webhookUrl,
303
+ },
304
+ },
305
+ });
306
+
307
+ // Store webhook ID for cleanup
308
+ await context.store.put('webhookId', response.body.data.id);
309
+ },
310
+
311
+ async onDisable(context) {
312
+ const token = await getAccessToken(context.auth);
313
+ const baseUrl = context.auth.props.baseUrl;
314
+ const webhookId = await context.store.get<string>('webhookId');
315
+
316
+ if (webhookId) {
317
+ // Pause webhook (server keeps it for potential reactivation)
318
+ await httpClient.sendRequest({
319
+ method: HttpMethod.PATCH,
320
+ url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
321
+ headers: {
322
+ Authorization: `Bearer ${token}`,
323
+ 'Content-Type': 'application/json',
324
+ 'X-WorkBuddy-Version': '2026-01',
325
+ },
326
+ body: {
327
+ status: 'paused',
328
+ },
329
+ });
330
+ }
331
+ },
332
+
333
+ async run(context) {
334
+ return [context.payload.body];
335
+ },
336
+ });
337
+
338
+ export const job_deleted_trigger = createTrigger({
339
+ name: 'JobDeleted',
340
+ auth: workbuddyAuth,
341
+ displayName: 'Job Deleted',
342
+ description: 'Triggered when a job is deleted',
343
+ props: {
344
+ filters: Property.Json({
345
+ displayName: 'Filters',
346
+ description:
347
+ 'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
348
+ required: false,
349
+ defaultValue: {},
350
+ }),
351
+ },
352
+ sampleData: {
353
+ job: {
354
+ id: '507f1f77bcf86cd799439011',
355
+ mode: 'job',
356
+ jobNumber: 'J10001',
357
+ description: 'Sample job description',
358
+ status: 'Open',
359
+ source: 'web',
360
+ createdAt: '2026-03-05T10:00:00.000Z',
361
+ updatedAt: '2026-03-05T10:00:00.000Z',
362
+ startDate: '2026-03-05T10:00:00.000Z',
363
+ dueDate: '2026-03-15T10:00:00.000Z',
364
+ completedDate: null,
365
+ customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
366
+ customerPO: 'PO-1234',
367
+ customerWO: 'WO-5678',
368
+ owner: { id: '507f1f77bcf86cd799439011', name: 'John Smith' },
369
+ labels: [{ id: '507f1f77bcf86cd799439011', name: 'Urgent' }],
370
+ zones: [{ id: '507f1f77bcf86cd799439011', name: 'North' }],
371
+ site: {
372
+ id: '507f1f77bcf86cd799439011',
373
+ name: 'Main Office',
374
+ address: {
375
+ street: '123 Main St',
376
+ suburb: 'Sydney',
377
+ state: 'NSW',
378
+ postcode: '2000',
379
+ country: 'Australia',
380
+ formatted: '123 Main St, Sydney NSW 2000',
381
+ },
382
+ },
383
+ priority: { id: '507f1f77bcf86cd799439011', name: 'High' },
384
+ type: { id: '507f1f77bcf86cd799439011', name: 'Maintenance' },
385
+ billingCompany: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
386
+ },
387
+ },
388
+ type: TriggerStrategy.WEBHOOK,
389
+
390
+ async onEnable(context) {
391
+ const token = await getAccessToken(context.auth);
392
+ const baseUrl = context.auth.props.baseUrl;
393
+
394
+ // Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
395
+ const response = await httpClient.sendRequest<{ data: { id: string } }>({
396
+ method: HttpMethod.POST,
397
+ url: `${baseUrl}/api/v2/public/webhooks`,
398
+ headers: {
399
+ Authorization: `Bearer ${token}`,
400
+ 'Content-Type': 'application/json',
401
+ 'X-WorkBuddy-Version': '2026-01',
402
+ },
403
+ body: {
404
+ name: `Activepieces: Job Deleted`,
405
+ url: context.webhookUrl,
406
+ entity: 'job',
407
+ events: ['Job Deleted'],
408
+ ...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
409
+ ? { filters: context.propsValue.filters }
410
+ : {}),
411
+ workflow: {
412
+ platform: 'activepieces',
413
+ integrationId: context.webhookUrl,
414
+ },
415
+ },
416
+ });
417
+
418
+ // Store webhook ID for cleanup
419
+ await context.store.put('webhookId', response.body.data.id);
420
+ },
421
+
422
+ async onDisable(context) {
423
+ const token = await getAccessToken(context.auth);
424
+ const baseUrl = context.auth.props.baseUrl;
425
+ const webhookId = await context.store.get<string>('webhookId');
426
+
427
+ if (webhookId) {
428
+ // Pause webhook (server keeps it for potential reactivation)
429
+ await httpClient.sendRequest({
430
+ method: HttpMethod.PATCH,
431
+ url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
432
+ headers: {
433
+ Authorization: `Bearer ${token}`,
434
+ 'Content-Type': 'application/json',
435
+ 'X-WorkBuddy-Version': '2026-01',
436
+ },
437
+ body: {
438
+ status: 'paused',
439
+ },
440
+ });
441
+ }
442
+ },
443
+
444
+ async run(context) {
445
+ return [context.payload.body];
446
+ },
447
+ });
@@ -0,0 +1,102 @@
1
+ import { TriggerStrategy } from '@activepieces/pieces-framework';
2
+ export declare const lead_created_trigger: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
3
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
4
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
5
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
6
+ }>, {
7
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
8
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").CustomAuthProperty<{
9
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
10
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
11
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
12
+ }>, {
13
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
14
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.MANUAL, import("@activepieces/pieces-framework").CustomAuthProperty<{
15
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
16
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
17
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
18
+ }>, {
19
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
20
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
21
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
22
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
23
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
24
+ }>, {
25
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
26
+ }>;
27
+ export declare const lead_updated_trigger: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
28
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
29
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
30
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
31
+ }>, {
32
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
33
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").CustomAuthProperty<{
34
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
35
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
36
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
37
+ }>, {
38
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
39
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.MANUAL, import("@activepieces/pieces-framework").CustomAuthProperty<{
40
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
41
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
42
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
43
+ }>, {
44
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
45
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
46
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
47
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
48
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
49
+ }>, {
50
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
51
+ }>;
52
+ export declare const lead_status_changed_trigger: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
53
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
54
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
55
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
56
+ }>, {
57
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
58
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").CustomAuthProperty<{
59
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
60
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
61
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
62
+ }>, {
63
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
64
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.MANUAL, import("@activepieces/pieces-framework").CustomAuthProperty<{
65
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
66
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
67
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
68
+ }>, {
69
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
70
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
71
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
72
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
73
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
74
+ }>, {
75
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
76
+ }>;
77
+ export declare const lead_deleted_trigger: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
78
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
79
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
80
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
81
+ }>, {
82
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
83
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").CustomAuthProperty<{
84
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
85
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
86
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
87
+ }>, {
88
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
89
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.MANUAL, import("@activepieces/pieces-framework").CustomAuthProperty<{
90
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
91
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
92
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
93
+ }>, {
94
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
95
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
96
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
97
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
98
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
99
+ }>, {
100
+ filters: import("@activepieces/pieces-framework").JsonProperty<false>;
101
+ }>;
102
+ //# sourceMappingURL=lead.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lead.d.ts","sourceRoot":"","sources":["lead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAY,MAAM,gCAAgC,CAAC;AAI1F,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;EAoF/B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;EAoF/B,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;EAoFtC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;EAoF/B,CAAC"}