@dsptch-work/api-client 0.35.0 → 0.36.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.
@@ -462,6 +462,7 @@ export const zDirectUploadParameters = z.object({
462
462
  'pay_periods.imports.time_entries',
463
463
  'payrolls.payroll_runs.imports.paystubs',
464
464
  'payrolls.payroll_runs.imports.wide_paystubs',
465
+ 'projects.documents',
465
466
  'users'
466
467
  ]),
467
468
  blob: z.object({
@@ -1039,38 +1040,38 @@ export const zApprenticeshipProgramEmployerUpdateParameters = z.object({
1039
1040
  require_timecard_allocation: z.boolean().optional()
1040
1041
  });
1041
1042
  /**
1042
- * Create a period on a wage schedule; the wage schedule is taken from the URL path. wage_cents and fringe_cents are sent as integer cents.
1043
+ * Create a period on a wage schedule; the wage schedule is taken from the URL path. wage_cents and fringe_cents are sent as integer cents. Omitting period_number, wage_percent, or wage_cents answers 400. A wrong JSON type, a negative number, or a null for any field but min_minutes, max_minutes, num_competencies, description, fringe_percent, and fringe_cents answers 422 at that field; a null in one of those leaves it unset, but a period with none of min_minutes, max_minutes, or num_competencies answers 422.
1043
1044
  */
1044
1045
  export const zApprenticeshipWageSchedulePeriodParameters = z.object({
1045
- period_number: z.int(),
1046
- min_minutes: z.int().nullish(),
1047
- max_minutes: z.int().nullish(),
1048
- num_competencies: z.int().nullish(),
1046
+ period_number: z.int().gte(0),
1047
+ min_minutes: z.int().gte(0).nullish(),
1048
+ max_minutes: z.int().gte(0).nullish(),
1049
+ num_competencies: z.int().gte(0).nullish(),
1049
1050
  description: z.string().nullish(),
1050
- wage_percent: z.number(),
1051
- wage_cents: z.int(),
1052
- fringe_percent: z.number().nullish(),
1053
- fringe_cents: z.int().nullish()
1051
+ wage_percent: z.number().gte(0),
1052
+ wage_cents: z.int().gte(0),
1053
+ fringe_percent: z.number().gte(0).nullish(),
1054
+ fringe_cents: z.int().gte(0).nullish()
1054
1055
  });
1055
1056
  /**
1056
- * Update a period on a wage schedule. Send only the fields to change; the wage schedule is taken from the URL path, and wage_cents and fringe_cents are sent as integer cents.
1057
+ * Update a period on a wage schedule. Send only the fields to change; the wage schedule is taken from the URL path, and wage_cents and fringe_cents are sent as integer cents. A wrong JSON type, a negative number, or a null for any field but min_minutes, max_minutes, num_competencies, description, fringe_percent, and fringe_cents answers 422 at that field; a null in one of those clears it, but a period left with none of min_minutes, max_minutes, or num_competencies answers 422.
1057
1058
  */
1058
1059
  export const zApprenticeshipWageSchedulePeriodUpdateParameters = z.object({
1059
- period_number: z.int().optional(),
1060
- min_minutes: z.int().nullish(),
1061
- max_minutes: z.int().nullish(),
1062
- num_competencies: z.int().nullish(),
1060
+ period_number: z.int().gte(0).optional(),
1061
+ min_minutes: z.int().gte(0).nullish(),
1062
+ max_minutes: z.int().gte(0).nullish(),
1063
+ num_competencies: z.int().gte(0).nullish(),
1063
1064
  description: z.string().nullish(),
1064
- wage_percent: z.number().optional(),
1065
- wage_cents: z.int().optional(),
1066
- fringe_percent: z.number().nullish(),
1067
- fringe_cents: z.int().nullish()
1065
+ wage_percent: z.number().gte(0).optional(),
1066
+ wage_cents: z.int().gte(0).optional(),
1067
+ fringe_percent: z.number().gte(0).nullish(),
1068
+ fringe_cents: z.int().gte(0).nullish()
1068
1069
  });
1069
1070
  /**
1070
- * Create a wage schedule for an occupation; the occupation is taken from the URL path. Money is sent as integer cents; periods may be created inline via periods_attributes.
1071
+ * Create a wage schedule for an occupation; the occupation is taken from the URL path. Money is sent as integer cents; periods may be created inline via periods_attributes. Omitting name, wage_unit, journeyworker_wage_unit, or period_unit answers 400. A blank name, a unit outside its listed values, a wrong JSON type, or a null for any field but description and journeyworker_fringe_cents answers 422; a null in either of those leaves the field unset.
1071
1072
  */
1072
1073
  export const zApprenticeshipWageScheduleParameters = z.object({
1073
- name: z.string(),
1074
+ name: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
1074
1075
  description: z.string().nullish(),
1075
1076
  wage_unit: z.enum([
1076
1077
  'hourly',
@@ -1101,23 +1102,23 @@ export const zApprenticeshipWageScheduleParameters = z.object({
1101
1102
  end_wage_cents: z.int().optional(),
1102
1103
  periods_attributes: z.array(z.object({
1103
1104
  id: z.string().optional(),
1104
- period_number: z.int(),
1105
- min_minutes: z.int().nullish(),
1106
- max_minutes: z.int().nullish(),
1107
- num_competencies: z.int().nullish(),
1105
+ period_number: z.int().gte(0).optional(),
1106
+ min_minutes: z.int().gte(0).nullish(),
1107
+ max_minutes: z.int().gte(0).nullish(),
1108
+ num_competencies: z.int().gte(0).nullish(),
1108
1109
  description: z.string().nullish(),
1109
- wage_percent: z.number(),
1110
- wage_cents: z.int(),
1111
- fringe_percent: z.number().nullish(),
1112
- fringe_cents: z.int().nullish(),
1110
+ wage_percent: z.number().gte(0).optional(),
1111
+ wage_cents: z.int().gte(0).optional(),
1112
+ fringe_percent: z.number().gte(0).nullish(),
1113
+ fringe_cents: z.int().gte(0).nullish(),
1113
1114
  _destroy: z.boolean().optional()
1114
1115
  })).optional()
1115
1116
  });
1116
1117
  /**
1117
- * Update a wage schedule for an occupation. Send only the fields to change; money is sent as integer cents and periods may be created, updated, or removed inline via periods_attributes.
1118
+ * Update a wage schedule for an occupation. Send only the fields to change; money is sent as integer cents and periods may be created, updated, or removed inline via periods_attributes. A blank name, a unit outside its listed values, a wrong JSON type, or a null for any field but description and journeyworker_fringe_cents answers 422; a null in either of those clears the field.
1118
1119
  */
1119
1120
  export const zApprenticeshipWageScheduleUpdateParameters = z.object({
1120
- name: z.string().optional(),
1121
+ name: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
1121
1122
  description: z.string().nullish(),
1122
1123
  wage_unit: z.enum([
1123
1124
  'hourly',
@@ -1146,35 +1147,19 @@ export const zApprenticeshipWageScheduleUpdateParameters = z.object({
1146
1147
  journeyworker_wage_cents: z.int().optional(),
1147
1148
  journeyworker_fringe_cents: z.int().nullish(),
1148
1149
  end_wage_cents: z.int().optional(),
1149
- periods_attributes: z.array(z.intersection(z.union([
1150
- z.unknown(),
1151
- z.union([
1152
- z.object({
1153
- min_minutes: z.int()
1154
- }),
1155
- z.object({
1156
- max_minutes: z.int()
1157
- }),
1158
- z.object({
1159
- num_competencies: z.int()
1160
- })
1161
- ]),
1162
- z.object({
1163
- _destroy: z.literal(true)
1164
- })
1165
- ]), z.object({
1150
+ periods_attributes: z.array(z.object({
1166
1151
  id: z.string().optional(),
1167
- period_number: z.int().optional(),
1168
- min_minutes: z.int().nullish(),
1169
- max_minutes: z.int().nullish(),
1170
- num_competencies: z.int().nullish(),
1152
+ period_number: z.int().gte(0).optional(),
1153
+ min_minutes: z.int().gte(0).nullish(),
1154
+ max_minutes: z.int().gte(0).nullish(),
1155
+ num_competencies: z.int().gte(0).nullish(),
1171
1156
  description: z.string().nullish(),
1172
- wage_percent: z.number().optional(),
1173
- wage_cents: z.int().optional(),
1174
- fringe_percent: z.number().nullish(),
1175
- fringe_cents: z.int().nullish(),
1157
+ wage_percent: z.number().gte(0).optional(),
1158
+ wage_cents: z.int().gte(0).optional(),
1159
+ fringe_percent: z.number().gte(0).nullish(),
1160
+ fringe_cents: z.int().gte(0).nullish(),
1176
1161
  _destroy: z.boolean().optional()
1177
- }))).optional()
1162
+ })).optional()
1178
1163
  });
1179
1164
  /**
1180
1165
  * A work-type classification that determines how tracked time is treated — paid vs unpaid, overtime-eligible, billable, PWA/prevailing-wage-eligible, holiday, PTO, or rest-and-recovery — versioned bitemporally so each version carries its own validity window.
@@ -1326,7 +1311,7 @@ export const zPeopleEmploymentUpdateParameters = z.object({
1326
1311
  */
1327
1312
  export const zPeopleEmploymentCustomFieldsUpdateParameters = z.object({
1328
1313
  custom_fields: z.array(z.object({
1329
- custom_field_config_id: z.string(),
1314
+ custom_field_config_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
1330
1315
  value: z.string().nullable()
1331
1316
  })).min(1)
1332
1317
  });
@@ -1464,7 +1449,8 @@ export const zTimecodeHistoryVersionObject = z.object({
1464
1449
  * Request body for creating or updating a timecode; only `name` is required. On create, omitted fields take their model/DB defaults (noted per field). On update the request applies a bitemporal correction, so omitted fields keep the current version's values rather than reverting to defaults.
1465
1450
  */
1466
1451
  export const zTimecodeParameters = z.object({
1467
- name: z.string().min(1),
1452
+ effective_date: z.string().optional(),
1453
+ name: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
1468
1454
  description: z.string().nullish(),
1469
1455
  description_is_required: z.boolean().optional(),
1470
1456
  billable: z.boolean().optional(),
@@ -1483,16 +1469,15 @@ export const zTimecodeParameters = z.object({
1483
1469
  'job',
1484
1470
  'non_job',
1485
1471
  'job_with_timecode'
1486
- ]).optional(),
1487
- effective_date: z.iso.datetime().optional()
1472
+ ]).optional()
1488
1473
  });
1489
1474
  /**
1490
1475
  * Request body for correcting a timecode over a valid-time span. Send only the fields to change; omitted fields retain their current values. `effective_from` defaults to the addressed version's start, and `effective_to` is optional.
1491
1476
  */
1492
1477
  export const zTimecodeCorrectionParameters = z.object({
1493
- effective_from: z.iso.datetime().optional(),
1494
- effective_to: z.iso.datetime().optional(),
1495
- name: z.string().min(1).optional(),
1478
+ effective_from: z.string().optional(),
1479
+ effective_to: z.string().optional(),
1480
+ name: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
1496
1481
  description: z.string().nullish(),
1497
1482
  description_is_required: z.boolean().optional(),
1498
1483
  billable: z.boolean().optional(),
@@ -1517,7 +1502,7 @@ export const zTimecodeCorrectionParameters = z.object({
1517
1502
  * Request body for moving the beginning of a timecode's valid-time timeline. Moving it earlier extends coverage; moving it later removes coverage before the new beginning.
1518
1503
  */
1519
1504
  export const zTimecodeGenesisParameters = z.object({
1520
- effective_date: z.iso.datetime()
1505
+ effective_date: z.string()
1521
1506
  });
1522
1507
  /**
1523
1508
  * Request body for scheduling a timecode's termination: the date from which it stops being valid. The body is required — the endpoint reads effective_date with `params.expect`, so a request omitting it is refused with `400`.
@@ -1526,11 +1511,11 @@ export const zTimecodeScheduledTerminationParameters = z.object({
1526
1511
  effective_date: z.iso.datetime()
1527
1512
  });
1528
1513
  /**
1529
- * Request body for scheduling a future change to a timecode: an effective_date paired with the attribute values to apply from that date. `effective_date` and `name` are required; omitted attributes inherit the current version's values.
1514
+ * Request body for scheduling a future change to a timecode: an effective_date paired with the attribute values to apply from that date. Only `effective_date` is required; omitted attributes inherit the current version's values.
1530
1515
  */
1531
1516
  export const zTimecodeScheduledChangeParameters = z.object({
1532
- effective_date: z.iso.datetime(),
1533
- name: z.string(),
1517
+ effective_date: z.string(),
1518
+ name: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
1534
1519
  description: z.string().nullish(),
1535
1520
  description_is_required: z.boolean().optional(),
1536
1521
  billable: z.boolean().optional(),
@@ -1687,10 +1672,10 @@ export const zAssetsAttributeResponseObject = z.object({
1687
1672
  updated_at: z.iso.datetime()
1688
1673
  });
1689
1674
  /**
1690
- * Create or update an attribute definition. Options apply only to a select attribute and are ignored otherwise; data_type cannot be changed once any value has been filled.
1675
+ * Create an attribute definition. Omitting name or data_type answers 400, and a blank or null name or any wrong-typed value answers 422. Options apply only to a select attribute and are ignored otherwise.
1691
1676
  */
1692
1677
  export const zAssetsAttributeParameters = z.object({
1693
- name: z.string().min(1),
1678
+ name: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
1694
1679
  data_type: z.enum([
1695
1680
  'text',
1696
1681
  'number',
@@ -1706,10 +1691,10 @@ export const zAssetsAttributeParameters = z.object({
1706
1691
  })).optional()
1707
1692
  });
1708
1693
  /**
1709
- * Update an attribute definition. All fields are optional — send only what changes. Options apply only to a select attribute and are ignored otherwise; data_type cannot be changed once any value has been filled.
1694
+ * Update an attribute definition. All fields are optional — send only what changes. A blank or null name or any wrong-typed value answers 422. Options apply only to a select attribute and are ignored otherwise; data_type cannot be changed once any value has been filled.
1710
1695
  */
1711
1696
  export const zAssetsAttributeUpdateParameters = z.object({
1712
- name: z.string().min(1).optional(),
1697
+ name: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
1713
1698
  data_type: z.enum([
1714
1699
  'text',
1715
1700
  'number',
@@ -2442,19 +2427,19 @@ export const zGroupUpdateParameters = z.object({
2442
2427
  name: z.string().optional()
2443
2428
  });
2444
2429
  /**
2445
- * Request body for updating a worker's profile. Limited to person-level identity fields; employment, roles, and compliance are managed through onboarding (create) and the user-company endpoints.
2430
+ * Request body for updating a worker's profile. Limited to person-level identity fields; employment, roles, and compliance are managed through onboarding (create) and the user-company endpoints. Include only the fields to change. A null or blank legal name, or any wrong-typed value, answers 422.
2446
2431
  */
2447
2432
  export const zUserUpdateParameters = z.object({
2448
2433
  email: z.string().nullish(),
2449
2434
  personal_email: z.string().nullish(),
2450
2435
  phone_number: z.string().nullish(),
2451
- first_name: z.string().optional(),
2452
- last_name: z.string().optional(),
2436
+ first_name: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
2437
+ last_name: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
2453
2438
  preferred_first_name: z.string().nullish(),
2454
2439
  preferred_last_name: z.string().nullish(),
2455
2440
  city: z.string().nullish(),
2456
2441
  state: z.string().nullish(),
2457
- birth_date: z.string().nullish(),
2442
+ birth_date: z.iso.date().nullish(),
2458
2443
  dol_apprentice_no: z.string().nullish(),
2459
2444
  avatar_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish()
2460
2445
  });
@@ -2523,31 +2508,34 @@ export const zManagerTimeEntryApprovalParameters = z.object({
2523
2508
  approver_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
2524
2509
  });
2525
2510
  /**
2526
- * The time-entry body fields shared by the create and update bodies; each of those declares its own requiredness.
2511
+ * Request body for creating a time entry. timekeeping_time_card_id, start_time, and end_time are required, and omitting one answers 400.
2527
2512
  */
2528
- export const zTimeEntryParameters = z.object({
2529
- start_time: z.iso.datetime().optional(),
2530
- end_time: z.iso.datetime().optional(),
2531
- job_id: z.string().nullish(),
2532
- timekeeping_timecode_id: z.string().nullish(),
2513
+ export const zTimeEntryCreateParameters = z.object({
2514
+ timekeeping_time_card_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
2515
+ start_time: z.string(),
2516
+ end_time: z.string(),
2517
+ job_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish(),
2518
+ timekeeping_timecode_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish(),
2533
2519
  state: z.string().nullish(),
2534
2520
  description: z.string().nullish(),
2535
2521
  hourly_rate_cents: z.string().nullish(),
2536
- feature_ids: z.array(z.string()).nullish()
2522
+ feature_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
2523
+ feature_allocation_acknowledged: z.boolean().optional()
2537
2524
  });
2538
2525
  /**
2539
- * Request body for creating a time entry — the time_entry_parameters fields plus the time card and the explicit "no feature" acknowledgement. timekeeping_time_card_id, start_time, and end_time are required.
2540
- */
2541
- export const zTimeEntryCreateParameters = zTimeEntryParameters.and(z.object({
2542
- timekeeping_time_card_id: z.string(),
2543
- feature_allocation_acknowledged: z.boolean().nullish()
2544
- }));
2545
- /**
2546
- * Request body for updating a time entry — the time_entry_parameters fields, every one optional, plus the acknowledgement that clears an apprenticeship allocation conflict.
2526
+ * Request body for updating a time entry. Every field is optional, and an omitted field keeps its value.
2547
2527
  */
2548
- export const zTimeEntryUpdateParameters = zTimeEntryParameters.and(z.object({
2549
- confirm_allocation_conflict: z.boolean().nullish()
2550
- }));
2528
+ export const zTimeEntryUpdateParameters = z.object({
2529
+ start_time: z.string().optional(),
2530
+ end_time: z.string().optional(),
2531
+ job_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish(),
2532
+ timekeeping_timecode_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish(),
2533
+ state: z.string().nullish(),
2534
+ description: z.string().nullish(),
2535
+ hourly_rate_cents: z.string().nullish(),
2536
+ feature_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
2537
+ confirm_allocation_conflict: z.boolean().optional()
2538
+ });
2551
2539
  /**
2552
2540
  * A form definition — a SurveyJS form template built and versioned in the web app's form builder. The same object the list door serializes. Read-only.
2553
2541
  */
@@ -2585,6 +2573,46 @@ export const zFormSubmissionResponseObject = z.object({
2585
2573
  created_at: z.iso.datetime(),
2586
2574
  updated_at: z.iso.datetime()
2587
2575
  });
2576
+ /**
2577
+ * 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.
2578
+ */
2579
+ export const zUserCompanyParameters = z.object({
2580
+ type: z.enum(['EMPLOYEE', 'CONTRACTOR']).optional(),
2581
+ title: z.string().nullish(),
2582
+ manager_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish(),
2583
+ payroll_id: z.string().nullish(),
2584
+ enrolled_in_t_and_a: z.boolean().optional(),
2585
+ hire_date: z.string().nullish(),
2586
+ custom_fields: z.array(z.object({
2587
+ custom_field_config_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
2588
+ value: z.string().nullable()
2589
+ })).optional()
2590
+ });
2591
+ /**
2592
+ * Request body for adding a worker to your company, creating their employment record and its custom-field values. hire_date is required and sets when employment begins; the remaining fields seed the initial title, pay, benefits, and accruals. Returns the worker with the new employment flattened onto it. Omitting hire_date answers 400. 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.
2593
+ */
2594
+ export const zUserCompanyCreateParameters = z.object({
2595
+ hire_date: z.string(),
2596
+ type: z.enum(['EMPLOYEE', 'CONTRACTOR']).optional(),
2597
+ title: z.string().nullish(),
2598
+ manager_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish(),
2599
+ payroll_id: z.string().nullish(),
2600
+ enrolled_in_t_and_a: z.boolean().optional(),
2601
+ compensation_type: z.enum(['hourly', 'salary']).optional(),
2602
+ hourly_rate: z.string().nullish(),
2603
+ overtime_eligible: z.boolean().optional(),
2604
+ training_annual_amount: z.string().nullish(),
2605
+ employer_combined_health_amount: z.string().nullish(),
2606
+ employer_combined_savings: z.string().nullish(),
2607
+ worked_annual_minutes: z.int().nullish(),
2608
+ pto_annual_minutes: z.int().nullish(),
2609
+ holiday_annual_minutes: z.int().nullish(),
2610
+ training_annual_minutes: z.int().nullish(),
2611
+ custom_fields: z.array(z.object({
2612
+ custom_field_config_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
2613
+ value: z.string().nullable()
2614
+ })).optional()
2615
+ });
2588
2616
  /**
2589
2617
  * Request body for scheduling a future-dated compensation change. effective_date sets when the new values take effect; earlier history is preserved as its own version. Covers the pay, benefit, accrual, and department fields.
2590
2618
  */
@@ -2793,7 +2821,7 @@ export const zUserGroupResponse = z.object({
2793
2821
  * Request body for adding users to a group. The group is taken from the URL path.
2794
2822
  */
2795
2823
  export const zUserGroupParameters = z.object({
2796
- user_ids: z.array(z.string())
2824
+ user_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).min(1)
2797
2825
  });
2798
2826
  /**
2799
2827
  * Day of the week a job's workweek and time cards start on: 0 (Sunday) through 6 (Saturday).
@@ -2945,6 +2973,20 @@ export const zUserCompanyScheduledChangesResponse = z.object({
2945
2973
  export const zUserCompanyScheduledTerminationParameters = z.object({
2946
2974
  termination_date: z.iso.date()
2947
2975
  });
2976
+ /**
2977
+ * A pay period — a bounded pay window generated automatically by its pay schedule (PayPeriodConfig).
2978
+ */
2979
+ export const zPayPeriodResponseObject = z.object({
2980
+ id: z.string(),
2981
+ timekeeping_pay_period_config_id: z.string(),
2982
+ pay_date: z.iso.date(),
2983
+ start_time: z.iso.datetime(),
2984
+ end_time: z.iso.datetime(),
2985
+ pay_run_deadline: z.iso.datetime(),
2986
+ approvals_deadline: z.iso.datetime(),
2987
+ created_at: z.iso.datetime(),
2988
+ updated_at: z.iso.datetime()
2989
+ });
2948
2990
  /**
2949
2991
  * One problem found while processing an accepted import, whatever its type.
2950
2992
  */
@@ -3650,19 +3692,18 @@ export const zProjectResponseObject = z.object({
3650
3692
  updated_at: z.iso.datetime()
3651
3693
  });
3652
3694
  /**
3653
- * 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.
3695
+ * 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.
3654
3696
  */
3655
3697
  export const zProjectParameters = z.object({
3656
3698
  external_id: z.string().nullish(),
3657
- name: z.string(),
3699
+ name: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
3658
3700
  description: z.string().nullish(),
3659
- created_by_user_id: z.string(),
3660
- parent_id: z.string().nullish(),
3701
+ parent_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish(),
3661
3702
  participating_company_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
3662
3703
  start_date: z.iso.date().nullish(),
3663
3704
  end_date: z.iso.date().nullish(),
3664
3705
  tz_name: z.string().nullish(),
3665
- billing_start_day: z.int().nullish(),
3706
+ billing_start_day: z.int().gte(0).lte(6).nullish(),
3666
3707
  federal_pwa_mode: z.enum([
3667
3708
  'all',
3668
3709
  'pw_only',
@@ -3680,24 +3721,25 @@ export const zProjectParameters = z.object({
3680
3721
  administrator_name: z.string().nullish(),
3681
3722
  administrator_email: z.string().nullish(),
3682
3723
  administrator_phone: z.string().nullish(),
3683
- budget: z.string().optional(),
3724
+ budget: z.string().nullish(),
3684
3725
  prevailing_wage_lock_in_date: z.iso.date().nullish(),
3685
3726
  beginning_of_construction_date: z.iso.date().nullish(),
3686
- placed_in_service_date: z.iso.date().nullish()
3727
+ placed_in_service_date: z.iso.date().nullish(),
3728
+ created_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
3687
3729
  });
3688
3730
  /**
3689
- * 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.
3731
+ * 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.
3690
3732
  */
3691
3733
  export const zProjectUpdateParameters = z.object({
3692
3734
  external_id: z.string().nullish(),
3693
- name: z.string().optional(),
3735
+ name: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
3694
3736
  description: z.string().nullish(),
3695
- parent_id: z.string().nullish(),
3737
+ parent_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish(),
3696
3738
  participating_company_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
3697
3739
  start_date: z.iso.date().nullish(),
3698
3740
  end_date: z.iso.date().nullish(),
3699
3741
  tz_name: z.string().nullish(),
3700
- billing_start_day: z.int().nullish(),
3742
+ billing_start_day: z.int().gte(0).lte(6).nullish(),
3701
3743
  federal_pwa_mode: z.enum([
3702
3744
  'all',
3703
3745
  'pw_only',
@@ -3715,7 +3757,7 @@ export const zProjectUpdateParameters = z.object({
3715
3757
  administrator_name: z.string().nullish(),
3716
3758
  administrator_email: z.string().nullish(),
3717
3759
  administrator_phone: z.string().nullish(),
3718
- budget: z.string().optional(),
3760
+ budget: z.string().nullish(),
3719
3761
  prevailing_wage_lock_in_date: z.iso.date().nullish(),
3720
3762
  beginning_of_construction_date: z.iso.date().nullish(),
3721
3763
  placed_in_service_date: z.iso.date().nullish()
@@ -3741,6 +3783,56 @@ export const zProjectSiteParameters = z.object({
3741
3783
  export const zProjectSiteUpdateParameters = z.object({
3742
3784
  feature_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional()
3743
3785
  });
3786
+ /**
3787
+ * A file attached to a project. Uploaded through the direct-upload flow. `name` is always "document" and is not client-writable.
3788
+ */
3789
+ export const zProjectDocumentResponseObject = z.object({
3790
+ id: z.string(),
3791
+ project_id: z.string(),
3792
+ name: z.string(),
3793
+ filename: z.string().nullable(),
3794
+ description: z.string().nullable(),
3795
+ created_by_user_id: z.string(),
3796
+ file: z.object({
3797
+ filename: z.string(),
3798
+ content_type: z.string().nullable(),
3799
+ byte_size: z.int(),
3800
+ url: z.string()
3801
+ }).nullable(),
3802
+ created_at: z.iso.datetime(),
3803
+ updated_at: z.iso.datetime()
3804
+ });
3805
+ /**
3806
+ * Attach a file to a project as a document. file is required and takes a signed_id from the direct-upload endpoint.
3807
+ */
3808
+ export const zProjectDocumentParameters = z.object({
3809
+ file: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
3810
+ filename: z.string().nullish(),
3811
+ description: z.string().nullish(),
3812
+ performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)
3813
+ });
3814
+ /**
3815
+ * Update a project 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. A document always holds a file, so null answers 422, as does a blank string. `name` is read-only; sending it answers 400.
3816
+ */
3817
+ export const zProjectDocumentUpdateParameters = z.object({
3818
+ file: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
3819
+ filename: z.string().nullish(),
3820
+ description: z.string().nullish()
3821
+ });
3822
+ /**
3823
+ * One entry in a project document's PaperTrail change history, recorded whenever the document is created, updated, or deleted — including when only its attached file is replaced. This is transaction-time audit data, not a temporal valid-time version.
3824
+ */
3825
+ export const zProjectDocumentVersionResponseObject = z.object({
3826
+ id: z.int(),
3827
+ document_id: z.string(),
3828
+ event: z.enum([
3829
+ 'create',
3830
+ 'update',
3831
+ 'destroy'
3832
+ ]),
3833
+ whodunnit: z.string().nullable(),
3834
+ created_at: z.iso.datetime()
3835
+ });
3744
3836
  export const zSiteCheckInResponseObject = z.object({
3745
3837
  id: z.string(),
3746
3838
  site_id: z.string(),
@@ -4078,12 +4170,12 @@ export const zComplianceCheckDetailResponseObject = z.object({
4078
4170
  documents: z.array(zComplianceCheckDocumentObject)
4079
4171
  });
4080
4172
  /**
4081
- * Update a compliance check. Every field is optional.
4173
+ * Update a compliance check. Every field is optional. Undeclared body keys return 400, and a wrong-typed value, a null for a field that is not nullable, or a status outside the list returns 422 at its pointer before anything is written.
4082
4174
  */
4083
4175
  export const zComplianceCheckParameters = z.object({
4084
4176
  status: z.enum(['dismissed', 'pending']).optional(),
4085
- time_due: z.iso.datetime().nullish(),
4086
- assignee_user_ids: z.array(z.string()).optional(),
4177
+ time_due: z.string().nullish(),
4178
+ assignee_user_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
4087
4179
  file_signed_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional()
4088
4180
  });
4089
4181
  export const zRichTextObject = z.object({
@@ -4601,7 +4693,7 @@ export const zSiteFormAssignmentParameters = z.object({
4601
4693
  'QUARTERLY'
4602
4694
  ]).nullish(),
4603
4695
  recurrence_end_time: z.iso.datetime().nullish(),
4604
- task_assignee_user_ids: z.array(z.string()).optional(),
4696
+ task_assignee_user_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
4605
4697
  reminders_attributes: z.array(z.object({
4606
4698
  offset: z.enum([
4607
4699
  'PT0S',
@@ -4665,7 +4757,7 @@ export const zSiteFormAssignmentUpdateParameters = z.object({
4665
4757
  'QUARTERLY'
4666
4758
  ]).nullish(),
4667
4759
  recurrence_end_time: z.iso.datetime().nullish(),
4668
- task_assignee_user_ids: z.array(z.string()).optional(),
4760
+ task_assignee_user_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
4669
4761
  reminders_attributes: z.array(z.object({
4670
4762
  offset: z.enum([
4671
4763
  'PT0S',
@@ -4757,7 +4849,7 @@ export const zFeatureFormAssignmentParameters = z.object({
4757
4849
  'QUARTERLY'
4758
4850
  ]).nullish(),
4759
4851
  recurrence_end_time: z.iso.datetime().nullish(),
4760
- task_assignee_user_ids: z.array(z.string()).optional(),
4852
+ task_assignee_user_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
4761
4853
  reminders_attributes: z.array(z.object({
4762
4854
  offset: z.enum([
4763
4855
  'PT0S',
@@ -4821,7 +4913,7 @@ export const zFeatureFormAssignmentUpdateParameters = z.object({
4821
4913
  'QUARTERLY'
4822
4914
  ]).nullish(),
4823
4915
  recurrence_end_time: z.iso.datetime().nullish(),
4824
- task_assignee_user_ids: z.array(z.string()).optional(),
4916
+ task_assignee_user_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
4825
4917
  reminders_attributes: z.array(z.object({
4826
4918
  offset: z.enum([
4827
4919
  'PT0S',
@@ -4886,7 +4978,7 @@ export const zJobFormAssignmentParameters = z.object({
4886
4978
  'QUARTERLY'
4887
4979
  ]).nullish(),
4888
4980
  recurrence_end_time: z.iso.datetime().nullish(),
4889
- task_assignee_user_ids: z.array(z.string()).optional(),
4981
+ task_assignee_user_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
4890
4982
  reminders_attributes: z.array(z.object({
4891
4983
  offset: z.enum([
4892
4984
  'PT0S',
@@ -4950,7 +5042,7 @@ export const zJobFormAssignmentUpdateParameters = z.object({
4950
5042
  'QUARTERLY'
4951
5043
  ]).nullish(),
4952
5044
  recurrence_end_time: z.iso.datetime().nullish(),
4953
- task_assignee_user_ids: z.array(z.string()).optional(),
5045
+ task_assignee_user_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
4954
5046
  reminders_attributes: z.array(z.object({
4955
5047
  offset: z.enum([
4956
5048
  'PT0S',
@@ -5168,20 +5260,20 @@ export const zFormAssignmentTaskResponseObject = z.array(z.object({
5168
5260
  }))
5169
5261
  }));
5170
5262
  /**
5171
- * Request body for creating a certification — a named qualification a worker can hold. You can only manage your own company's certifications; global (platform) certifications are read-only.
5263
+ * Request body for creating a certification — a named qualification a worker can hold. You can only manage your own company's certifications; global (platform) certifications are read-only. Omitting company_id or name answers 400, and a null or blank one, or any wrong-typed value, answers 422.
5172
5264
  */
5173
5265
  export const zCertificationParameters = z.object({
5174
- company_id: z.string(),
5175
- name: z.string(),
5266
+ company_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
5267
+ name: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
5176
5268
  description: z.string().nullish(),
5177
5269
  verified: z.boolean().optional(),
5178
5270
  duration: z.string().nullish()
5179
5271
  });
5180
5272
  /**
5181
- * Request body for updating a certification — a named qualification a worker can hold. Include only the fields to change. You can only manage your own company's certifications; global (platform) certifications are read-only. The certification's company is fixed at creation.
5273
+ * Request body for updating a certification — a named qualification a worker can hold. Include only the fields to change. You can only manage your own company's certifications; global (platform) certifications are read-only. The certification's company is fixed at creation. A null or blank name, or any wrong-typed value, answers 422.
5182
5274
  */
5183
5275
  export const zCertificationUpdateParameters = z.object({
5184
- name: z.string().optional(),
5276
+ name: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
5185
5277
  description: z.string().nullish(),
5186
5278
  verified: z.boolean().optional(),
5187
5279
  duration: z.string().nullish()
@@ -5262,10 +5354,10 @@ export const zUserCertificationUpdateParameters = z.object({
5262
5354
  archived_at: z.iso.datetime().nullish()
5263
5355
  });
5264
5356
  /**
5265
- * Request body for approving a certification held by a worker. A user key approves in its own user's name and sends no body.
5357
+ * Request body for approving a certification held by a worker. A user key approves in its own user's name and must omit approved_by_user_id. A company key must name the approver.
5266
5358
  */
5267
5359
  export const zUserCertificationApprovalParameters = z.object({
5268
- approved_by_user_id: z.string().optional()
5360
+ approved_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional()
5269
5361
  });
5270
5362
  /**
5271
5363
  * A certification held by a worker — the record that a worker earned a certification, with its receipt date, optional expiry, and verification state.
@@ -5606,7 +5698,7 @@ export const zUserParameters = z.intersection(z.union([
5606
5698
  holiday_annual_minutes: z.string().optional(),
5607
5699
  training_annual_minutes: z.string().optional(),
5608
5700
  hire_date: z.string().optional(),
5609
- group_ids: z.array(z.uuid()).nullish(),
5701
+ group_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
5610
5702
  custom_fields: z.array(z.object({
5611
5703
  custom_field_config_id: z.string(),
5612
5704
  value: z.string().nullable()
@@ -5701,46 +5793,6 @@ export const zUserParameters = z.intersection(z.union([
5701
5793
  ])).optional()
5702
5794
  }).nullish()
5703
5795
  }));
5704
- /**
5705
- * 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.
5706
- */
5707
- export const zUserCompanyParameters = z.object({
5708
- type: zUserCompanyType.optional(),
5709
- title: z.string().nullish(),
5710
- manager_user_id: z.string().nullish(),
5711
- payroll_id: z.string().nullish(),
5712
- hire_date: z.string().nullish(),
5713
- enrolled_in_t_and_a: z.boolean().optional(),
5714
- custom_fields: z.array(z.object({
5715
- custom_field_config_id: z.string(),
5716
- value: z.string().nullable()
5717
- })).optional()
5718
- });
5719
- /**
5720
- * Request body for adding a worker to your company, creating their employment record and its custom-field values. hire_date is required and sets when employment begins; the remaining fields seed the initial title, pay, benefits, and accruals. Returns the worker with the new employment flattened onto it.
5721
- */
5722
- export const zUserCompanyCreateParameters = z.object({
5723
- hire_date: z.string(),
5724
- type: zUserCompanyType.optional(),
5725
- title: z.string().nullish(),
5726
- manager_user_id: z.string().nullish(),
5727
- compensation_type: z.enum(['hourly', 'salary']).optional(),
5728
- enrolled_in_t_and_a: z.boolean().optional(),
5729
- payroll_id: z.string().nullish(),
5730
- hourly_rate: z.string().nullish(),
5731
- overtime_eligible: z.boolean().optional(),
5732
- training_annual_amount: z.string().nullish(),
5733
- employer_combined_health_amount: z.string().nullish(),
5734
- employer_combined_savings: z.string().nullish(),
5735
- worked_annual_minutes: z.int().nullish(),
5736
- pto_annual_minutes: z.int().nullish(),
5737
- holiday_annual_minutes: z.int().nullish(),
5738
- training_annual_minutes: z.int().nullish(),
5739
- custom_fields: z.array(z.object({
5740
- custom_field_config_id: z.string(),
5741
- value: z.string().nullable()
5742
- })).optional()
5743
- });
5744
5796
  /**
5745
5797
  * Keyset pagination cursors for the collection.
5746
5798
  */
@@ -5833,17 +5885,7 @@ export const zTimeEntryDeltasResponse = z.object({
5833
5885
  export const zPayPeriodsResponseObject = z.object({
5834
5886
  meta: zMeta,
5835
5887
  links: zLinks,
5836
- data: z.array(z.object({
5837
- id: z.string(),
5838
- timekeeping_pay_period_config_id: z.string(),
5839
- pay_date: z.iso.date(),
5840
- start_time: z.iso.datetime(),
5841
- end_time: z.iso.datetime(),
5842
- pay_run_deadline: z.iso.datetime(),
5843
- approvals_deadline: z.iso.datetime(),
5844
- created_at: z.iso.datetime(),
5845
- updated_at: z.iso.datetime()
5846
- }))
5888
+ data: z.array(zPayPeriodResponseObject)
5847
5889
  });
5848
5890
  /**
5849
5891
  * A page of job time card days, with pagination metadata and navigation links.
@@ -6166,35 +6208,6 @@ export const zFederalJobWageDeterminationHistoryCorrectionObject = z.object({
6166
6208
  created_at: z.iso.datetime(),
6167
6209
  updated_at: z.iso.datetime()
6168
6210
  });
6169
- /**
6170
- * State-specific rate fields for a Regional determination, as decimal-string money in cents
6171
- * (e.g. "538.0"). These nine properties are the whole write vocabulary, but which of them a
6172
- * request may send is set by the job's region, not the request — sending a key the job's
6173
- * region does not allow returns a 422:
6174
- *
6175
- * - Categorized-fringe regions (currently IL) accept `combined_health_fringe_rate_cents`,
6176
- * `combined_savings_fringe_rate_cents`, `combined_holiday_pto_fringe_rate_cents`,
6177
- * `training_fringe_rate_cents`, and `other_fringe_rate_cents`.
6178
- * - Overtime-adder regions (currently IL and NY) accept `one_five_x_adder_rate_cents`,
6179
- * `two_x_adder_rate_cents`, `one_five_x_fringe_adder_rate_cents`, and
6180
- * `two_x_fringe_adder_rate_cents`.
6181
- *
6182
- * In a categorized-fringe region the five fringe keys are required, not merely accepted —
6183
- * omitting any of them returns a 422. Categorized-fringe values are non-null when present;
6184
- * overtime-adder values may be null.
6185
- *
6186
- */
6187
- export const zRegionalWageDeterminationFields = z.object({
6188
- combined_health_fringe_rate_cents: z.string().optional(),
6189
- combined_savings_fringe_rate_cents: z.string().optional(),
6190
- combined_holiday_pto_fringe_rate_cents: z.string().optional(),
6191
- training_fringe_rate_cents: z.string().optional(),
6192
- other_fringe_rate_cents: z.string().optional(),
6193
- one_five_x_adder_rate_cents: z.string().nullish(),
6194
- two_x_adder_rate_cents: z.string().nullish(),
6195
- one_five_x_fringe_adder_rate_cents: z.string().nullish(),
6196
- two_x_fringe_adder_rate_cents: z.string().nullish()
6197
- });
6198
6211
  /**
6199
6212
  * State-specific rate fields recorded on a Regional determination, as decimal-string money in
6200
6213
  * cents (e.g. "538.0"). Which keys appear is set by the job's region, so this object is always
@@ -6317,12 +6330,12 @@ export const zJobWageDeterminationHistoryVersionObject = z.discriminatedUnion('t
6317
6330
  zRegionalJobWageDeterminationHistoryVersionObject.extend({ type: z.literal('Pwa::JobWageDeterminations::Regional') })
6318
6331
  ]);
6319
6332
  /**
6320
- * Parameters for creating a Federal (Davis-Bacon) wage determination on a job.
6333
+ * Parameters for creating a Federal (Davis-Bacon) wage determination on a job. A Federal determination holds no regional rates, so a body sending `regional_fields` returns a 422.
6321
6334
  */
6322
6335
  export const zFederalJobWageDeterminationParameters = z.object({
6323
6336
  type: z.enum(['Pwa::JobWageDeterminations::Federal']),
6324
- labor_classification: z.string(),
6325
- pwa_trade_id: z.string(),
6337
+ labor_classification: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
6338
+ pwa_trade_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
6326
6339
  hourly_rate_cents: z.string(),
6327
6340
  fringe_rate_cents: z.string(),
6328
6341
  class_code: z.string().nullish(),
@@ -6332,20 +6345,38 @@ export const zFederalJobWageDeterminationParameters = z.object({
6332
6345
  'highway',
6333
6346
  'residential'
6334
6347
  ]).nullish(),
6335
- general_wage_determination: z.string().nullish()
6348
+ general_wage_determination: z.string().nullish(),
6349
+ overtime_package_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish()
6336
6350
  });
6337
6351
  /**
6338
6352
  * Parameters for creating a Regional (state prevailing-wage) wage determination on a job.
6339
6353
  */
6340
6354
  export const zRegionalJobWageDeterminationParameters = z.object({
6341
6355
  type: z.enum(['Pwa::JobWageDeterminations::Regional']),
6342
- labor_classification: z.string(),
6343
- pwa_trade_id: z.string(),
6356
+ labor_classification: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
6357
+ pwa_trade_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
6344
6358
  hourly_rate_cents: z.string(),
6345
6359
  fringe_rate_cents: z.string().optional(),
6360
+ class_code: z.string().nullish(),
6361
+ construction_category: z.enum([
6362
+ 'building',
6363
+ 'heavy',
6364
+ 'highway',
6365
+ 'residential'
6366
+ ]).nullish(),
6346
6367
  general_wage_determination: z.string().nullish(),
6347
- overtime_package_id: z.string().nullish(),
6348
- regional_fields: zRegionalWageDeterminationFields.optional()
6368
+ regional_fields: z.object({
6369
+ combined_health_fringe_rate_cents: z.string().nullish(),
6370
+ combined_savings_fringe_rate_cents: z.string().nullish(),
6371
+ combined_holiday_pto_fringe_rate_cents: z.string().nullish(),
6372
+ training_fringe_rate_cents: z.string().nullish(),
6373
+ other_fringe_rate_cents: z.string().nullish(),
6374
+ one_five_x_adder_rate_cents: z.string().nullish(),
6375
+ two_x_adder_rate_cents: z.string().nullish(),
6376
+ one_five_x_fringe_adder_rate_cents: z.string().nullish(),
6377
+ two_x_fringe_adder_rate_cents: z.string().nullish()
6378
+ }).optional(),
6379
+ overtime_package_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish()
6349
6380
  });
6350
6381
  /**
6351
6382
  * Parameters for creating a job 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.
@@ -6359,9 +6390,9 @@ export const zJobWageDeterminationParameters = z.discriminatedUnion('type', [
6359
6390
  */
6360
6391
  export const zJobWageDeterminationUpdateParameters = z.object({
6361
6392
  effective_from: z.iso.date().optional(),
6362
- overtime_package_id: z.string().nullish(),
6363
- labor_classification: z.string().optional(),
6364
- pwa_trade_id: z.string().optional(),
6393
+ overtime_package_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish(),
6394
+ labor_classification: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
6395
+ pwa_trade_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
6365
6396
  hourly_rate_cents: z.string().optional(),
6366
6397
  fringe_rate_cents: z.string().optional(),
6367
6398
  class_code: z.string().nullish(),
@@ -6372,14 +6403,24 @@ export const zJobWageDeterminationUpdateParameters = z.object({
6372
6403
  'residential'
6373
6404
  ]).nullish(),
6374
6405
  general_wage_determination: z.string().nullish(),
6375
- regional_fields: zRegionalWageDeterminationFields.optional()
6406
+ regional_fields: z.object({
6407
+ combined_health_fringe_rate_cents: z.string().nullish(),
6408
+ combined_savings_fringe_rate_cents: z.string().nullish(),
6409
+ combined_holiday_pto_fringe_rate_cents: z.string().nullish(),
6410
+ training_fringe_rate_cents: z.string().nullish(),
6411
+ other_fringe_rate_cents: z.string().nullish(),
6412
+ one_five_x_adder_rate_cents: z.string().nullish(),
6413
+ two_x_adder_rate_cents: z.string().nullish(),
6414
+ one_five_x_fringe_adder_rate_cents: z.string().nullish(),
6415
+ two_x_fringe_adder_rate_cents: z.string().nullish()
6416
+ }).optional()
6376
6417
  });
6377
6418
  /**
6378
6419
  * Parameters for an effective-dated change to a job wage determination, applying from a calendar date forward. The type is fixed by the determination the id names and is not sent.
6379
6420
  */
6380
6421
  export const zJobWageDeterminationScheduledChangeParameters = z.object({
6381
6422
  effective_date: z.iso.date(),
6382
- labor_classification: z.string().optional(),
6423
+ labor_classification: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
6383
6424
  hourly_rate_cents: z.string().optional(),
6384
6425
  fringe_rate_cents: z.string().optional(),
6385
6426
  class_code: z.string().nullish(),
@@ -6390,7 +6431,17 @@ export const zJobWageDeterminationScheduledChangeParameters = z.object({
6390
6431
  'residential'
6391
6432
  ]).nullish(),
6392
6433
  general_wage_determination: z.string().nullish(),
6393
- regional_fields: zRegionalWageDeterminationFields.optional()
6434
+ regional_fields: z.object({
6435
+ combined_health_fringe_rate_cents: z.string().nullish(),
6436
+ combined_savings_fringe_rate_cents: z.string().nullish(),
6437
+ combined_holiday_pto_fringe_rate_cents: z.string().nullish(),
6438
+ training_fringe_rate_cents: z.string().nullish(),
6439
+ other_fringe_rate_cents: z.string().nullish(),
6440
+ one_five_x_adder_rate_cents: z.string().nullish(),
6441
+ two_x_adder_rate_cents: z.string().nullish(),
6442
+ one_five_x_fringe_adder_rate_cents: z.string().nullish(),
6443
+ two_x_fringe_adder_rate_cents: z.string().nullish()
6444
+ }).optional()
6394
6445
  });
6395
6446
  /**
6396
6447
  * Parameters for moving where a job wage determination's timeline begins.
@@ -6558,12 +6609,12 @@ export const zProjectWageDeterminationHistoryVersionObject = z.discriminatedUnio
6558
6609
  zRegionalProjectWageDeterminationHistoryVersionObject.extend({ type: z.literal('Pwa::ProjectWageDeterminations::Regional') })
6559
6610
  ]);
6560
6611
  /**
6561
- * Parameters for creating a Federal (Davis-Bacon) wage determination on a project.
6612
+ * Parameters for creating a Federal (Davis-Bacon) wage determination on a project. A Federal determination holds no regional rates, so a body sending `regional_fields` returns a 422.
6562
6613
  */
6563
6614
  export const zFederalProjectWageDeterminationParameters = z.object({
6564
6615
  type: z.enum(['Pwa::ProjectWageDeterminations::Federal']),
6565
- labor_classification: z.string(),
6566
- pwa_trade_id: z.string(),
6616
+ labor_classification: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
6617
+ pwa_trade_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
6567
6618
  hourly_rate_cents: z.string(),
6568
6619
  fringe_rate_cents: z.string(),
6569
6620
  class_code: z.string().nullish(),
@@ -6573,20 +6624,38 @@ export const zFederalProjectWageDeterminationParameters = z.object({
6573
6624
  'highway',
6574
6625
  'residential'
6575
6626
  ]).nullish(),
6576
- general_wage_determination: z.string().nullish()
6627
+ general_wage_determination: z.string().nullish(),
6628
+ overtime_package_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish()
6577
6629
  });
6578
6630
  /**
6579
6631
  * Parameters for creating a Regional (state prevailing-wage) wage determination on a project.
6580
6632
  */
6581
6633
  export const zRegionalProjectWageDeterminationParameters = z.object({
6582
6634
  type: z.enum(['Pwa::ProjectWageDeterminations::Regional']),
6583
- labor_classification: z.string(),
6584
- pwa_trade_id: z.string(),
6635
+ labor_classification: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
6636
+ pwa_trade_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
6585
6637
  hourly_rate_cents: z.string(),
6586
6638
  fringe_rate_cents: z.string().optional(),
6639
+ class_code: z.string().nullish(),
6640
+ construction_category: z.enum([
6641
+ 'building',
6642
+ 'heavy',
6643
+ 'highway',
6644
+ 'residential'
6645
+ ]).nullish(),
6587
6646
  general_wage_determination: z.string().nullish(),
6588
- overtime_package_id: z.string().nullish(),
6589
- regional_fields: zRegionalWageDeterminationFields.optional()
6647
+ regional_fields: z.object({
6648
+ combined_health_fringe_rate_cents: z.string().nullish(),
6649
+ combined_savings_fringe_rate_cents: z.string().nullish(),
6650
+ combined_holiday_pto_fringe_rate_cents: z.string().nullish(),
6651
+ training_fringe_rate_cents: z.string().nullish(),
6652
+ other_fringe_rate_cents: z.string().nullish(),
6653
+ one_five_x_adder_rate_cents: z.string().nullish(),
6654
+ two_x_adder_rate_cents: z.string().nullish(),
6655
+ one_five_x_fringe_adder_rate_cents: z.string().nullish(),
6656
+ two_x_fringe_adder_rate_cents: z.string().nullish()
6657
+ }).optional(),
6658
+ overtime_package_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish()
6590
6659
  });
6591
6660
  /**
6592
6661
  * 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.
@@ -6600,9 +6669,9 @@ export const zProjectWageDeterminationParameters = z.discriminatedUnion('type',
6600
6669
  */
6601
6670
  export const zProjectWageDeterminationUpdateParameters = z.object({
6602
6671
  effective_from: z.iso.date().optional(),
6603
- overtime_package_id: z.string().nullish(),
6604
- labor_classification: z.string().optional(),
6605
- pwa_trade_id: z.string().optional(),
6672
+ overtime_package_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish(),
6673
+ labor_classification: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
6674
+ pwa_trade_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
6606
6675
  hourly_rate_cents: z.string().optional(),
6607
6676
  fringe_rate_cents: z.string().optional(),
6608
6677
  class_code: z.string().nullish(),
@@ -6613,14 +6682,24 @@ export const zProjectWageDeterminationUpdateParameters = z.object({
6613
6682
  'residential'
6614
6683
  ]).nullish(),
6615
6684
  general_wage_determination: z.string().nullish(),
6616
- regional_fields: zRegionalWageDeterminationFields.optional()
6685
+ regional_fields: z.object({
6686
+ combined_health_fringe_rate_cents: z.string().nullish(),
6687
+ combined_savings_fringe_rate_cents: z.string().nullish(),
6688
+ combined_holiday_pto_fringe_rate_cents: z.string().nullish(),
6689
+ training_fringe_rate_cents: z.string().nullish(),
6690
+ other_fringe_rate_cents: z.string().nullish(),
6691
+ one_five_x_adder_rate_cents: z.string().nullish(),
6692
+ two_x_adder_rate_cents: z.string().nullish(),
6693
+ one_five_x_fringe_adder_rate_cents: z.string().nullish(),
6694
+ two_x_fringe_adder_rate_cents: z.string().nullish()
6695
+ }).optional()
6617
6696
  });
6618
6697
  /**
6619
6698
  * Parameters for an effective-dated change to a project wage determination, applying from a calendar date forward. The type is fixed by the determination the id names and is not sent.
6620
6699
  */
6621
6700
  export const zProjectWageDeterminationScheduledChangeParameters = z.object({
6622
6701
  effective_date: z.iso.date(),
6623
- labor_classification: z.string().optional(),
6702
+ labor_classification: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
6624
6703
  hourly_rate_cents: z.string().optional(),
6625
6704
  fringe_rate_cents: z.string().optional(),
6626
6705
  class_code: z.string().nullish(),
@@ -6631,7 +6710,17 @@ export const zProjectWageDeterminationScheduledChangeParameters = z.object({
6631
6710
  'residential'
6632
6711
  ]).nullish(),
6633
6712
  general_wage_determination: z.string().nullish(),
6634
- regional_fields: zRegionalWageDeterminationFields.optional()
6713
+ regional_fields: z.object({
6714
+ combined_health_fringe_rate_cents: z.string().nullish(),
6715
+ combined_savings_fringe_rate_cents: z.string().nullish(),
6716
+ combined_holiday_pto_fringe_rate_cents: z.string().nullish(),
6717
+ training_fringe_rate_cents: z.string().nullish(),
6718
+ other_fringe_rate_cents: z.string().nullish(),
6719
+ one_five_x_adder_rate_cents: z.string().nullish(),
6720
+ two_x_adder_rate_cents: z.string().nullish(),
6721
+ one_five_x_fringe_adder_rate_cents: z.string().nullish(),
6722
+ two_x_fringe_adder_rate_cents: z.string().nullish()
6723
+ }).optional()
6635
6724
  });
6636
6725
  /**
6637
6726
  * Parameters for moving where a project wage determination's timeline begins.
@@ -7471,7 +7560,7 @@ export const zAssetsItemFormAssignmentParameters = z.object({
7471
7560
  'QUARTERLY'
7472
7561
  ]).nullish(),
7473
7562
  recurrence_end_time: z.iso.datetime().nullish(),
7474
- task_assignee_user_ids: z.array(z.string()).optional(),
7563
+ task_assignee_user_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
7475
7564
  reminders_attributes: z.array(z.object({
7476
7565
  offset: z.enum([
7477
7566
  'PT0S',
@@ -7535,7 +7624,7 @@ export const zAssetsItemFormAssignmentUpdateParameters = z.object({
7535
7624
  'QUARTERLY'
7536
7625
  ]).nullish(),
7537
7626
  recurrence_end_time: z.iso.datetime().nullish(),
7538
- task_assignee_user_ids: z.array(z.string()).optional(),
7627
+ task_assignee_user_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
7539
7628
  reminders_attributes: z.array(z.object({
7540
7629
  offset: z.enum([
7541
7630
  'PT0S',
@@ -7910,22 +7999,22 @@ export const zAssetsTransferResponseObject = z.object({
7910
7999
  updated_at: z.iso.datetime()
7911
8000
  });
7912
8001
  /**
7913
- * Move item stock. Each endpoint is a site, a user, or a container — give at most one per side. With both a source and a destination this is a two-sided transfer (returns the created transfer, 201). With a single open end it is a one-sided move — placing an unplaced item (destination only) or removing it from its holder (source only) — which records transactions but no transfer and returns 204. Moves are applied immediately, so the source must hold enough of each item.
8002
+ * Move item stock. Each endpoint is a site, a user, or a container — give at most one per side; more than one on a side, or no endpoint at all, answers 422. With both a source and a destination this is a two-sided transfer (returns the created transfer, 201). With a single open end it is a one-sided move — placing an unplaced item (destination only) or removing it from its holder (source only) — which records transactions but no transfer and returns 204. Moves are applied immediately, so the source must hold enough of each item.
7914
8003
  */
7915
8004
  export const zAssetsTransferParameters = z.object({
7916
- from_assets_site_id: z.string().optional(),
7917
- from_user_id: z.string().optional(),
7918
- from_container_item_id: z.string().optional(),
7919
- to_assets_site_id: z.string().optional(),
7920
- to_user_id: z.string().optional(),
7921
- to_container_item_id: z.string().optional(),
7922
- from_assets_sub_location_id: z.string().optional(),
7923
- to_assets_sub_location_id: z.string().optional(),
8005
+ from_assets_site_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
8006
+ from_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
8007
+ from_container_item_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
8008
+ from_assets_sub_location_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish(),
8009
+ to_assets_site_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
8010
+ to_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
8011
+ to_container_item_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).optional(),
8012
+ to_assets_sub_location_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/).nullish(),
7924
8013
  performed_by_user_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
7925
8014
  line_items: z.array(z.object({
7926
- assets_item_id: z.string(),
8015
+ assets_item_id: z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/),
7927
8016
  quantity: z.int().gte(1)
7928
- }))
8017
+ })).min(1)
7929
8018
  });
7930
8019
  /**
7931
8020
  * Add stock of a bulk product at a site, recording a receive transaction. Bulk products only.
@@ -11288,6 +11377,7 @@ export const zGetTimeEntryImportPath = z.object({
11288
11377
  */
11289
11378
  export const zGetTimeEntryImportResponse = zTimeEntryImportResponseObject;
11290
11379
  export const zListPayPeriodsQuery = z.object({
11380
+ 'filter[timekeeping_pay_period_config_id]': z.string().optional(),
11291
11381
  'filter[start_time][gte]': z.iso.datetime().optional(),
11292
11382
  'filter[start_time][lte]': z.iso.datetime().optional(),
11293
11383
  filter: z.string().optional(),
@@ -11300,6 +11390,13 @@ export const zListPayPeriodsQuery = z.object({
11300
11390
  * Success
11301
11391
  */
11302
11392
  export const zListPayPeriodsResponse = zPayPeriodsResponseObject;
11393
+ export const zGetPayPeriodPath = z.object({
11394
+ id: z.string()
11395
+ });
11396
+ /**
11397
+ * Success
11398
+ */
11399
+ export const zGetPayPeriodResponse = zPayPeriodResponseObject;
11303
11400
  /**
11304
11401
  * Success
11305
11402
  */
@@ -11743,6 +11840,7 @@ export const zCreateEmploymentScheduledTerminationPath = z.object({
11743
11840
  export const zCreateEmploymentScheduledTerminationResponse = zPeopleEmploymentResponseObject;
11744
11841
  export const zListEmploymentsQuery = z.object({
11745
11842
  'filter[user_id]': z.string().optional(),
11843
+ 'filter[companies_department_id]': z.string().optional(),
11746
11844
  filter: z.string().optional(),
11747
11845
  'filter[unexpected]': z.string().optional(),
11748
11846
  'as_of[valid]': z.iso.datetime().optional(),
@@ -11948,6 +12046,78 @@ export const zUpdateCompletionPath = z.object({
11948
12046
  * Success
11949
12047
  */
11950
12048
  export const zUpdateCompletionResponse = zProductionCompletionResponseObject;
12049
+ export const zListProjectDocumentVersionsPath = z.object({
12050
+ project_id: z.string(),
12051
+ document_id: z.string()
12052
+ });
12053
+ export const zListProjectDocumentVersionsQuery = z.object({
12054
+ 'page[cursor]': z.string().optional(),
12055
+ 'page[limit]': z.int().gte(1).optional().default(20),
12056
+ page: z.string().optional()
12057
+ });
12058
+ /**
12059
+ * Success
12060
+ */
12061
+ export const zListProjectDocumentVersionsResponse = z.object({
12062
+ meta: zMeta,
12063
+ links: zLinks,
12064
+ data: z.array(zProjectDocumentVersionResponseObject)
12065
+ });
12066
+ export const zListProjectDocumentsPath = z.object({
12067
+ project_id: z.string()
12068
+ });
12069
+ export const zListProjectDocumentsQuery = z.object({
12070
+ 'filter[created_at][gte]': z.iso.datetime().optional(),
12071
+ 'filter[created_at][lte]': z.iso.datetime().optional(),
12072
+ 'filter[updated_at][gte]': z.iso.datetime().optional(),
12073
+ 'filter[updated_at][lte]': z.iso.datetime().optional(),
12074
+ 'page[cursor]': z.string().optional(),
12075
+ 'page[limit]': z.int().gte(1).optional().default(20),
12076
+ page: z.string().optional(),
12077
+ filter: z.string().optional(),
12078
+ 'filter[unexpected]': z.string().optional()
12079
+ });
12080
+ /**
12081
+ * Success
12082
+ */
12083
+ export const zListProjectDocumentsResponse = z.object({
12084
+ meta: zMeta,
12085
+ links: zLinks,
12086
+ data: z.array(zProjectDocumentResponseObject)
12087
+ });
12088
+ export const zCreateProjectDocumentBody = zProjectDocumentParameters;
12089
+ export const zCreateProjectDocumentPath = z.object({
12090
+ project_id: z.string()
12091
+ });
12092
+ /**
12093
+ * Created
12094
+ */
12095
+ export const zCreateProjectDocumentResponse = zProjectDocumentResponseObject;
12096
+ export const zDeleteProjectDocumentPath = z.object({
12097
+ project_id: z.string(),
12098
+ id: z.string()
12099
+ });
12100
+ /**
12101
+ * No Content
12102
+ */
12103
+ export const zDeleteProjectDocumentResponse = z.void();
12104
+ export const zGetProjectDocumentPath = z.object({
12105
+ project_id: z.string(),
12106
+ id: z.string()
12107
+ });
12108
+ /**
12109
+ * Success
12110
+ */
12111
+ export const zGetProjectDocumentResponse = zProjectDocumentResponseObject;
12112
+ export const zUpdateProjectDocumentBody = zProjectDocumentUpdateParameters;
12113
+ export const zUpdateProjectDocumentPath = z.object({
12114
+ project_id: z.string(),
12115
+ id: z.string()
12116
+ });
12117
+ /**
12118
+ * Success
12119
+ */
12120
+ export const zUpdateProjectDocumentResponse = zProjectDocumentResponseObject;
11951
12121
  export const zCreateProjectTradeBody = zPwaTradeParameters;
11952
12122
  export const zCreateProjectTradePath = z.object({
11953
12123
  project_id: z.string()
@@ -12405,7 +12575,7 @@ export const zCreateFormAssignmentTaskBody = z.object({
12405
12575
  'QUARTERLY'
12406
12576
  ]).optional(),
12407
12577
  recurrence_end_time: z.string().optional(),
12408
- task_assignee_user_ids: z.array(z.string()).optional(),
12578
+ task_assignee_user_ids: z.array(z.string().regex(/[^\x09-\x0D\x20…   - ‧-‪   ]|[‧‪]/)).optional(),
12409
12579
  reminders_attributes: z.array(z.object({
12410
12580
  offset: z.enum([
12411
12581
  'PT0S',
@@ -13249,7 +13419,7 @@ export const zCreateCompanyPath = z.object({
13249
13419
  export const zCreateCompanyResponse = zUserResponseObject;
13250
13420
  export const zRemoveUserFromCompanyPath = z.object({
13251
13421
  user_id: z.string(),
13252
- company_id: z.string()
13422
+ id: z.string()
13253
13423
  });
13254
13424
  /**
13255
13425
  * Success
@@ -13261,7 +13431,7 @@ export const zRemoveUserFromCompanyResponse = zUserResponseObject;
13261
13431
  export const zUpdateCompanyBody = zUserCompanyParameters;
13262
13432
  export const zUpdateCompanyPath = z.object({
13263
13433
  user_id: z.string(),
13264
- company_id: z.string()
13434
+ id: z.string()
13265
13435
  });
13266
13436
  /**
13267
13437
  * Success