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