@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,355 @@
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 invoice_created_trigger = createTrigger({
6
+ name: 'InvoiceCreated',
7
+ auth: workbuddyAuth,
8
+ displayName: 'Invoice Created',
9
+ description: 'Triggered when a new invoice 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
+ invoice: {
21
+ id: '507f1f77bcf86cd799439011',
22
+ invoiceNumber: 'INV-1001',
23
+ status: 'Sent',
24
+ total: 1500.0,
25
+ tax: 150.0,
26
+ createdAt: '2026-03-05T10:00:00.000Z',
27
+ dueDate: '2026-04-05T10:00:00.000Z',
28
+ customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
29
+ job: { id: '507f1f77bcf86cd799439011', name: 'J10001' },
30
+ },
31
+ },
32
+ type: TriggerStrategy.WEBHOOK,
33
+
34
+ async onEnable(context) {
35
+ const token = await getAccessToken(context.auth);
36
+ const baseUrl = context.auth.props.baseUrl;
37
+
38
+ // Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
39
+ const response = await httpClient.sendRequest<{ data: { id: string } }>({
40
+ method: HttpMethod.POST,
41
+ url: `${baseUrl}/api/v2/public/webhooks`,
42
+ headers: {
43
+ Authorization: `Bearer ${token}`,
44
+ 'Content-Type': 'application/json',
45
+ 'X-WorkBuddy-Version': '2026-01',
46
+ },
47
+ body: {
48
+ name: `Activepieces: Invoice Created`,
49
+ url: context.webhookUrl,
50
+ entity: 'invoice',
51
+ events: ['Invoice Created'],
52
+ ...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
53
+ ? { filters: context.propsValue.filters }
54
+ : {}),
55
+ workflow: {
56
+ platform: 'activepieces',
57
+ integrationId: context.webhookUrl,
58
+ },
59
+ },
60
+ });
61
+
62
+ // Store webhook ID for cleanup
63
+ await context.store.put('webhookId', response.body.data.id);
64
+ },
65
+
66
+ async onDisable(context) {
67
+ const token = await getAccessToken(context.auth);
68
+ const baseUrl = context.auth.props.baseUrl;
69
+ const webhookId = await context.store.get<string>('webhookId');
70
+
71
+ if (webhookId) {
72
+ // Pause webhook (server keeps it for potential reactivation)
73
+ await httpClient.sendRequest({
74
+ method: HttpMethod.PATCH,
75
+ url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
76
+ headers: {
77
+ Authorization: `Bearer ${token}`,
78
+ 'Content-Type': 'application/json',
79
+ 'X-WorkBuddy-Version': '2026-01',
80
+ },
81
+ body: {
82
+ status: 'paused',
83
+ },
84
+ });
85
+ }
86
+ },
87
+
88
+ async run(context) {
89
+ return [context.payload.body];
90
+ },
91
+ });
92
+
93
+ export const invoice_updated_trigger = createTrigger({
94
+ name: 'InvoiceUpdated',
95
+ auth: workbuddyAuth,
96
+ displayName: 'Invoice Updated',
97
+ description: 'Triggered when an invoice is updated',
98
+ props: {
99
+ filters: Property.Json({
100
+ displayName: 'Filters',
101
+ description:
102
+ 'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
103
+ required: false,
104
+ defaultValue: {},
105
+ }),
106
+ },
107
+ sampleData: {
108
+ invoice: {
109
+ id: '507f1f77bcf86cd799439011',
110
+ invoiceNumber: 'INV-1001',
111
+ status: 'Sent',
112
+ total: 1500.0,
113
+ tax: 150.0,
114
+ createdAt: '2026-03-05T10:00:00.000Z',
115
+ dueDate: '2026-04-05T10:00:00.000Z',
116
+ customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
117
+ job: { id: '507f1f77bcf86cd799439011', name: 'J10001' },
118
+ },
119
+ },
120
+ type: TriggerStrategy.WEBHOOK,
121
+
122
+ async onEnable(context) {
123
+ const token = await getAccessToken(context.auth);
124
+ const baseUrl = context.auth.props.baseUrl;
125
+
126
+ // Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
127
+ const response = await httpClient.sendRequest<{ data: { id: string } }>({
128
+ method: HttpMethod.POST,
129
+ url: `${baseUrl}/api/v2/public/webhooks`,
130
+ headers: {
131
+ Authorization: `Bearer ${token}`,
132
+ 'Content-Type': 'application/json',
133
+ 'X-WorkBuddy-Version': '2026-01',
134
+ },
135
+ body: {
136
+ name: `Activepieces: Invoice Updated`,
137
+ url: context.webhookUrl,
138
+ entity: 'invoice',
139
+ events: ['Invoice Updated'],
140
+ ...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
141
+ ? { filters: context.propsValue.filters }
142
+ : {}),
143
+ workflow: {
144
+ platform: 'activepieces',
145
+ integrationId: context.webhookUrl,
146
+ },
147
+ },
148
+ });
149
+
150
+ // Store webhook ID for cleanup
151
+ await context.store.put('webhookId', response.body.data.id);
152
+ },
153
+
154
+ async onDisable(context) {
155
+ const token = await getAccessToken(context.auth);
156
+ const baseUrl = context.auth.props.baseUrl;
157
+ const webhookId = await context.store.get<string>('webhookId');
158
+
159
+ if (webhookId) {
160
+ // Pause webhook (server keeps it for potential reactivation)
161
+ await httpClient.sendRequest({
162
+ method: HttpMethod.PATCH,
163
+ url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
164
+ headers: {
165
+ Authorization: `Bearer ${token}`,
166
+ 'Content-Type': 'application/json',
167
+ 'X-WorkBuddy-Version': '2026-01',
168
+ },
169
+ body: {
170
+ status: 'paused',
171
+ },
172
+ });
173
+ }
174
+ },
175
+
176
+ async run(context) {
177
+ return [context.payload.body];
178
+ },
179
+ });
180
+
181
+ export const invoice_status_changed_trigger = createTrigger({
182
+ name: 'InvoiceStatusChanged',
183
+ auth: workbuddyAuth,
184
+ displayName: 'Invoice Status Changed',
185
+ description: 'Triggered when an invoice status changes',
186
+ props: {
187
+ filters: Property.Json({
188
+ displayName: 'Filters',
189
+ description:
190
+ 'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
191
+ required: false,
192
+ defaultValue: {},
193
+ }),
194
+ },
195
+ sampleData: {
196
+ invoice: {
197
+ id: '507f1f77bcf86cd799439011',
198
+ invoiceNumber: 'INV-1001',
199
+ status: 'Sent',
200
+ total: 1500.0,
201
+ tax: 150.0,
202
+ createdAt: '2026-03-05T10:00:00.000Z',
203
+ dueDate: '2026-04-05T10:00:00.000Z',
204
+ customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
205
+ job: { id: '507f1f77bcf86cd799439011', name: 'J10001' },
206
+ },
207
+ },
208
+ type: TriggerStrategy.WEBHOOK,
209
+
210
+ async onEnable(context) {
211
+ const token = await getAccessToken(context.auth);
212
+ const baseUrl = context.auth.props.baseUrl;
213
+
214
+ // Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
215
+ const response = await httpClient.sendRequest<{ data: { id: string } }>({
216
+ method: HttpMethod.POST,
217
+ url: `${baseUrl}/api/v2/public/webhooks`,
218
+ headers: {
219
+ Authorization: `Bearer ${token}`,
220
+ 'Content-Type': 'application/json',
221
+ 'X-WorkBuddy-Version': '2026-01',
222
+ },
223
+ body: {
224
+ name: `Activepieces: Invoice Status Changed`,
225
+ url: context.webhookUrl,
226
+ entity: 'invoice',
227
+ events: ['Invoice Status Changed'],
228
+ ...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
229
+ ? { filters: context.propsValue.filters }
230
+ : {}),
231
+ workflow: {
232
+ platform: 'activepieces',
233
+ integrationId: context.webhookUrl,
234
+ },
235
+ },
236
+ });
237
+
238
+ // Store webhook ID for cleanup
239
+ await context.store.put('webhookId', response.body.data.id);
240
+ },
241
+
242
+ async onDisable(context) {
243
+ const token = await getAccessToken(context.auth);
244
+ const baseUrl = context.auth.props.baseUrl;
245
+ const webhookId = await context.store.get<string>('webhookId');
246
+
247
+ if (webhookId) {
248
+ // Pause webhook (server keeps it for potential reactivation)
249
+ await httpClient.sendRequest({
250
+ method: HttpMethod.PATCH,
251
+ url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
252
+ headers: {
253
+ Authorization: `Bearer ${token}`,
254
+ 'Content-Type': 'application/json',
255
+ 'X-WorkBuddy-Version': '2026-01',
256
+ },
257
+ body: {
258
+ status: 'paused',
259
+ },
260
+ });
261
+ }
262
+ },
263
+
264
+ async run(context) {
265
+ return [context.payload.body];
266
+ },
267
+ });
268
+
269
+ export const invoice_deleted_trigger = createTrigger({
270
+ name: 'InvoiceDeleted',
271
+ auth: workbuddyAuth,
272
+ displayName: 'Invoice Deleted',
273
+ description: 'Triggered when an invoice is deleted',
274
+ props: {
275
+ filters: Property.Json({
276
+ displayName: 'Filters',
277
+ description:
278
+ 'Optional webhook filters object. Discover allowed fields with GET /webhooks/entities/:entity/filters.',
279
+ required: false,
280
+ defaultValue: {},
281
+ }),
282
+ },
283
+ sampleData: {
284
+ invoice: {
285
+ id: '507f1f77bcf86cd799439011',
286
+ invoiceNumber: 'INV-1001',
287
+ status: 'Sent',
288
+ total: 1500.0,
289
+ tax: 150.0,
290
+ createdAt: '2026-03-05T10:00:00.000Z',
291
+ dueDate: '2026-04-05T10:00:00.000Z',
292
+ customer: { id: '507f1f77bcf86cd799439011', name: 'Acme Corp' },
293
+ job: { id: '507f1f77bcf86cd799439011', name: 'J10001' },
294
+ },
295
+ },
296
+ type: TriggerStrategy.WEBHOOK,
297
+
298
+ async onEnable(context) {
299
+ const token = await getAccessToken(context.auth);
300
+ const baseUrl = context.auth.props.baseUrl;
301
+
302
+ // Register webhook with WorkBuddy v2 API (server handles upsert - reactivates if exists)
303
+ const response = await httpClient.sendRequest<{ data: { id: string } }>({
304
+ method: HttpMethod.POST,
305
+ url: `${baseUrl}/api/v2/public/webhooks`,
306
+ headers: {
307
+ Authorization: `Bearer ${token}`,
308
+ 'Content-Type': 'application/json',
309
+ 'X-WorkBuddy-Version': '2026-01',
310
+ },
311
+ body: {
312
+ name: `Activepieces: Invoice Deleted`,
313
+ url: context.webhookUrl,
314
+ entity: 'invoice',
315
+ events: ['Invoice Deleted'],
316
+ ...(context.propsValue.filters && Object.keys(context.propsValue.filters).length > 0
317
+ ? { filters: context.propsValue.filters }
318
+ : {}),
319
+ workflow: {
320
+ platform: 'activepieces',
321
+ integrationId: context.webhookUrl,
322
+ },
323
+ },
324
+ });
325
+
326
+ // Store webhook ID for cleanup
327
+ await context.store.put('webhookId', response.body.data.id);
328
+ },
329
+
330
+ async onDisable(context) {
331
+ const token = await getAccessToken(context.auth);
332
+ const baseUrl = context.auth.props.baseUrl;
333
+ const webhookId = await context.store.get<string>('webhookId');
334
+
335
+ if (webhookId) {
336
+ // Pause webhook (server keeps it for potential reactivation)
337
+ await httpClient.sendRequest({
338
+ method: HttpMethod.PATCH,
339
+ url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
340
+ headers: {
341
+ Authorization: `Bearer ${token}`,
342
+ 'Content-Type': 'application/json',
343
+ 'X-WorkBuddy-Version': '2026-01',
344
+ },
345
+ body: {
346
+ status: 'paused',
347
+ },
348
+ });
349
+ }
350
+ },
351
+
352
+ async run(context) {
353
+ return [context.payload.body];
354
+ },
355
+ });
@@ -0,0 +1,53 @@
1
+ import { TriggerStrategy } from '@activepieces/pieces-framework';
2
+ export declare const item_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
+ }>, {}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").CustomAuthProperty<{
7
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
8
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
9
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
10
+ }>, {}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.MANUAL, import("@activepieces/pieces-framework").CustomAuthProperty<{
11
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
12
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
13
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
14
+ }>, {}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, 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
+ export declare const item_changed_trigger: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
20
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
21
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
22
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
23
+ }>, {}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").CustomAuthProperty<{
24
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
25
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
26
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
27
+ }>, {}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.MANUAL, 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
+ }>, {}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
32
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
33
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
34
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
35
+ }>, {}>;
36
+ export declare const item_deleted_trigger: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
37
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
38
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
39
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
40
+ }>, {}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").CustomAuthProperty<{
41
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
42
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
43
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
44
+ }>, {}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.MANUAL, import("@activepieces/pieces-framework").CustomAuthProperty<{
45
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
46
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
47
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
48
+ }>, {}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").CustomAuthProperty<{
49
+ baseUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
50
+ clientId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
51
+ clientSecret: import("@activepieces/pieces-framework").SecretTextProperty<true>;
52
+ }>, {}>;
53
+ //# sourceMappingURL=item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAY,MAAM,gCAAgC,CAAC;AAI1F,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;OA+D/B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;OA+D/B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;OA+D/B,CAAC"}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.item_deleted_trigger = exports.item_changed_trigger = exports.item_created_trigger = void 0;
4
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
5
+ const pieces_common_1 = require("@activepieces/pieces-common");
6
+ const auth_1 = require("../auth");
7
+ exports.item_created_trigger = (0, pieces_framework_1.createTrigger)({
8
+ name: 'ItemCreated',
9
+ auth: auth_1.workbuddyAuth,
10
+ displayName: 'Item Created',
11
+ description: 'Triggered when a new item is created',
12
+ props: {},
13
+ sampleData: {},
14
+ type: pieces_framework_1.TriggerStrategy.WEBHOOK,
15
+ async onEnable(context) {
16
+ const token = await (0, auth_1.getAccessToken)(context.auth);
17
+ const baseUrl = context.auth.props.baseUrl;
18
+ // Register webhook with WorkBuddy (server handles upsert - reactivates if exists)
19
+ const response = await pieces_common_1.httpClient.sendRequest({
20
+ method: pieces_common_1.HttpMethod.POST,
21
+ url: `${baseUrl}/api/v2/public/webhooks`,
22
+ headers: {
23
+ Authorization: `Bearer ${token}`,
24
+ 'Content-Type': 'application/json',
25
+ 'X-WorkBuddy-Version': '2026-01',
26
+ },
27
+ body: {
28
+ name: `Activepieces: Item Created`,
29
+ eventName: 'Item Created',
30
+ target: context.webhookUrl,
31
+ active: true,
32
+ workflow: {
33
+ platform: 'activepieces',
34
+ integrationId: context.webhookUrl,
35
+ },
36
+ },
37
+ });
38
+ // Store webhook ID for cleanup
39
+ await context.store.put('webhookId', response.body.id);
40
+ },
41
+ async onDisable(context) {
42
+ const token = await (0, auth_1.getAccessToken)(context.auth);
43
+ const baseUrl = context.auth.props.baseUrl;
44
+ const webhookId = await context.store.get('webhookId');
45
+ if (webhookId) {
46
+ // Deactivate webhook (server keeps it for potential reactivation)
47
+ await pieces_common_1.httpClient.sendRequest({
48
+ method: pieces_common_1.HttpMethod.PATCH,
49
+ url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
50
+ headers: {
51
+ Authorization: `Bearer ${token}`,
52
+ 'Content-Type': 'application/json',
53
+ 'X-WorkBuddy-Version': '2026-01',
54
+ },
55
+ body: {
56
+ active: false,
57
+ },
58
+ });
59
+ }
60
+ },
61
+ async run(context) {
62
+ return [context.payload.body];
63
+ },
64
+ });
65
+ exports.item_changed_trigger = (0, pieces_framework_1.createTrigger)({
66
+ name: 'ItemChanged',
67
+ auth: auth_1.workbuddyAuth,
68
+ displayName: 'Item Changed',
69
+ description: 'Triggered when an item is modified',
70
+ props: {},
71
+ sampleData: {},
72
+ type: pieces_framework_1.TriggerStrategy.WEBHOOK,
73
+ async onEnable(context) {
74
+ const token = await (0, auth_1.getAccessToken)(context.auth);
75
+ const baseUrl = context.auth.props.baseUrl;
76
+ // Register webhook with WorkBuddy (server handles upsert - reactivates if exists)
77
+ const response = await pieces_common_1.httpClient.sendRequest({
78
+ method: pieces_common_1.HttpMethod.POST,
79
+ url: `${baseUrl}/api/v2/public/webhooks`,
80
+ headers: {
81
+ Authorization: `Bearer ${token}`,
82
+ 'Content-Type': 'application/json',
83
+ 'X-WorkBuddy-Version': '2026-01',
84
+ },
85
+ body: {
86
+ name: `Activepieces: Item Changed`,
87
+ eventName: 'Item Changed',
88
+ target: context.webhookUrl,
89
+ active: true,
90
+ workflow: {
91
+ platform: 'activepieces',
92
+ integrationId: context.webhookUrl,
93
+ },
94
+ },
95
+ });
96
+ // Store webhook ID for cleanup
97
+ await context.store.put('webhookId', response.body.id);
98
+ },
99
+ async onDisable(context) {
100
+ const token = await (0, auth_1.getAccessToken)(context.auth);
101
+ const baseUrl = context.auth.props.baseUrl;
102
+ const webhookId = await context.store.get('webhookId');
103
+ if (webhookId) {
104
+ // Deactivate webhook (server keeps it for potential reactivation)
105
+ await pieces_common_1.httpClient.sendRequest({
106
+ method: pieces_common_1.HttpMethod.PATCH,
107
+ url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
108
+ headers: {
109
+ Authorization: `Bearer ${token}`,
110
+ 'Content-Type': 'application/json',
111
+ 'X-WorkBuddy-Version': '2026-01',
112
+ },
113
+ body: {
114
+ active: false,
115
+ },
116
+ });
117
+ }
118
+ },
119
+ async run(context) {
120
+ return [context.payload.body];
121
+ },
122
+ });
123
+ exports.item_deleted_trigger = (0, pieces_framework_1.createTrigger)({
124
+ name: 'ItemDeleted',
125
+ auth: auth_1.workbuddyAuth,
126
+ displayName: 'Item Deleted',
127
+ description: 'Triggered when an item is deleted',
128
+ props: {},
129
+ sampleData: {},
130
+ type: pieces_framework_1.TriggerStrategy.WEBHOOK,
131
+ async onEnable(context) {
132
+ const token = await (0, auth_1.getAccessToken)(context.auth);
133
+ const baseUrl = context.auth.props.baseUrl;
134
+ // Register webhook with WorkBuddy (server handles upsert - reactivates if exists)
135
+ const response = await pieces_common_1.httpClient.sendRequest({
136
+ method: pieces_common_1.HttpMethod.POST,
137
+ url: `${baseUrl}/api/v2/public/webhooks`,
138
+ headers: {
139
+ Authorization: `Bearer ${token}`,
140
+ 'Content-Type': 'application/json',
141
+ 'X-WorkBuddy-Version': '2026-01',
142
+ },
143
+ body: {
144
+ name: `Activepieces: Item Deleted`,
145
+ eventName: 'Item Deleted',
146
+ target: context.webhookUrl,
147
+ active: true,
148
+ workflow: {
149
+ platform: 'activepieces',
150
+ integrationId: context.webhookUrl,
151
+ },
152
+ },
153
+ });
154
+ // Store webhook ID for cleanup
155
+ await context.store.put('webhookId', response.body.id);
156
+ },
157
+ async onDisable(context) {
158
+ const token = await (0, auth_1.getAccessToken)(context.auth);
159
+ const baseUrl = context.auth.props.baseUrl;
160
+ const webhookId = await context.store.get('webhookId');
161
+ if (webhookId) {
162
+ // Deactivate webhook (server keeps it for potential reactivation)
163
+ await pieces_common_1.httpClient.sendRequest({
164
+ method: pieces_common_1.HttpMethod.PATCH,
165
+ url: `${baseUrl}/api/v2/public/webhooks/${webhookId}`,
166
+ headers: {
167
+ Authorization: `Bearer ${token}`,
168
+ 'Content-Type': 'application/json',
169
+ 'X-WorkBuddy-Version': '2026-01',
170
+ },
171
+ body: {
172
+ active: false,
173
+ },
174
+ });
175
+ }
176
+ },
177
+ async run(context) {
178
+ return [context.payload.body];
179
+ },
180
+ });
181
+ //# sourceMappingURL=item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["item.ts"],"names":[],"mappings":"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"}