@workbuddy/piece-workbuddy-vnext 1.0.3 → 1.0.5

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 (208) hide show
  1. package/package.json +1 -1
  2. package/src/index.d.ts.map +1 -1
  3. package/src/index.js +89 -83
  4. package/src/index.js.map +1 -1
  5. package/src/index.ts +29 -17
  6. package/src/lib/actions/agents.d.ts.map +1 -1
  7. package/src/lib/actions/agents.js +6 -4
  8. package/src/lib/actions/agents.js.map +1 -1
  9. package/src/lib/actions/agents.ts +8 -4
  10. package/src/lib/actions/attachments.d.ts.map +1 -1
  11. package/src/lib/actions/attachments.js +2 -1
  12. package/src/lib/actions/attachments.js.map +1 -1
  13. package/src/lib/actions/attachments.ts +3 -1
  14. package/src/lib/actions/{crm->-companies.d.ts → crm-companies.d.ts} +1 -1
  15. package/src/lib/actions/crm-companies.d.ts.map +1 -0
  16. package/src/lib/actions/{crm->-companies.js → crm-companies.js} +1 -1
  17. package/src/lib/actions/{crm->-invites.js.map → crm-companies.js.map} +1 -1
  18. package/src/lib/actions/{crm->-contacts.d.ts → crm-contacts.d.ts} +1 -1
  19. package/src/lib/actions/crm-contacts.d.ts.map +1 -0
  20. package/src/lib/actions/{crm->-contacts.js → crm-contacts.js} +1 -1
  21. package/src/lib/actions/crm-contacts.js.map +1 -0
  22. package/src/lib/actions/{crm->-contractors.d.ts → crm-contractors.d.ts} +1 -1
  23. package/src/lib/actions/crm-contractors.d.ts.map +1 -0
  24. package/src/lib/actions/{crm->-contractors.js → crm-contractors.js} +1 -1
  25. package/src/lib/actions/{crm->-employees.js.map → crm-contractors.js.map} +1 -1
  26. package/src/lib/actions/{crm->-customers.d.ts → crm-customers.d.ts} +1 -1
  27. package/src/lib/actions/crm-customers.d.ts.map +1 -0
  28. package/src/lib/actions/{crm->-customers.js → crm-customers.js} +1 -1
  29. package/src/lib/actions/crm-customers.js.map +1 -0
  30. package/src/lib/actions/{crm->-employees.d.ts → crm-employees.d.ts} +1 -1
  31. package/src/lib/actions/crm-employees.d.ts.map +1 -0
  32. package/src/lib/actions/{crm->-employees.js → crm-employees.js} +1 -1
  33. package/src/lib/actions/crm-employees.js.map +1 -0
  34. package/src/lib/actions/{crm->-external-users.d.ts → crm-external-users.d.ts} +1 -1
  35. package/src/lib/actions/crm-external-users.d.ts.map +1 -0
  36. package/src/lib/actions/{crm->-external-users.js → crm-external-users.js} +1 -1
  37. package/src/lib/actions/crm-external-users.js.map +1 -0
  38. package/src/lib/actions/{crm->-invites.d.ts → crm-invites.d.ts} +1 -1
  39. package/src/lib/actions/crm-invites.d.ts.map +1 -0
  40. package/src/lib/actions/{crm->-invites.js → crm-invites.js} +1 -1
  41. package/src/lib/actions/crm-invites.js.map +1 -0
  42. package/src/lib/actions/{crm->-sites.d.ts → crm-sites.d.ts} +1 -1
  43. package/src/lib/actions/crm-sites.d.ts.map +1 -0
  44. package/src/lib/actions/{crm->-sites.js → crm-sites.js} +1 -1
  45. package/src/lib/actions/crm-sites.js.map +1 -0
  46. package/src/lib/actions/{crm->-suppliers.d.ts → crm-suppliers.d.ts} +1 -1
  47. package/src/lib/actions/crm-suppliers.d.ts.map +1 -0
  48. package/src/lib/actions/{crm->-suppliers.js → crm-suppliers.js} +1 -1
  49. package/src/lib/actions/crm-suppliers.js.map +1 -0
  50. package/src/lib/actions/flags.d.ts +34 -0
  51. package/src/lib/actions/flags.d.ts.map +1 -0
  52. package/src/lib/actions/flags.js +185 -0
  53. package/src/lib/actions/flags.js.map +1 -0
  54. package/src/lib/actions/flags.ts +201 -0
  55. package/src/lib/actions/index.d.ts +18 -17
  56. package/src/lib/actions/index.d.ts.map +1 -1
  57. package/src/lib/actions/index.js +18 -17
  58. package/src/lib/actions/index.js.map +1 -1
  59. package/src/lib/actions/index.ts +18 -17
  60. package/src/lib/actions/{jobs->-activities.d.ts → jobs-activities.d.ts} +15 -5
  61. package/src/lib/actions/jobs-activities.d.ts.map +1 -0
  62. package/src/lib/actions/{jobs->-activities.js → jobs-activities.js} +110 -59
  63. package/src/lib/actions/jobs-activities.js.map +1 -0
  64. package/src/lib/actions/{jobs->-activities.ts → jobs-activities.ts} +118 -57
  65. package/src/lib/actions/{jobs->-contacts.d.ts → jobs-contacts.d.ts} +1 -1
  66. package/src/lib/actions/jobs-contacts.d.ts.map +1 -0
  67. package/src/lib/actions/{jobs->-contacts.js → jobs-contacts.js} +5 -5
  68. package/src/lib/actions/jobs-contacts.js.map +1 -0
  69. package/src/lib/actions/{jobs->-contacts.ts → jobs-contacts.ts} +4 -4
  70. package/src/lib/actions/{jobs->-files.d.ts → jobs-files.d.ts} +1 -1
  71. package/src/lib/actions/jobs-files.d.ts.map +1 -0
  72. package/src/lib/actions/{jobs->-files.js → jobs-files.js} +9 -9
  73. package/src/lib/actions/jobs-files.js.map +1 -0
  74. package/src/lib/actions/{jobs->-files.ts → jobs-files.ts} +8 -8
  75. package/src/lib/actions/{jobs->-tasks.d.ts → jobs-tasks.d.ts} +4 -2
  76. package/src/lib/actions/jobs-tasks.d.ts.map +1 -0
  77. package/src/lib/actions/{jobs->-tasks.js → jobs-tasks.js} +61 -37
  78. package/src/lib/actions/jobs-tasks.js.map +1 -0
  79. package/src/lib/actions/{jobs->-tasks.ts → jobs-tasks.ts} +64 -36
  80. package/src/lib/actions/jobs.d.ts +4 -3
  81. package/src/lib/actions/jobs.d.ts.map +1 -1
  82. package/src/lib/actions/jobs.js +90 -72
  83. package/src/lib/actions/jobs.js.map +1 -1
  84. package/src/lib/actions/jobs.ts +94 -72
  85. package/src/lib/actions/mcp.d.ts +1 -1
  86. package/src/lib/actions/mcp.d.ts.map +1 -1
  87. package/src/lib/actions/mcp.js +7 -6
  88. package/src/lib/actions/mcp.js.map +1 -1
  89. package/src/lib/actions/mcp.ts +8 -6
  90. package/src/lib/actions/settings.js +1 -1
  91. package/src/lib/actions/settings.js.map +1 -1
  92. package/src/lib/actions/settings.ts +1 -1
  93. package/src/lib/actions/{stages->-activities.d.ts → stages-activities.d.ts} +24 -5
  94. package/src/lib/actions/stages-activities.d.ts.map +1 -0
  95. package/src/lib/actions/{stages->-activities.js → stages-activities.js} +164 -68
  96. package/src/lib/actions/stages-activities.js.map +1 -0
  97. package/src/lib/actions/{stages->-activities.ts → stages-activities.ts} +172 -66
  98. package/src/lib/actions/{stages->-files.d.ts → stages-files.d.ts} +5 -1
  99. package/src/lib/actions/stages-files.d.ts.map +1 -0
  100. package/src/lib/actions/{stages->-files.js → stages-files.js} +35 -15
  101. package/src/lib/actions/stages-files.js.map +1 -0
  102. package/src/lib/actions/{stages->-files.ts → stages-files.ts} +34 -14
  103. package/src/lib/actions/{stages->-resources.d.ts → stages-resources.d.ts} +1 -1
  104. package/src/lib/actions/stages-resources.d.ts.map +1 -0
  105. package/src/lib/actions/{stages->-resources.js → stages-resources.js} +7 -5
  106. package/src/lib/actions/stages-resources.js.map +1 -0
  107. package/src/lib/actions/{stages->-resources.ts → stages-resources.ts} +8 -4
  108. package/src/lib/actions/{stages->-tasks.d.ts → stages-tasks.d.ts} +8 -2
  109. package/src/lib/actions/stages-tasks.d.ts.map +1 -0
  110. package/src/lib/actions/{stages->-tasks.js → stages-tasks.js} +91 -47
  111. package/src/lib/actions/stages-tasks.js.map +1 -0
  112. package/src/lib/actions/{stages->-tasks.ts → stages-tasks.ts} +94 -46
  113. package/src/lib/actions/stages.d.ts +6 -2
  114. package/src/lib/actions/stages.d.ts.map +1 -1
  115. package/src/lib/actions/stages.js +77 -27
  116. package/src/lib/actions/stages.js.map +1 -1
  117. package/src/lib/actions/stages.ts +88 -27
  118. package/src/lib/actions/webhooks-v2.js +15 -15
  119. package/src/lib/actions/webhooks-v2.js.map +1 -1
  120. package/src/lib/actions/webhooks-v2.ts +15 -15
  121. package/src/lib/auth.js +2 -2
  122. package/src/lib/auth.js.map +1 -1
  123. package/src/lib/auth.ts +2 -2
  124. package/src/lib/triggers/activity.d.ts.map +1 -1
  125. package/src/lib/triggers/activity.js +54 -42
  126. package/src/lib/triggers/activity.js.map +1 -1
  127. package/src/lib/triggers/activity.ts +54 -42
  128. package/src/lib/triggers/bill.d.ts +240 -48
  129. package/src/lib/triggers/bill.d.ts.map +1 -1
  130. package/src/lib/triggers/bill.js +368 -88
  131. package/src/lib/triggers/bill.js.map +1 -1
  132. package/src/lib/triggers/bill.ts +368 -88
  133. package/src/lib/triggers/invoice.d.ts +240 -48
  134. package/src/lib/triggers/invoice.d.ts.map +1 -1
  135. package/src/lib/triggers/invoice.js +368 -88
  136. package/src/lib/triggers/invoice.js.map +1 -1
  137. package/src/lib/triggers/invoice.ts +368 -88
  138. package/src/lib/triggers/job.d.ts +640 -128
  139. package/src/lib/triggers/job.d.ts.map +1 -1
  140. package/src/lib/triggers/job.js +928 -208
  141. package/src/lib/triggers/job.js.map +1 -1
  142. package/src/lib/triggers/job.ts +928 -208
  143. package/src/lib/triggers/lead.d.ts +400 -80
  144. package/src/lib/triggers/lead.d.ts.map +1 -1
  145. package/src/lib/triggers/lead.js +552 -96
  146. package/src/lib/triggers/lead.js.map +1 -1
  147. package/src/lib/triggers/lead.ts +552 -96
  148. package/src/lib/triggers/opportunity.d.ts +320 -64
  149. package/src/lib/triggers/opportunity.d.ts.map +1 -1
  150. package/src/lib/triggers/opportunity.js +456 -88
  151. package/src/lib/triggers/opportunity.js.map +1 -1
  152. package/src/lib/triggers/opportunity.ts +456 -88
  153. package/src/lib/triggers/quote.d.ts +240 -48
  154. package/src/lib/triggers/quote.d.ts.map +1 -1
  155. package/src/lib/triggers/quote.js +368 -88
  156. package/src/lib/triggers/quote.js.map +1 -1
  157. package/src/lib/triggers/quote.ts +368 -88
  158. package/src/lib/triggers/stage.d.ts +480 -96
  159. package/src/lib/triggers/stage.d.ts.map +1 -1
  160. package/src/lib/triggers/stage.js +764 -220
  161. package/src/lib/triggers/stage.js.map +1 -1
  162. package/src/lib/triggers/stage.ts +764 -220
  163. package/src/lib/triggers/task.d.ts +80 -16
  164. package/src/lib/triggers/task.d.ts.map +1 -1
  165. package/src/lib/triggers/task.js +172 -68
  166. package/src/lib/triggers/task.js.map +1 -1
  167. package/src/lib/triggers/task.ts +172 -68
  168. package/src/lib/actions/crm->-companies.d.ts.map +0 -1
  169. package/src/lib/actions/crm->-companies.js.map +0 -1
  170. package/src/lib/actions/crm->-contacts.d.ts.map +0 -1
  171. package/src/lib/actions/crm->-contacts.js.map +0 -1
  172. package/src/lib/actions/crm->-contractors.d.ts.map +0 -1
  173. package/src/lib/actions/crm->-contractors.js.map +0 -1
  174. package/src/lib/actions/crm->-customers.d.ts.map +0 -1
  175. package/src/lib/actions/crm->-customers.js.map +0 -1
  176. package/src/lib/actions/crm->-employees.d.ts.map +0 -1
  177. package/src/lib/actions/crm->-external-users.d.ts.map +0 -1
  178. package/src/lib/actions/crm->-external-users.js.map +0 -1
  179. package/src/lib/actions/crm->-invites.d.ts.map +0 -1
  180. package/src/lib/actions/crm->-sites.d.ts.map +0 -1
  181. package/src/lib/actions/crm->-sites.js.map +0 -1
  182. package/src/lib/actions/crm->-suppliers.d.ts.map +0 -1
  183. package/src/lib/actions/crm->-suppliers.js.map +0 -1
  184. package/src/lib/actions/jobs->-activities.d.ts.map +0 -1
  185. package/src/lib/actions/jobs->-activities.js.map +0 -1
  186. package/src/lib/actions/jobs->-contacts.d.ts.map +0 -1
  187. package/src/lib/actions/jobs->-contacts.js.map +0 -1
  188. package/src/lib/actions/jobs->-files.d.ts.map +0 -1
  189. package/src/lib/actions/jobs->-files.js.map +0 -1
  190. package/src/lib/actions/jobs->-tasks.d.ts.map +0 -1
  191. package/src/lib/actions/jobs->-tasks.js.map +0 -1
  192. package/src/lib/actions/stages->-activities.d.ts.map +0 -1
  193. package/src/lib/actions/stages->-activities.js.map +0 -1
  194. package/src/lib/actions/stages->-files.d.ts.map +0 -1
  195. package/src/lib/actions/stages->-files.js.map +0 -1
  196. package/src/lib/actions/stages->-resources.d.ts.map +0 -1
  197. package/src/lib/actions/stages->-resources.js.map +0 -1
  198. package/src/lib/actions/stages->-tasks.d.ts.map +0 -1
  199. package/src/lib/actions/stages->-tasks.js.map +0 -1
  200. /package/src/lib/actions/{crm->-companies.ts → crm-companies.ts} +0 -0
  201. /package/src/lib/actions/{crm->-contacts.ts → crm-contacts.ts} +0 -0
  202. /package/src/lib/actions/{crm->-contractors.ts → crm-contractors.ts} +0 -0
  203. /package/src/lib/actions/{crm->-customers.ts → crm-customers.ts} +0 -0
  204. /package/src/lib/actions/{crm->-employees.ts → crm-employees.ts} +0 -0
  205. /package/src/lib/actions/{crm->-external-users.ts → crm-external-users.ts} +0 -0
  206. /package/src/lib/actions/{crm->-invites.ts → crm-invites.ts} +0 -0
  207. /package/src/lib/actions/{crm->-sites.ts → crm-sites.ts} +0 -0
  208. /package/src/lib/actions/{crm->-suppliers.ts → crm-suppliers.ts} +0 -0
@@ -5,17 +5,17 @@ import { workbuddyAuth, getAccessToken } from '../auth';
5
5
  export const PublicStageTasksController_list = createAction({
6
6
  name: 'PublicStageTasksController_list',
7
7
  auth: workbuddyAuth,
8
- displayName: 'List tasks',
8
+ displayName: 'List tasks (Stages)',
9
9
  description: '',
10
10
  props: {
11
11
  stageId: Property.ShortText({
12
12
  displayName: 'Stage Id',
13
- description: '',
13
+ description: 'Stage ID or stage number',
14
14
  required: true,
15
15
  }),
16
16
  jobId: Property.ShortText({
17
17
  displayName: 'Job Id',
18
- description: '',
18
+ description: 'Job ID or job number (e.g. J12345)',
19
19
  required: true,
20
20
  }),
21
21
  },
@@ -42,27 +42,27 @@ export const PublicStageTasksController_list = createAction({
42
42
  export const PublicStageTasksController_create = createAction({
43
43
  name: 'PublicStageTasksController_create',
44
44
  auth: workbuddyAuth,
45
- displayName: 'Create task',
45
+ displayName: 'Create task (Stages)',
46
46
  description: '',
47
47
  props: {
48
48
  stageId: Property.ShortText({
49
49
  displayName: 'Stage Id',
50
- description: '',
50
+ description: 'Stage ID or stage number',
51
51
  required: true,
52
52
  }),
53
53
  jobId: Property.ShortText({
54
54
  displayName: 'Job Id',
55
- description: '',
55
+ description: 'Job ID or job number (e.g. J12345)',
56
56
  required: true,
57
57
  }),
58
58
  name: Property.ShortText({
59
59
  displayName: 'Name',
60
- description: '',
60
+ description: 'Display name',
61
61
  required: true,
62
62
  }),
63
63
  description: Property.LongText({
64
64
  displayName: 'Description',
65
- description: '',
65
+ description: 'Detailed description',
66
66
  required: false,
67
67
  }),
68
68
  target: Property.StaticDropdown({
@@ -79,17 +79,17 @@ export const PublicStageTasksController_create = createAction({
79
79
  }),
80
80
  assigneeId: Property.ShortText({
81
81
  displayName: 'Assignee Id',
82
- description: '',
82
+ description: 'assignee ID',
83
83
  required: false,
84
84
  }),
85
85
  dueDate: Property.DateTime({
86
86
  displayName: 'Due Date',
87
- description: '',
87
+ description: 'Due date (ISO 8601 datetime)',
88
88
  required: false,
89
89
  }),
90
90
  tagIds: Property.Array({
91
91
  displayName: 'Tag Ids',
92
- description: '',
92
+ description: 'Array of tag IDs (comma-separated, e.g. "id1,id2") — use /settings/tags to look up',
93
93
  required: false,
94
94
  }),
95
95
  evidenceOptions: Property.Json({
@@ -99,7 +99,7 @@ export const PublicStageTasksController_create = createAction({
99
99
  }),
100
100
  sharing: Property.Json({
101
101
  displayName: 'Sharing',
102
- description: '',
102
+ description: 'Sharing options — control visibility to customer portal and field app',
103
103
  required: false,
104
104
  }),
105
105
  },
@@ -109,7 +109,7 @@ export const PublicStageTasksController_create = createAction({
109
109
 
110
110
  const url = `${baseUrl}/api/v2/public/jobs/${context.propsValue.jobId}/stages/${context.propsValue.stageId}/tasks`;
111
111
 
112
- const body = {
112
+ const rawBody: Record<string, unknown> = {
113
113
  name: context.propsValue.name,
114
114
  description: context.propsValue.description,
115
115
  target: context.propsValue.target,
@@ -119,6 +119,8 @@ export const PublicStageTasksController_create = createAction({
119
119
  evidenceOptions: context.propsValue.evidenceOptions,
120
120
  sharing: context.propsValue.sharing,
121
121
  };
122
+
123
+ const body = rawBody;
122
124
  const response = await httpClient.sendRequest({
123
125
  method: HttpMethod.POST,
124
126
  url: `${baseUrl}/api/v2/public/jobs/${context.propsValue.jobId}/stages/${context.propsValue.stageId}/tasks`,
@@ -137,12 +139,12 @@ export const PublicStageTasksController_create = createAction({
137
139
  export const PublicStageTasksController_getById = createAction({
138
140
  name: 'PublicStageTasksController_getById',
139
141
  auth: workbuddyAuth,
140
- displayName: 'Get task by ID',
142
+ displayName: 'Get task by ID (Stages)',
141
143
  description: '',
142
144
  props: {
143
145
  stageId: Property.ShortText({
144
146
  displayName: 'Stage Id',
145
- description: '',
147
+ description: 'Stage ID or stage number',
146
148
  required: true,
147
149
  }),
148
150
  id: Property.ShortText({
@@ -150,16 +152,21 @@ export const PublicStageTasksController_getById = createAction({
150
152
  description: 'Task ID',
151
153
  required: true,
152
154
  }),
155
+ jobId: Property.ShortText({
156
+ displayName: 'Job Id',
157
+ description: '',
158
+ required: true,
159
+ }),
153
160
  },
154
161
  async run(context) {
155
162
  const token = await getAccessToken(context.auth);
156
163
  const baseUrl = context.auth.props.baseUrl;
157
164
 
158
- const url = `${baseUrl}/api/v2/public/jobs/{jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}`;
165
+ const url = `${baseUrl}/api/v2/public/jobs/${context.propsValue.jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}`;
159
166
 
160
167
  const response = await httpClient.sendRequest({
161
168
  method: HttpMethod.GET,
162
- url: `${baseUrl}/api/v2/public/jobs/{jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}`,
169
+ url: `${baseUrl}/api/v2/public/jobs/${context.propsValue.jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}`,
163
170
  headers: {
164
171
  Authorization: `Bearer ${token}`,
165
172
  'Content-Type': 'application/json',
@@ -174,12 +181,12 @@ export const PublicStageTasksController_getById = createAction({
174
181
  export const PublicStageTasksController_update = createAction({
175
182
  name: 'PublicStageTasksController_update',
176
183
  auth: workbuddyAuth,
177
- displayName: 'Update task',
184
+ displayName: 'Update task (Stages)',
178
185
  description: '',
179
186
  props: {
180
187
  stageId: Property.ShortText({
181
188
  displayName: 'Stage Id',
182
- description: '',
189
+ description: 'Stage ID or stage number',
183
190
  required: true,
184
191
  }),
185
192
  id: Property.ShortText({
@@ -187,19 +194,24 @@ export const PublicStageTasksController_update = createAction({
187
194
  description: 'Task ID',
188
195
  required: true,
189
196
  }),
197
+ jobId: Property.ShortText({
198
+ displayName: 'Job Id',
199
+ description: '',
200
+ required: true,
201
+ }),
190
202
  name: Property.ShortText({
191
203
  displayName: 'Name',
192
- description: '',
204
+ description: 'Display name',
193
205
  required: false,
194
206
  }),
195
207
  description: Property.LongText({
196
208
  displayName: 'Description',
197
- description: '',
209
+ description: 'Detailed description',
198
210
  required: false,
199
211
  }),
200
212
  status: Property.StaticDropdown({
201
213
  displayName: 'Status',
202
- description: '',
214
+ description: 'Status filter',
203
215
  required: false,
204
216
  options: {
205
217
  options: [
@@ -222,12 +234,12 @@ export const PublicStageTasksController_update = createAction({
222
234
  }),
223
235
  assigneeId: Property.ShortText({
224
236
  displayName: 'Assignee Id',
225
- description: '',
237
+ description: 'assignee ID',
226
238
  required: false,
227
239
  }),
228
240
  dueDate: Property.ShortText({
229
241
  displayName: 'Due Date',
230
- description: '',
242
+ description: 'Due date (ISO 8601 datetime)',
231
243
  required: false,
232
244
  }),
233
245
  completedOn: Property.ShortText({
@@ -237,17 +249,27 @@ export const PublicStageTasksController_update = createAction({
237
249
  }),
238
250
  completedById: Property.ShortText({
239
251
  displayName: 'Completed By Id',
252
+ description: 'completed by ID',
253
+ required: false,
254
+ }),
255
+ tagsSet: Property.Array({
256
+ displayName: 'Tags Set',
240
257
  description: '',
241
258
  required: false,
242
259
  }),
243
- tagIds: Property.Array({
244
- displayName: 'Tag Ids',
260
+ tagsAdd: Property.Array({
261
+ displayName: 'Tags Add',
262
+ description: '',
263
+ required: false,
264
+ }),
265
+ tagsRemove: Property.Array({
266
+ displayName: 'Tags Remove',
245
267
  description: '',
246
268
  required: false,
247
269
  }),
248
270
  sharing: Property.Json({
249
271
  displayName: 'Sharing',
250
- description: '',
272
+ description: 'Sharing options — control visibility to customer portal and field app',
251
273
  required: false,
252
274
  }),
253
275
  },
@@ -255,7 +277,7 @@ export const PublicStageTasksController_update = createAction({
255
277
  const token = await getAccessToken(context.auth);
256
278
  const baseUrl = context.auth.props.baseUrl;
257
279
 
258
- const url = `${baseUrl}/api/v2/public/jobs/{jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}`;
280
+ const url = `${baseUrl}/api/v2/public/jobs/${context.propsValue.jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}`;
259
281
 
260
282
  // Build body with only defined values (for partial updates)
261
283
  const rawBody: Record<string, unknown> = {
@@ -267,15 +289,29 @@ export const PublicStageTasksController_update = createAction({
267
289
  dueDate: context.propsValue.dueDate,
268
290
  completedOn: context.propsValue.completedOn,
269
291
  completedById: context.propsValue.completedById,
270
- tagIds: context.propsValue.tagIds,
271
292
  sharing: context.propsValue.sharing,
272
293
  };
294
+ {
295
+ const tags = Object.fromEntries(
296
+ Object.entries({
297
+ set: context.propsValue.tagsSet,
298
+ add: context.propsValue.tagsAdd,
299
+ remove: context.propsValue.tagsRemove,
300
+ }).filter(([_, value]) => value !== undefined)
301
+ );
302
+ if (tags.set !== undefined && (tags.add !== undefined || tags.remove !== undefined)) {
303
+ throw new Error('tags: set is mutually exclusive with add/remove');
304
+ }
305
+ if (Object.keys(tags).length > 0) {
306
+ rawBody.tags = tags;
307
+ }
308
+ }
273
309
  const body = Object.fromEntries(
274
310
  Object.entries(rawBody).filter(([_, v]) => v !== undefined && v !== null && v !== '')
275
311
  );
276
312
  const response = await httpClient.sendRequest({
277
313
  method: HttpMethod.PATCH,
278
- url: `${baseUrl}/api/v2/public/jobs/{jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}`,
314
+ url: `${baseUrl}/api/v2/public/jobs/${context.propsValue.jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}`,
279
315
  headers: {
280
316
  Authorization: `Bearer ${token}`,
281
317
  'Content-Type': 'application/json',
@@ -291,12 +327,12 @@ export const PublicStageTasksController_update = createAction({
291
327
  export const PublicStageTasksController_delete = createAction({
292
328
  name: 'PublicStageTasksController_delete',
293
329
  auth: workbuddyAuth,
294
- displayName: 'Delete task',
330
+ displayName: 'Delete task (Stages)',
295
331
  description: '',
296
332
  props: {
297
333
  stageId: Property.ShortText({
298
334
  displayName: 'Stage Id',
299
- description: '',
335
+ description: 'Stage ID or stage number',
300
336
  required: true,
301
337
  }),
302
338
  id: Property.ShortText({
@@ -304,16 +340,21 @@ export const PublicStageTasksController_delete = createAction({
304
340
  description: 'Task ID',
305
341
  required: true,
306
342
  }),
343
+ jobId: Property.ShortText({
344
+ displayName: 'Job Id',
345
+ description: '',
346
+ required: true,
347
+ }),
307
348
  },
308
349
  async run(context) {
309
350
  const token = await getAccessToken(context.auth);
310
351
  const baseUrl = context.auth.props.baseUrl;
311
352
 
312
- const url = `${baseUrl}/api/v2/public/jobs/{jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}`;
353
+ const url = `${baseUrl}/api/v2/public/jobs/${context.propsValue.jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}`;
313
354
 
314
355
  const response = await httpClient.sendRequest({
315
356
  method: HttpMethod.DELETE,
316
- url: `${baseUrl}/api/v2/public/jobs/{jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}`,
357
+ url: `${baseUrl}/api/v2/public/jobs/${context.propsValue.jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}`,
317
358
  headers: {
318
359
  Authorization: `Bearer ${token}`,
319
360
  'Content-Type': 'application/json',
@@ -328,12 +369,12 @@ export const PublicStageTasksController_delete = createAction({
328
369
  export const PublicStageTasksController_submitEvidence = createAction({
329
370
  name: 'PublicStageTasksController_submitEvidence',
330
371
  auth: workbuddyAuth,
331
- displayName: 'Submit task evidence',
372
+ displayName: 'Submit task evidence (Stages)',
332
373
  description: '',
333
374
  props: {
334
375
  stageId: Property.ShortText({
335
376
  displayName: 'Stage Id',
336
- description: '',
377
+ description: 'Stage ID or stage number',
337
378
  required: true,
338
379
  }),
339
380
  id: Property.ShortText({
@@ -341,24 +382,29 @@ export const PublicStageTasksController_submitEvidence = createAction({
341
382
  description: 'Task ID',
342
383
  required: true,
343
384
  }),
385
+ jobId: Property.ShortText({
386
+ displayName: 'Job Id',
387
+ description: '',
388
+ required: true,
389
+ }),
344
390
  signatureAttachmentIds: Property.Array({
345
391
  displayName: 'Signature Attachment Ids',
346
- description: '',
392
+ description: 'Array of signature attachment IDs (comma-separated in CLI, e.g. "id1,id2")',
347
393
  required: false,
348
394
  }),
349
395
  beforePhotoAttachmentIds: Property.Array({
350
396
  displayName: 'Before Photo Attachment Ids',
351
- description: '',
397
+ description: 'Array of before photo attachment IDs (comma-separated in CLI, e.g. "id1,id2")',
352
398
  required: false,
353
399
  }),
354
400
  duringPhotoAttachmentIds: Property.Array({
355
401
  displayName: 'During Photo Attachment Ids',
356
- description: '',
402
+ description: 'Array of during photo attachment IDs (comma-separated in CLI, e.g. "id1,id2")',
357
403
  required: false,
358
404
  }),
359
405
  afterPhotoAttachmentIds: Property.Array({
360
406
  displayName: 'After Photo Attachment Ids',
361
- description: '',
407
+ description: 'Array of after photo attachment IDs (comma-separated in CLI, e.g. "id1,id2")',
362
408
  required: false,
363
409
  }),
364
410
  comment: Property.ShortText({
@@ -373,17 +419,17 @@ export const PublicStageTasksController_submitEvidence = createAction({
373
419
  }),
374
420
  formResponseId: Property.ShortText({
375
421
  displayName: 'Form Response Id',
376
- description: '',
422
+ description: 'form response ID',
377
423
  required: false,
378
424
  }),
379
425
  fileAttachmentIds: Property.Array({
380
426
  displayName: 'File Attachment Ids',
381
- description: '',
427
+ description: 'Array of file attachment IDs (comma-separated in CLI, e.g. "id1,id2")',
382
428
  required: false,
383
429
  }),
384
430
  additionalFileAttachmentIds: Property.Array({
385
431
  displayName: 'Additional File Attachment Ids',
386
- description: '',
432
+ description: 'Array of additional file attachment IDs (comma-separated in CLI, e.g. "id1,id2")',
387
433
  required: false,
388
434
  }),
389
435
  complete: Property.Checkbox({
@@ -397,9 +443,9 @@ export const PublicStageTasksController_submitEvidence = createAction({
397
443
  const token = await getAccessToken(context.auth);
398
444
  const baseUrl = context.auth.props.baseUrl;
399
445
 
400
- const url = `${baseUrl}/api/v2/public/jobs/{jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}/evidence`;
446
+ const url = `${baseUrl}/api/v2/public/jobs/${context.propsValue.jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}/evidence`;
401
447
 
402
- const body = {
448
+ const rawBody: Record<string, unknown> = {
403
449
  signatureAttachmentIds: context.propsValue.signatureAttachmentIds,
404
450
  beforePhotoAttachmentIds: context.propsValue.beforePhotoAttachmentIds,
405
451
  duringPhotoAttachmentIds: context.propsValue.duringPhotoAttachmentIds,
@@ -411,9 +457,11 @@ export const PublicStageTasksController_submitEvidence = createAction({
411
457
  additionalFileAttachmentIds: context.propsValue.additionalFileAttachmentIds,
412
458
  complete: context.propsValue.complete,
413
459
  };
460
+
461
+ const body = rawBody;
414
462
  const response = await httpClient.sendRequest({
415
463
  method: HttpMethod.POST,
416
- url: `${baseUrl}/api/v2/public/jobs/{jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}/evidence`,
464
+ url: `${baseUrl}/api/v2/public/jobs/${context.propsValue.jobId}/stages/${context.propsValue.stageId}/tasks/${context.propsValue.id}/evidence`,
417
465
  headers: {
418
466
  Authorization: `Bearer ${token}`,
419
467
  'Content-Type': 'application/json',
@@ -23,8 +23,12 @@ export declare const PublicJobStageController_update: import("@activepieces/piec
23
23
  startDate: import("@activepieces/pieces-framework").ShortTextProperty<false>;
24
24
  dueDate: import("@activepieces/pieces-framework").ShortTextProperty<false>;
25
25
  notes: import("@activepieces/pieces-framework").LongTextProperty<false>;
26
- tags: import("@activepieces/pieces-framework").JsonProperty<false>;
27
- schedulingTags: import("@activepieces/pieces-framework").JsonProperty<false>;
26
+ tagsSet: import("@activepieces/pieces-framework").ArrayProperty<false>;
27
+ tagsAdd: import("@activepieces/pieces-framework").ArrayProperty<false>;
28
+ tagsRemove: import("@activepieces/pieces-framework").ArrayProperty<false>;
29
+ schedulingTagsSet: import("@activepieces/pieces-framework").ArrayProperty<false>;
30
+ schedulingTagsAdd: import("@activepieces/pieces-framework").ArrayProperty<false>;
31
+ schedulingTagsRemove: import("@activepieces/pieces-framework").ArrayProperty<false>;
28
32
  customFields: import("@activepieces/pieces-framework").JsonProperty<false>;
29
33
  }>;
30
34
  export declare const PublicJobStageController_delete: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").CustomAuthProperty<{
@@ -1 +1 @@
1
- {"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["stages.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;EA4E1C,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;EAqF1C,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;EA8B1C,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;EA8B5C,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;;;EA6C5C,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;;EAuC5C,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;EAuC1C,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;EAyD3C,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;EA8B3C,CAAC"}
1
+ {"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["stages.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;EA8E1C,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;EAwI1C,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;EA8B1C,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;EA8B5C,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;;;EA+C5C,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;;EAyC5C,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;EAyC1C,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;EA2D3C,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;EA8B3C,CAAC"}
@@ -12,42 +12,42 @@ exports.PublicJobStageController_create = (0, pieces_framework_1.createAction)({
12
12
  props: {
13
13
  jobId: pieces_framework_1.Property.ShortText({
14
14
  displayName: 'Job Id',
15
- description: '',
15
+ description: 'Job ID or job number (e.g. J12345)',
16
16
  required: true,
17
17
  }),
18
18
  name: pieces_framework_1.Property.ShortText({
19
19
  displayName: 'Name',
20
- description: '',
20
+ description: 'Display name',
21
21
  required: true,
22
22
  }),
23
23
  workCategoryId: pieces_framework_1.Property.ShortText({
24
24
  displayName: 'Work Category Id',
25
- description: '',
25
+ description: 'Work category ID — use /settings/work-types to look up',
26
26
  required: false,
27
27
  }),
28
28
  sequence: pieces_framework_1.Property.Number({
29
29
  displayName: 'Sequence',
30
- description: '',
30
+ description: 'Display order / sequence number',
31
31
  required: false,
32
32
  }),
33
33
  startDate: pieces_framework_1.Property.ShortText({
34
34
  displayName: 'Start Date',
35
- description: '',
35
+ description: 'Start date (ISO 8601 datetime)',
36
36
  required: false,
37
37
  }),
38
38
  dueDate: pieces_framework_1.Property.ShortText({
39
39
  displayName: 'Due Date',
40
- description: '',
40
+ description: 'Due date (ISO 8601 datetime)',
41
41
  required: false,
42
42
  }),
43
43
  notes: pieces_framework_1.Property.LongText({
44
44
  displayName: 'Notes',
45
- description: '',
45
+ description: 'Additional notes or comments',
46
46
  required: false,
47
47
  }),
48
48
  customFields: pieces_framework_1.Property.Json({
49
49
  displayName: 'Custom Fields',
50
- description: '',
50
+ description: 'Custom fields as key-value pairs — validated against tenant field definitions',
51
51
  required: false,
52
52
  }),
53
53
  },
@@ -55,7 +55,7 @@ exports.PublicJobStageController_create = (0, pieces_framework_1.createAction)({
55
55
  const token = await (0, auth_1.getAccessToken)(context.auth);
56
56
  const baseUrl = context.auth.props.baseUrl;
57
57
  const url = `${baseUrl}/api/v2/public/stages`;
58
- const body = {
58
+ const rawBody = {
59
59
  jobId: context.propsValue.jobId,
60
60
  name: context.propsValue.name,
61
61
  workCategoryId: context.propsValue.workCategoryId,
@@ -65,6 +65,7 @@ exports.PublicJobStageController_create = (0, pieces_framework_1.createAction)({
65
65
  notes: context.propsValue.notes,
66
66
  customFields: context.propsValue.customFields,
67
67
  };
68
+ const body = rawBody;
68
69
  const response = await pieces_common_1.httpClient.sendRequest({
69
70
  method: pieces_common_1.HttpMethod.POST,
70
71
  url: `${baseUrl}/api/v2/public/stages`,
@@ -91,42 +92,62 @@ exports.PublicJobStageController_update = (0, pieces_framework_1.createAction)({
91
92
  }),
92
93
  name: pieces_framework_1.Property.ShortText({
93
94
  displayName: 'Name',
94
- description: '',
95
+ description: 'Display name',
95
96
  required: false,
96
97
  }),
97
98
  workCategoryId: pieces_framework_1.Property.ShortText({
98
99
  displayName: 'Work Category Id',
99
- description: '',
100
+ description: 'Work category ID — use /settings/work-types to look up',
100
101
  required: false,
101
102
  }),
102
103
  startDate: pieces_framework_1.Property.ShortText({
103
104
  displayName: 'Start Date',
104
- description: '',
105
+ description: 'Start date (ISO 8601 datetime)',
105
106
  required: false,
106
107
  }),
107
108
  dueDate: pieces_framework_1.Property.ShortText({
108
109
  displayName: 'Due Date',
109
- description: '',
110
+ description: 'Due date (ISO 8601 datetime)',
110
111
  required: false,
111
112
  }),
112
113
  notes: pieces_framework_1.Property.LongText({
113
114
  displayName: 'Notes',
115
+ description: 'Additional notes or comments',
116
+ required: false,
117
+ }),
118
+ tagsSet: pieces_framework_1.Property.Array({
119
+ displayName: 'Tags Set',
120
+ description: '',
121
+ required: false,
122
+ }),
123
+ tagsAdd: pieces_framework_1.Property.Array({
124
+ displayName: 'Tags Add',
125
+ description: '',
126
+ required: false,
127
+ }),
128
+ tagsRemove: pieces_framework_1.Property.Array({
129
+ displayName: 'Tags Remove',
130
+ description: '',
131
+ required: false,
132
+ }),
133
+ schedulingTagsSet: pieces_framework_1.Property.Array({
134
+ displayName: 'Scheduling Tags Set',
114
135
  description: '',
115
136
  required: false,
116
137
  }),
117
- tags: pieces_framework_1.Property.Json({
118
- displayName: 'Tags',
138
+ schedulingTagsAdd: pieces_framework_1.Property.Array({
139
+ displayName: 'Scheduling Tags Add',
119
140
  description: '',
120
141
  required: false,
121
142
  }),
122
- schedulingTags: pieces_framework_1.Property.Json({
123
- displayName: 'Scheduling Tags',
143
+ schedulingTagsRemove: pieces_framework_1.Property.Array({
144
+ displayName: 'Scheduling Tags Remove',
124
145
  description: '',
125
146
  required: false,
126
147
  }),
127
148
  customFields: pieces_framework_1.Property.Json({
128
149
  displayName: 'Custom Fields',
129
- description: '',
150
+ description: 'Custom fields as key-value pairs — validated against tenant field definitions',
130
151
  required: false,
131
152
  }),
132
153
  },
@@ -141,10 +162,35 @@ exports.PublicJobStageController_update = (0, pieces_framework_1.createAction)({
141
162
  startDate: context.propsValue.startDate,
142
163
  dueDate: context.propsValue.dueDate,
143
164
  notes: context.propsValue.notes,
144
- tags: context.propsValue.tags,
145
- schedulingTags: context.propsValue.schedulingTags,
146
165
  customFields: context.propsValue.customFields,
147
166
  };
167
+ {
168
+ const tags = Object.fromEntries(Object.entries({
169
+ set: context.propsValue.tagsSet,
170
+ add: context.propsValue.tagsAdd,
171
+ remove: context.propsValue.tagsRemove,
172
+ }).filter(([_, value]) => value !== undefined));
173
+ if (tags.set !== undefined && (tags.add !== undefined || tags.remove !== undefined)) {
174
+ throw new Error('tags: set is mutually exclusive with add/remove');
175
+ }
176
+ if (Object.keys(tags).length > 0) {
177
+ rawBody.tags = tags;
178
+ }
179
+ }
180
+ {
181
+ const schedulingTags = Object.fromEntries(Object.entries({
182
+ set: context.propsValue.schedulingTagsSet,
183
+ add: context.propsValue.schedulingTagsAdd,
184
+ remove: context.propsValue.schedulingTagsRemove,
185
+ }).filter(([_, value]) => value !== undefined));
186
+ if (schedulingTags.set !== undefined &&
187
+ (schedulingTags.add !== undefined || schedulingTags.remove !== undefined)) {
188
+ throw new Error('schedulingTags: set is mutually exclusive with add/remove');
189
+ }
190
+ if (Object.keys(schedulingTags).length > 0) {
191
+ rawBody.schedulingTags = schedulingTags;
192
+ }
193
+ }
148
194
  const body = Object.fromEntries(Object.entries(rawBody).filter(([_, v]) => v !== undefined && v !== null && v !== ''));
149
195
  const response = await pieces_common_1.httpClient.sendRequest({
150
196
  method: pieces_common_1.HttpMethod.PATCH,
@@ -228,12 +274,12 @@ exports.PublicJobStageController_complete = (0, pieces_framework_1.createAction)
228
274
  }),
229
275
  completedDate: pieces_framework_1.Property.DateTime({
230
276
  displayName: 'Completed Date',
231
- description: '',
277
+ description: 'Completion date (ISO 8601 datetime)',
232
278
  required: false,
233
279
  }),
234
280
  notes: pieces_framework_1.Property.LongText({
235
281
  displayName: 'Notes',
236
- description: '',
282
+ description: 'Additional notes or comments',
237
283
  required: false,
238
284
  }),
239
285
  },
@@ -241,10 +287,11 @@ exports.PublicJobStageController_complete = (0, pieces_framework_1.createAction)
241
287
  const token = await (0, auth_1.getAccessToken)(context.auth);
242
288
  const baseUrl = context.auth.props.baseUrl;
243
289
  const url = `${baseUrl}/api/v2/public/stages/${context.propsValue.id}/complete`;
244
- const body = {
290
+ const rawBody = {
245
291
  completedDate: context.propsValue.completedDate,
246
292
  notes: context.propsValue.notes,
247
293
  };
294
+ const body = rawBody;
248
295
  const response = await pieces_common_1.httpClient.sendRequest({
249
296
  method: pieces_common_1.HttpMethod.POST,
250
297
  url: `${baseUrl}/api/v2/public/stages/${context.propsValue.id}/complete`,
@@ -271,7 +318,7 @@ exports.PublicJobStageController_finalise = (0, pieces_framework_1.createAction)
271
318
  }),
272
319
  finalisedDate: pieces_framework_1.Property.DateTime({
273
320
  displayName: 'Finalised Date',
274
- description: '',
321
+ description: 'Finalisation date (ISO 8601 datetime)',
275
322
  required: false,
276
323
  }),
277
324
  },
@@ -279,9 +326,10 @@ exports.PublicJobStageController_finalise = (0, pieces_framework_1.createAction)
279
326
  const token = await (0, auth_1.getAccessToken)(context.auth);
280
327
  const baseUrl = context.auth.props.baseUrl;
281
328
  const url = `${baseUrl}/api/v2/public/stages/${context.propsValue.id}/finalise`;
282
- const body = {
329
+ const rawBody = {
283
330
  finalisedDate: context.propsValue.finalisedDate,
284
331
  };
332
+ const body = rawBody;
285
333
  const response = await pieces_common_1.httpClient.sendRequest({
286
334
  method: pieces_common_1.HttpMethod.POST,
287
335
  url: `${baseUrl}/api/v2/public/stages/${context.propsValue.id}/finalise`,
@@ -316,9 +364,10 @@ exports.PublicJobStageController_cancel = (0, pieces_framework_1.createAction)({
316
364
  const token = await (0, auth_1.getAccessToken)(context.auth);
317
365
  const baseUrl = context.auth.props.baseUrl;
318
366
  const url = `${baseUrl}/api/v2/public/stages/${context.propsValue.id}/cancel`;
319
- const body = {
367
+ const rawBody = {
320
368
  note: context.propsValue.note,
321
369
  };
370
+ const body = rawBody;
322
371
  const response = await pieces_common_1.httpClient.sendRequest({
323
372
  method: pieces_common_1.HttpMethod.POST,
324
373
  url: `${baseUrl}/api/v2/public/stages/${context.propsValue.id}/cancel`,
@@ -369,10 +418,11 @@ exports.PublicJobStageController_reverse = (0, pieces_framework_1.createAction)(
369
418
  const token = await (0, auth_1.getAccessToken)(context.auth);
370
419
  const baseUrl = context.auth.props.baseUrl;
371
420
  const url = `${baseUrl}/api/v2/public/stages/${context.propsValue.id}/reverse`;
372
- const body = {
421
+ const rawBody = {
373
422
  targetStatus: context.propsValue.targetStatus,
374
423
  note: context.propsValue.note,
375
424
  };
425
+ const body = rawBody;
376
426
  const response = await pieces_common_1.httpClient.sendRequest({
377
427
  method: pieces_common_1.HttpMethod.POST,
378
428
  url: `${baseUrl}/api/v2/public/stages/${context.propsValue.id}/reverse`,