@dsptch-work/api-client 0.29.0 → 0.31.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.
@@ -58,7 +58,7 @@ export const zProblem = z.object({
58
58
  *
59
59
  * **Malformed Request Body**
60
60
  *
61
- * The request body could not be parsed in the declared content type — most commonly a body that is not valid JSON. Send a well-formed body matching the `Content-Type` header.
61
+ * The request body could not be parsed in the declared content type — most commonly a body that is not valid JSON. Send a well-formed body matching the `Content-Type` header. A JSON object that repeats a key, at any depth, is refused too rather than resolved to one of its values; send each key once per object.
62
62
  *
63
63
  * ### non_range_filter_value
64
64
  *
@@ -82,7 +82,7 @@ export const zProblem = z.object({
82
82
  *
83
83
  * **Required Parameter Missing**
84
84
  *
85
- * A required request parameter is absent or empty. The message names it; supply the parameter and retry.
85
+ * A required request parameter is absent. Some older endpoints also treat an empty value as absent. The message names the parameter; supply it and retry.
86
86
  *
87
87
  * ### parameter_not_object
88
88
  *
@@ -471,6 +471,102 @@ export const zDirectUploadResponseObject = z.object({
471
471
  headers: z.record(z.string(), z.string())
472
472
  })
473
473
  });
474
+ /**
475
+ * A durable standing. The candidate passed the standard at level_sort_order. There is no level id, so the standing survives the next revision. This API does not create or update qualifications.
476
+ */
477
+ export const zCompetencyQualificationResponseObject = z.object({
478
+ id: z.string(),
479
+ candidate_user_id: z.string(),
480
+ competencies_standard_id: z.string(),
481
+ level_sort_order: z.int(),
482
+ awarded_at: z.iso.datetime(),
483
+ last_verified_at: z.iso.datetime(),
484
+ created_at: z.iso.datetime(),
485
+ updated_at: z.iso.datetime()
486
+ });
487
+ /**
488
+ * An assessment pinned to one level on one revision. competencies_standard_version_id is that revision, not whatever revision is active now. outcome is null until the assessment is decided. Submit, claim, return, and decide are web-only.
489
+ */
490
+ export const zCompetencyAssessmentResponseObject = z.object({
491
+ id: z.string(),
492
+ candidate_user_id: z.string(),
493
+ competencies_level_id: z.string(),
494
+ level_sort_order: z.int(),
495
+ competencies_standard_version_id: z.string(),
496
+ competencies_standard_id: z.string(),
497
+ predecessor_assessment_id: z.string().nullable(),
498
+ status: z.enum([
499
+ 'evidence_collection',
500
+ 'submitted',
501
+ 'in_review',
502
+ 'decided'
503
+ ]),
504
+ outcome: z.enum(['competent', 'not_yet_competent']).nullable(),
505
+ requested_by_user_id: z.string(),
506
+ requested_at: z.iso.datetime(),
507
+ submitted_by_user_id: z.string().nullable(),
508
+ submitted_at: z.iso.datetime().nullable(),
509
+ claimed_by_user_id: z.string().nullable(),
510
+ claimed_at: z.iso.datetime().nullable(),
511
+ decided_by_user_id: z.string().nullable(),
512
+ decided_at: z.iso.datetime().nullable(),
513
+ created_at: z.iso.datetime(),
514
+ updated_at: z.iso.datetime()
515
+ });
516
+ /**
517
+ * One task line on an assessment. decision and qa_feedback are omitted, not null, when the caller is the candidate and the package is not yet decided.
518
+ */
519
+ export const zCompetencyAssessmentKeyActivityResponseObject = z.object({
520
+ id: z.string(),
521
+ competencies_assessment_id: z.string(),
522
+ competencies_key_activity_id: z.string(),
523
+ assessment_methods: z.array(z.enum([
524
+ 'direct_observation',
525
+ 'simulation',
526
+ 'oral_questioning',
527
+ 'written_questioning',
528
+ 'products_of_work',
529
+ 'recognized_prior_learning',
530
+ 'witness_testimony',
531
+ 'other'
532
+ ])),
533
+ aa_feedback: z.string().nullable(),
534
+ evidence_submitted_on: z.iso.date().nullable(),
535
+ assessed_by_user_id: z.string().nullable(),
536
+ assessed_at: z.iso.datetime().nullable(),
537
+ carried_from_id: z.string().nullable(),
538
+ decided_at: z.iso.datetime().nullable(),
539
+ decision: z.enum([
540
+ 'pending',
541
+ 'competent',
542
+ 'not_yet_competent'
543
+ ]).optional(),
544
+ qa_feedback: z.string().nullish(),
545
+ created_at: z.iso.datetime(),
546
+ updated_at: z.iso.datetime()
547
+ });
548
+ /**
549
+ * One piece of evidence on an assessment line. File bytes are not served. file_name, file_byte_size, and file_content_type describe an upload and are null for other kinds.
550
+ */
551
+ export const zCompetencyEvidenceItemResponseObject = z.object({
552
+ id: z.string(),
553
+ competencies_assessment_key_activity_id: z.string(),
554
+ kind: z.enum([
555
+ 'upload',
556
+ 'form_submission',
557
+ 'certification'
558
+ ]),
559
+ description: z.string().nullable(),
560
+ captured_on: z.iso.date(),
561
+ form_submission_id: z.string().nullable(),
562
+ user_certification_id: z.string().nullable(),
563
+ added_by_user_id: z.string(),
564
+ file_name: z.string().nullable(),
565
+ file_byte_size: z.int().nullable(),
566
+ file_content_type: z.string().nullable(),
567
+ created_at: z.iso.datetime(),
568
+ updated_at: z.iso.datetime()
569
+ });
474
570
  /**
475
571
  * A DOL-registered apprenticeship program, sponsored by a company and visible to its sponsor and enrolled employers.
476
572
  */
@@ -726,14 +822,14 @@ export const zApprenticeshipOccupationUpdateParameters = z.object({
726
822
  * Create an authorization for an employer to employ apprentices in a program; only the program's sponsor may manage this roster.
727
823
  */
728
824
  export const zApprenticeshipProgramEmployerParameters = z.object({
729
- company_id: z.string(),
825
+ company_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
730
826
  require_timecard_allocation: z.boolean().optional()
731
827
  });
732
828
  /**
733
829
  * Update an employer authorization in a program. Send only the fields to change; only the program's sponsor may manage this roster, and a company-scoped key may change only the row naming its own company.
734
830
  */
735
831
  export const zApprenticeshipProgramEmployerUpdateParameters = z.object({
736
- company_id: z.string().optional(),
832
+ company_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
737
833
  require_timecard_allocation: z.boolean().optional()
738
834
  });
739
835
  /**
@@ -1423,17 +1519,17 @@ export const zDepartmentResponseObject = z.object({
1423
1519
  updated_at: z.iso.datetime()
1424
1520
  });
1425
1521
  /**
1426
- * Request body for creating a department.
1522
+ * Request body for creating a department. Send fields in JSON; the department belongs to the company that owns the API key.
1427
1523
  */
1428
1524
  export const zDepartmentParameters = z.object({
1429
- name: z.string().min(1),
1525
+ name: z.string(),
1430
1526
  description: z.string().nullish()
1431
1527
  });
1432
1528
  /**
1433
- * Request body for updating a department. Send only the fields to change.
1529
+ * Request body for updating a department. Send only fields to change in JSON; omitted fields remain unchanged.
1434
1530
  */
1435
1531
  export const zDepartmentUpdateParameters = z.object({
1436
- name: z.string().min(1).optional(),
1532
+ name: z.string().optional(),
1437
1533
  description: z.string().nullish()
1438
1534
  });
1439
1535
  /**
@@ -1502,12 +1598,12 @@ export const zAttestationConfigResponseObject = z.object({
1502
1598
  updated_at: z.iso.datetime()
1503
1599
  });
1504
1600
  /**
1505
- * Create an attestation config on a pay schedule; content and expected_response are required. The pay schedule is taken from the URL path.
1601
+ * Create an attestation config on a pay schedule; content and expected_response are required, and omitting either answers 400. A null or wrong-typed value answers 422. The pay schedule is taken from the URL path.
1506
1602
  */
1507
1603
  export const zAttestationConfigParameters = z.object({
1508
1604
  content: z.string(),
1509
1605
  expected_response: z.boolean(),
1510
- us_state_id: z.string().nullish()
1606
+ us_state_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish()
1511
1607
  });
1512
1608
  /**
1513
1609
  * Create the company's first pay schedule. Time and payroll modes inherit company defaults.
@@ -2068,13 +2164,13 @@ export const zGroupResponseObject = z.object({
2068
2164
  updated_at: z.iso.datetime()
2069
2165
  });
2070
2166
  /**
2071
- * Request body for creating a group.
2167
+ * Request body for creating a group. Send fields in JSON; the group belongs to the company that owns the API key.
2072
2168
  */
2073
2169
  export const zGroupParameters = z.object({
2074
2170
  name: z.string()
2075
2171
  });
2076
2172
  /**
2077
- * Request body for updating a group. Send only the fields to change.
2173
+ * Request body for updating a group. Send only fields to change in JSON; omitted fields remain unchanged.
2078
2174
  */
2079
2175
  export const zGroupUpdateParameters = z.object({
2080
2176
  name: z.string().optional()
@@ -2264,18 +2360,18 @@ export const zPositionFunctionResponseObject = z.object({
2264
2360
  updated_at: z.iso.datetime()
2265
2361
  });
2266
2362
  /**
2267
- * Request body for creating a position function.
2363
+ * Request body for creating a position function. Send fields in JSON; the function belongs to the company that owns the API key.
2268
2364
  */
2269
2365
  export const zPositionFunctionParameters = z.object({
2270
- value: z.string().min(1),
2271
- description: z.string().min(1)
2366
+ value: z.string(),
2367
+ description: z.string()
2272
2368
  });
2273
2369
  /**
2274
- * Request body for updating a position function. Send only the fields to change.
2370
+ * Request body for updating a position function. Send only fields to change in JSON; omitted fields remain unchanged.
2275
2371
  */
2276
2372
  export const zPositionFunctionUpdateParameters = z.object({
2277
- value: z.string().min(1).optional(),
2278
- description: z.string().min(1).optional()
2373
+ value: z.string().optional(),
2374
+ description: z.string().optional()
2279
2375
  });
2280
2376
  export const zCompanyResponseObject = z.object({
2281
2377
  id: z.string(),
@@ -2691,7 +2787,7 @@ export const zAggregateTimeImportResponseObject = z.object({
2691
2787
  * Because acceptance is synchronous but the write happens in the background, only one import at a time is accepted for a pay period: while an earlier one is still `pending`, a second answers 409 naming `import_in_progress`, and nothing is written. Poll the earlier import until it reports, then submit again.
2692
2788
  */
2693
2789
  export const zAggregateTimeImportParameters = z.object({
2694
- file_signed_id: z.string()
2790
+ file_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
2695
2791
  });
2696
2792
  /**
2697
2793
  * One bulk upload of a certified payroll report against a pay period, and how it turned out.
@@ -2722,7 +2818,7 @@ export const zDsptchCprImportResponseObject = z.object({
2722
2818
  * Because acceptance is synchronous but the write happens in the background, only one import at a time is accepted for a pay period: while an earlier one is still `pending` or `processing`, a second answers 409 naming `import_in_progress`, and nothing is written. Poll the earlier import until it reports, then submit again.
2723
2819
  */
2724
2820
  export const zDsptchCprImportParameters = z.object({
2725
- file_signed_id: z.string()
2821
+ file_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
2726
2822
  });
2727
2823
  /**
2728
2824
  * One bulk upload of paystub amounts against a payroll run, and how it turned out.
@@ -2753,7 +2849,7 @@ export const zPaystubImportResponseObject = z.object({
2753
2849
  * Because acceptance is synchronous but the write happens in the background, only one import at a time is accepted for a payroll run: while an earlier one is still `pending`, a second answers 409 naming `import_in_progress`, and nothing is written. Poll the earlier import until it reports, then submit again.
2754
2850
  */
2755
2851
  export const zPaystubImportParameters = z.object({
2756
- file_signed_id: z.string()
2852
+ file_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
2757
2853
  });
2758
2854
  /**
2759
2855
  * One bulk upload of wide paystub amounts against a payroll run, and how it turned out.
@@ -2782,7 +2878,7 @@ export const zWidePaystubImportResponseObject = z.object({
2782
2878
  * Because acceptance is synchronous but the write happens in the background, only one wide paystub import at a time is accepted for a payroll run: while an earlier one is still `pending` or `processing`, a second answers 409 naming `import_in_progress`, and nothing is written. Poll the earlier import until it reports, then submit again.
2783
2879
  */
2784
2880
  export const zWidePaystubImportParameters = z.object({
2785
- file_signed_id: z.string()
2881
+ file_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
2786
2882
  });
2787
2883
  /**
2788
2884
  * One bulk upload of time entries against a pay period, and how it turned out.
@@ -2811,7 +2907,7 @@ export const zTimeEntryImportResponseObject = z.object({
2811
2907
  * Because acceptance is synchronous but the write happens in the background, only one import at a time is accepted for a pay period: while an earlier one is still `pending` or `processing`, a second answers 409 naming `import_in_progress`, and nothing is written. Poll the earlier import until it reports, then submit again.
2812
2908
  */
2813
2909
  export const zTimeEntryImportParameters = z.object({
2814
- file_signed_id: z.string()
2910
+ file_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
2815
2911
  });
2816
2912
  /**
2817
2913
  * A worker's time card for one pay period — the aggregation root for their tracked time, carrying approval and lock status alongside the period's rolled-up minutes and pay totals. One per worker per pay period.
@@ -2992,6 +3088,37 @@ export const zTimeSessionResponseObject = z.object({
2992
3088
  created_at: z.iso.datetime(),
2993
3089
  updated_at: z.iso.datetime()
2994
3090
  });
3091
+ /**
3092
+ * A worker request for non-working time (R&R, PTO, and the other absence types). Approval produces an Absence; this read surface does not nest that Absence or the request's comments.
3093
+ */
3094
+ export const zTimeOffRequestResponseObject = z.object({
3095
+ id: z.string(),
3096
+ user_id: z.string(),
3097
+ status: z.enum([
3098
+ 'pending',
3099
+ 'approved',
3100
+ 'denied',
3101
+ 'cancelled',
3102
+ 'expired'
3103
+ ]),
3104
+ absence_type: z.enum([
3105
+ 'rest_and_recovery',
3106
+ 'vacation',
3107
+ 'bereavement',
3108
+ 'ca_covid_19_sick',
3109
+ 'custom',
3110
+ 'jury_duty',
3111
+ 'unpaid',
3112
+ 'training',
3113
+ 'bench'
3114
+ ]),
3115
+ start_time: z.iso.datetime(),
3116
+ end_time: z.iso.datetime(),
3117
+ reviewed_at: z.iso.datetime().nullable(),
3118
+ reviewer_user_id: z.string().nullable(),
3119
+ created_at: z.iso.datetime(),
3120
+ updated_at: z.iso.datetime()
3121
+ });
2995
3122
  /**
2996
3123
  * Request body for locking or unlocking a time card.
2997
3124
  */
@@ -3323,7 +3450,7 @@ export const zProjectResponseObject = z.object({
3323
3450
  updated_at: z.iso.datetime()
3324
3451
  });
3325
3452
  /**
3326
- * Request body for creating or updating a project. Only `name` is required by the schema; `created_by_user_id` is additionally required on create and must be a member of the owning company. The owning company is inferred from the API key and is not part of the body. Omit relationship fields on PATCH to leave them unchanged.
3453
+ * Request body for creating a project. `name` and `created_by_user_id` are required; 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 before any project or relationship is saved.
3327
3454
  */
3328
3455
  export const zProjectParameters = z.object({
3329
3456
  external_id: z.string().nullish(),
@@ -3359,7 +3486,7 @@ export const zProjectParameters = z.object({
3359
3486
  placed_in_service_date: z.iso.date().nullish()
3360
3487
  });
3361
3488
  /**
3362
- * 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 and an update that names it is rejected.
3489
+ * 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 before any project or relationship changes.
3363
3490
  */
3364
3491
  export const zProjectUpdateParameters = z.object({
3365
3492
  external_id: z.string().nullish(),
@@ -3940,8 +4067,8 @@ export const zPaystubParameters = z.object({
3940
4067
  * Request body for updating a paystub. Send only the fields to change; the resulting paystub must still match its payroll run type.
3941
4068
  */
3942
4069
  export const zPaystubUpdateParameters = z.object({
3943
- payrolls_payroll_run_id: z.string().optional(),
3944
- timekeeping_time_card_id: z.string().nullish(),
4070
+ payrolls_payroll_run_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
4071
+ timekeeping_time_card_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish(),
3945
4072
  external_id: z.string().nullish(),
3946
4073
  check_number: z.string().nullish()
3947
4074
  });
@@ -4157,6 +4284,29 @@ export const zJobSiteParameters = z.object({
4157
4284
  export const zJobSiteUpdateParameters = z.object({
4158
4285
  feature_ids: z.array(z.string()).optional()
4159
4286
  });
4287
+ /**
4288
+ * 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.
4289
+ */
4290
+ export const zJobGoodFaithEffortExceptionResponseObject = z.object({
4291
+ id: z.string(),
4292
+ job_id: z.string(),
4293
+ program_unavailable: z.boolean(),
4294
+ num_apprentices_requested: z.int().nullable(),
4295
+ num_apprentices_provided: z.int().nullable(),
4296
+ minutes_per_apprentice: z.int().nullable(),
4297
+ requested_on_date: z.iso.date().nullable(),
4298
+ request_start_date: z.iso.date().nullable(),
4299
+ request_end_date: z.iso.date().nullable(),
4300
+ occupation: z.string().nullable(),
4301
+ program_name: z.string().nullable(),
4302
+ response: z.enum([
4303
+ 'no_response',
4304
+ 'denied',
4305
+ 'partial'
4306
+ ]).nullable(),
4307
+ created_at: z.iso.datetime(),
4308
+ updated_at: z.iso.datetime()
4309
+ });
4160
4310
  /**
4161
4311
  * 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`.
4162
4312
  */
@@ -4184,6 +4334,22 @@ export const zJobFormAssignmentResponseObject = z.object({
4184
4334
  remind_at: z.iso.datetime()
4185
4335
  }))
4186
4336
  });
4337
+ /**
4338
+ * A corrective payment recorded against a job's PWA obligations. Read-only. Does not include attestation files, pretty type, currency, or a Money amount.
4339
+ */
4340
+ export const zJobCurePaymentResponseObject = z.object({
4341
+ id: z.string(),
4342
+ job_id: z.string(),
4343
+ type: z.enum(['Pwa::CurePayments::Federal', 'Pwa::CurePayments::Regional']),
4344
+ amount_cents: z.string(),
4345
+ paid_on_date: z.iso.date(),
4346
+ cures_from_date: z.iso.date(),
4347
+ cures_to_date: z.iso.date(),
4348
+ notes: z.string().nullable(),
4349
+ created_by_user_id: z.string(),
4350
+ created_at: z.iso.datetime(),
4351
+ updated_at: z.iso.datetime()
4352
+ });
4187
4353
  /**
4188
4354
  * 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.
4189
4355
  */
@@ -4673,7 +4839,7 @@ export const zPositionParameters = z.object({
4673
4839
  }).optional()
4674
4840
  });
4675
4841
  /**
4676
- * Parameters for creating a per-unit scope price on a job. `scope_kind` and `unit_price` are required.
4842
+ * Parameters for creating a per-unit scope price on a job. `scope_kind` and `unit_price` are required; omitting either answers 400, and a null or wrong-typed value answers 422.
4677
4843
  */
4678
4844
  export const zProductionJobScopePriceParameters = z.object({
4679
4845
  scope_kind: z.string(),
@@ -4682,7 +4848,7 @@ export const zProductionJobScopePriceParameters = z.object({
4682
4848
  unit_of_measure: z.string().optional()
4683
4849
  });
4684
4850
  /**
4685
- * Parameters for updating a per-unit scope price on a job. Every field is optional; omit a field to preserve its current value. The resulting price must retain a scope kind and non-negative unit price.
4851
+ * 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.
4686
4852
  */
4687
4853
  export const zProductionJobScopePriceUpdateParameters = z.object({
4688
4854
  scope_kind: z.string().optional(),
@@ -4719,7 +4885,7 @@ export const zProductionCompletionUpdateParameters = z.object({
4719
4885
  */
4720
4886
  export const zProductionCompletionBaseParameters = z.object({
4721
4887
  production_job_scope_price_id: z.string().optional(),
4722
- performed_by_user_id: z.string().optional(),
4888
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
4723
4889
  notes: z.string().nullish(),
4724
4890
  work_date: z.iso.date().optional(),
4725
4891
  position_ids: z.array(z.string()).optional()
@@ -4852,22 +5018,22 @@ export const zCertificationPackageResponseObject = z.object({
4852
5018
  updated_at: z.iso.datetime()
4853
5019
  });
4854
5020
  /**
4855
- * Request body for creating a certification package — a named set of certifications a company requires together. The package belongs to the company that owns the API key.
5021
+ * Request body for creating a certification package. Send fields in JSON; query parameters cannot supply write fields or the filing user. The package belongs to the company that owns the API key.
4856
5022
  */
4857
5023
  export const zCertificationPackageParameters = z.object({
4858
5024
  name: z.string(),
4859
5025
  description: z.string().nullish(),
4860
- certification_ids: z.array(z.string()).optional(),
4861
- performed_by_user_id: z.string()
5026
+ certification_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
5027
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
4862
5028
  });
4863
5029
  /**
4864
- * Request body for updating a certification package — a named set of certifications a company requires together. Include only the fields to change.
5030
+ * Request body for updating a certification package. Send only fields to change in JSON; omitted fields remain unchanged. The filing user is required in the body.
4865
5031
  */
4866
5032
  export const zCertificationPackageUpdateParameters = z.object({
4867
5033
  name: z.string().optional(),
4868
5034
  description: z.string().nullish(),
4869
- certification_ids: z.array(z.string()).optional(),
4870
- performed_by_user_id: z.string()
5035
+ certification_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
5036
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
4871
5037
  });
4872
5038
  /**
4873
5039
  * A certification — a named qualification a worker can hold, either owned by your company or a global (platform) credential type (company_id null).
@@ -5235,7 +5401,7 @@ export const zUserParameters = z.intersection(z.union([
5235
5401
  dol_apprentice_no: z.string().optional(),
5236
5402
  winda_id: z.string().optional(),
5237
5403
  linkedin_url: z.string().optional(),
5238
- roles: z.array(z.string()).optional(),
5404
+ roles: z.array(z.string()).nullish(),
5239
5405
  avatar_signed_id: z.string().optional(),
5240
5406
  created_by_user_id: z.string().optional(),
5241
5407
  last_sent_by_user_id: z.string().nullish(),
@@ -5257,7 +5423,7 @@ export const zUserParameters = z.intersection(z.union([
5257
5423
  holiday_annual_minutes: z.string().optional(),
5258
5424
  training_annual_minutes: z.string().optional(),
5259
5425
  hire_date: z.string().optional(),
5260
- group_ids: z.array(z.int()).optional(),
5426
+ group_ids: z.array(z.uuid()).nullish(),
5261
5427
  custom_fields: z.array(z.object({
5262
5428
  custom_field_config_id: z.string(),
5263
5429
  value: z.string().nullable()
@@ -5498,6 +5664,14 @@ export const zTimeSessionsResponseObject = z.object({
5498
5664
  links: zLinks,
5499
5665
  data: z.array(zTimeSessionResponseObject)
5500
5666
  });
5667
+ /**
5668
+ * A page of time-off requests, with pagination metadata and navigation links.
5669
+ */
5670
+ export const zTimeOffRequestsResponseObject = z.object({
5671
+ meta: zMeta,
5672
+ links: zLinks,
5673
+ data: z.array(zTimeOffRequestResponseObject)
5674
+ });
5501
5675
  /**
5502
5676
  * A page of payroll runs, with pagination metadata and navigation links.
5503
5677
  */
@@ -5530,6 +5704,22 @@ export const zJobSitesResponseObject = z.object({
5530
5704
  links: zLinks,
5531
5705
  data: z.array(zJobSiteResponseObject)
5532
5706
  });
5707
+ /**
5708
+ * A page of a job's good-faith-effort exceptions, with pagination metadata and navigation links.
5709
+ */
5710
+ export const zJobGoodFaithEffortExceptionsResponseObject = z.object({
5711
+ meta: zMeta,
5712
+ links: zLinks,
5713
+ data: z.array(zJobGoodFaithEffortExceptionResponseObject)
5714
+ });
5715
+ /**
5716
+ * A page of a job's PWA cure payments, with pagination metadata and navigation links.
5717
+ */
5718
+ export const zJobCurePaymentsResponseObject = z.object({
5719
+ meta: zMeta,
5720
+ links: zLinks,
5721
+ data: z.array(zJobCurePaymentResponseObject)
5722
+ });
5533
5723
  /**
5534
5724
  * A page of a job's positions, with pagination metadata and navigation links.
5535
5725
  */
@@ -6012,6 +6202,120 @@ export const zJobWageDeterminationGenesisParameters = z.object({
6012
6202
  export const zJobWageDeterminationScheduledTerminationParameters = z.object({
6013
6203
  effective_date: z.iso.date()
6014
6204
  });
6205
+ /**
6206
+ * A Federal (Davis-Bacon) wage determination on a project.
6207
+ */
6208
+ export const zFederalProjectWageDeterminationResponseObject = z.object({
6209
+ id: z.string(),
6210
+ project_id: z.string(),
6211
+ pwa_trade_id: z.string(),
6212
+ overtime_package_id: z.string().nullable(),
6213
+ pay_rates_rule_package_id: z.string().nullable(),
6214
+ type: z.enum(['Pwa::ProjectWageDeterminations::Federal']),
6215
+ labor_classification: z.string(),
6216
+ hourly_rate_cents: z.string(),
6217
+ fringe_rate_cents: z.string(),
6218
+ class_code: z.string().nullable(),
6219
+ construction_category: z.enum([
6220
+ 'building',
6221
+ 'heavy',
6222
+ 'highway',
6223
+ 'residential'
6224
+ ]).nullable(),
6225
+ general_wage_determination: z.string().nullable(),
6226
+ valid_from: z.iso.datetime().nullable(),
6227
+ valid_to: z.iso.datetime().nullable(),
6228
+ created_at: z.iso.datetime(),
6229
+ updated_at: z.iso.datetime()
6230
+ });
6231
+ /**
6232
+ * A Regional (state prevailing-wage) wage determination on a project.
6233
+ */
6234
+ export const zRegionalProjectWageDeterminationResponseObject = z.object({
6235
+ id: z.string(),
6236
+ project_id: z.string(),
6237
+ pwa_trade_id: z.string(),
6238
+ overtime_package_id: z.string().nullable(),
6239
+ pay_rates_rule_package_id: z.string().nullable(),
6240
+ type: z.enum(['Pwa::ProjectWageDeterminations::Regional']),
6241
+ labor_classification: z.string(),
6242
+ hourly_rate_cents: z.string(),
6243
+ fringe_rate_cents: z.string(),
6244
+ general_wage_determination: z.string().nullable(),
6245
+ regional_fields: zRegionalWageDeterminationFieldsResponse,
6246
+ valid_from: z.iso.datetime().nullable(),
6247
+ valid_to: z.iso.datetime().nullable(),
6248
+ created_at: z.iso.datetime(),
6249
+ updated_at: z.iso.datetime()
6250
+ });
6251
+ /**
6252
+ * A wage determination applied to a project — the prevailing-wage and fringe rates for one labor classification. The type discriminator selects the Federal or Regional representation.
6253
+ */
6254
+ export const zProjectWageDeterminationResponseObject = z.discriminatedUnion('type', [
6255
+ zFederalProjectWageDeterminationResponseObject.extend({ type: z.literal('Pwa::ProjectWageDeterminations::Federal') }),
6256
+ zRegionalProjectWageDeterminationResponseObject.extend({ type: z.literal('Pwa::ProjectWageDeterminations::Regional') })
6257
+ ]);
6258
+ /**
6259
+ * Parameters for creating a Federal (Davis-Bacon) wage determination on a project.
6260
+ */
6261
+ export const zFederalProjectWageDeterminationParameters = z.object({
6262
+ type: z.enum(['Pwa::ProjectWageDeterminations::Federal']),
6263
+ labor_classification: z.string(),
6264
+ pwa_trade_id: z.string(),
6265
+ hourly_rate_cents: z.string(),
6266
+ fringe_rate_cents: z.string(),
6267
+ class_code: z.string().nullish(),
6268
+ construction_category: z.enum([
6269
+ 'building',
6270
+ 'heavy',
6271
+ 'highway',
6272
+ 'residential'
6273
+ ]).nullish(),
6274
+ general_wage_determination: z.string().nullish(),
6275
+ pay_rates_rule_package_id: z.string().nullish()
6276
+ });
6277
+ /**
6278
+ * Parameters for creating a Regional (state prevailing-wage) wage determination on a project.
6279
+ */
6280
+ export const zRegionalProjectWageDeterminationParameters = z.object({
6281
+ type: z.enum(['Pwa::ProjectWageDeterminations::Regional']),
6282
+ labor_classification: z.string(),
6283
+ pwa_trade_id: z.string(),
6284
+ hourly_rate_cents: z.string(),
6285
+ fringe_rate_cents: z.string().optional(),
6286
+ general_wage_determination: z.string().nullish(),
6287
+ overtime_package_id: z.string().nullish(),
6288
+ pay_rates_rule_package_id: z.string().nullish(),
6289
+ regional_fields: zRegionalWageDeterminationFields.optional()
6290
+ });
6291
+ /**
6292
+ * Parameters for creating a project wage determination. Provide the Federal or Regional shape; the type discriminator selects which. Editing an existing determination uses the update parameters, which take an `effective_from` instead of a type.
6293
+ */
6294
+ export const zProjectWageDeterminationParameters = z.discriminatedUnion('type', [
6295
+ zFederalProjectWageDeterminationParameters.extend({ type: z.literal('Pwa::ProjectWageDeterminations::Federal') }),
6296
+ zRegionalProjectWageDeterminationParameters.extend({ type: z.literal('Pwa::ProjectWageDeterminations::Regional') })
6297
+ ]);
6298
+ /**
6299
+ * Parameters for editing a project wage determination from a point in valid time forward. The type is fixed by the determination the id names and is not sent.
6300
+ */
6301
+ export const zProjectWageDeterminationUpdateParameters = z.object({
6302
+ effective_from: z.iso.date().optional(),
6303
+ overtime_package_id: z.string().nullish(),
6304
+ pay_rates_rule_package_id: z.string().nullish(),
6305
+ labor_classification: z.string().optional(),
6306
+ pwa_trade_id: z.string().optional(),
6307
+ hourly_rate_cents: z.string().optional(),
6308
+ fringe_rate_cents: z.string().optional(),
6309
+ class_code: z.string().nullish(),
6310
+ construction_category: z.enum([
6311
+ 'building',
6312
+ 'heavy',
6313
+ 'highway',
6314
+ 'residential'
6315
+ ]).nullish(),
6316
+ general_wage_determination: z.string().nullish(),
6317
+ regional_fields: zRegionalWageDeterminationFields.optional()
6318
+ });
6015
6319
  /**
6016
6320
  * The adjustment applied when a rule matches — an addition to the wage or fringe rate.
6017
6321
  */
@@ -6385,18 +6689,18 @@ export const zAssetsVendorResponseObject = z.object({
6385
6689
  updated_at: z.iso.datetime()
6386
6690
  });
6387
6691
  /**
6388
- * Create or update a vendor. Only name is required.
6692
+ * Create a vendor. Only name is required; omitting it answers 400, and a null or wrong-typed value answers 422.
6389
6693
  */
6390
6694
  export const zAssetsVendorParameters = z.object({
6391
- name: z.string().min(1),
6392
- logo_signed_id: z.string().optional()
6695
+ name: z.string(),
6696
+ logo_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish()
6393
6697
  });
6394
6698
  /**
6395
- * Update a vendor. All fields are optional — send only what changes.
6699
+ * Update a vendor. All fields are optional — send only what changes. A null name or a wrong-typed value answers 422.
6396
6700
  */
6397
6701
  export const zAssetsVendorUpdateParameters = z.object({
6398
- name: z.string().min(1).optional(),
6399
- logo_signed_id: z.string().optional()
6702
+ name: z.string().optional(),
6703
+ logo_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish()
6400
6704
  });
6401
6705
  /**
6402
6706
  * A location that holds a company's assets and inventory — a warehouse or yard, optionally backed by a site on the Atlas map.
@@ -6639,7 +6943,7 @@ export const zAssetsProductParameters = z.object({
6639
6943
  assets_attribute_option_id: z.string().nullish()
6640
6944
  })).optional(),
6641
6945
  images_attributes: z.array(zAssetsAttachmentParameters).optional(),
6642
- performed_by_user_id: z.string()
6946
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
6643
6947
  });
6644
6948
  /**
6645
6949
  * Update a catalog product. All fields are optional — send only what changes. `type` is immutable and `performed_by_user_id` is create-only, so neither is accepted here. `attribute_values` upserts the product's category-attribute values.
@@ -6689,7 +6993,7 @@ export const zAssetsItemParameters = z.object({
6689
6993
  user_id: z.string().optional(),
6690
6994
  container_item_id: z.string().optional(),
6691
6995
  assets_sub_location_id: z.string().optional(),
6692
- performed_by_user_id: z.string()
6996
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
6693
6997
  });
6694
6998
  /**
6695
6999
  * Update an asset item. All item fields are optional — send only what changes — but performed_by_user_id is required to record the updater. Omitted attributes retain their existing values. `attribute_values` upserts the item-level attributes of the product's category.
@@ -6710,7 +7014,7 @@ export const zAssetsItemUpdateParameters = z.object({
6710
7014
  assets_attribute_option_id: z.string().nullish()
6711
7015
  })).optional(),
6712
7016
  images_attributes: z.array(zAssetsAttachmentParameters).optional(),
6713
- performed_by_user_id: z.string()
7017
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
6714
7018
  });
6715
7019
  /**
6716
7020
  * A file attached to an asset item — a document such as a manual, warranty, or certificate. Uploaded through the direct-upload flow and optionally marked as a certified copy.
@@ -6738,7 +7042,8 @@ export const zAssetsDocumentResponseObject = z.object({
6738
7042
  export const zAssetsDocumentParameters = z.object({
6739
7043
  file: z.string(),
6740
7044
  filename: z.string().nullish(),
6741
- description: z.string().nullish()
7045
+ description: z.string().nullish(),
7046
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
6742
7047
  });
6743
7048
  /**
6744
7049
  * Update an asset-item document. All fields are optional — send only what changes. Omit file to retain the existing attachment, or supply a new signed_id to replace it.
@@ -7037,7 +7342,7 @@ export const zAssetsServiceScheduleParameters = z.object({
7037
7342
  ]),
7038
7343
  interval_count: z.int().gte(1),
7039
7344
  last_serviced_on: z.iso.date().nullish(),
7040
- performed_by_user_id: z.string()
7345
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
7041
7346
  });
7042
7347
  /**
7043
7348
  * Update a service schedule. Cadence and last_serviced_on fields are optional — send only what changes — but performed_by_user_id is required to record the updater. next_due_date is recomputed.
@@ -7053,7 +7358,7 @@ export const zAssetsServiceScheduleUpdateParameters = z.object({
7053
7358
  ]).optional(),
7054
7359
  interval_count: z.int().gte(1).optional(),
7055
7360
  last_serviced_on: z.iso.date().nullish(),
7056
- performed_by_user_id: z.string()
7361
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
7057
7362
  });
7058
7363
  /**
7059
7364
  * A service performed on a serial item — scheduled (satisfying a service schedule) or ad-hoc. Recording one advances the linked schedule's next_due_date.
@@ -7087,7 +7392,7 @@ export const zAssetsServiceEventParameters = z.object({
7087
7392
  notes: z.string().nullish(),
7088
7393
  performed_on: z.iso.date(),
7089
7394
  assets_service_schedule_id: z.string().nullish(),
7090
- performed_by_user_id: z.string(),
7395
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
7091
7396
  attachments_attributes: z.array(zAssetsAttachmentParameters).optional()
7092
7397
  });
7093
7398
  /**
@@ -7102,7 +7407,7 @@ export const zAssetsServiceEventUpdateParameters = z.object({
7102
7407
  notes: z.string().nullish(),
7103
7408
  performed_on: z.iso.date().optional(),
7104
7409
  assets_service_schedule_id: z.string().nullish(),
7105
- performed_by_user_id: z.string(),
7410
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
7106
7411
  attachments_attributes: z.array(zAssetsAttachmentParameters).optional()
7107
7412
  });
7108
7413
  /**
@@ -7137,7 +7442,7 @@ export const zAssetsServiceScheduleTemplateParameters = z.object({
7137
7442
  'day'
7138
7443
  ]),
7139
7444
  interval_count: z.int().gte(1),
7140
- performed_by_user_id: z.string()
7445
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
7141
7446
  });
7142
7447
  /**
7143
7448
  * Update a service schedule template. Cadence fields are optional — send only what changes — but performed_by_user_id is required to record the updater. Changing defining fields reconciles linked item schedules in the background.
@@ -7152,7 +7457,7 @@ export const zAssetsServiceScheduleTemplateUpdateParameters = z.object({
7152
7457
  'day'
7153
7458
  ]).optional(),
7154
7459
  interval_count: z.int().gte(1).optional(),
7155
- performed_by_user_id: z.string()
7460
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
7156
7461
  });
7157
7462
  /**
7158
7463
  * A node of fixed storage structure inside a site or a container item — a zone, aisle, rack, shelf, bin, or drawer. Nodes form a tree per holder, and each carries a scannable path_code composed from its ancestors' codes.
@@ -7253,7 +7558,7 @@ export const zAssetsTransferParameters = z.object({
7253
7558
  to_container_item_id: z.string().optional(),
7254
7559
  from_assets_sub_location_id: z.string().optional(),
7255
7560
  to_assets_sub_location_id: z.string().optional(),
7256
- performed_by_user_id: z.string(),
7561
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
7257
7562
  line_items: z.array(z.object({
7258
7563
  assets_item_id: z.string(),
7259
7564
  quantity: z.int().gte(1)
@@ -7266,7 +7571,7 @@ export const zAssetsRestockParameters = z.object({
7266
7571
  assets_site_id: z.string(),
7267
7572
  assets_sub_location_id: z.string().optional(),
7268
7573
  quantity: z.int().gte(1),
7269
- performed_by_user_id: z.string()
7574
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
7270
7575
  });
7271
7576
  /**
7272
7577
  * Set the on-hand count of a bulk product at a site to a specific number, recording the difference as an adjustment transaction. The site must already stock the product. Bulk products only.
@@ -7275,13 +7580,13 @@ export const zAssetsAdjustmentParameters = z.object({
7275
7580
  assets_site_id: z.string(),
7276
7581
  assets_sub_location_id: z.string().optional(),
7277
7582
  new_quantity: z.int().gte(0),
7278
- performed_by_user_id: z.string()
7583
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
7279
7584
  });
7280
7585
  /**
7281
7586
  * Archive or unarchive a product or item. Archiving takes it out of circulation without deleting it — history is preserved and it is hidden from listings unless requested with filter[state]. Archiving a product cascades to its items; item operations apply to serial items only.
7282
7587
  */
7283
7588
  export const zAssetsArchiveParameters = z.object({
7284
- performed_by_user_id: z.string()
7589
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
7285
7590
  });
7286
7591
  /**
7287
7592
  * A certification held by a worker — the record that a worker earned a certification, with its receipt date, optional expiry, and verification state.
@@ -8285,7 +8590,7 @@ export const zUpdateServiceScheduleTemplatePath = z.object({
8285
8590
  export const zUpdateServiceScheduleTemplateResponse = zAssetsServiceScheduleTemplateResponseObject;
8286
8591
  export const zSeedServiceScheduleTemplateBody = z.object({
8287
8592
  assets_item_ids: z.array(z.string()).optional(),
8288
- performed_by_user_id: z.string()
8593
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
8289
8594
  });
8290
8595
  export const zSeedServiceScheduleTemplatePath = z.object({
8291
8596
  product_id: z.string(),
@@ -8300,7 +8605,7 @@ export const zSeedServiceScheduleTemplateResponse = z.object({
8300
8605
  });
8301
8606
  export const zSyncServiceScheduleTemplateBody = z.object({
8302
8607
  schedule_ids: z.array(z.string()).optional(),
8303
- performed_by_user_id: z.string()
8608
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
8304
8609
  });
8305
8610
  export const zSyncServiceScheduleTemplatePath = z.object({
8306
8611
  product_id: z.string(),
@@ -8772,6 +9077,112 @@ export const zUpdateCompanyProfilePath = z.object({
8772
9077
  * Success
8773
9078
  */
8774
9079
  export const zUpdateCompanyProfileResponse = zCompanyResponseObject;
9080
+ export const zListAssessmentsQuery = z.object({
9081
+ 'filter[candidate_user_id]': z.string().optional(),
9082
+ 'filter[competencies_level_id]': z.string().optional(),
9083
+ 'filter[status]': z.enum([
9084
+ 'evidence_collection',
9085
+ 'submitted',
9086
+ 'in_review',
9087
+ 'decided'
9088
+ ]).optional(),
9089
+ 'filter[outcome]': z.enum(['competent', 'not_yet_competent']).nullish(),
9090
+ filter: z.string().optional(),
9091
+ 'filter[unexpected]': z.string().optional()
9092
+ });
9093
+ /**
9094
+ * Success
9095
+ */
9096
+ export const zListAssessmentsResponse = z.object({
9097
+ meta: zMeta,
9098
+ links: zLinks,
9099
+ data: z.array(zCompetencyAssessmentResponseObject)
9100
+ });
9101
+ export const zGetAssessmentPath = z.object({
9102
+ id: z.string()
9103
+ });
9104
+ /**
9105
+ * Success
9106
+ */
9107
+ export const zGetAssessmentResponse = zCompetencyAssessmentResponseObject;
9108
+ export const zListAssessmentKeyActivitiesPath = z.object({
9109
+ assessment_id: z.string()
9110
+ });
9111
+ export const zListAssessmentKeyActivitiesQuery = z.object({
9112
+ filter: z.string().optional(),
9113
+ 'filter[unexpected]': z.string().optional()
9114
+ });
9115
+ /**
9116
+ * Candidate sees a decided review
9117
+ */
9118
+ export const zListAssessmentKeyActivitiesResponse = z.object({
9119
+ meta: zMeta,
9120
+ links: zLinks,
9121
+ data: z.array(zCompetencyAssessmentKeyActivityResponseObject)
9122
+ });
9123
+ export const zGetAssessmentKeyActivityPath = z.object({
9124
+ assessment_id: z.string(),
9125
+ id: z.string()
9126
+ });
9127
+ /**
9128
+ * Candidate sees a decided review
9129
+ */
9130
+ export const zGetAssessmentKeyActivityResponse = zCompetencyAssessmentKeyActivityResponseObject;
9131
+ export const zListEvidenceItemsPath = z.object({
9132
+ assessment_id: z.string(),
9133
+ key_activity_id: z.string()
9134
+ });
9135
+ export const zListEvidenceItemsQuery = z.object({
9136
+ 'filter[kind]': z.enum([
9137
+ 'upload',
9138
+ 'form_submission',
9139
+ 'certification'
9140
+ ]).optional(),
9141
+ filter: z.string().optional(),
9142
+ 'filter[unexpected]': z.string().optional()
9143
+ });
9144
+ /**
9145
+ * Success
9146
+ */
9147
+ export const zListEvidenceItemsResponse = z.object({
9148
+ meta: zMeta,
9149
+ links: zLinks,
9150
+ data: z.array(zCompetencyEvidenceItemResponseObject)
9151
+ });
9152
+ export const zGetEvidenceItemPath = z.object({
9153
+ assessment_id: z.string(),
9154
+ key_activity_id: z.string(),
9155
+ id: z.string()
9156
+ });
9157
+ /**
9158
+ * Success
9159
+ */
9160
+ export const zGetEvidenceItemResponse = zCompetencyEvidenceItemResponseObject;
9161
+ export const zListQualificationsQuery = z.object({
9162
+ 'filter[candidate_user_id]': z.string().optional(),
9163
+ 'filter[competencies_standard_id]': z.string().optional(),
9164
+ 'filter[level_sort_order]': z.int().optional(),
9165
+ filter: z.string().optional(),
9166
+ 'filter[unexpected]': z.string().optional(),
9167
+ 'page[cursor]': z.string().optional(),
9168
+ 'page[limit]': z.int().gte(1).optional().default(20),
9169
+ page: z.string().optional()
9170
+ });
9171
+ /**
9172
+ * Success
9173
+ */
9174
+ export const zListQualificationsResponse = z.object({
9175
+ meta: zMeta,
9176
+ links: zLinks,
9177
+ data: z.array(zCompetencyQualificationResponseObject)
9178
+ });
9179
+ export const zGetQualificationPath = z.object({
9180
+ id: z.string()
9181
+ });
9182
+ /**
9183
+ * Success
9184
+ */
9185
+ export const zGetQualificationResponse = zCompetencyQualificationResponseObject;
8775
9186
  export const zListChecksQuery = z.object({
8776
9187
  'filter[status]': z.enum([
8777
9188
  'passed',
@@ -9126,6 +9537,50 @@ export const zUpdateJobScopePricePath = z.object({
9126
9537
  * Success
9127
9538
  */
9128
9539
  export const zUpdateJobScopePriceResponse = zProductionJobScopePriceResponseObject;
9540
+ export const zListGoodFaithEffortExceptionsPath = z.object({
9541
+ job_id: z.string()
9542
+ });
9543
+ export const zListGoodFaithEffortExceptionsQuery = z.object({
9544
+ filter: z.string().optional(),
9545
+ 'filter[unexpected]': z.string().optional(),
9546
+ 'page[cursor]': z.string().optional(),
9547
+ 'page[limit]': z.int().gte(1).optional().default(20),
9548
+ page: z.string().optional()
9549
+ });
9550
+ /**
9551
+ * Success
9552
+ */
9553
+ export const zListGoodFaithEffortExceptionsResponse = zJobGoodFaithEffortExceptionsResponseObject;
9554
+ export const zGetGoodFaithEffortExceptionPath = z.object({
9555
+ job_id: z.string(),
9556
+ id: z.string()
9557
+ });
9558
+ /**
9559
+ * Success
9560
+ */
9561
+ export const zGetGoodFaithEffortExceptionResponse = zJobGoodFaithEffortExceptionResponseObject;
9562
+ export const zListCurePaymentsPath = z.object({
9563
+ job_id: z.string()
9564
+ });
9565
+ export const zListCurePaymentsQuery = z.object({
9566
+ filter: z.string().optional(),
9567
+ 'filter[unexpected]': z.string().optional(),
9568
+ 'page[cursor]': z.string().optional(),
9569
+ 'page[limit]': z.int().gte(1).optional().default(20),
9570
+ page: z.string().optional()
9571
+ });
9572
+ /**
9573
+ * Success
9574
+ */
9575
+ export const zListCurePaymentsResponse = zJobCurePaymentsResponseObject;
9576
+ export const zGetCurePaymentPath = z.object({
9577
+ job_id: z.string(),
9578
+ id: z.string()
9579
+ });
9580
+ /**
9581
+ * Success
9582
+ */
9583
+ export const zGetCurePaymentResponse = zJobCurePaymentResponseObject;
9129
9584
  export const zCreateJobTradeBody = zPwaTradeParameters;
9130
9585
  export const zCreateJobTradePath = z.object({
9131
9586
  job_id: z.string()
@@ -9384,6 +9839,7 @@ export const zListJobsQuery = z.object({
9384
9839
  'filter[project_id]': z.string().optional(),
9385
9840
  'filter[companies_department_id]': z.string().optional(),
9386
9841
  'filter[companies_department_id][null]': z.boolean().optional(),
9842
+ 'filter[requested_by_company_id]': z.string().optional(),
9387
9843
  'filter[status]': z.string().optional(),
9388
9844
  'filter[production_tracking_kind]': z.enum([
9389
9845
  'none',
@@ -9392,6 +9848,18 @@ export const zListJobsQuery = z.object({
9392
9848
  ]).optional(),
9393
9849
  'filter[name]': z.string().optional(),
9394
9850
  'filter[purchase_order_number]': z.string().optional(),
9851
+ 'filter[federal_pwa_mode]': z.array(z.enum([
9852
+ 'all',
9853
+ 'pw_only',
9854
+ 'ap_only',
9855
+ 'none'
9856
+ ])).optional(),
9857
+ 'filter[regional_pwa_mode]': z.array(z.enum([
9858
+ 'all',
9859
+ 'pw_only',
9860
+ 'ap_only',
9861
+ 'none'
9862
+ ])).optional(),
9395
9863
  'page[cursor]': z.string().optional(),
9396
9864
  'page[limit]': z.int().gte(1).optional().default(20),
9397
9865
  page: z.string().optional(),
@@ -10248,6 +10716,7 @@ export const zGetWidePaystubImportResponse = zWidePaystubImportResponseObject;
10248
10716
  export const zListPayrollRunsQuery = z.object({
10249
10717
  'filter[run_type]': z.string().optional(),
10250
10718
  'filter[timekeeping_pay_period_id]': z.string().optional(),
10719
+ 'filter[user_id]': z.string().optional(),
10251
10720
  'filter[run_date][gte]': z.iso.date().optional(),
10252
10721
  'filter[run_date][lte]': z.iso.date().optional(),
10253
10722
  'filter[created_at][gte]': z.iso.datetime().optional(),
@@ -10759,6 +11228,66 @@ export const zUpdateProjectSitePath = z.object({
10759
11228
  * Success
10760
11229
  */
10761
11230
  export const zUpdateProjectSiteResponse = zProjectSiteResponseObject;
11231
+ export const zListProjectWageDeterminationsPath = z.object({
11232
+ project_id: z.string()
11233
+ });
11234
+ export const zListProjectWageDeterminationsQuery = z.object({
11235
+ 'as_of[valid]': z.iso.datetime().optional(),
11236
+ as_of: z.string().optional(),
11237
+ 'as_of[bogus_axis]': z.string().optional(),
11238
+ 'as_of[valid][gte]': z.string().optional(),
11239
+ 'as_of[transaction]': z.string().optional()
11240
+ });
11241
+ /**
11242
+ * Success
11243
+ */
11244
+ export const zListProjectWageDeterminationsResponse = z.object({
11245
+ meta: zMeta,
11246
+ links: zLinks,
11247
+ data: z.array(zProjectWageDeterminationResponseObject)
11248
+ });
11249
+ export const zCreateProjectWageDeterminationBody = zProjectWageDeterminationParameters;
11250
+ export const zCreateProjectWageDeterminationPath = z.object({
11251
+ project_id: z.string()
11252
+ });
11253
+ /**
11254
+ * Created
11255
+ */
11256
+ export const zCreateProjectWageDeterminationResponse = zProjectWageDeterminationResponseObject;
11257
+ export const zDeleteProjectWageDeterminationHeaders = z.object({
11258
+ 'If-Match': z.string()
11259
+ });
11260
+ export const zDeleteProjectWageDeterminationPath = z.object({
11261
+ project_id: z.string(),
11262
+ id: z.string()
11263
+ });
11264
+ /**
11265
+ * Success
11266
+ */
11267
+ export const zDeleteProjectWageDeterminationResponse = zProjectWageDeterminationResponseObject;
11268
+ export const zGetProjectWageDeterminationPath = z.object({
11269
+ project_id: z.string(),
11270
+ id: z.string()
11271
+ });
11272
+ export const zGetProjectWageDeterminationQuery = z.object({
11273
+ 'as_of[valid]': z.iso.datetime().optional()
11274
+ });
11275
+ /**
11276
+ * Success
11277
+ */
11278
+ export const zGetProjectWageDeterminationResponse = zProjectWageDeterminationResponseObject;
11279
+ export const zUpdateProjectWageDeterminationBody = zProjectWageDeterminationUpdateParameters;
11280
+ export const zUpdateProjectWageDeterminationHeaders = z.object({
11281
+ 'If-Match': z.string()
11282
+ });
11283
+ export const zUpdateProjectWageDeterminationPath = z.object({
11284
+ project_id: z.string(),
11285
+ id: z.string()
11286
+ });
11287
+ /**
11288
+ * Success
11289
+ */
11290
+ export const zUpdateProjectWageDeterminationResponse = zProjectWageDeterminationResponseObject;
10762
11291
  export const zListProjectsQuery = z.object({
10763
11292
  'filter[federal_pwa_mode]': z.enum([
10764
11293
  'all',
@@ -11229,6 +11758,23 @@ export const zCreateWorkerTimeCardApprovalResponse = zTimeCardApprovalResponseOb
11229
11758
  export const zListTimeCardsQuery = z.object({
11230
11759
  'filter[timekeeping_pay_period_id]': z.string().optional(),
11231
11760
  'filter[user_id]': z.string().optional(),
11761
+ 'filter[job_id]': z.string().optional(),
11762
+ 'filter[federal_pwa]': z.boolean().optional(),
11763
+ 'filter[regional_pwa]': z.boolean().optional(),
11764
+ 'filter[apprentice]': z.boolean().optional(),
11765
+ 'filter[employment_type]': z.array(z.enum(['EMPLOYEE', 'CONTRACTOR'])).optional(),
11766
+ 'filter[compensation_type]': z.array(z.enum(['hourly', 'salary'])).optional(),
11767
+ 'filter[department_id]': z.string().optional(),
11768
+ 'filter[worker_approval_status]': z.array(z.enum([
11769
+ 'PENDING',
11770
+ 'APPROVED',
11771
+ 'DECLINED'
11772
+ ])).optional(),
11773
+ 'filter[manager_approval_status]': z.array(z.enum([
11774
+ 'PENDING',
11775
+ 'APPROVED',
11776
+ 'DECLINED'
11777
+ ])).optional(),
11232
11778
  'filter[start_time][gte]': z.iso.datetime().optional(),
11233
11779
  'filter[start_time][lte]': z.iso.datetime().optional(),
11234
11780
  filter: z.string().optional(),
@@ -11635,6 +12181,30 @@ export const zGetTimeCardActualPath = z.object({
11635
12181
  * Success
11636
12182
  */
11637
12183
  export const zGetTimeCardActualResponse = zTimeCardActualsResponseObject;
12184
+ export const zListTimeOffRequestsQuery = z.object({
12185
+ 'filter[user_id]': z.string().optional(),
12186
+ 'filter[status]': z.enum([
12187
+ 'pending',
12188
+ 'approved',
12189
+ 'denied',
12190
+ 'cancelled',
12191
+ 'expired'
12192
+ ]).optional(),
12193
+ 'page[cursor]': z.string().optional(),
12194
+ 'page[limit]': z.int().gte(1).optional().default(20),
12195
+ page: z.string().optional()
12196
+ });
12197
+ /**
12198
+ * Success
12199
+ */
12200
+ export const zListTimeOffRequestsResponse = zTimeOffRequestsResponseObject;
12201
+ export const zGetTimeOffRequestPath = z.object({
12202
+ id: z.string()
12203
+ });
12204
+ /**
12205
+ * Success
12206
+ */
12207
+ export const zGetTimeOffRequestResponse = zTimeOffRequestResponseObject;
11638
12208
  export const zListTimeSessionsQuery = z.object({
11639
12209
  'filter[user_id]': z.string().optional(),
11640
12210
  'filter[job_id]': z.string().optional(),
@@ -11789,6 +12359,14 @@ export const zListUsersQuery = z.object({
11789
12359
  'all'
11790
12360
  ]).optional(),
11791
12361
  'filter[name]': z.string().optional(),
12362
+ 'filter[manager_user_id]': z.string().optional(),
12363
+ 'filter[department_id]': z.string().optional(),
12364
+ 'filter[invite_status]': z.array(z.enum([
12365
+ 'pending',
12366
+ 'accepted',
12367
+ 'declined',
12368
+ 'revoked'
12369
+ ])).optional(),
11792
12370
  'page[cursor]': z.string().optional(),
11793
12371
  'page[limit]': z.int().gte(1).optional().default(20),
11794
12372
  page: z.string().optional(),