@dsptch-work/api-client 0.40.0 → 0.42.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.
@@ -234,6 +234,12 @@ export const zProblem = z.object({
234
234
  *
235
235
  * The upload behind an image attachment's signed id is not an image content type. Upload an image file.
236
236
  *
237
+ * ### certified_payroll_format_unavailable
238
+ *
239
+ * **Certified Payroll Format Unavailable**
240
+ *
241
+ * The named job does not offer this certified payroll format. WH-347 is available only on a job that tracks federal prevailing wage. Use a job that offers the format.
242
+ *
237
243
  * ### company_not_employer
238
244
  *
239
245
  * **Company Not Program Employer**
@@ -288,6 +294,18 @@ export const zProblem = z.object({
288
294
  *
289
295
  * An attachment signed id names no upload this endpoint can read. A signed id is issued for one `resource` and verifies only there, so an id for a different resource is indistinguishable from one that is malformed, expired, or tampered with, and all of them answer alike. The message names the resource the upload needed; upload the file again to the direct-uploads endpoint naming it, and pass the signed id that call returns.
290
296
  *
297
+ * ### not_incomplete_permanent_copy
298
+ *
299
+ * **Not An Incomplete Permanent Copy**
300
+ *
301
+ * Ending a form assignment task is allowed only for the open incomplete permanent copy. Completed copies, non-permanent rows, and other uid-family members are refused. Re-read the assignment and end only that open copy.
302
+ *
303
+ * ### nothing_exportable
304
+ *
305
+ * **Nothing Exportable**
306
+ *
307
+ * The requested date range has no reportable pay periods to file for this job. Certified payroll starts at the first week with PWA work and includes only periods whose pay date has elapsed (or, in aggregate mode, periods that have ended). Widen or shift the range, or wait until a period is reportable.
308
+ *
291
309
  * ### nothing_to_cancel
292
310
  *
293
311
  * **Nothing To Cancel**
@@ -403,6 +421,7 @@ export const zProblemTypeCatalog = z.enum([
403
421
  'version_overlap',
404
422
  'precondition_failed',
405
423
  'attachment_not_image',
424
+ 'certified_payroll_format_unavailable',
406
425
  'company_not_employer',
407
426
  'confirm_apprenticeship_conflict',
408
427
  'destroy_restricted',
@@ -412,6 +431,8 @@ export const zProblemTypeCatalog = z.enum([
412
431
  'invalid_iso8601_duration',
413
432
  'invalid_placement_move',
414
433
  'invalid_signed_id',
434
+ 'not_incomplete_permanent_copy',
435
+ 'nothing_exportable',
415
436
  'nothing_to_cancel',
416
437
  'pagination_failed',
417
438
  'subtype_foreign_keys',
@@ -452,11 +473,14 @@ export const zDirectUploadParameters = z.object({
452
473
  'internal.job_todos',
453
474
  'internal.project_todos',
454
475
  'jobs.documents',
476
+ 'jobs.pwa.apprenticeship.good_faith_effort_exceptions',
477
+ 'jobs.pwa.cure_payments',
455
478
  'pay_periods.imports.aggregate_times',
456
479
  'pay_periods.imports.dsptch_cprs',
457
480
  'pay_periods.imports.time_entries',
458
481
  'payrolls.payroll_runs.imports.paystubs',
459
482
  'payrolls.payroll_runs.imports.wide_paystubs',
483
+ 'projects',
460
484
  'projects.documents',
461
485
  'users'
462
486
  ]),
@@ -758,10 +782,10 @@ export const zCompetencyEvidenceItemResponseObject = z.object({
758
782
  'form_submission',
759
783
  'certification'
760
784
  ]),
761
- description: z.string().nullable(),
785
+ description: z.string().nullish(),
762
786
  captured_on: z.iso.date(),
763
- form_submission_id: z.string().nullable(),
764
- user_certification_id: z.string().nullable(),
787
+ form_submission_id: z.string().nullish(),
788
+ user_certification_id: z.string().nullish(),
765
789
  added_by_user_id: z.string(),
766
790
  file_name: z.string().nullable(),
767
791
  file_byte_size: z.int().nullable(),
@@ -1541,7 +1565,7 @@ export const zAssetsProductParameters = z.object({
1541
1565
  model: z.string().nullish(),
1542
1566
  upc: z.string().nullish(),
1543
1567
  internal_sku: z.string().nullish(),
1544
- default_minimum_quantity: z.int().nullish(),
1568
+ default_minimum_quantity: z.int().gte(1).nullish(),
1545
1569
  counted_by: z.enum([
1546
1570
  'each',
1547
1571
  'pair',
@@ -1572,7 +1596,7 @@ export const zAssetsProductUpdateParameters = z.object({
1572
1596
  model: z.string().nullish(),
1573
1597
  upc: z.string().nullish(),
1574
1598
  internal_sku: z.string().nullish(),
1575
- default_minimum_quantity: z.int().nullish(),
1599
+ default_minimum_quantity: z.int().gte(1).nullish(),
1576
1600
  counted_by: z.enum([
1577
1601
  'each',
1578
1602
  'pair',
@@ -1918,6 +1942,9 @@ export const zPayPeriodConfigResponseObject = z.object({
1918
1942
  actuals_enabled: z.boolean().nullable(),
1919
1943
  requires_external_map_contributor: z.boolean(),
1920
1944
  paid_after_holiday: z.boolean(),
1945
+ arrear_days: z.int(),
1946
+ time_card_auto_lock_days: z.int().nullable(),
1947
+ rounding_interval: z.union([z.literal(1), z.literal(15)]),
1921
1948
  demo: z.boolean().nullable(),
1922
1949
  valid_from: z.iso.datetime().nullable(),
1923
1950
  valid_to: z.iso.datetime().nullable(),
@@ -1955,6 +1982,9 @@ export const zPayPeriodConfigHistoryCorrectionObject = z.object({
1955
1982
  actuals_enabled: z.boolean().nullable(),
1956
1983
  requires_external_map_contributor: z.boolean(),
1957
1984
  paid_after_holiday: z.boolean(),
1985
+ arrear_days: z.int(),
1986
+ time_card_auto_lock_days: z.int().nullable(),
1987
+ rounding_interval: z.union([z.literal(1), z.literal(15)]),
1958
1988
  demo: z.boolean().nullable(),
1959
1989
  valid_from: z.iso.datetime().nullable(),
1960
1990
  valid_to: z.iso.datetime().nullable(),
@@ -1992,6 +2022,9 @@ export const zPayPeriodConfigHistoryVersionObject = z.object({
1992
2022
  actuals_enabled: z.boolean().nullable(),
1993
2023
  requires_external_map_contributor: z.boolean(),
1994
2024
  paid_after_holiday: z.boolean(),
2025
+ arrear_days: z.int(),
2026
+ time_card_auto_lock_days: z.int().nullable(),
2027
+ rounding_interval: z.union([z.literal(1), z.literal(15)]),
1995
2028
  demo: z.boolean().nullable(),
1996
2029
  valid_from: z.iso.datetime().nullable(),
1997
2030
  valid_to: z.iso.datetime().nullable(),
@@ -2908,9 +2941,21 @@ export const zTimeEntryResponseObject = z.object({
2908
2941
  2: z.number()
2909
2942
  }),
2910
2943
  incentive_pay_one_five_x_minutes_worked: z.int(),
2911
- hourly_rate_cents: z.string().nullable(),
2912
- currency: z.string(),
2913
- hourly_rate_src_type: z.string().nullable(),
2944
+ hourly_rate_cents: z.string().nullish(),
2945
+ currency: z.string().optional(),
2946
+ hourly_rate_src_type: z.string().nullish(),
2947
+ one_five_x_adder_rate_cents: z.string().nullish(),
2948
+ one_five_x_adder_rate_src_type: z.enum([
2949
+ 'position',
2950
+ 'prevailing_wage',
2951
+ 'custom'
2952
+ ]).nullish(),
2953
+ two_x_adder_rate_cents: z.string().nullish(),
2954
+ two_x_adder_rate_src_type: z.enum([
2955
+ 'position',
2956
+ 'prevailing_wage',
2957
+ 'custom'
2958
+ ]).nullish(),
2914
2959
  timekeeping_pay_period_id: z.string(),
2915
2960
  start_time: z.iso.datetime(),
2916
2961
  end_time: z.iso.datetime(),
@@ -2959,6 +3004,8 @@ export const zTimeEntryCreateParameters = z.object({
2959
3004
  state: z.string().nullish(),
2960
3005
  description: z.string().nullish(),
2961
3006
  hourly_rate_cents: z.string().regex(/^[0-9]+(\.[0-9]+)?$/).nullish(),
3007
+ one_five_x_adder_rate_cents: z.string().regex(/^[0-9]+(\.[0-9]+)?$/).nullish(),
3008
+ two_x_adder_rate_cents: z.string().regex(/^[0-9]+(\.[0-9]+)?$/).nullish(),
2962
3009
  feature_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
2963
3010
  feature_allocation_acknowledged: z.boolean().optional()
2964
3011
  });
@@ -2973,6 +3020,8 @@ export const zTimeEntryUpdateParameters = z.object({
2973
3020
  state: z.string().nullish(),
2974
3021
  description: z.string().nullish(),
2975
3022
  hourly_rate_cents: z.string().regex(/^[0-9]+(\.[0-9]+)?$/).nullish(),
3023
+ one_five_x_adder_rate_cents: z.string().regex(/^[0-9]+(\.[0-9]+)?$/).nullish(),
3024
+ two_x_adder_rate_cents: z.string().regex(/^[0-9]+(\.[0-9]+)?$/).nullish(),
2976
3025
  feature_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
2977
3026
  confirm_allocation_conflict: z.boolean().optional()
2978
3027
  });
@@ -2995,10 +3044,11 @@ export const zFormDefinitionObject = z.object({
2995
3044
  current_revision: z.int().nullable(),
2996
3045
  json: z.record(z.string(), z.unknown()),
2997
3046
  submission_shape: z.record(z.string(), z.unknown()),
2998
- created_at: z.iso.datetime()
3047
+ created_at: z.iso.datetime(),
3048
+ updated_at: z.iso.datetime()
2999
3049
  });
3000
3050
  /**
3001
- * A single form submission with resolved answers, returned by both show and create.
3051
+ * A single form submission with resolved answers, returned by show, create, and update.
3002
3052
  */
3003
3053
  export const zFormSubmissionResponseObject = z.object({
3004
3054
  id: z.string(),
@@ -3024,6 +3074,13 @@ export const zFormSubmissionCreateParameters = z.object({
3024
3074
  json: z.record(z.string(), z.unknown()),
3025
3075
  timezone: z.string().optional()
3026
3076
  });
3077
+ /**
3078
+ * Request body for updating a submission's timezone and answers. Send only fields to change; omitted fields remain unchanged. form_definition_id and user_id cannot change.
3079
+ */
3080
+ export const zFormSubmissionUpdateParameters = z.object({
3081
+ timezone: z.string().optional(),
3082
+ json: z.record(z.string(), z.unknown()).optional()
3083
+ });
3027
3084
  /**
3028
3085
  * Request body for updating a worker's employment at your company. Corrects administrative fields (employment type, title, manager, payroll id, hire date, and time-and-attendance enrollment) across the whole employment history, and changes the custom-field values it lists. For time-effective pay changes, use the scheduled-changes endpoints instead. A value of the wrong JSON type, a null for a field that is not nullable, or a value outside a listed set answers 422 at its pointer, and nothing is written.
3029
3086
  */
@@ -3706,6 +3763,37 @@ export const zTimeOffRequestResponseObject = z.object({
3706
3763
  created_at: z.iso.datetime(),
3707
3764
  updated_at: z.iso.datetime()
3708
3765
  });
3766
+ /**
3767
+ * Create a time-off request for a worker. Instants must be the beginning of the first day and the end of the last day in the company's pay-schedule timezone (company timezone, else UTC). When the filer is the worker the request is born pending; otherwise it is born approved with the filer stamped as reviewer, and an Absence is built in the background.
3768
+ */
3769
+ export const zTimeOffRequestParameters = z.object({
3770
+ user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
3771
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
3772
+ absence_type: z.enum([
3773
+ 'rest_and_recovery',
3774
+ 'vacation',
3775
+ 'bereavement',
3776
+ 'ca_covid_19_sick',
3777
+ 'custom',
3778
+ 'jury_duty',
3779
+ 'unpaid',
3780
+ 'training',
3781
+ 'bench'
3782
+ ]),
3783
+ start_time: z.iso.datetime(),
3784
+ end_time: z.iso.datetime()
3785
+ });
3786
+ /**
3787
+ * Approve, deny, or cancel a pending time-off request. The named filer is the reviewer: only the worker may cancel, and nobody may approve or deny their own row. Approving enqueues the Absence build.
3788
+ */
3789
+ export const zTimeOffRequestReviewParameters = z.object({
3790
+ status: z.enum([
3791
+ 'approved',
3792
+ 'denied',
3793
+ 'cancelled'
3794
+ ]),
3795
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
3796
+ });
3709
3797
  /**
3710
3798
  * Request body for locking or unlocking a time card.
3711
3799
  */
@@ -4037,11 +4125,32 @@ export const zProjectResponseObject = z.object({
4037
4125
  prevailing_wage_lock_in_date: z.iso.date().nullable(),
4038
4126
  beginning_of_construction_date: z.iso.date().nullable(),
4039
4127
  placed_in_service_date: z.iso.date().nullable(),
4128
+ lock_in_date_doc: z.object({
4129
+ id: z.string(),
4130
+ filename: z.string(),
4131
+ content_type: z.string().nullable(),
4132
+ byte_size: z.int(),
4133
+ url: z.string()
4134
+ }).nullable(),
4135
+ beginning_of_construction_doc: z.object({
4136
+ id: z.string(),
4137
+ filename: z.string(),
4138
+ content_type: z.string().nullable(),
4139
+ byte_size: z.int(),
4140
+ url: z.string()
4141
+ }).nullable(),
4142
+ placed_in_service_doc: z.object({
4143
+ id: z.string(),
4144
+ filename: z.string(),
4145
+ content_type: z.string().nullable(),
4146
+ byte_size: z.int(),
4147
+ url: z.string()
4148
+ }).nullable(),
4040
4149
  created_at: z.iso.datetime(),
4041
4150
  updated_at: z.iso.datetime()
4042
4151
  });
4043
4152
  /**
4044
- * Request body for creating a project. `name` and `created_by_user_id` are required, and omitting either returns 400; the creator must be a member of the owning company. The owning company is inferred from the API key and is not part of the body. Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any project or relationship is saved.
4153
+ * Request body for creating a project. `name` and `created_by_user_id` are required, and omitting either returns 400; the creator must be a member of the owning company. The owning company is inferred from the API key and is not part of the body. IRA evidence files attach through `lock_in_date_doc_signed_id`, `beginning_of_construction_doc_signed_id`, and `placed_in_service_doc_signed_id` (purpose-bound `projects` signed ids); when any of those keys is present, `performed_by_user_id` is required. Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any project or relationship is saved.
4045
4154
  */
4046
4155
  export const zProjectParameters = z.object({
4047
4156
  external_id: z.string().nullish(),
@@ -4075,10 +4184,14 @@ export const zProjectParameters = z.object({
4075
4184
  prevailing_wage_lock_in_date: z.iso.date().nullish(),
4076
4185
  beginning_of_construction_date: z.iso.date().nullish(),
4077
4186
  placed_in_service_date: z.iso.date().nullish(),
4187
+ lock_in_date_doc_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
4188
+ beginning_of_construction_doc_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
4189
+ placed_in_service_doc_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
4190
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
4078
4191
  created_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
4079
4192
  });
4080
4193
  /**
4081
- * Request body for updating a project. Every field is optional; omit a field to preserve its current value. The resulting project must still satisfy conditional PWA, regional, and schedule validation rules. `created_by_user_id` is create-only; omit it on PATCH. Every update that includes it returns 400, even when unchanged. Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any project or relationship changes.
4194
+ * Request body for updating a project. Every field is optional; omit a field to preserve its current value. The resulting project must still satisfy conditional PWA, regional, and schedule validation rules. `created_by_user_id` is create-only; omit it on PATCH. Every update that includes it returns 400, even when unchanged. IRA evidence files attach through the same `*_doc_signed_id` keys as create; omit a key to keep the stored file, and send `performed_by_user_id` when any signed id is present. Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any project or relationship changes.
4082
4195
  */
4083
4196
  export const zProjectUpdateParameters = z.object({
4084
4197
  external_id: z.string().nullish(),
@@ -4111,7 +4224,11 @@ export const zProjectUpdateParameters = z.object({
4111
4224
  budget_cents: z.string().regex(/^[0-9]+(\.[0-9]+)?$/).nullish(),
4112
4225
  prevailing_wage_lock_in_date: z.iso.date().nullish(),
4113
4226
  beginning_of_construction_date: z.iso.date().nullish(),
4114
- placed_in_service_date: z.iso.date().nullish()
4227
+ placed_in_service_date: z.iso.date().nullish(),
4228
+ lock_in_date_doc_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
4229
+ beginning_of_construction_doc_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
4230
+ placed_in_service_doc_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
4231
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional()
4115
4232
  });
4116
4233
  /**
4117
4234
  * A project–site assignment: the join linking a project to a site, optionally scoping which of that site's features apply. Path `{id}` is this join's id, not the Site's. Not included on project GET.
@@ -5025,7 +5142,7 @@ export const zJobDocumentUpdateParameters = z.object({
5025
5142
  url: z.string().nullish()
5026
5143
  });
5027
5144
  /**
5028
- * A good-faith-effort exception on a job — a record that the employer requested apprentices from a registered program and did not receive the full request, or that no qualifying program existed. Read-only. Does not include supporting document slots.
5145
+ * A good-faith-effort exception on a job — a record that the employer requested apprentices from a registered program and did not receive the full request, or that no qualifying program existed. Proof files are always present as `null` or a document object; omit a signed-id key on write to keep the stored file.
5029
5146
  */
5030
5147
  export const zJobGoodFaithEffortExceptionResponseObject = z.object({
5031
5148
  id: z.string(),
@@ -5044,9 +5161,124 @@ export const zJobGoodFaithEffortExceptionResponseObject = z.object({
5044
5161
  'denied',
5045
5162
  'partial'
5046
5163
  ]).nullable(),
5164
+ request_letter: z.object({
5165
+ id: z.string(),
5166
+ filename: z.string(),
5167
+ content_type: z.string().nullable(),
5168
+ byte_size: z.int(),
5169
+ url: z.string()
5170
+ }).nullable(),
5171
+ submission_proof: z.object({
5172
+ id: z.string(),
5173
+ filename: z.string(),
5174
+ content_type: z.string().nullable(),
5175
+ byte_size: z.int(),
5176
+ url: z.string()
5177
+ }).nullable(),
5178
+ response_letter: z.object({
5179
+ id: z.string(),
5180
+ filename: z.string(),
5181
+ content_type: z.string().nullable(),
5182
+ byte_size: z.int(),
5183
+ url: z.string()
5184
+ }).nullable(),
5185
+ no_availability_proof: z.object({
5186
+ id: z.string(),
5187
+ filename: z.string(),
5188
+ content_type: z.string().nullable(),
5189
+ byte_size: z.int(),
5190
+ url: z.string()
5191
+ }).nullable(),
5047
5192
  created_at: z.iso.datetime(),
5048
5193
  updated_at: z.iso.datetime()
5049
5194
  });
5195
+ /**
5196
+ * Request body for creating a good-faith-effort exception on the job in the path. `job_id` is not part of the body. Every field is optional at the transport layer; model validations answer 422 when the two tracks, presence rules, one-year window, or `response=partial` constraint fail. Proof files attach through `request_letter_signed_id`, `submission_proof_signed_id`, `response_letter_signed_id`, and `no_availability_proof_signed_id` minted by `POST /api/v1/direct_uploads` naming `jobs.pwa.apprenticeship.good_faith_effort_exceptions`; when any of those keys is present, `performed_by_user_id` is required. Undeclared body keys, including the web form's `hours_per_apprentice`, return 400.
5197
+ */
5198
+ export const zJobGoodFaithEffortExceptionParameters = z.object({
5199
+ program_unavailable: z.boolean().optional(),
5200
+ num_apprentices_requested: z.int().nullish(),
5201
+ num_apprentices_provided: z.int().nullish(),
5202
+ minutes_per_apprentice: z.int().nullish(),
5203
+ requested_on_date: z.iso.date().nullish(),
5204
+ request_start_date: z.iso.date().nullish(),
5205
+ request_end_date: z.iso.date().nullish(),
5206
+ occupation: z.string().nullish(),
5207
+ program_name: z.string().nullish(),
5208
+ response: z.enum([
5209
+ 'no_response',
5210
+ 'denied',
5211
+ 'partial'
5212
+ ]).nullish(),
5213
+ request_letter_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
5214
+ submission_proof_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
5215
+ response_letter_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
5216
+ no_availability_proof_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
5217
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional()
5218
+ });
5219
+ /**
5220
+ * Request body for updating a good-faith-effort exception. Every field is optional; omit a field to preserve its current value. The resulting record must still satisfy the two-track, presence, one-year-window, and `response=partial` validations. Proof files attach through the same `*_signed_id` keys as create; omit a key to keep the stored file, and send `performed_by_user_id` when any signed id is present. `job_id` comes from the path and cannot be sent. Undeclared body keys, including `hours_per_apprentice`, return 400.
5221
+ */
5222
+ export const zJobGoodFaithEffortExceptionUpdateParameters = z.object({
5223
+ program_unavailable: z.boolean().optional(),
5224
+ num_apprentices_requested: z.int().nullish(),
5225
+ num_apprentices_provided: z.int().nullish(),
5226
+ minutes_per_apprentice: z.int().nullish(),
5227
+ requested_on_date: z.iso.date().nullish(),
5228
+ request_start_date: z.iso.date().nullish(),
5229
+ request_end_date: z.iso.date().nullish(),
5230
+ occupation: z.string().nullish(),
5231
+ program_name: z.string().nullish(),
5232
+ response: z.enum([
5233
+ 'no_response',
5234
+ 'denied',
5235
+ 'partial'
5236
+ ]).nullish(),
5237
+ request_letter_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
5238
+ submission_proof_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
5239
+ response_letter_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
5240
+ no_availability_proof_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
5241
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional()
5242
+ });
5243
+ /**
5244
+ * A job-scoped WH-347 certified-payroll export. The generation handle is polled through this same document; `file` is null until a ZIP is attached. Signing fields are not published.
5245
+ */
5246
+ export const zJobWh347ExportResponseObject = z.object({
5247
+ id: z.string(),
5248
+ job_id: z.string(),
5249
+ start_date: z.iso.date(),
5250
+ end_date: z.iso.date(),
5251
+ status: z.enum([
5252
+ 'pending',
5253
+ 'processing',
5254
+ 'signing',
5255
+ 'signed',
5256
+ 'certifying',
5257
+ 'success',
5258
+ 'failed'
5259
+ ]),
5260
+ file: z.object({
5261
+ filename: z.string(),
5262
+ content_type: z.string().nullable(),
5263
+ byte_size: z.int(),
5264
+ url: z.string()
5265
+ }).nullable(),
5266
+ invalidated_at: z.iso.datetime().nullable(),
5267
+ invalidation_reason: z.enum([
5268
+ 'source_data_changed',
5269
+ 'source_records_deleted',
5270
+ 'ratio_status_changed'
5271
+ ]).nullable(),
5272
+ version: z.enum(['v1', 'v2']),
5273
+ created_at: z.iso.datetime()
5274
+ });
5275
+ /**
5276
+ * Start a job-scoped WH-347 certified-payroll export over a calendar window. Creation requires a user-scoped API key, because the generation handle attributes the export to a person. The response is the pending export; poll the member GET for status and the file URL. Version, filename, and signing are server-owned. A job that does not offer WH-347 answers 422 certified_payroll_format_unavailable. A window with no reportable pay periods answers 422 nothing_exportable.
5277
+ */
5278
+ export const zJobWh347ExportCreateParameters = z.object({
5279
+ start_date: z.iso.date(),
5280
+ end_date: z.iso.date()
5281
+ });
5050
5282
  /**
5051
5283
  * A form-completion task attached to a job — a SurveyJS form assigned to users with a due time, optional recurrence, and reminders. Path `{id}` is the `Tasks::JobFormAssignmentTask` id, not the web show `Task#uid`.
5052
5284
  */
@@ -5075,7 +5307,7 @@ export const zJobFormAssignmentResponseObject = z.object({
5075
5307
  }))
5076
5308
  });
5077
5309
  /**
5078
- * A corrective payment recorded against a job's PWA obligations. Read-only. Does not include attestation files, pretty type, currency, or a Money amount.
5310
+ * A corrective payment recorded against a job's PWA obligations. Does not include pretty type, currency, or a Money amount.
5079
5311
  */
5080
5312
  export const zJobCurePaymentResponseObject = z.object({
5081
5313
  id: z.string(),
@@ -5087,9 +5319,41 @@ export const zJobCurePaymentResponseObject = z.object({
5087
5319
  cures_to_date: z.iso.date(),
5088
5320
  notes: z.string().nullable(),
5089
5321
  created_by_user_id: z.string(),
5322
+ attestation: z.object({
5323
+ id: z.string(),
5324
+ filename: z.string(),
5325
+ content_type: z.string().nullable(),
5326
+ byte_size: z.int(),
5327
+ url: z.string()
5328
+ }).nullable(),
5090
5329
  created_at: z.iso.datetime(),
5091
5330
  updated_at: z.iso.datetime()
5092
5331
  });
5332
+ /**
5333
+ * Request body for creating a job PWA cure payment. `job_id` comes from the path and is not part of the body. `type`, `amount_cents`, the three dates, and `performed_by_user_id` are required; omitting any of those returns 400. The attestation file attaches through `attestation_signed_id` (a purpose-bound `jobs.pwa.cure_payments` signed id). Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any payment is saved.
5334
+ */
5335
+ export const zJobCurePaymentParameters = z.object({
5336
+ amount_cents: z.string().regex(/^[0-9]+$/),
5337
+ paid_on_date: z.iso.date(),
5338
+ cures_from_date: z.iso.date(),
5339
+ cures_to_date: z.iso.date(),
5340
+ notes: z.string().nullish(),
5341
+ attestation_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
5342
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
5343
+ type: z.enum(['Pwa::CurePayments::Federal', 'Pwa::CurePayments::Regional'])
5344
+ });
5345
+ /**
5346
+ * Request body for updating a job PWA cure payment. Every field is optional; omit a field to preserve its current value. `type` is create-only; omit it on PATCH. Every update that includes it returns 400, even when unchanged. The attestation file attaches through the same `attestation_signed_id` key as create; omit the key to keep the stored file, and send `performed_by_user_id` when a signed id is present. Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any payment changes.
5347
+ */
5348
+ export const zJobCurePaymentUpdateParameters = z.object({
5349
+ amount_cents: z.string().regex(/^[0-9]+$/).optional(),
5350
+ paid_on_date: z.iso.date().optional(),
5351
+ cures_from_date: z.iso.date().optional(),
5352
+ cures_to_date: z.iso.date().optional(),
5353
+ notes: z.string().nullish(),
5354
+ attestation_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
5355
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional()
5356
+ });
5093
5357
  /**
5094
5358
  * A form-completion task attached to a site — a SurveyJS form assigned to users with a due time, optional recurrence, and reminders. Path `{id}` is the `Tasks::SiteFormAssignmentTask` id, not the web show `Task#uid`. Sites are shared across companies; another company's assignment on the same site is not found. An empty assignee list is valid.
5095
5359
  */
@@ -5579,20 +5843,20 @@ export const zPositionParameters = z.object({
5579
5843
  }).optional()
5580
5844
  });
5581
5845
  /**
5582
- * Parameters for creating a per-unit scope price on a job. `scope_kind` and `unit_price_cents` are required; omitting either answers 400, and a null or wrong-typed value answers 422.
5846
+ * Parameters for creating a per-unit scope price on a job. `scope_kind` is required; omission answers 400. Omit `unit_price_cents` or send null to create with an unknown price. Supplied nonnull prices must be nonnegative decimal strings.
5583
5847
  */
5584
5848
  export const zProductionJobScopePriceParameters = z.object({
5585
5849
  scope_kind: z.string(),
5586
- unit_price_cents: z.string().regex(/^[0-9]+(\.[0-9]+)?$/),
5850
+ unit_price_cents: z.string().regex(/^[0-9]+(\.[0-9]+)?$/).nullish(),
5587
5851
  contracted_count: z.int().nullish(),
5588
5852
  unit_of_measure: z.string().optional()
5589
5853
  });
5590
5854
  /**
5591
- * Parameters for updating a per-unit scope price on a job. Every field is optional; omit a field to preserve its current value, or send null for `contracted_count` to clear it. A null or wrong-typed value for any other field answers 422. The resulting price must retain a scope kind and non-negative unit price.
5855
+ * Parameters for updating a per-unit scope price on a job. Every field is optional; omit a field to preserve its current value. Send null for `unit_price_cents` to clear the known price, or for `contracted_count` to clear the target. A null value for any other field, or a wrong-typed value, answers 422. The resulting price must retain a scope kind; supplied nonnull prices must be nonnegative decimal strings.
5592
5856
  */
5593
5857
  export const zProductionJobScopePriceUpdateParameters = z.object({
5594
5858
  scope_kind: z.string().optional(),
5595
- unit_price_cents: z.string().regex(/^[0-9]+(\.[0-9]+)?$/).optional(),
5859
+ unit_price_cents: z.string().regex(/^[0-9]+(\.[0-9]+)?$/).nullish(),
5596
5860
  contracted_count: z.int().nullish(),
5597
5861
  unit_of_measure: z.string().optional()
5598
5862
  });
@@ -5604,7 +5868,7 @@ export const zProductionJobScopePriceResponseObject = z.object({
5604
5868
  job_id: z.string(),
5605
5869
  scope_kind: z.string(),
5606
5870
  unit_of_measure: z.string(),
5607
- unit_price_cents: z.string().optional(),
5871
+ unit_price_cents: z.string().nullish(),
5608
5872
  contracted_count: z.int().nullish(),
5609
5873
  created_at: z.iso.datetime(),
5610
5874
  updated_at: z.iso.datetime()
@@ -6272,6 +6536,14 @@ export const zJobGoodFaithEffortExceptionsResponseObject = z.object({
6272
6536
  links: zLinks,
6273
6537
  data: z.array(zJobGoodFaithEffortExceptionResponseObject)
6274
6538
  });
6539
+ /**
6540
+ * A page of a job's WH-347 certified-payroll exports, with pagination metadata and navigation links.
6541
+ */
6542
+ export const zJobWh347ExportsResponseObject = z.object({
6543
+ meta: zMeta,
6544
+ links: zLinks,
6545
+ data: z.array(zJobWh347ExportResponseObject)
6546
+ });
6275
6547
  /**
6276
6548
  * A page of a job's PWA cure payments, with pagination metadata and navigation links.
6277
6549
  */
@@ -6522,21 +6794,14 @@ export const zFederalJobWageDeterminationHistoryCorrectionObject = z.object({
6522
6794
  updated_at: z.iso.datetime()
6523
6795
  });
6524
6796
  /**
6525
- * State-specific rate fields recorded on a Regional determination, as decimal-string money in
6526
- * cents (e.g. "538.0"). Which keys appear is set by the job's region, so this object is always
6527
- * a region-determined subset of these keys — never a fixed shape:
6797
+ * State-specific categorized fringe rates recorded on a Regional determination, as decimal-string
6798
+ * money in cents (e.g. "538.0"). Categorized-fringe regions (currently IL) carry
6799
+ * `combined_health_fringe_rate_cents`, `combined_savings_fringe_rate_cents`,
6800
+ * `combined_holiday_pto_fringe_rate_cents`, `training_fringe_rate_cents`, and
6801
+ * `other_fringe_rate_cents`. These values are non-null when present. Other regions return an empty object.
6528
6802
  *
6529
- * - Categorized-fringe regions (currently IL) carry `combined_health_fringe_rate_cents`,
6530
- * `combined_savings_fringe_rate_cents`, `combined_holiday_pto_fringe_rate_cents`,
6531
- * `training_fringe_rate_cents`, and `other_fringe_rate_cents`.
6532
- * - Overtime-adder regions (currently IL and NY) carry `one_five_x_adder_rate_cents`,
6533
- * `two_x_adder_rate_cents`, `one_five_x_fringe_adder_rate_cents`, and
6534
- * `two_x_fringe_adder_rate_cents`.
6535
- * - A region with neither returns an empty object.
6536
- *
6537
- * Categorized-fringe values are non-null when present; legacy overtime-adder values may be null.
6538
- * The overtime-adder fields are read-only. Configure new overtime premiums through the
6539
- * determination's rate rules.
6803
+ * Overtime wage and fringe premiums belong to the determination's rate-rule package. They are not
6804
+ * returned as scalar regional rate fields.
6540
6805
  *
6541
6806
  */
6542
6807
  export const zRegionalWageDeterminationFieldsResponse = z.record(z.string(), z.string().nullable());
@@ -7700,6 +7965,7 @@ export const zAssetsProductResponseObject = z.object({
7700
7965
  id: z.string(),
7701
7966
  company_id: z.string(),
7702
7967
  name: z.string(),
7968
+ description: z.string().nullable(),
7703
7969
  upc: z.string().nullable(),
7704
7970
  internal_sku: z.string().nullable(),
7705
7971
  default_minimum_quantity: z.int().nullable(),
@@ -8838,8 +9104,15 @@ export const zUpdateCategoryResponse = zAssetsCategoryResponseObject;
8838
9104
  export const zListCustodiesQuery = z.object({
8839
9105
  'filter[assets_item_id]': z.string().optional(),
8840
9106
  'filter[user_id]': z.string().optional(),
9107
+ 'filter[created_at][gte]': z.iso.datetime().optional(),
9108
+ 'filter[created_at][lte]': z.iso.datetime().optional(),
9109
+ 'filter[updated_at][gte]': z.iso.datetime().optional(),
9110
+ 'filter[updated_at][lte]': z.iso.datetime().optional(),
8841
9111
  filter: z.string().optional(),
8842
- 'filter[unexpected]': z.string().optional()
9112
+ 'filter[unexpected]': z.string().optional(),
9113
+ 'page[cursor]': z.string().optional(),
9114
+ 'page[limit]': z.int().gte(1).optional().default(20),
9115
+ page: z.string().optional()
8843
9116
  });
8844
9117
  /**
8845
9118
  * Success
@@ -8923,8 +9196,15 @@ export const zUpdateFormAssignmentTriggerResponse = zAssetsFormAssignmentTrigger
8923
9196
  export const zListInventoriesQuery = z.object({
8924
9197
  'filter[assets_item_id]': z.string().optional(),
8925
9198
  'filter[assets_site_id]': z.string().optional(),
9199
+ 'filter[created_at][gte]': z.iso.datetime().optional(),
9200
+ 'filter[created_at][lte]': z.iso.datetime().optional(),
9201
+ 'filter[updated_at][gte]': z.iso.datetime().optional(),
9202
+ 'filter[updated_at][lte]': z.iso.datetime().optional(),
8926
9203
  filter: z.string().optional(),
8927
- 'filter[unexpected]': z.string().optional()
9204
+ 'filter[unexpected]': z.string().optional(),
9205
+ 'page[cursor]': z.string().optional(),
9206
+ 'page[limit]': z.int().gte(1).optional().default(20),
9207
+ page: z.string().optional()
8928
9208
  });
8929
9209
  /**
8930
9210
  * Success
@@ -9141,6 +9421,14 @@ export const zCreateItemFormAssignmentTaskPath = z.object({
9141
9421
  * Created (recurring, with assignees and reminders)
9142
9422
  */
9143
9423
  export const zCreateItemFormAssignmentTaskResponse = zAssetsItemFormAssignmentResponseObject;
9424
+ export const zDeleteFormAssignmentTaskPath = z.object({
9425
+ item_id: z.string(),
9426
+ id: z.string()
9427
+ });
9428
+ /**
9429
+ * No Content
9430
+ */
9431
+ export const zDeleteFormAssignmentTaskResponse = z.void();
9144
9432
  export const zGetFormAssignmentTaskPath = z.object({
9145
9433
  item_id: z.string(),
9146
9434
  id: z.string()
@@ -9213,6 +9501,10 @@ export const zListVersionsPath = z.object({
9213
9501
  item_id: z.string(),
9214
9502
  document_id: z.string()
9215
9503
  });
9504
+ export const zListVersionsQuery = z.object({
9505
+ filter: z.string().optional(),
9506
+ 'filter[unexpected]': z.string().optional()
9507
+ });
9216
9508
  /**
9217
9509
  * Success
9218
9510
  */
@@ -9474,8 +9766,15 @@ export const zUpdateSubLocationPath = z.object({
9474
9766
  export const zUpdateSubLocationResponse = zAssetsSubLocationResponseObject;
9475
9767
  export const zListTransfersQuery = z.object({
9476
9768
  'filter[status]': z.string().optional(),
9769
+ 'filter[created_at][gte]': z.iso.datetime().optional(),
9770
+ 'filter[created_at][lte]': z.iso.datetime().optional(),
9771
+ 'filter[updated_at][gte]': z.iso.datetime().optional(),
9772
+ 'filter[updated_at][lte]': z.iso.datetime().optional(),
9477
9773
  filter: z.string().optional(),
9478
- 'filter[unexpected]': z.string().optional()
9774
+ 'filter[unexpected]': z.string().optional(),
9775
+ 'page[cursor]': z.string().optional(),
9776
+ 'page[limit]': z.int().gte(1).optional().default(20),
9777
+ page: z.string().optional()
9479
9778
  });
9480
9779
  /**
9481
9780
  * Success
@@ -9605,16 +9904,23 @@ export const zGetAtlasSitePath = z.object({
9605
9904
  */
9606
9905
  export const zGetAtlasSiteResponse = zSiteResponseObject;
9607
9906
  export const zListPwaUserCountsByProjectByMonthsQuery = z.object({
9608
- 'filter[year_month]': z.string().optional(),
9907
+ 'filter[year_month]': z.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional(),
9609
9908
  'filter[project_id]': z.string().optional(),
9610
9909
  'filter[job_id]': z.string().optional(),
9910
+ 'page[cursor]': z.string().optional(),
9911
+ 'page[limit]': z.int().gte(1).optional().default(20),
9912
+ page: z.string().optional(),
9611
9913
  filter: z.string().optional(),
9612
9914
  'filter[unexpected]': z.string().optional()
9613
9915
  });
9614
9916
  /**
9615
9917
  * Success
9616
9918
  */
9617
- export const zListPwaUserCountsByProjectByMonthsResponse = z.array(zBillingPwaUserCountByProjectByMonthResponseObject);
9919
+ export const zListPwaUserCountsByProjectByMonthsResponse = z.object({
9920
+ meta: zMeta,
9921
+ links: zLinks,
9922
+ data: z.array(zBillingPwaUserCountByProjectByMonthResponseObject)
9923
+ });
9618
9924
  export const zListPackagesQuery = z.object({
9619
9925
  'filter[name]': z.string().optional(),
9620
9926
  'filter[created_at][gte]': z.iso.datetime().optional(),
@@ -9734,7 +10040,7 @@ export const zListCertificationsQuery = z.object({
9734
10040
  export const zListCertificationsResponse = zCertificationsResponseObject;
9735
10041
  export const zCreateCertificationBody = zCertificationParameters;
9736
10042
  /**
9737
- * Success
10043
+ * Created
9738
10044
  */
9739
10045
  export const zCreateCertificationResponse = zCertificationResponseObject;
9740
10046
  export const zDeleteCertificationPath = z.object({
@@ -9847,6 +10153,10 @@ export const zListAssessmentsQuery = z.object({
9847
10153
  'decided'
9848
10154
  ]).optional(),
9849
10155
  'filter[outcome]': z.enum(['competent', 'not_yet_competent']).nullish(),
10156
+ 'filter[created_at][gte]': z.iso.datetime().optional(),
10157
+ 'filter[created_at][lte]': z.iso.datetime().optional(),
10158
+ 'filter[updated_at][gte]': z.iso.datetime().optional(),
10159
+ 'filter[updated_at][lte]': z.iso.datetime().optional(),
9850
10160
  filter: z.string().optional(),
9851
10161
  'filter[unexpected]': z.string().optional()
9852
10162
  });
@@ -9869,11 +10179,15 @@ export const zListAssessmentCriteriaPath = z.object({
9869
10179
  assessment_id: z.string()
9870
10180
  });
9871
10181
  export const zListAssessmentCriteriaQuery = z.object({
10182
+ 'filter[created_at][gte]': z.iso.datetime().optional(),
10183
+ 'filter[created_at][lte]': z.iso.datetime().optional(),
10184
+ 'filter[updated_at][gte]': z.iso.datetime().optional(),
10185
+ 'filter[updated_at][lte]': z.iso.datetime().optional(),
9872
10186
  filter: z.string().optional(),
9873
10187
  'filter[unexpected]': z.string().optional()
9874
10188
  });
9875
10189
  /**
9876
- * Candidate sees a decided review
10190
+ * Success
9877
10191
  */
9878
10192
  export const zListAssessmentCriteriaResponse = z.object({
9879
10193
  meta: zMeta,
@@ -9898,6 +10212,8 @@ export const zListEvidenceItemsQuery = z.object({
9898
10212
  'form_submission',
9899
10213
  'certification'
9900
10214
  ]).optional(),
10215
+ 'filter[created_at][gte]': z.iso.datetime().optional(),
10216
+ 'filter[created_at][lte]': z.iso.datetime().optional(),
9901
10217
  filter: z.string().optional(),
9902
10218
  'filter[unexpected]': z.string().optional()
9903
10219
  });
@@ -9983,6 +10299,10 @@ export const zListLevelsPath = z.object({
9983
10299
  version_id: z.string()
9984
10300
  });
9985
10301
  export const zListLevelsQuery = z.object({
10302
+ 'filter[created_at][gte]': z.iso.datetime().optional(),
10303
+ 'filter[created_at][lte]': z.iso.datetime().optional(),
10304
+ 'filter[updated_at][gte]': z.iso.datetime().optional(),
10305
+ 'filter[updated_at][lte]': z.iso.datetime().optional(),
9986
10306
  filter: z.string().optional(),
9987
10307
  'filter[unexpected]': z.string().optional()
9988
10308
  });
@@ -10047,6 +10367,10 @@ export const zListKeyActivitiesPath = z.object({
10047
10367
  level_id: z.string()
10048
10368
  });
10049
10369
  export const zListKeyActivitiesQuery = z.object({
10370
+ 'filter[created_at][gte]': z.iso.datetime().optional(),
10371
+ 'filter[created_at][lte]': z.iso.datetime().optional(),
10372
+ 'filter[updated_at][gte]': z.iso.datetime().optional(),
10373
+ 'filter[updated_at][lte]': z.iso.datetime().optional(),
10050
10374
  filter: z.string().optional(),
10051
10375
  'filter[unexpected]': z.string().optional()
10052
10376
  });
@@ -10117,6 +10441,10 @@ export const zListCriteriaPath = z.object({
10117
10441
  key_activity_id: z.string()
10118
10442
  });
10119
10443
  export const zListCriteriaQuery = z.object({
10444
+ 'filter[created_at][gte]': z.iso.datetime().optional(),
10445
+ 'filter[created_at][lte]': z.iso.datetime().optional(),
10446
+ 'filter[updated_at][gte]': z.iso.datetime().optional(),
10447
+ 'filter[updated_at][lte]': z.iso.datetime().optional(),
10120
10448
  filter: z.string().optional(),
10121
10449
  'filter[unexpected]': z.string().optional()
10122
10450
  });
@@ -10189,6 +10517,10 @@ export const zListQualificationsQuery = z.object({
10189
10517
  'filter[candidate_user_id]': z.string().optional(),
10190
10518
  'filter[competencies_standard_id]': z.string().optional(),
10191
10519
  'filter[level_sort_order]': z.int().optional(),
10520
+ 'filter[created_at][gte]': z.iso.datetime().optional(),
10521
+ 'filter[created_at][lte]': z.iso.datetime().optional(),
10522
+ 'filter[updated_at][gte]': z.iso.datetime().optional(),
10523
+ 'filter[updated_at][lte]': z.iso.datetime().optional(),
10192
10524
  filter: z.string().optional(),
10193
10525
  'filter[unexpected]': z.string().optional(),
10194
10526
  'page[cursor]': z.string().optional(),
@@ -10356,6 +10688,10 @@ export const zListChecksQuery = z.object({
10356
10688
  'filter[assignee_user_id]': z.string().optional(),
10357
10689
  'filter[time_due][gte]': z.iso.datetime().optional(),
10358
10690
  'filter[time_due][lte]': z.iso.datetime().optional(),
10691
+ 'filter[created_at][gte]': z.iso.datetime().optional(),
10692
+ 'filter[created_at][lte]': z.iso.datetime().optional(),
10693
+ 'filter[updated_at][gte]': z.iso.datetime().optional(),
10694
+ 'filter[updated_at][lte]': z.iso.datetime().optional(),
10359
10695
  filter: z.string().optional(),
10360
10696
  'filter[unexpected]': z.string().optional(),
10361
10697
  'page[cursor]': z.string().optional(),
@@ -10520,6 +10856,13 @@ export const zCreateFormSubmissionBody = zFormSubmissionCreateParameters;
10520
10856
  * Created
10521
10857
  */
10522
10858
  export const zCreateFormSubmissionResponse = zFormSubmissionResponseObject;
10859
+ export const zDeleteFormSubmissionPath = z.object({
10860
+ id: z.string()
10861
+ });
10862
+ /**
10863
+ * No Content
10864
+ */
10865
+ export const zDeleteFormSubmissionResponse = z.void();
10523
10866
  export const zGetFormSubmissionPath = z.object({
10524
10867
  id: z.string()
10525
10868
  });
@@ -10527,6 +10870,14 @@ export const zGetFormSubmissionPath = z.object({
10527
10870
  * Success
10528
10871
  */
10529
10872
  export const zGetFormSubmissionResponse = zFormSubmissionResponseObject;
10873
+ export const zUpdateFormSubmissionBody = zFormSubmissionUpdateParameters;
10874
+ export const zUpdateFormSubmissionPath = z.object({
10875
+ id: z.string()
10876
+ });
10877
+ /**
10878
+ * Success
10879
+ */
10880
+ export const zUpdateFormSubmissionResponse = zFormSubmissionResponseObject;
10530
10881
  export const zListGroupUsersPath = z.object({
10531
10882
  group_id: z.string()
10532
10883
  });
@@ -10682,6 +11033,14 @@ export const zCreateJobFormAssignmentTaskPath = z.object({
10682
11033
  * Created (recurring, with assignees and reminders)
10683
11034
  */
10684
11035
  export const zCreateJobFormAssignmentTaskResponse = zJobFormAssignmentResponseObject;
11036
+ export const zDeleteJobFormAssignmentTaskPath = z.object({
11037
+ job_id: z.string(),
11038
+ id: z.string()
11039
+ });
11040
+ /**
11041
+ * No Content
11042
+ */
11043
+ export const zDeleteJobFormAssignmentTaskResponse = z.void();
10685
11044
  export const zGetJobFormAssignmentTaskPath = z.object({
10686
11045
  job_id: z.string(),
10687
11046
  id: z.string()
@@ -10769,6 +11128,22 @@ export const zListGoodFaithEffortExceptionsQuery = z.object({
10769
11128
  * Success
10770
11129
  */
10771
11130
  export const zListGoodFaithEffortExceptionsResponse = zJobGoodFaithEffortExceptionsResponseObject;
11131
+ export const zCreateGoodFaithEffortExceptionBody = zJobGoodFaithEffortExceptionParameters;
11132
+ export const zCreateGoodFaithEffortExceptionPath = z.object({
11133
+ job_id: z.string()
11134
+ });
11135
+ /**
11136
+ * Created
11137
+ */
11138
+ export const zCreateGoodFaithEffortExceptionResponse = zJobGoodFaithEffortExceptionResponseObject;
11139
+ export const zDeleteGoodFaithEffortExceptionPath = z.object({
11140
+ job_id: z.string(),
11141
+ id: z.string()
11142
+ });
11143
+ /**
11144
+ * No Content
11145
+ */
11146
+ export const zDeleteGoodFaithEffortExceptionResponse = z.void();
10772
11147
  export const zGetGoodFaithEffortExceptionPath = z.object({
10773
11148
  job_id: z.string(),
10774
11149
  id: z.string()
@@ -10777,6 +11152,46 @@ export const zGetGoodFaithEffortExceptionPath = z.object({
10777
11152
  * Success
10778
11153
  */
10779
11154
  export const zGetGoodFaithEffortExceptionResponse = zJobGoodFaithEffortExceptionResponseObject;
11155
+ export const zUpdateGoodFaithEffortExceptionBody = zJobGoodFaithEffortExceptionUpdateParameters;
11156
+ export const zUpdateGoodFaithEffortExceptionPath = z.object({
11157
+ job_id: z.string(),
11158
+ id: z.string()
11159
+ });
11160
+ /**
11161
+ * Success
11162
+ */
11163
+ export const zUpdateGoodFaithEffortExceptionResponse = zJobGoodFaithEffortExceptionResponseObject;
11164
+ export const zListWh347ExportsPath = z.object({
11165
+ job_id: z.string()
11166
+ });
11167
+ export const zListWh347ExportsQuery = z.object({
11168
+ 'filter[status]': z.string().optional(),
11169
+ filter: z.string().optional(),
11170
+ 'filter[unexpected]': z.string().optional(),
11171
+ 'page[cursor]': z.string().optional(),
11172
+ 'page[limit]': z.int().gte(1).optional().default(20),
11173
+ page: z.string().optional()
11174
+ });
11175
+ /**
11176
+ * Success
11177
+ */
11178
+ export const zListWh347ExportsResponse = zJobWh347ExportsResponseObject;
11179
+ export const zCreateWh347ExportBody = zJobWh347ExportCreateParameters;
11180
+ export const zCreateWh347ExportPath = z.object({
11181
+ job_id: z.string()
11182
+ });
11183
+ /**
11184
+ * Created
11185
+ */
11186
+ export const zCreateWh347ExportResponse = zJobWh347ExportResponseObject;
11187
+ export const zGetWh347ExportPath = z.object({
11188
+ job_id: z.string(),
11189
+ id: z.string()
11190
+ });
11191
+ /**
11192
+ * Success
11193
+ */
11194
+ export const zGetWh347ExportResponse = zJobWh347ExportResponseObject;
10780
11195
  export const zListCurePaymentsPath = z.object({
10781
11196
  job_id: z.string()
10782
11197
  });
@@ -10791,6 +11206,22 @@ export const zListCurePaymentsQuery = z.object({
10791
11206
  * Success
10792
11207
  */
10793
11208
  export const zListCurePaymentsResponse = zJobCurePaymentsResponseObject;
11209
+ export const zCreateCurePaymentBody = zJobCurePaymentParameters;
11210
+ export const zCreateCurePaymentPath = z.object({
11211
+ job_id: z.string()
11212
+ });
11213
+ /**
11214
+ * Created
11215
+ */
11216
+ export const zCreateCurePaymentResponse = zJobCurePaymentResponseObject;
11217
+ export const zDeleteCurePaymentPath = z.object({
11218
+ job_id: z.string(),
11219
+ id: z.string()
11220
+ });
11221
+ /**
11222
+ * No Content
11223
+ */
11224
+ export const zDeleteCurePaymentResponse = z.void();
10794
11225
  export const zGetCurePaymentPath = z.object({
10795
11226
  job_id: z.string(),
10796
11227
  id: z.string()
@@ -10799,6 +11230,15 @@ export const zGetCurePaymentPath = z.object({
10799
11230
  * Success
10800
11231
  */
10801
11232
  export const zGetCurePaymentResponse = zJobCurePaymentResponseObject;
11233
+ export const zUpdateCurePaymentBody = zJobCurePaymentUpdateParameters;
11234
+ export const zUpdateCurePaymentPath = z.object({
11235
+ job_id: z.string(),
11236
+ id: z.string()
11237
+ });
11238
+ /**
11239
+ * Success
11240
+ */
11241
+ export const zUpdateCurePaymentResponse = zJobCurePaymentResponseObject;
10802
11242
  export const zCreateJobTradeBody = zPwaTradeParameters;
10803
11243
  export const zCreateJobTradePath = z.object({
10804
11244
  job_id: z.string()
@@ -11292,6 +11732,15 @@ export const zCreateFeatureFormAssignmentTaskPath = z.object({
11292
11732
  * Created
11293
11733
  */
11294
11734
  export const zCreateFeatureFormAssignmentTaskResponse = zFeatureFormAssignmentResponseObject;
11735
+ export const zDeleteFeatureFormAssignmentTaskPath = z.object({
11736
+ site_id: z.string(),
11737
+ feature_id: z.string(),
11738
+ id: z.string()
11739
+ });
11740
+ /**
11741
+ * No Content
11742
+ */
11743
+ export const zDeleteFeatureFormAssignmentTaskResponse = z.void();
11295
11744
  export const zGetFeatureFormAssignmentTaskPath = z.object({
11296
11745
  site_id: z.string(),
11297
11746
  feature_id: z.string(),
@@ -11335,6 +11784,14 @@ export const zCreateSiteFormAssignmentTaskPath = z.object({
11335
11784
  * Created
11336
11785
  */
11337
11786
  export const zCreateSiteFormAssignmentTaskResponse = zSiteFormAssignmentResponseObject;
11787
+ export const zDeleteSiteFormAssignmentTaskPath = z.object({
11788
+ site_id: z.string(),
11789
+ id: z.string()
11790
+ });
11791
+ /**
11792
+ * No Content
11793
+ */
11794
+ export const zDeleteSiteFormAssignmentTaskResponse = z.void();
11338
11795
  export const zGetSiteFormAssignmentTaskPath = z.object({
11339
11796
  site_id: z.string(),
11340
11797
  id: z.string()
@@ -12510,7 +12967,9 @@ export const zListProjectDocumentVersionsPath = z.object({
12510
12967
  export const zListProjectDocumentVersionsQuery = z.object({
12511
12968
  'page[cursor]': z.string().optional(),
12512
12969
  'page[limit]': z.int().gte(1).optional().default(20),
12513
- page: z.string().optional()
12970
+ page: z.string().optional(),
12971
+ filter: z.string().optional(),
12972
+ 'filter[unexpected]': z.string().optional()
12514
12973
  });
12515
12974
  /**
12516
12975
  * Success
@@ -12688,7 +13147,9 @@ export const zListProjectWageDeterminationRateRulesQuery = z.object({
12688
13147
  as_of: z.string().optional(),
12689
13148
  'as_of[bogus_axis]': z.string().optional(),
12690
13149
  'as_of[valid][gte]': z.string().optional(),
12691
- 'as_of[transaction]': z.string().optional()
13150
+ 'as_of[transaction]': z.string().optional(),
13151
+ filter: z.string().optional(),
13152
+ 'filter[unexpected]': z.string().optional()
12692
13153
  });
12693
13154
  /**
12694
13155
  * Success
@@ -12750,7 +13211,9 @@ export const zListProjectSitesPath = z.object({
12750
13211
  export const zListProjectSitesQuery = z.object({
12751
13212
  'page[cursor]': z.string().optional(),
12752
13213
  'page[limit]': z.int().gte(1).optional().default(20),
12753
- page: z.string().optional()
13214
+ page: z.string().optional(),
13215
+ filter: z.string().optional(),
13216
+ 'filter[unexpected]': z.string().optional()
12754
13217
  });
12755
13218
  /**
12756
13219
  * Success
@@ -12924,7 +13387,9 @@ export const zListProjectWageDeterminationsQuery = z.object({
12924
13387
  as_of: z.string().optional(),
12925
13388
  'as_of[bogus_axis]': z.string().optional(),
12926
13389
  'as_of[valid][gte]': z.string().optional(),
12927
- 'as_of[transaction]': z.string().optional()
13390
+ 'as_of[transaction]': z.string().optional(),
13391
+ filter: z.string().optional(),
13392
+ 'filter[unexpected]': z.string().optional()
12928
13393
  });
12929
13394
  /**
12930
13395
  * Success
@@ -13929,6 +14394,11 @@ export const zListTimeOffRequestsQuery = z.object({
13929
14394
  * Success
13930
14395
  */
13931
14396
  export const zListTimeOffRequestsResponse = zTimeOffRequestsResponseObject;
14397
+ export const zCreateTimeOffRequestBody = zTimeOffRequestParameters;
14398
+ /**
14399
+ * Created
14400
+ */
14401
+ export const zCreateTimeOffRequestResponse = zTimeOffRequestResponseObject;
13932
14402
  export const zGetTimeOffRequestPath = z.object({
13933
14403
  id: z.string()
13934
14404
  });
@@ -13936,6 +14406,14 @@ export const zGetTimeOffRequestPath = z.object({
13936
14406
  * Success
13937
14407
  */
13938
14408
  export const zGetTimeOffRequestResponse = zTimeOffRequestResponseObject;
14409
+ export const zCreateReviewBody = zTimeOffRequestReviewParameters;
14410
+ export const zCreateReviewPath = z.object({
14411
+ time_off_request_id: z.string()
14412
+ });
14413
+ /**
14414
+ * Created
14415
+ */
14416
+ export const zCreateReviewResponse = zTimeOffRequestResponseObject;
13939
14417
  export const zListTimeSessionsQuery = z.object({
13940
14418
  'filter[user_id]': z.string().optional(),
13941
14419
  'filter[job_id]': z.string().optional(),
@@ -13989,7 +14467,7 @@ export const zListUserRolesResponse = z.object({
13989
14467
  });
13990
14468
  export const zAddUserRolesBody = zUserRoleRequest;
13991
14469
  /**
13992
- * Success
14470
+ * Created
13993
14471
  */
13994
14472
  export const zAddUserRolesResponse = zUserRoleResponse;
13995
14473
  export const zDeleteUserRolePath = z.object({