@dsptch-work/api-client 0.31.0 → 0.32.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.
@@ -189,6 +189,12 @@ export type Problem = {
189
189
  *
190
190
  * ## 409
191
191
  *
192
+ * ### already_subscribed
193
+ *
194
+ * **Already Subscribed**
195
+ *
196
+ * The user already holds this subscription, with other delivery methods than the request names. Subscribing again never changes a held subscription: delete it, then subscribe with the delivery methods you want.
197
+ *
192
198
  * ### already_terminated
193
199
  *
194
200
  * **Termination Already Scheduled**
@@ -382,7 +388,7 @@ export type Problem = {
382
388
  * Another write to the same resource held it for longer than this request was willing to wait, so nothing was applied. The request itself is fine — resend it unchanged after the `Retry-After` window.
383
389
  *
384
390
  */
385
- export type ProblemTypeCatalog = 'blank_axis' | 'invalid_cursor' | 'invalid_filter_key' | 'invalid_limit' | 'invalid_signature' | 'malformed_body' | 'non_range_filter_value' | 'non_scalar_axis' | 'non_scalar_filter_value' | 'parameter_missing' | 'parameter_not_object' | 'unknown_axis' | 'unknown_key' | 'unsupported_axis' | 'valid_axis_on_timeline' | 'unauthorized' | 'company_scoped_key_required' | 'forbidden' | 'forbidden_key' | 'insufficient_api_key_scope' | 'user_scoped_key_required' | 'not_found' | 'already_terminated' | 'import_in_progress' | 'pay_schedule_already_exists' | 'product_archived' | 'recorded_since_termination' | 'span_beyond_timeline_end' | 'version_overlap' | 'precondition_failed' | 'attachment_not_image' | 'company_not_employer' | 'confirm_apprenticeship_conflict' | 'destroy_restricted' | 'interval_too_wide' | 'invalid_date' | 'invalid_filter_value' | 'invalid_iso8601_duration' | 'invalid_placement_move' | 'invalid_signed_id' | 'non_numeric_cents' | 'nothing_to_cancel' | 'pagination_failed' | 'subtype_foreign_keys' | 'synced_determination' | 'user_not_company_member' | 'validation_failed' | 'wage_schedule_outside_program' | 'precondition_required' | 'too_many_requests' | 'internal_error' | 'write_contended';
391
+ export type ProblemTypeCatalog = 'blank_axis' | 'invalid_cursor' | 'invalid_filter_key' | 'invalid_limit' | 'invalid_signature' | 'malformed_body' | 'non_range_filter_value' | 'non_scalar_axis' | 'non_scalar_filter_value' | 'parameter_missing' | 'parameter_not_object' | 'unknown_axis' | 'unknown_key' | 'unsupported_axis' | 'valid_axis_on_timeline' | 'unauthorized' | 'company_scoped_key_required' | 'forbidden' | 'forbidden_key' | 'insufficient_api_key_scope' | 'user_scoped_key_required' | 'not_found' | 'already_subscribed' | 'already_terminated' | 'import_in_progress' | 'pay_schedule_already_exists' | 'product_archived' | 'recorded_since_termination' | 'span_beyond_timeline_end' | 'version_overlap' | 'precondition_failed' | 'attachment_not_image' | 'company_not_employer' | 'confirm_apprenticeship_conflict' | 'destroy_restricted' | 'interval_too_wide' | 'invalid_date' | 'invalid_filter_value' | 'invalid_iso8601_duration' | 'invalid_placement_move' | 'invalid_signed_id' | 'non_numeric_cents' | 'nothing_to_cancel' | 'pagination_failed' | 'subtype_foreign_keys' | 'synced_determination' | 'user_not_company_member' | 'validation_failed' | 'wage_schedule_outside_program' | 'precondition_required' | 'too_many_requests' | 'internal_error' | 'write_contended';
386
392
  export type ApiKeyScopeResponseObject = {
387
393
  resource: string;
388
394
  action: 'read' | 'create' | 'update' | 'delete';
@@ -1059,23 +1065,23 @@ export type ApprenticeshipAllocationResponseObject = {
1059
1065
  */
1060
1066
  export type ApprenticeshipAllocationCreateParameters = {
1061
1067
  /**
1062
- * Work process category to categorize the allocation under; optional, omit for an uncategorized allocation.
1068
+ * Time card to link the allocation to, scoped to the apprentice's own cards; optional, omit or send null for a standalone allocation. A blank string answers 422. Cannot be changed after creation.
1063
1069
  */
1064
- apprenticeship_work_process_category_id?: string;
1070
+ timekeeping_time_card_id?: string | null;
1065
1071
  /**
1066
- * Time card to link the allocation to, scoped to the apprentice's own cards; optional, omit for a standalone allocation. Cannot be changed after creation.
1072
+ * Work process category to categorize the allocation under; optional, omit or send null for an uncategorized allocation. A blank string answers 422.
1067
1073
  */
1068
- timekeeping_time_card_id?: string;
1074
+ apprenticeship_work_process_category_id?: string | null;
1069
1075
  /**
1070
- * Minutes of credited hours. Required, must be positive, and (when linked to a time card) cannot push the card's categorized total past its overtime-eligible minutes.
1076
+ * Minutes of credited hours, as an integer. Required, so omission answers 400; must be positive, and (when linked to a time card) cannot push the card's categorized total past its overtime-eligible minutes.
1071
1077
  */
1072
1078
  minutes: number;
1073
1079
  /**
1074
- * Free-text note on the allocation; optional.
1080
+ * Free-text note on the allocation; optional, null for none.
1075
1081
  */
1076
- description?: string;
1082
+ description?: string | null;
1077
1083
  /**
1078
- * Effective timestamp for the credited hours, as ISO 8601 with an explicit UTC offset or Z. Optional for a standalone allocation, defaulting to now; must equal the linked time card's pay-period start when one is supplied. The employer-local date must be today or earlier.
1084
+ * Effective timestamp for the credited hours, as ISO 8601 with an explicit UTC offset or Z. Optional for a standalone allocation, defaulting to now, and null is rejected; must equal the linked time card's pay-period start when one is supplied. The employer-local date must be today or earlier.
1079
1085
  */
1080
1086
  allocated_at?: string;
1081
1087
  };
@@ -1084,7 +1090,7 @@ export type ApprenticeshipAllocationCreateParameters = {
1084
1090
  */
1085
1091
  export type ApprenticeshipAllocationUpdateParameters = {
1086
1092
  /**
1087
- * Work process category to recategorize the allocation under; optional, null to make it uncategorized.
1093
+ * Work process category to recategorize the allocation under; optional, null to make it uncategorized. A blank string answers 422.
1088
1094
  */
1089
1095
  apprenticeship_work_process_category_id?: string | null;
1090
1096
  /**
@@ -1101,7 +1107,7 @@ export type ApprenticeshipAllocationUpdateParameters = {
1101
1107
  allocated_at?: string;
1102
1108
  };
1103
1109
  /**
1104
- * Enroll a user as an apprentice under an employer in a program; the employing program-employer record is derived from the enrolling company and the program in the URL path. Apprentices cannot be updated through the API, only created.
1110
+ * Enroll a user as an apprentice under an employer in a program; the employing program-employer record is derived from the enrolling company and the program in the URL path. Apprentices cannot be updated through the API, only created. Omitting a required field answers 400; a null for a non-nullable field, a blank ID, a wrong JSON type, an unlisted status, or a date that is not a YYYY-MM-DD calendar date answers 422.
1105
1111
  */
1106
1112
  export type ApprenticeshipApprenticeParameters = {
1107
1113
  /**
@@ -1138,7 +1144,7 @@ export type ApprenticeshipApprenticeParameters = {
1138
1144
  operative_end_date?: string | null;
1139
1145
  };
1140
1146
  /**
1141
- * Create an apprenticeship program sponsored by your company; the sponsor is always your company and is never taken from the request body.
1147
+ * Create an apprenticeship program sponsored by your company; the sponsor is always your company and is never taken from the request body. Omitting program_number answers 400; a null for a non-nullable field, a wrong JSON type, or an unlisted registration_agency_type answers 422.
1142
1148
  */
1143
1149
  export type ApprenticeshipProgramParameters = {
1144
1150
  /**
@@ -1163,7 +1169,7 @@ export type ApprenticeshipProgramParameters = {
1163
1169
  registration_agency_type?: 'federal' | 'regional' | null;
1164
1170
  };
1165
1171
  /**
1166
- * Update an apprenticeship program sponsored by your company. Send only the fields to change; the sponsor is fixed to your company.
1172
+ * Update an apprenticeship program sponsored by your company. Send only the fields to change; the sponsor is fixed to your company. A null for a non-nullable field, a wrong JSON type, or an unlisted registration_agency_type answers 422.
1167
1173
  */
1168
1174
  export type ApprenticeshipProgramUpdateParameters = {
1169
1175
  /**
@@ -1188,7 +1194,7 @@ export type ApprenticeshipProgramUpdateParameters = {
1188
1194
  registration_agency_type?: 'federal' | 'regional' | null;
1189
1195
  };
1190
1196
  /**
1191
- * Create an occupation (trade) within a sponsored program; the program is taken from the URL path.
1197
+ * Create an occupation (trade) within a sponsored program; the program is taken from the URL path. Omitting a required field answers 400; a null for a non-nullable field, a wrong JSON type, or an unlisted occupation_type answers 422.
1192
1198
  */
1193
1199
  export type ApprenticeshipOccupationParameters = {
1194
1200
  /**
@@ -1229,7 +1235,7 @@ export type ApprenticeshipOccupationParameters = {
1229
1235
  num_journeyworkers: number;
1230
1236
  };
1231
1237
  /**
1232
- * Update an occupation (trade) within a sponsored program. Send only the fields to change; the program is taken from the URL path.
1238
+ * Update an occupation (trade) within a sponsored program. Send only the fields to change; the program is taken from the URL path. A null for a non-nullable field, a wrong JSON type, or an unlisted occupation_type answers 422.
1233
1239
  */
1234
1240
  export type ApprenticeshipOccupationUpdateParameters = {
1235
1241
  /**
@@ -1848,6 +1854,10 @@ export type PeopleEmploymentCreateParameters = {
1848
1854
  * Request body for creating one employment boundary. effective_date is required and is interpreted at midnight in the credential company's time zone. Today and past dates must fall inside the family's latest version, before its termination; future dates retain scheduling behavior. Send at least one value to change; omitted values carry forward from the version immediately before the new boundary.
1849
1855
  */
1850
1856
  export type PeopleEmploymentScheduledChangeCreateParameters = {
1857
+ /**
1858
+ * Company-local date when the new boundary takes effect. Today and past dates must fall inside the latest version, before termination. Required.
1859
+ */
1860
+ effective_date: string;
1851
1861
  /**
1852
1862
  * How the employment is paid: hourly or salary. Omit to carry forward the preceding version.
1853
1863
  */
@@ -1896,10 +1906,6 @@ export type PeopleEmploymentScheduledChangeCreateParameters = {
1896
1906
  * Department ID in the credential company. Omit to carry forward the preceding version, or send null to clear it. A submitted value applies to this and all later versions.
1897
1907
  */
1898
1908
  companies_department_id?: string | null;
1899
- /**
1900
- * Company-local date when the new boundary takes effect. Today and past dates must fall inside the latest version, before termination. Required.
1901
- */
1902
- effective_date: string;
1903
1909
  };
1904
1910
  /**
1905
1911
  * Request body for changing values at one exact employment boundary. Today and past dates must name the latest version's start; future exact boundaries remain editable. Send only the fields to change; omitted values remain as recorded at that boundary. The boundary date cannot move.
@@ -1961,7 +1967,7 @@ export type PeopleEmploymentGenesisParameters = {
1961
1967
  /**
1962
1968
  * The timeline's new start, as a calendar date (`YYYY-MM-DD`). Required. Moving it earlier extends the first version back to it. Moving it later drops every version whose coverage ended at or before it and truncates the one spanning it, so what those versions said stops being readable. Refused with `422` when the employment has no finite start or the new start would fall at or after a scheduled termination.
1963
1969
  */
1964
- effective_date?: string;
1970
+ effective_date: string;
1965
1971
  };
1966
1972
  /**
1967
1973
  * Parameters for scheduling when an employment stint stops being valid.
@@ -2632,84 +2638,84 @@ export type PerDiemResponseObject = {
2632
2638
  updated_at: string;
2633
2639
  };
2634
2640
  /**
2635
- * Request body for creating a per diem. name, currency, and rate_cents are required.
2641
+ * Request body for creating a per diem. Send fields in JSON; the per diem belongs to the company that owns the API key. name, currency, and rate_cents are required.
2636
2642
  */
2637
2643
  export type PerDiemParameters = {
2638
2644
  /**
2639
- * Human-readable name, e.g. "Travel Meals". Required.
2645
+ * Human-readable name, e.g. "Travel Meals". Omission answers 400; supplied null or a wrong type answers 422. Blank names fail model validation with 422.
2640
2646
  */
2641
2647
  name: string;
2642
2648
  /**
2643
- * Optional free-text notes about the per diem.
2649
+ * Optional free-text notes about the per diem; null leaves them unset. Nonstring values other than null answer 422.
2644
2650
  */
2645
2651
  description?: string | null;
2646
2652
  /**
2647
- * Allowance amount in cents, as a string (e.g. "7500" is $75.00). Required.
2653
+ * Allowance amount in cents, as a string (e.g. "7500" is $75.00). Omission answers 400; null or a JSON number answers 422.
2648
2654
  */
2649
2655
  rate_cents: string;
2650
2656
  /**
2651
- * ISO 4217 currency code, e.g. "USD". Required.
2657
+ * ISO 4217 currency code, e.g. "USD". Omission answers 400; supplied null or a wrong type answers 422.
2652
2658
  */
2653
2659
  currency: string;
2654
2660
  /**
2655
- * Whether the allowance is treated as taxable income.
2661
+ * Whether the allowance is treated as taxable income. Null or a non-boolean answers 422.
2656
2662
  */
2657
2663
  taxable?: boolean;
2658
2664
  /**
2659
- * Whether this should become the company default per diem.
2665
+ * Whether this should become the company default per diem. Non-boolean values other than null answer 422.
2660
2666
  */
2661
2667
  default?: boolean | null;
2662
2668
  /**
2663
- * Whether the per diem is active and available to use.
2669
+ * Whether the per diem is active and available to use. Non-boolean values other than null answer 422.
2664
2670
  */
2665
2671
  active?: boolean | null;
2666
2672
  /**
2667
- * IDs of the work types this per diem applies to. Each must be shared or the company's own.
2673
+ * Unique nonblank IDs of the work types this per diem applies to; each must be shared or the company's own. Providing this replaces the entire set; an empty array clears it. Omit to attach none or leave the set unchanged on update. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422. An unavailable work type answers 404.
2668
2674
  */
2669
2675
  work_type_ids?: Array<string>;
2670
2676
  /**
2671
- * IDs of the timecodes this per diem applies to. Each must belong to the company.
2677
+ * Unique nonblank IDs of the timecodes this per diem applies to; each must belong to the company. Providing this replaces the entire set; an empty array clears it. Omit to attach none or leave the set unchanged on update. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422. An unavailable timecode answers 404.
2672
2678
  */
2673
2679
  timekeeping_timecode_ids?: Array<string>;
2674
2680
  };
2675
2681
  /**
2676
- * Request body for updating a per diem. Send only the fields to change.
2682
+ * Request body for updating a per diem. Send only fields to change in JSON; omitted fields remain unchanged.
2677
2683
  */
2678
2684
  export type PerDiemUpdateParameters = {
2679
2685
  /**
2680
- * Human-readable name, e.g. "Travel Meals". Omit to leave it unchanged.
2686
+ * Human-readable name, e.g. "Travel Meals"; omit to leave it unchanged. Supplied null, a wrong type, or a blank name answers 422.
2681
2687
  */
2682
2688
  name?: string;
2683
2689
  /**
2684
- * Optional free-text notes; omit to leave them unchanged, or send null to clear them.
2690
+ * Optional free-text notes; omit to leave them unchanged, or send null to clear them. Nonstring values other than null answer 422.
2685
2691
  */
2686
2692
  description?: string | null;
2687
2693
  /**
2688
- * Allowance amount in cents, as a string (e.g. "7500" is $75.00). Omit to leave it unchanged.
2694
+ * Allowance amount in cents, as a string (e.g. "7500" is $75.00); omit to leave it unchanged. Null or a JSON number answers 422.
2689
2695
  */
2690
2696
  rate_cents?: string;
2691
2697
  /**
2692
- * ISO 4217 currency code, e.g. "USD". Omit to leave it unchanged.
2698
+ * ISO 4217 currency code, e.g. "USD"; omit to leave it unchanged. Supplied null or a wrong type answers 422.
2693
2699
  */
2694
2700
  currency?: string;
2695
2701
  /**
2696
- * Whether the allowance is treated as taxable income. Omit to leave it unchanged.
2702
+ * Whether the allowance is treated as taxable income; omit to leave it unchanged. Null or a non-boolean answers 422.
2697
2703
  */
2698
2704
  taxable?: boolean;
2699
2705
  /**
2700
- * Whether this should become the company default per diem. Omit to leave it unchanged.
2706
+ * Whether this should become the company default per diem; omit to leave it unchanged. Non-boolean values other than null answer 422.
2701
2707
  */
2702
2708
  default?: boolean | null;
2703
2709
  /**
2704
- * Whether the per diem is active and available to use. Omit to leave it unchanged.
2710
+ * Whether the per diem is active and available to use; omit to leave it unchanged. Non-boolean values other than null answer 422.
2705
2711
  */
2706
2712
  active?: boolean | null;
2707
2713
  /**
2708
- * Complete set of work type IDs this per diem applies to. Each must be shared or the company's own. Omit to leave it unchanged.
2714
+ * Unique nonblank IDs of the work types this per diem applies to; each must be shared or the company's own. Providing this replaces the entire set; an empty array clears it. Omit to attach none or leave the set unchanged on update. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422. An unavailable work type answers 404.
2709
2715
  */
2710
2716
  work_type_ids?: Array<string>;
2711
2717
  /**
2712
- * Complete set of timecode IDs this per diem applies to. Each must belong to the company. Omit to leave it unchanged.
2718
+ * Unique nonblank IDs of the timecodes this per diem applies to; each must belong to the company. Providing this replaces the entire set; an empty array clears it. Omit to attach none or leave the set unchanged on update. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422. An unavailable timecode answers 404.
2713
2719
  */
2714
2720
  timekeeping_timecode_ids?: Array<string>;
2715
2721
  };
@@ -3099,9 +3105,9 @@ export type TimeCardPerDiemParameters = {
3099
3105
  */
3100
3106
  approver_user_id: string;
3101
3107
  /**
3102
- * Optional ID of the catalog per diem to record; its rate, currency, and taxable flag are copied onto the entry.
3108
+ * Optional ID of the catalog per diem to record; its rate, currency, and taxable flag are copied onto the entry. Omit it or send null to record no catalog per diem, at a zero rate.
3103
3109
  */
3104
- per_diem_id?: string;
3110
+ per_diem_id?: string | null;
3105
3111
  };
3106
3112
  /**
3107
3113
  * Request body for updating a per diem recorded on a time card. Send only the fields to change; the time card comes from the URL path.
@@ -3116,9 +3122,9 @@ export type TimeCardPerDiemUpdateParameters = {
3116
3122
  */
3117
3123
  approver_user_id?: string;
3118
3124
  /**
3119
- * ID of the catalog per diem to record; its rate, currency, and taxable flag are copied onto the entry. Omit to leave it unchanged.
3125
+ * ID of the catalog per diem to record; its rate, currency, and taxable flag are copied onto the entry. Send null to remove it, which records a zero rate. Omit to leave it unchanged.
3120
3126
  */
3121
- per_diem_id?: string;
3127
+ per_diem_id?: string | null;
3122
3128
  };
3123
3129
  /**
3124
3130
  * A holiday on a pay schedule's holiday calendar — a fixed (month + day) or floating (nth weekday of a month) date that gets holiday-pay treatment when a time entry's timecode opts into holiday handling.
@@ -3430,7 +3436,7 @@ export type PayPeriodConfigHistoryVersionObject = {
3430
3436
  corrections: Array<PayPeriodConfigHistoryCorrectionObject>;
3431
3437
  };
3432
3438
  /**
3433
- * Create a holiday on a pay schedule. name, holiday_type, and month are required; mday is required for fixed holidays and wday + week for floating holidays.
3439
+ * Create a holiday on a pay schedule. name is required. Send date alone for a fixed holiday on that date, or holiday_type and month with mday (fixed) or wday + week (floating).
3434
3440
  */
3435
3441
  export type HolidayParameters = {
3436
3442
  /**
@@ -3438,17 +3444,17 @@ export type HolidayParameters = {
3438
3444
  */
3439
3445
  name: string;
3440
3446
  /**
3441
- * Calendar date (YYYY-MM-DD) the holiday falls on; optional — when omitted it is computed from month/mday/year (fixed) or month/week/wday/year (floating), and it cannot be in the past.
3447
+ * Calendar date (YYYY-MM-DD) the holiday falls on; it cannot be in the past. Sent without holiday_type, it makes a fixed holiday and sets month, mday, and year. When omitted it is computed from month/mday/year (fixed) or month/week/wday/year (floating).
3442
3448
  */
3443
3449
  date?: string;
3444
3450
  /**
3445
- * `fixed` holidays fall on a set `month` + day-of-month (`mday`); `floating` holidays are the `week`-th `wday` of the `month`.
3451
+ * `fixed` holidays fall on a set `month` + day-of-month (`mday`); `floating` holidays are the `week`-th `wday` of the `month`. Required unless `date` is sent.
3446
3452
  */
3447
- holiday_type: 'fixed' | 'floating';
3453
+ holiday_type?: 'fixed' | 'floating';
3448
3454
  /**
3449
- * Month 1-12; required for both holiday types.
3455
+ * Month 1-12; required unless `date` is sent.
3450
3456
  */
3451
- month: number;
3457
+ month?: number;
3452
3458
  /**
3453
3459
  * Day of month; required for `fixed` holidays.
3454
3460
  */
@@ -3912,22 +3918,22 @@ export type PwaTradeApprenticeshipOccupationResponseObject = {
3912
3918
  */
3913
3919
  export type PwaTradeApprenticeshipOccupationCreateParameters = {
3914
3920
  /**
3915
- * ID of the registered apprenticeship occupation to decide on. Create-only — a decision is replaced rather than re-pointed to a different occupation.
3921
+ * ID of the registered apprenticeship occupation to decide on, in a program your company employs into. An occupation outside the programs your company sponsors or employs into answers 404; one in a program it only sponsors answers 403. Create-only — a decision is replaced rather than re-pointed to a different occupation.
3916
3922
  */
3917
3923
  apprenticeship_occupation_id: string;
3918
3924
  /**
3919
- * The verdict to record; defaults to in_scope when omitted or null.
3925
+ * The verdict to record; defaults to in_scope when omitted. Null or a value outside the list answers 422.
3920
3926
  */
3921
- scope_status?: 'in_scope' | 'out_of_scope' | null;
3927
+ scope_status?: 'in_scope' | 'out_of_scope';
3922
3928
  };
3923
3929
  /**
3924
3930
  * Parameters for flipping an existing apprentice-scope decision's verdict.
3925
3931
  */
3926
3932
  export type PwaTradeApprenticeshipOccupationUpdateParameters = {
3927
3933
  /**
3928
- * The verdict to record. Null states nothing, so it leaves the decision's current verdict standing.
3934
+ * The verdict to record; omit it to leave the current verdict standing. Null or a value outside the list answers 422.
3929
3935
  */
3930
- scope_status?: 'in_scope' | 'out_of_scope' | null;
3936
+ scope_status?: 'in_scope' | 'out_of_scope';
3931
3937
  };
3932
3938
  /**
3933
3939
  * A job — the primary unit of work in DSPTCH. Workers fill its positions and track time against it; it optionally tracks Prevailing Wage / Apprenticeship (PWA) compliance and optionally belongs to a project. There is no delete endpoint — cancel or complete a job through its status instead.
@@ -4844,7 +4850,7 @@ export type UserUpdateParameters = {
4844
4850
  */
4845
4851
  dol_apprentice_no?: string | null;
4846
4852
  /**
4847
- * Signed ID of a direct-upload blob to attach as the profile picture. Obtain it by first uploading the image to POST /api/v1/direct_uploads.
4853
+ * Signed ID of a direct-upload blob to attach as the profile picture. Obtain it by first uploading the image to POST /api/v1/direct_uploads. Omit it to keep the current picture, or send null to remove it; a blank string answers 422.
4848
4854
  */
4849
4855
  avatar_signed_id?: string | null;
4850
4856
  };
@@ -4921,9 +4927,9 @@ export type UserParameters = ({
4921
4927
  */
4922
4928
  roles?: Array<string> | null;
4923
4929
  /**
4924
- * Signed ID of a direct-upload blob to attach as the profile picture. Obtain it by first uploading the image to POST /api/v1/direct_uploads.
4930
+ * Signed ID of a direct-upload blob to attach as the profile picture. Obtain it by first uploading the image to POST /api/v1/direct_uploads. Null creates the worker without one; a blank string answers 422.
4925
4931
  */
4926
- avatar_signed_id?: string;
4932
+ avatar_signed_id?: string | null;
4927
4933
  /**
4928
4934
  * Id of the internal user recorded as the creator of the worker's invite, and named to the recipient as the person inviting them; must be a member of your company. Ignored when skip_invite is set.
4929
4935
  */
@@ -5800,63 +5806,69 @@ export type CompanyResponseObject = {
5800
5806
  created_at: string;
5801
5807
  updated_at: string;
5802
5808
  };
5803
- export type CompanyParameters = ({
5804
- name: string;
5805
- } | {
5806
- legal_name: string | null;
5807
- } | {
5808
- description: string | null;
5809
- } | {
5810
- address: string | null;
5811
- } | {
5812
- website: string | null;
5813
- } | {
5814
- phone_number: string | null;
5815
- } | {
5816
- email: string | null;
5817
- } | {
5809
+ /**
5810
+ * Request body for updating your own company's public profile. Send only fields to change in JSON; omitted fields remain unchanged. A value of the wrong JSON type, or null for a field that does not take it, answers 422. Other company settings are edited in the web app.
5811
+ */
5812
+ export type CompanyParameters = {
5818
5813
  /**
5819
- * Brand color as a hex string (e.g. "#312e81").
5814
+ * Company display name, unique across companies. Null, a wrong type, or a blank name answers 422.
5820
5815
  */
5821
- color_hex: string;
5822
- } | {
5823
- tagline: string | null;
5824
- } | {
5825
- founding_year: number | null;
5826
- } | {
5827
- corporate_structure: 'corporation' | 'llc' | 'partnership' | 'sole_proprietorship' | 's_corporation' | null;
5828
- } | {
5829
- employee_count_range: 'one_to_ten' | 'eleven_to_fifty' | 'fifty_one_to_two_hundred' | 'two_hundred_one_to_five_hundred' | 'five_hundred_one_to_one_thousand' | 'one_thousand_one_to_five_thousand' | 'five_thousand_one_to_ten_thousand' | 'ten_thousand_one_plus' | null;
5830
- } | {
5831
- revenue_range: 'zero_to_one_million' | 'one_to_ten_million' | 'ten_to_twenty_five_million' | 'twenty_five_to_fifty_million' | 'fifty_to_one_hundred_million' | 'one_hundred_to_two_fifty_million' | 'two_fifty_to_five_hundred_million' | 'five_hundred_to_one_billion' | 'one_billion_to_ten_billion' | 'ten_billion_plus' | null;
5832
- } | {
5816
+ name?: string;
5833
5817
  /**
5834
- * North American Industry Classification System code.
5818
+ * Registered legal name; send null to clear it.
5835
5819
  */
5836
- naics_code: string | null;
5837
- } | {
5838
- linkedin_url: string | null;
5839
- }) & {
5840
- name?: string;
5841
5820
  legal_name?: string | null;
5821
+ /**
5822
+ * Free-text company description; send null to clear it.
5823
+ */
5842
5824
  description?: string | null;
5825
+ /**
5826
+ * Company mailing address; send null to clear it.
5827
+ */
5843
5828
  address?: string | null;
5829
+ /**
5830
+ * Company website URL; send null to clear it.
5831
+ */
5844
5832
  website?: string | null;
5833
+ /**
5834
+ * Company contact phone number; send null to clear it.
5835
+ */
5845
5836
  phone_number?: string | null;
5837
+ /**
5838
+ * Company contact email address; send null to clear it.
5839
+ */
5846
5840
  email?: string | null;
5847
5841
  /**
5848
- * Brand color as a hex string (e.g. "#312e81").
5842
+ * Brand color as a hex string (e.g. "#312e81"). Null answers 422.
5849
5843
  */
5850
5844
  color_hex?: string;
5845
+ /**
5846
+ * Short company tagline; send null to clear it.
5847
+ */
5851
5848
  tagline?: string | null;
5849
+ /**
5850
+ * Year the company was founded, as a JSON integer; send null to clear it.
5851
+ */
5852
5852
  founding_year?: number | null;
5853
+ /**
5854
+ * Legal organizational structure; send null to clear it.
5855
+ */
5853
5856
  corporate_structure?: 'corporation' | 'llc' | 'partnership' | 'sole_proprietorship' | 's_corporation' | null;
5857
+ /**
5858
+ * Company employee-count range; send null to clear it.
5859
+ */
5854
5860
  employee_count_range?: 'one_to_ten' | 'eleven_to_fifty' | 'fifty_one_to_two_hundred' | 'two_hundred_one_to_five_hundred' | 'five_hundred_one_to_one_thousand' | 'one_thousand_one_to_five_thousand' | 'five_thousand_one_to_ten_thousand' | 'ten_thousand_one_plus' | null;
5861
+ /**
5862
+ * Company revenue range; send null to clear it.
5863
+ */
5855
5864
  revenue_range?: 'zero_to_one_million' | 'one_to_ten_million' | 'ten_to_twenty_five_million' | 'twenty_five_to_fifty_million' | 'fifty_to_one_hundred_million' | 'one_hundred_to_two_fifty_million' | 'two_fifty_to_five_hundred_million' | 'five_hundred_to_one_billion' | 'one_billion_to_ten_billion' | 'ten_billion_plus' | null;
5856
5865
  /**
5857
- * North American Industry Classification System code.
5866
+ * North American Industry Classification System code; send null to clear it.
5858
5867
  */
5859
5868
  naics_code?: string | null;
5869
+ /**
5870
+ * Company LinkedIn profile URL; send null to clear it.
5871
+ */
5860
5872
  linkedin_url?: string | null;
5861
5873
  };
5862
5874
  /**
@@ -5910,23 +5922,23 @@ export type CustomFieldConfigsResponseObject = {
5910
5922
  updated_at: string;
5911
5923
  };
5912
5924
  /**
5913
- * Request body for creating a custom field definition. `name` and `model_type` are required.
5925
+ * Request body for creating a custom field definition; it belongs to the company that owns the API key. `name` and `model_type` are required, and omitting either answers 400.
5914
5926
  */
5915
5927
  export type CustomFieldConfigParameters = {
5916
5928
  /**
5917
- * Name of the custom field; required and unique per company and model type.
5929
+ * Name of the custom field, unique per company and model type. Null or a wrong type answers 422, and a blank name fails model validation with 422.
5918
5930
  */
5919
5931
  name: string;
5920
5932
  /**
5921
- * Optional description of the custom field.
5933
+ * Optional description of the custom field; null leaves it unset. A nonstring value other than null answers 422.
5922
5934
  */
5923
5935
  description?: string | null;
5924
5936
  /**
5925
- * The kind of record the field attaches to: one of apprenticeship_apprentice, company, job, or user_company. Required.
5937
+ * The kind of record the field attaches to: one of apprenticeship_apprentice, company, job, or user_company. Any other value, or null, answers 422.
5926
5938
  */
5927
5939
  model_type: 'apprenticeship_apprentice' | 'company' | 'job' | 'user_company';
5928
5940
  /**
5929
- * Whether the field is shown.
5941
+ * Whether the field is shown, as a JSON boolean; defaults to false when omitted. Null or a nonboolean value answers 422.
5930
5942
  */
5931
5943
  visible?: boolean;
5932
5944
  };
@@ -5935,19 +5947,19 @@ export type CustomFieldConfigParameters = {
5935
5947
  */
5936
5948
  export type CustomFieldConfigUpdateParameters = {
5937
5949
  /**
5938
- * Name of the custom field; omit to preserve the current value. The resulting name must remain present and unique per company and model type.
5950
+ * Name of the custom field; omit to preserve the current value. Null, a wrong type, or a blank name answers 422, as does a name already used for the same model type.
5939
5951
  */
5940
5952
  name?: string;
5941
5953
  /**
5942
- * Optional description of the custom field.
5954
+ * Optional description of the custom field; omit to preserve it, or send null to clear it. A nonstring value other than null answers 422.
5943
5955
  */
5944
5956
  description?: string | null;
5945
5957
  /**
5946
- * The kind of record the field attaches to: one of apprenticeship_apprentice, company, job, or user_company. Omit to preserve the current value.
5958
+ * The kind of record the field attaches to: one of apprenticeship_apprentice, company, job, or user_company. Omit to preserve the current value; any other value, or null, answers 422.
5947
5959
  */
5948
5960
  model_type?: 'apprenticeship_apprentice' | 'company' | 'job' | 'user_company';
5949
5961
  /**
5950
- * Whether the field is shown.
5962
+ * Whether the field is shown, as a JSON boolean; omit to preserve the current value. Null or a nonboolean value answers 422.
5951
5963
  */
5952
5964
  visible?: boolean;
5953
5965
  };
@@ -6916,9 +6928,9 @@ export type ManagerTimeCardApprovalParameters = {
6916
6928
  */
6917
6929
  export type WorkerTimeCardApprovalParameters = {
6918
6930
  /**
6919
- * Approval decision: pending or approved. A worker cannot decline their own card.
6931
+ * Approval decision: pending or approved. The enum lists every status a response can carry, but a worker cannot decline their own card: declined answers 422.
6920
6932
  */
6921
- status: 'pending' | 'approved';
6933
+ status: 'pending' | 'approved' | 'declined';
6922
6934
  };
6923
6935
  /**
6924
6936
  * A page of time cards, with pagination metadata and navigation links.
@@ -7810,11 +7822,11 @@ export type ProjectSiteResponseObject = {
7810
7822
  */
7811
7823
  export type ProjectSiteParameters = {
7812
7824
  /**
7813
- * ID of a site visible to the API key. The site must be public or private to the project's owning company. Duplicate (project, site) pairs are rejected.
7825
+ * ID of a site visible to the API key. The site must be public or private to the project's owning company. Duplicate (project, site) pairs are rejected. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422.
7814
7826
  */
7815
7827
  site_id: string;
7816
7828
  /**
7817
- * Optional complete set of feature IDs on that site to scope to this project. Omit to attach the site with no features. Each feature must belong to the site.
7829
+ * Optional complete set of unique nonblank feature IDs on that site to scope to this project. Omit to attach the site with no features. Each feature must belong to the site. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422.
7818
7830
  */
7819
7831
  feature_ids?: Array<string>;
7820
7832
  };
@@ -7823,7 +7835,7 @@ export type ProjectSiteParameters = {
7823
7835
  */
7824
7836
  export type ProjectSiteUpdateParameters = {
7825
7837
  /**
7826
- * Complete desired set of feature IDs on the linked site. Send an empty array to clear the set. Omit to leave the current set unchanged. Each feature must belong to the site.
7838
+ * Complete desired set of unique nonblank feature IDs on the linked site. Send an empty array to clear the set. Omit to leave the current set unchanged. Each feature must belong to the site. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422.
7827
7839
  */
7828
7840
  feature_ids?: Array<string>;
7829
7841
  };
@@ -8280,7 +8292,7 @@ export type ComplianceCheckParameters = {
8280
8292
  */
8281
8293
  assignee_user_ids?: Array<string>;
8282
8294
  /**
8283
- * Adds a document to the check. Upload the file to /api/v1/direct_uploads naming the `compliance.checks` resource, then send the signed id it returns. Requires a user-scoped API key, because the document records who uploaded it; a company-scoped key is refused. The check re-evaluates unless this same request also sets `status`. Refused when the check's requirement does not ask for a document.
8295
+ * Adds a document to the check. Upload the file to /api/v1/direct_uploads naming the `compliance.checks` resource, then send the signed id it returns. Requires a user-scoped API key, because the document records who uploaded it; a company-scoped key is refused. The check re-evaluates unless this same request also sets `status`. Refused when the check's requirement does not ask for a document. A document always holds a file, so null and a blank string answer 422.
8284
8296
  */
8285
8297
  file_signed_id?: string;
8286
8298
  };
@@ -9062,11 +9074,11 @@ export type JobSitesResponseObject = {
9062
9074
  */
9063
9075
  export type JobSiteParameters = {
9064
9076
  /**
9065
- * Id of the Site to attach. Must be visible to the key and belong to the job's provider company (or be public). Duplicate (job, site) pairs are rejected.
9077
+ * Id of the Site to attach. Must be visible to the key and belong to the job's provider company (or be public). Duplicate (job, site) pairs are rejected. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422.
9066
9078
  */
9067
9079
  site_id: string;
9068
9080
  /**
9069
- * Ids of features to select on this join. Each feature must belong to the named site. Omit to attach the site with no features.
9081
+ * Unique nonblank ids of features to select on this join. Each feature must belong to the named site. Omit to attach the site with no features. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422.
9070
9082
  */
9071
9083
  feature_ids?: Array<string>;
9072
9084
  };
@@ -9075,7 +9087,7 @@ export type JobSiteParameters = {
9075
9087
  */
9076
9088
  export type JobSiteUpdateParameters = {
9077
9089
  /**
9078
- * Replacement set of feature ids on this join. An empty array clears every feature. Omit the field to leave the current set unchanged.
9090
+ * Replacement set of unique nonblank feature ids on this join. An empty array clears every feature. Omit the field to leave the current set unchanged. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422.
9079
9091
  */
9080
9092
  feature_ids?: Array<string>;
9081
9093
  };
@@ -10663,21 +10675,21 @@ export type PositionFunction = {
10663
10675
  description: string;
10664
10676
  } | null;
10665
10677
  /**
10666
- * Request body for granting a user a role in a company.
10678
+ * Request body for granting a user a role in a company. All three fields are required; omitting one answers 400.
10667
10679
  */
10668
10680
  export type UserRoleRequest = {
10669
10681
  /**
10670
- * ID of the user to grant the role to. Must be someone your company can already see — a worker it employs, a holder of one of its roles, or someone it has invited.
10682
+ * ID of the company the role is scoped to; it must be the company that owns the API key, and any other answers 403.
10671
10683
  */
10672
- user_id?: string;
10684
+ company_id: string;
10673
10685
  /**
10674
- * ID of the company the role is scoped to.
10686
+ * ID of the user to grant the role to. Must be someone your company can already see — a worker it employs, a holder of one of its roles, or someone it has invited; anyone else answers 404.
10675
10687
  */
10676
- company_id?: string;
10688
+ user_id: string;
10677
10689
  /**
10678
- * The role to grant: one of TECHNICIAN, FIELD_LEAD, MANAGER, SAFETY_MANAGER, or ADMIN.
10690
+ * The role to grant: one of TECHNICIAN, FIELD_LEAD, MANAGER, SAFETY_MANAGER, or ADMIN. Any other value answers 422.
10679
10691
  */
10680
- role?: 'TECHNICIAN' | 'FIELD_LEAD' | 'MANAGER' | 'SAFETY_MANAGER' | 'ADMIN';
10692
+ role: 'TECHNICIAN' | 'FIELD_LEAD' | 'MANAGER' | 'SAFETY_MANAGER' | 'ADMIN';
10681
10693
  };
10682
10694
  /**
10683
10695
  * A role granted to a user within a company's scope — the permissions the user has there. A user can hold several distinct roles per company.
@@ -11749,6 +11761,102 @@ export type RegionalProjectWageDeterminationResponseObject = {
11749
11761
  */
11750
11762
  updated_at: string;
11751
11763
  };
11764
+ export type ProjectWageDeterminationHistoryVersionObject = ({
11765
+ type: 'Pwa::ProjectWageDeterminations::Federal';
11766
+ } & FederalProjectWageDeterminationHistoryVersionObject) | ({
11767
+ type: 'Pwa::ProjectWageDeterminations::Regional';
11768
+ } & RegionalProjectWageDeterminationHistoryVersionObject);
11769
+ export type FederalProjectWageDeterminationHistoryVersionObject = {
11770
+ /**
11771
+ * Family key shared by every entry on this timeline — the same identity the member route addresses. An entry carries no identifier of its own; versions are distinguished by their window coordinates.
11772
+ */
11773
+ project_wage_determination_id: string;
11774
+ project_id: string;
11775
+ pwa_trade_id: string;
11776
+ overtime_package_id: string | null;
11777
+ pay_rates_rule_package_id: string | null;
11778
+ type: 'Pwa::ProjectWageDeterminations::Federal';
11779
+ labor_classification: string;
11780
+ hourly_rate_cents: string;
11781
+ fringe_rate_cents: string;
11782
+ class_code: string | null;
11783
+ construction_category: 'building' | 'heavy' | 'highway' | 'residential' | null;
11784
+ general_wage_determination: string | null;
11785
+ valid_from: string | null;
11786
+ valid_to: string | null;
11787
+ created_at: string;
11788
+ updated_at: string;
11789
+ version_status: 'scheduled' | 'current' | 'historical';
11790
+ corrections: Array<ProjectWageDeterminationHistoryCorrectionObject>;
11791
+ };
11792
+ export type RegionalProjectWageDeterminationHistoryVersionObject = {
11793
+ /**
11794
+ * Family key shared by every entry on this timeline — the same identity the member route addresses. An entry carries no identifier of its own; versions are distinguished by their window coordinates.
11795
+ */
11796
+ project_wage_determination_id: string;
11797
+ project_id: string;
11798
+ pwa_trade_id: string;
11799
+ overtime_package_id: string | null;
11800
+ pay_rates_rule_package_id: string | null;
11801
+ type: 'Pwa::ProjectWageDeterminations::Regional';
11802
+ labor_classification: string;
11803
+ hourly_rate_cents: string;
11804
+ fringe_rate_cents: string;
11805
+ general_wage_determination: string | null;
11806
+ regional_fields: RegionalWageDeterminationFieldsResponse;
11807
+ valid_from: string | null;
11808
+ valid_to: string | null;
11809
+ created_at: string;
11810
+ updated_at: string;
11811
+ version_status: 'scheduled' | 'current' | 'historical';
11812
+ corrections: Array<ProjectWageDeterminationHistoryCorrectionObject>;
11813
+ };
11814
+ export type ProjectWageDeterminationHistoryCorrectionObject = ({
11815
+ type: 'Pwa::ProjectWageDeterminations::Federal';
11816
+ } & FederalProjectWageDeterminationHistoryCorrectionObject) | ({
11817
+ type: 'Pwa::ProjectWageDeterminations::Regional';
11818
+ } & RegionalProjectWageDeterminationHistoryCorrectionObject);
11819
+ export type FederalProjectWageDeterminationHistoryCorrectionObject = {
11820
+ /**
11821
+ * Family key shared by every entry on this timeline — the same identity the member route addresses. An entry carries no identifier of its own; versions are distinguished by their window coordinates.
11822
+ */
11823
+ project_wage_determination_id: string;
11824
+ project_id: string;
11825
+ pwa_trade_id: string;
11826
+ overtime_package_id: string | null;
11827
+ pay_rates_rule_package_id: string | null;
11828
+ type: 'Pwa::ProjectWageDeterminations::Federal';
11829
+ labor_classification: string;
11830
+ hourly_rate_cents: string;
11831
+ fringe_rate_cents: string;
11832
+ class_code: string | null;
11833
+ construction_category: 'building' | 'heavy' | 'highway' | 'residential' | null;
11834
+ general_wage_determination: string | null;
11835
+ valid_from: string | null;
11836
+ valid_to: string | null;
11837
+ created_at: string;
11838
+ updated_at: string;
11839
+ };
11840
+ export type RegionalProjectWageDeterminationHistoryCorrectionObject = {
11841
+ /**
11842
+ * Family key shared by every entry on this timeline — the same identity the member route addresses. An entry carries no identifier of its own; versions are distinguished by their window coordinates.
11843
+ */
11844
+ project_wage_determination_id: string;
11845
+ project_id: string;
11846
+ pwa_trade_id: string;
11847
+ overtime_package_id: string | null;
11848
+ pay_rates_rule_package_id: string | null;
11849
+ type: 'Pwa::ProjectWageDeterminations::Regional';
11850
+ labor_classification: string;
11851
+ hourly_rate_cents: string;
11852
+ fringe_rate_cents: string;
11853
+ general_wage_determination: string | null;
11854
+ regional_fields: RegionalWageDeterminationFieldsResponse;
11855
+ valid_from: string | null;
11856
+ valid_to: string | null;
11857
+ created_at: string;
11858
+ updated_at: string;
11859
+ };
11752
11860
  /**
11753
11861
  * 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.
11754
11862
  */
@@ -11882,6 +11990,58 @@ export type ProjectWageDeterminationUpdateParameters = {
11882
11990
  general_wage_determination?: string | null;
11883
11991
  regional_fields?: RegionalWageDeterminationFields;
11884
11992
  };
11993
+ /**
11994
+ * 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.
11995
+ */
11996
+ export type ProjectWageDeterminationScheduledChangeParameters = {
11997
+ /**
11998
+ * Where the change starts applying, as a calendar date (`YYYY-MM-DD`). A boundary is created at that date when needed, and the new values apply from there forward, carrying through every later version already scheduled. Past, current, and future dates are all accepted, so long as the date falls on or after the determination's timeline begins and before any scheduled termination. Derived pay data on affected descendant jobs is queued for reconciliation when the change is saved, whether the effective date is past, current, or future.
11999
+ */
12000
+ effective_date: string;
12001
+ /**
12002
+ * Human-readable labor classification — the craft or trade this determination sets rates for; the display label, distinct from the machine class code.
12003
+ */
12004
+ labor_classification?: string;
12005
+ /**
12006
+ * Base hourly wage rate, in cents as a decimal string (e.g. "5380.0" is $53.80).
12007
+ */
12008
+ hourly_rate_cents?: string;
12009
+ /**
12010
+ * Hourly fringe rate, in cents as a decimal string (e.g. "1200.0" is $12.00).
12011
+ */
12012
+ fringe_rate_cents?: string;
12013
+ /**
12014
+ * The DOL wage-classification code identifying this classification within its general decision (e.g. "LABO0324-014"); null when not recorded.
12015
+ */
12016
+ class_code?: string | null;
12017
+ /**
12018
+ * Broad DOL construction category — one of building, heavy, highway, or residential; null when not recorded.
12019
+ */
12020
+ construction_category?: 'building' | 'heavy' | 'highway' | 'residential' | null;
12021
+ /**
12022
+ * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
12023
+ */
12024
+ general_wage_determination?: string | null;
12025
+ regional_fields?: RegionalWageDeterminationFields;
12026
+ };
12027
+ /**
12028
+ * Parameters for moving where a project wage determination's timeline begins.
12029
+ */
12030
+ export type ProjectWageDeterminationGenesisParameters = {
12031
+ /**
12032
+ * The timeline's new start, as a calendar date (`YYYY-MM-DD`). Moving it earlier extends the first version back to it. Moving it later drops every version whose coverage ended at or before it and truncates the one spanning it, so what those versions said stops being readable. Refused with `422` when the new start would fall at or after a scheduled termination.
12033
+ */
12034
+ effective_date: string;
12035
+ };
12036
+ /**
12037
+ * Parameters for scheduling when a project wage determination stops being valid.
12038
+ */
12039
+ export type ProjectWageDeterminationScheduledTerminationParameters = {
12040
+ /**
12041
+ * When the determination stops being valid, as a calendar date (`YYYY-MM-DD`). Segments beyond it are dropped and one spanning it is truncated. Must fall after the determination's genesis and on or before its current end. It must also fall after the start date of every job already copying this determination; otherwise the request returns 422. A determination holds at most one scheduled termination; cancel the standing one before scheduling another.
12042
+ */
12043
+ effective_date: string;
12044
+ };
11885
12045
  /**
11886
12046
  * The adjustment applied when a rule matches — an addition to the wage or fringe rate.
11887
12047
  */
@@ -12066,32 +12226,32 @@ export type RateRuleHistoryVersionObject = {
12066
12226
  corrections: Array<RateRuleHistoryCorrectionObject>;
12067
12227
  };
12068
12228
  /**
12069
- * A conditional wage or fringe adjustment owned by a pay-rate rule package, with the selected version's valid-time window.
12229
+ * A conditional rate-modification rule on a project wage determination — it adds wage or fringe cents when its conditions match. `valid_from` and `valid_to` bound the window over which this version of the rule is in effect.
12070
12230
  */
12071
- export type PayRatesRuleResponseObject = {
12231
+ export type ProjectRateRuleResponseObject = {
12072
12232
  /**
12073
- * Identity shared by every valid-time version of the rule; the member and history paths address the family with this value.
12233
+ * Identity shared by every version of the rule, never a per-version row id — the value the member and history paths address the rule by.
12074
12234
  */
12075
12235
  id: string;
12076
12236
  /**
12077
- * ID of the pay-rate rule package that owns this rule.
12237
+ * ID of the project wage determination this rule is applied to, taken from the request path — the determination's own family identifier, stable across its temporal versions. Because rules attach to a shared package, the same rule can surface under more than one determination.
12078
12238
  */
12079
- pay_rates_rule_package_id: string;
12239
+ project_wage_determination_id: string;
12080
12240
  /**
12081
- * ISO 4217 currency code for effect.amount_cents, inherited from the package's company.
12241
+ * ID of the rule package that owns this rule — an internal container the API manages on the determination's behalf.
12082
12242
  */
12083
- currency: string;
12243
+ pay_rates_rule_package_id: string;
12084
12244
  effect: RateRuleEffect;
12085
12245
  /**
12086
- * Conditions that decide when the effect applies. An empty list means the rule always applies.
12246
+ * The rule's match conditions, at most one per category (time, day-selection, apprentice, overtime). An empty list means the rule always applies.
12087
12247
  */
12088
12248
  conditions: Array<RateRuleCondition>;
12089
12249
  /**
12090
- * Valid time — when this version begins applying (ISO 8601); null for an unbounded lower bound.
12250
+ * Valid time — when this version of the rule took effect (ISO 8601); null when the version has no recorded start.
12091
12251
  */
12092
12252
  valid_from: string | null;
12093
12253
  /**
12094
- * Valid time — the exclusive end when this version stops applying (ISO 8601); null for an open-ended upper bound.
12254
+ * Valid time — when this version stopped applying (ISO 8601); null while it is still current.
12095
12255
  */
12096
12256
  valid_to: string | null;
12097
12257
  /**
@@ -12103,19 +12263,87 @@ export type PayRatesRuleResponseObject = {
12103
12263
  */
12104
12264
  updated_at: string;
12105
12265
  };
12106
- /**
12107
- * Parameters for creating a conditional wage or fringe adjustment in a pay-rate rule package.
12108
- */
12109
- export type PayRatesRuleParameters = {
12110
- effect: RateRuleEffect;
12266
+ export type ProjectRateRuleHistoryCorrectionObject = {
12111
12267
  /**
12112
- * Match conditions for the rule. Omit or send an empty list for an unconditional rule.
12268
+ * Family key shared by every entry on this timeline — the same identity the member route addresses. An entry carries no identifier of its own; versions are distinguished by their window coordinates.
12113
12269
  */
12114
- conditions?: Array<RateRuleCondition>;
12270
+ pay_rates_rule_id: string;
12271
+ project_wage_determination_id: string;
12272
+ pay_rates_rule_package_id: string;
12273
+ effect: RateRuleEffect;
12274
+ conditions: Array<RateRuleCondition>;
12275
+ valid_from: string | null;
12276
+ valid_to: string | null;
12277
+ created_at: string;
12278
+ updated_at: string;
12279
+ };
12280
+ export type ProjectRateRuleHistoryVersionObject = {
12115
12281
  /**
12116
- * Calendar date when the rule begins in the package company's timezone; defaults to today there.
12282
+ * Family key shared by every entry on this timeline — the same identity the member route addresses. An entry carries no identifier of its own; versions are distinguished by their window coordinates.
12117
12283
  */
12118
- effective_date?: string;
12284
+ pay_rates_rule_id: string;
12285
+ project_wage_determination_id: string;
12286
+ pay_rates_rule_package_id: string;
12287
+ effect: RateRuleEffect;
12288
+ conditions: Array<RateRuleCondition>;
12289
+ valid_from: string | null;
12290
+ valid_to: string | null;
12291
+ created_at: string;
12292
+ updated_at: string;
12293
+ version_status: 'scheduled' | 'current' | 'historical';
12294
+ corrections: Array<ProjectRateRuleHistoryCorrectionObject>;
12295
+ };
12296
+ /**
12297
+ * A conditional wage or fringe adjustment owned by a pay-rate rule package, with the selected version's valid-time window.
12298
+ */
12299
+ export type PayRatesRuleResponseObject = {
12300
+ /**
12301
+ * Identity shared by every valid-time version of the rule; the member and history paths address the family with this value.
12302
+ */
12303
+ id: string;
12304
+ /**
12305
+ * ID of the pay-rate rule package that owns this rule.
12306
+ */
12307
+ pay_rates_rule_package_id: string;
12308
+ /**
12309
+ * ISO 4217 currency code for effect.amount_cents, inherited from the package's company.
12310
+ */
12311
+ currency: string;
12312
+ effect: RateRuleEffect;
12313
+ /**
12314
+ * Conditions that decide when the effect applies. An empty list means the rule always applies.
12315
+ */
12316
+ conditions: Array<RateRuleCondition>;
12317
+ /**
12318
+ * Valid time — when this version begins applying (ISO 8601); null for an unbounded lower bound.
12319
+ */
12320
+ valid_from: string | null;
12321
+ /**
12322
+ * Valid time — the exclusive end when this version stops applying (ISO 8601); null for an open-ended upper bound.
12323
+ */
12324
+ valid_to: string | null;
12325
+ /**
12326
+ * When the record was created (ISO 8601).
12327
+ */
12328
+ created_at: string;
12329
+ /**
12330
+ * When the record was last updated (ISO 8601).
12331
+ */
12332
+ updated_at: string;
12333
+ };
12334
+ /**
12335
+ * Parameters for creating a conditional wage or fringe adjustment in a pay-rate rule package.
12336
+ */
12337
+ export type PayRatesRuleParameters = {
12338
+ effect: RateRuleEffect;
12339
+ /**
12340
+ * Match conditions for the rule. Omit or send an empty list for an unconditional rule.
12341
+ */
12342
+ conditions?: Array<RateRuleCondition>;
12343
+ /**
12344
+ * Calendar date when the rule begins in the package company's timezone; defaults to today there.
12345
+ */
12346
+ effective_date?: string;
12119
12347
  };
12120
12348
  /**
12121
12349
  * Change a rule from an effective date forward. Omitted effect or conditions keep that part of the targeted version. When the targeted recipe changes, the resulting complete recipe applies from that coordinate across later scheduled versions; an unchanged recipe does not alter later scheduled versions. An empty conditions list makes the rule unconditional. Omit effective_from to correct the selected version from its exact existing start. A rule with an unbounded lower limit requires effective_from.
@@ -12757,25 +12985,18 @@ export type AssetsSiteResponseObject = {
12757
12985
  */
12758
12986
  updated_at: string;
12759
12987
  };
12760
- export type AssetsSiteParameters = ({
12761
- /**
12762
- * ID of the Atlas map site to back this location. Optional; omit for a standalone location that is not on the map.
12763
- */
12764
- site_id: string;
12765
- } | {
12988
+ /**
12989
+ * Create a site. kind is required; provide a site_id to back the location with a site on the Atlas map, or a name for a standalone location. At least one of site_id or name is required.
12990
+ */
12991
+ export type AssetsSiteParameters = {
12766
12992
  /**
12767
- * Display name for the location. Required when no backing site_id is given; otherwise falls back to the backing Atlas site's name.
12993
+ * ID of the Atlas map site to back this location. Optional; omit for a standalone location that is not on the map. A site the key cannot see returns 404.
12768
12994
  */
12769
- name: string;
12770
- }) & {
12995
+ site_id?: string | null;
12771
12996
  /**
12772
12997
  * Location type: warehouse or yard.
12773
12998
  */
12774
12999
  kind: 'warehouse' | 'yard';
12775
- /**
12776
- * ID of the Atlas map site to back this location. Optional; omit for a standalone location that is not on the map.
12777
- */
12778
- site_id?: string | null;
12779
13000
  /**
12780
13001
  * Display name for the location. Required when no backing site_id is given; otherwise falls back to the backing Atlas site's name.
12781
13002
  */
@@ -12785,14 +13006,14 @@ export type AssetsSiteParameters = ({
12785
13006
  * Request body for updating an asset location. Every field is optional; send only the fields to change. The saved location must still have a name or a backing `site_id`.
12786
13007
  */
12787
13008
  export type AssetsSiteUpdateParameters = {
12788
- /**
12789
- * Location type: warehouse or yard.
12790
- */
12791
- kind?: 'warehouse' | 'yard';
12792
13009
  /**
12793
13010
  * ID of the Atlas map site to back this location. `null` removes the backing site when a name remains available.
12794
13011
  */
12795
13012
  site_id?: string | null;
13013
+ /**
13014
+ * Location type: warehouse or yard.
13015
+ */
13016
+ kind?: 'warehouse' | 'yard';
12796
13017
  /**
12797
13018
  * Display name for the location. `null` clears the direct name when a backing `site_id` supplies the display name.
12798
13019
  */
@@ -13095,7 +13316,7 @@ export type AssetsDocumentResponseObject = {
13095
13316
  */
13096
13317
  export type AssetsDocumentParameters = {
13097
13318
  /**
13098
- * A signed_id from POST /api/v1/direct_uploads identifying the uploaded blob to attach. Register the upload naming `assets.items.documents` — a signed_id issued for any other resource will not resolve here.
13319
+ * A signed_id from POST /api/v1/direct_uploads identifying the uploaded blob to attach. Register the upload naming `assets.items.documents` — a signed_id issued for any other resource will not resolve here. Null and a blank string answer 422.
13099
13320
  */
13100
13321
  file: string;
13101
13322
  /**
@@ -13112,7 +13333,7 @@ export type AssetsDocumentParameters = {
13112
13333
  performed_by_user_id: string;
13113
13334
  };
13114
13335
  /**
13115
- * 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.
13336
+ * 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. A document always holds a file, so null answers 422, as does a blank string.
13116
13337
  */
13117
13338
  export type AssetsDocumentUpdateParameters = {
13118
13339
  /**
@@ -13904,19 +14125,19 @@ export type AssetsSubLocationParameters = {
13904
14125
  /**
13905
14126
  * ID of the site the location belongs to. Top-level nodes only — exactly one of assets_site_id or container_item_id; nested nodes inherit the parent's holder.
13906
14127
  */
13907
- assets_site_id?: string;
14128
+ assets_site_id?: string | null;
13908
14129
  /**
13909
14130
  * ID of the container item the location belongs to. Top-level nodes only — exactly one of assets_site_id or container_item_id; the container's product must be flagged as a container.
13910
14131
  */
13911
- container_item_id?: string;
14132
+ container_item_id?: string | null;
13912
14133
  /**
13913
14134
  * ID of the enclosing location for a nested node; omit for a top-level node.
13914
14135
  */
13915
14136
  parent_id?: string | null;
13916
14137
  /**
13917
- * Advisory level label for the node: zone, aisle, rack, shelf, bin, or drawer.
14138
+ * Advisory level label for the node: zone, aisle, rack, shelf, bin, or drawer. `null` leaves the node unlabelled.
13918
14139
  */
13919
- kind?: 'zone' | 'aisle' | 'rack' | 'shelf' | 'bin' | 'drawer';
14140
+ kind?: 'zone' | 'aisle' | 'rack' | 'shelf' | 'bin' | 'drawer' | null;
13920
14141
  /**
13921
14142
  * Display name for the location, unique among its siblings.
13922
14143
  */
@@ -13935,9 +14156,9 @@ export type AssetsSubLocationUpdateParameters = {
13935
14156
  */
13936
14157
  parent_id?: string | null;
13937
14158
  /**
13938
- * Advisory level label for the node: zone, aisle, rack, shelf, bin, or drawer.
14159
+ * Advisory level label for the node: zone, aisle, rack, shelf, bin, or drawer. `null` leaves the node unlabelled.
13939
14160
  */
13940
- kind?: 'zone' | 'aisle' | 'rack' | 'shelf' | 'bin' | 'drawer';
14161
+ kind?: 'zone' | 'aisle' | 'rack' | 'shelf' | 'bin' | 'drawer' | null;
13941
14162
  /**
13942
14163
  * Display name for the location, unique among its siblings.
13943
14164
  */
@@ -14088,15 +14309,15 @@ export type AssetsTransferParameters = {
14088
14309
  */
14089
14310
  export type AssetsRestockParameters = {
14090
14311
  /**
14091
- * ID of the site to add the stock to.
14312
+ * ID of the site to add the stock to. A site the API key cannot see answers 404.
14092
14313
  */
14093
14314
  assets_site_id: string;
14094
14315
  /**
14095
- * Optional. The site's storage location the stock lands in; must belong to the site. Omit for the site's unbinned stock.
14316
+ * Optional. The site's storage location the stock lands in; one that is not the site's answers 404. Omit or send null for the site's unbinned stock.
14096
14317
  */
14097
- assets_sub_location_id?: string;
14318
+ assets_sub_location_id?: string | null;
14098
14319
  /**
14099
- * Number of units to add; greater than 0.
14320
+ * Number of units to add, as an integer of 1 or more. Any other value answers 422.
14100
14321
  */
14101
14322
  quantity: number;
14102
14323
  /**
@@ -14109,15 +14330,15 @@ export type AssetsRestockParameters = {
14109
14330
  */
14110
14331
  export type AssetsAdjustmentParameters = {
14111
14332
  /**
14112
- * ID of the site whose on-hand count is being set.
14333
+ * ID of the site whose on-hand count is being set. A site the API key cannot see answers 404.
14113
14334
  */
14114
14335
  assets_site_id: string;
14115
14336
  /**
14116
- * Optional. The site's storage location whose count is being set; must belong to the site. Omit to set the site's unbinned count.
14337
+ * Optional. The site's storage location whose count is being set; one that is not the site's answers 404. Omit or send null to set the site's unbinned count.
14117
14338
  */
14118
- assets_sub_location_id?: string;
14339
+ assets_sub_location_id?: string | null;
14119
14340
  /**
14120
- * The corrected on-hand count for the site; 0 or greater. The difference from the current count is recorded as the adjustment.
14341
+ * The corrected on-hand count for the site, as an integer of 0 or more; any other value answers 422. The difference from the current count is recorded as the adjustment.
14121
14342
  */
14122
14343
  new_quantity: number;
14123
14344
  /**
@@ -14134,6 +14355,32 @@ export type AssetsArchiveParameters = {
14134
14355
  */
14135
14356
  performed_by_user_id: string;
14136
14357
  };
14358
+ /**
14359
+ * Create the template's schedule on the product's serial items that don't have one yet. Items whose matching schedule has a different cadence are blocked and never seeded.
14360
+ */
14361
+ export type AssetsServiceScheduleSeedParameters = {
14362
+ /**
14363
+ * Optional. Serial item IDs to seed; IDs outside the seedable items are skipped. Omit to seed every seedable item. An empty list, null, or a value that is not an array of strings answers 422.
14364
+ */
14365
+ assets_item_ids?: Array<string>;
14366
+ /**
14367
+ * ID of the user this seed is performed on behalf of, recorded as creator and updater of the seeded schedules. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
14368
+ */
14369
+ performed_by_user_id: string;
14370
+ };
14371
+ /**
14372
+ * Rewrite blocked schedules — those sharing the template's name and kind with a different interval — to the template's cadence, which links them to it.
14373
+ */
14374
+ export type AssetsServiceScheduleSyncParameters = {
14375
+ /**
14376
+ * Optional. Blocked schedule IDs to sync; IDs outside the blocked schedules are skipped. Omit to sync every blocked schedule. An empty list, null, or a value that is not an array of strings answers 422.
14377
+ */
14378
+ schedule_ids?: Array<string>;
14379
+ /**
14380
+ * ID of the user this sync is performed on behalf of, recorded as updater of the synced schedules. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
14381
+ */
14382
+ performed_by_user_id: string;
14383
+ };
14137
14384
  /**
14138
14385
  * A page of certifications held by your company's workers.
14139
14386
  */
@@ -14486,6 +14733,10 @@ export type CreateApprenticeData = {
14486
14733
  url: '/api/v1/apprenticeship/programs/{program_id}/apprentices';
14487
14734
  };
14488
14735
  export type CreateApprenticeErrors = {
14736
+ /**
14737
+ * Bad Request
14738
+ */
14739
+ 400: Problem;
14489
14740
  /**
14490
14741
  * Forbidden
14491
14742
  */
@@ -14571,6 +14822,10 @@ export type CreateOccupationData = {
14571
14822
  url: '/api/v1/apprenticeship/programs/{program_id}/occupations';
14572
14823
  };
14573
14824
  export type CreateOccupationErrors = {
14825
+ /**
14826
+ * Bad Request
14827
+ */
14828
+ 400: Problem;
14574
14829
  /**
14575
14830
  * Forbidden
14576
14831
  */
@@ -14656,6 +14911,10 @@ export type UpdateOccupationData = {
14656
14911
  url: '/api/v1/apprenticeship/programs/{program_id}/occupations/{id}';
14657
14912
  };
14658
14913
  export type UpdateOccupationErrors = {
14914
+ /**
14915
+ * Bad Request
14916
+ */
14917
+ 400: Problem;
14659
14918
  /**
14660
14919
  * Forbidden
14661
14920
  */
@@ -16957,6 +17216,10 @@ export type UpdateDocumentData = {
16957
17216
  url: '/api/v1/assets/items/{item_id}/documents/{id}';
16958
17217
  };
16959
17218
  export type UpdateDocumentErrors = {
17219
+ /**
17220
+ * Bad Request
17221
+ */
17222
+ 400: Problem;
16960
17223
  /**
16961
17224
  * Forbidden
16962
17225
  */
@@ -17081,6 +17344,10 @@ export type CreateProductErrors = {
17081
17344
  * Forbidden
17082
17345
  */
17083
17346
  403: Problem;
17347
+ /**
17348
+ * Not Found
17349
+ */
17350
+ 404: Problem;
17084
17351
  /**
17085
17352
  * Unprocessable Content
17086
17353
  */
@@ -17159,6 +17426,10 @@ export type UpdateProductData = {
17159
17426
  url: '/api/v1/assets/products/{id}';
17160
17427
  };
17161
17428
  export type UpdateProductErrors = {
17429
+ /**
17430
+ * Bad Request
17431
+ */
17432
+ 400: Problem;
17162
17433
  /**
17163
17434
  * Forbidden
17164
17435
  */
@@ -17488,16 +17759,7 @@ export type UpdateServiceScheduleTemplateResponses = {
17488
17759
  };
17489
17760
  export type UpdateServiceScheduleTemplateResponse = UpdateServiceScheduleTemplateResponses[keyof UpdateServiceScheduleTemplateResponses];
17490
17761
  export type SeedServiceScheduleTemplateData = {
17491
- body: {
17492
- /**
17493
- * Serial item ids to seed; omit or send [] to seed every cleanly-seedable item
17494
- */
17495
- assets_item_ids?: Array<string>;
17496
- /**
17497
- * ID of the user this seed is performed on behalf of, recorded as creator and updater of the seeded schedules. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
17498
- */
17499
- performed_by_user_id: string;
17500
- };
17762
+ body: AssetsServiceScheduleSeedParameters;
17501
17763
  path: {
17502
17764
  product_id: string;
17503
17765
  service_schedule_template_id: string;
@@ -17535,16 +17797,7 @@ export type SeedServiceScheduleTemplateResponses = {
17535
17797
  };
17536
17798
  export type SeedServiceScheduleTemplateResponse = SeedServiceScheduleTemplateResponses[keyof SeedServiceScheduleTemplateResponses];
17537
17799
  export type SyncServiceScheduleTemplateData = {
17538
- body: {
17539
- /**
17540
- * Blocked schedule ids to sync; omit or send [] to sync every blocked schedule
17541
- */
17542
- schedule_ids?: Array<string>;
17543
- /**
17544
- * ID of the user this sync is performed on behalf of, recorded as updater of the synced schedules. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
17545
- */
17546
- performed_by_user_id: string;
17547
- };
17800
+ body: AssetsServiceScheduleSyncParameters;
17548
17801
  path: {
17549
17802
  product_id: string;
17550
17803
  service_schedule_template_id: string;
@@ -17645,6 +17898,10 @@ export type CreateSiteErrors = {
17645
17898
  * Forbidden
17646
17899
  */
17647
17900
  403: Problem;
17901
+ /**
17902
+ * Not Found (backing site)
17903
+ */
17904
+ 404: Problem;
17648
17905
  /**
17649
17906
  * Unprocessable Content (no backing site and no name)
17650
17907
  */
@@ -17825,6 +18082,10 @@ export type CreateSubLocationErrors = {
17825
18082
  * Forbidden
17826
18083
  */
17827
18084
  403: Problem;
18085
+ /**
18086
+ * Not Found (holder or parent)
18087
+ */
18088
+ 404: Problem;
17828
18089
  /**
17829
18090
  * Unprocessable Content
17830
18091
  */
@@ -19183,6 +19444,10 @@ export type UpdateCompanyProfileData = {
19183
19444
  url: '/api/v1/companies/{id}';
19184
19445
  };
19185
19446
  export type UpdateCompanyProfileErrors = {
19447
+ /**
19448
+ * Bad Request
19449
+ */
19450
+ 400: Problem;
19186
19451
  /**
19187
19452
  * Forbidden
19188
19453
  */
@@ -19575,6 +19840,10 @@ export type UpdateCheckData = {
19575
19840
  url: '/api/v1/compliance/checks/{id}';
19576
19841
  };
19577
19842
  export type UpdateCheckErrors = {
19843
+ /**
19844
+ * Bad Request
19845
+ */
19846
+ 400: Problem;
19578
19847
  /**
19579
19848
  * Forbidden
19580
19849
  */
@@ -19726,6 +19995,10 @@ export type CreateCustomFieldConfigData = {
19726
19995
  url: '/api/v1/custom_field_configs';
19727
19996
  };
19728
19997
  export type CreateCustomFieldConfigErrors = {
19998
+ /**
19999
+ * Bad Request
20000
+ */
20001
+ 400: Problem;
19729
20002
  /**
19730
20003
  * Forbidden
19731
20004
  */
@@ -19808,6 +20081,10 @@ export type UpdateCustomFieldConfigData = {
19808
20081
  url: '/api/v1/custom_field_configs/{id}';
19809
20082
  };
19810
20083
  export type UpdateCustomFieldConfigErrors = {
20084
+ /**
20085
+ * Bad Request
20086
+ */
20087
+ 400: Problem;
19811
20088
  /**
19812
20089
  * Forbidden
19813
20090
  */
@@ -20790,6 +21067,10 @@ export type CreateJobTradeData = {
20790
21067
  url: '/api/v1/jobs/{job_id}/pwa/trades';
20791
21068
  };
20792
21069
  export type CreateJobTradeErrors = {
21070
+ /**
21071
+ * Bad Request
21072
+ */
21073
+ 400: Problem;
20793
21074
  /**
20794
21075
  * Forbidden
20795
21076
  */
@@ -20906,6 +21187,10 @@ export type CreateRateRuleData = {
20906
21187
  url: '/api/v1/jobs/{job_id}/wage_determinations/{wage_determination_id}/rate_rules';
20907
21188
  };
20908
21189
  export type CreateRateRuleErrors = {
21190
+ /**
21191
+ * Bad Request
21192
+ */
21193
+ 400: Problem;
20909
21194
  /**
20910
21195
  * Forbidden
20911
21196
  */
@@ -22628,7 +22913,7 @@ export type CreateOvertimeRuleData = {
22628
22913
  };
22629
22914
  export type CreateOvertimeRuleErrors = {
22630
22915
  /**
22631
- * Bad Request (unknown body key)
22916
+ * Bad Request
22632
22917
  */
22633
22918
  400: Problem;
22634
22919
  /**
@@ -22742,7 +23027,7 @@ export type UpdateOvertimeRuleData = {
22742
23027
  };
22743
23028
  export type UpdateOvertimeRuleErrors = {
22744
23029
  /**
22745
- * Bad Request (unknown body key)
23030
+ * Bad Request
22746
23031
  */
22747
23032
  400: Problem;
22748
23033
  /**
@@ -24240,6 +24525,10 @@ export type CreateFringeBenefitPlanErrors = {
24240
24525
  * Forbidden
24241
24526
  */
24242
24527
  403: Problem;
24528
+ /**
24529
+ * Not Found
24530
+ */
24531
+ 404: Problem;
24243
24532
  /**
24244
24533
  * Unprocessable Content
24245
24534
  */
@@ -24681,6 +24970,10 @@ export type CreatePayrollRunErrors = {
24681
24970
  * Forbidden
24682
24971
  */
24683
24972
  403: Problem;
24973
+ /**
24974
+ * Not Found
24975
+ */
24976
+ 404: Problem;
24684
24977
  /**
24685
24978
  * Unprocessable Content
24686
24979
  */
@@ -26382,6 +26675,10 @@ export type CreateProjectTradeData = {
26382
26675
  url: '/api/v1/projects/{project_id}/pwa/trades';
26383
26676
  };
26384
26677
  export type CreateProjectTradeErrors = {
26678
+ /**
26679
+ * Bad Request
26680
+ */
26681
+ 400: Problem;
26385
26682
  /**
26386
26683
  * Forbidden
26387
26684
  */
@@ -26403,26 +26700,22 @@ export type CreateProjectTradeResponses = {
26403
26700
  201: PwaTradeResponseObject;
26404
26701
  };
26405
26702
  export type CreateProjectTradeResponse = CreateProjectTradeResponses[keyof CreateProjectTradeResponses];
26406
- export type ListProjectSitesData = {
26703
+ export type ListProjectWageDeterminationRateRuleHistoryData = {
26407
26704
  body?: never;
26408
26705
  path: {
26409
26706
  project_id: string;
26410
- };
26411
- query?: {
26412
- /**
26413
- * This pagination cursor corresponds to the cursor value found in the response in
26414
- * `meta.page.next_cursor`.
26415
- */
26416
- 'page[cursor]'?: string;
26707
+ wage_determination_id: string;
26417
26708
  /**
26418
- * Maximum number of records to return per page. Defaults to 20. A value above 100 is capped to 100 rather than rejected; a value that is zero, negative, or not an integer is rejected with a `400`.
26709
+ * The rule's version-stable identity, as returned in `id`.
26419
26710
  */
26420
- 'page[limit]'?: number;
26421
- page?: string;
26711
+ rate_rule_id: string;
26422
26712
  };
26423
- url: '/api/v1/projects/{project_id}/sites';
26713
+ query?: {
26714
+ 'as_of[valid]'?: string;
26715
+ };
26716
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/rate_rules/{rate_rule_id}/history';
26424
26717
  };
26425
- export type ListProjectSitesErrors = {
26718
+ export type ListProjectWageDeterminationRateRuleHistoryErrors = {
26426
26719
  /**
26427
26720
  * Bad Request
26428
26721
  */
@@ -26436,27 +26729,37 @@ export type ListProjectSitesErrors = {
26436
26729
  */
26437
26730
  404: Problem;
26438
26731
  };
26439
- export type ListProjectSitesError = ListProjectSitesErrors[keyof ListProjectSitesErrors];
26440
- export type ListProjectSitesResponses = {
26732
+ export type ListProjectWageDeterminationRateRuleHistoryError = ListProjectWageDeterminationRateRuleHistoryErrors[keyof ListProjectWageDeterminationRateRuleHistoryErrors];
26733
+ export type ListProjectWageDeterminationRateRuleHistoryResponses = {
26441
26734
  /**
26442
26735
  * Success
26443
26736
  */
26444
26737
  200: {
26445
26738
  meta: Meta;
26446
26739
  links: Links;
26447
- data: Array<ProjectSiteResponseObject>;
26740
+ data: Array<ProjectRateRuleHistoryVersionObject>;
26448
26741
  };
26449
26742
  };
26450
- export type ListProjectSitesResponse = ListProjectSitesResponses[keyof ListProjectSitesResponses];
26451
- export type CreateProjectSiteData = {
26452
- body: ProjectSiteParameters;
26743
+ export type ListProjectWageDeterminationRateRuleHistoryResponse = ListProjectWageDeterminationRateRuleHistoryResponses[keyof ListProjectWageDeterminationRateRuleHistoryResponses];
26744
+ export type ListProjectWageDeterminationRateRulesData = {
26745
+ body?: never;
26453
26746
  path: {
26454
26747
  project_id: string;
26748
+ wage_determination_id: string;
26455
26749
  };
26456
- query?: never;
26457
- url: '/api/v1/projects/{project_id}/sites';
26750
+ query?: {
26751
+ /**
26752
+ * Read the version valid at this point in time. Defaults to now.
26753
+ */
26754
+ 'as_of[valid]'?: string;
26755
+ as_of?: string;
26756
+ 'as_of[bogus_axis]'?: string;
26757
+ 'as_of[valid][gte]'?: string;
26758
+ 'as_of[transaction]'?: string;
26759
+ };
26760
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/rate_rules';
26458
26761
  };
26459
- export type CreateProjectSiteErrors = {
26762
+ export type ListProjectWageDeterminationRateRulesErrors = {
26460
26763
  /**
26461
26764
  * Bad Request
26462
26765
  */
@@ -26465,48 +26768,191 @@ export type CreateProjectSiteErrors = {
26465
26768
  * Forbidden
26466
26769
  */
26467
26770
  403: Problem;
26468
- /**
26469
- * Not Found
26470
- */
26471
- 404: Problem;
26472
26771
  /**
26473
26772
  * Unprocessable Content
26474
26773
  */
26475
26774
  422: Problem;
26476
26775
  };
26477
- export type CreateProjectSiteError = CreateProjectSiteErrors[keyof CreateProjectSiteErrors];
26478
- export type CreateProjectSiteResponses = {
26776
+ export type ListProjectWageDeterminationRateRulesError = ListProjectWageDeterminationRateRulesErrors[keyof ListProjectWageDeterminationRateRulesErrors];
26777
+ export type ListProjectWageDeterminationRateRulesResponses = {
26479
26778
  /**
26480
- * Created
26779
+ * Success
26481
26780
  */
26482
- 201: ProjectSiteResponseObject;
26781
+ 200: {
26782
+ meta: Meta;
26783
+ links: Links;
26784
+ data: Array<ProjectRateRuleResponseObject>;
26785
+ };
26483
26786
  };
26484
- export type CreateProjectSiteResponse = CreateProjectSiteResponses[keyof CreateProjectSiteResponses];
26485
- export type DeleteProjectSiteData = {
26486
- body?: never;
26787
+ export type ListProjectWageDeterminationRateRulesResponse = ListProjectWageDeterminationRateRulesResponses[keyof ListProjectWageDeterminationRateRulesResponses];
26788
+ export type CreateProjectWageDeterminationRateRuleData = {
26789
+ body: RateRuleParameters;
26487
26790
  path: {
26488
26791
  project_id: string;
26489
- id: string;
26792
+ wage_determination_id: string;
26490
26793
  };
26491
26794
  query?: never;
26492
- url: '/api/v1/projects/{project_id}/sites/{id}';
26795
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/rate_rules';
26493
26796
  };
26494
- export type DeleteProjectSiteErrors = {
26797
+ export type CreateProjectWageDeterminationRateRuleErrors = {
26798
+ /**
26799
+ * Bad Request
26800
+ */
26801
+ 400: Problem;
26495
26802
  /**
26496
26803
  * Forbidden
26497
26804
  */
26498
26805
  403: Problem;
26499
26806
  /**
26500
- * Not Found
26807
+ * Unprocessable Content
26501
26808
  */
26502
- 404: Problem;
26809
+ 422: Problem;
26503
26810
  };
26504
- export type DeleteProjectSiteError = DeleteProjectSiteErrors[keyof DeleteProjectSiteErrors];
26505
- export type DeleteProjectSiteResponses = {
26811
+ export type CreateProjectWageDeterminationRateRuleError = CreateProjectWageDeterminationRateRuleErrors[keyof CreateProjectWageDeterminationRateRuleErrors];
26812
+ export type CreateProjectWageDeterminationRateRuleResponses = {
26506
26813
  /**
26507
- * No Content
26814
+ * Created
26508
26815
  */
26509
- 204: void;
26816
+ 201: ProjectRateRuleResponseObject;
26817
+ };
26818
+ export type CreateProjectWageDeterminationRateRuleResponse = CreateProjectWageDeterminationRateRuleResponses[keyof CreateProjectWageDeterminationRateRuleResponses];
26819
+ export type GetProjectWageDeterminationRateRuleData = {
26820
+ body?: never;
26821
+ path: {
26822
+ project_id: string;
26823
+ wage_determination_id: string;
26824
+ id: string;
26825
+ };
26826
+ query?: {
26827
+ /**
26828
+ * Read the version valid at this point in time. Defaults to now.
26829
+ */
26830
+ 'as_of[valid]'?: string;
26831
+ };
26832
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/rate_rules/{id}';
26833
+ };
26834
+ export type GetProjectWageDeterminationRateRuleErrors = {
26835
+ /**
26836
+ * Forbidden
26837
+ */
26838
+ 403: Problem;
26839
+ /**
26840
+ * Not Found
26841
+ */
26842
+ 404: Problem;
26843
+ };
26844
+ export type GetProjectWageDeterminationRateRuleError = GetProjectWageDeterminationRateRuleErrors[keyof GetProjectWageDeterminationRateRuleErrors];
26845
+ export type GetProjectWageDeterminationRateRuleResponses = {
26846
+ /**
26847
+ * Success
26848
+ */
26849
+ 200: ProjectRateRuleResponseObject;
26850
+ };
26851
+ export type GetProjectWageDeterminationRateRuleResponse = GetProjectWageDeterminationRateRuleResponses[keyof GetProjectWageDeterminationRateRuleResponses];
26852
+ export type ListProjectSitesData = {
26853
+ body?: never;
26854
+ path: {
26855
+ project_id: string;
26856
+ };
26857
+ query?: {
26858
+ /**
26859
+ * This pagination cursor corresponds to the cursor value found in the response in
26860
+ * `meta.page.next_cursor`.
26861
+ */
26862
+ 'page[cursor]'?: string;
26863
+ /**
26864
+ * Maximum number of records to return per page. Defaults to 20. A value above 100 is capped to 100 rather than rejected; a value that is zero, negative, or not an integer is rejected with a `400`.
26865
+ */
26866
+ 'page[limit]'?: number;
26867
+ page?: string;
26868
+ };
26869
+ url: '/api/v1/projects/{project_id}/sites';
26870
+ };
26871
+ export type ListProjectSitesErrors = {
26872
+ /**
26873
+ * Bad Request
26874
+ */
26875
+ 400: Problem;
26876
+ /**
26877
+ * Forbidden
26878
+ */
26879
+ 403: Problem;
26880
+ /**
26881
+ * Not Found
26882
+ */
26883
+ 404: Problem;
26884
+ };
26885
+ export type ListProjectSitesError = ListProjectSitesErrors[keyof ListProjectSitesErrors];
26886
+ export type ListProjectSitesResponses = {
26887
+ /**
26888
+ * Success
26889
+ */
26890
+ 200: {
26891
+ meta: Meta;
26892
+ links: Links;
26893
+ data: Array<ProjectSiteResponseObject>;
26894
+ };
26895
+ };
26896
+ export type ListProjectSitesResponse = ListProjectSitesResponses[keyof ListProjectSitesResponses];
26897
+ export type CreateProjectSiteData = {
26898
+ body: ProjectSiteParameters;
26899
+ path: {
26900
+ project_id: string;
26901
+ };
26902
+ query?: never;
26903
+ url: '/api/v1/projects/{project_id}/sites';
26904
+ };
26905
+ export type CreateProjectSiteErrors = {
26906
+ /**
26907
+ * Bad Request
26908
+ */
26909
+ 400: Problem;
26910
+ /**
26911
+ * Forbidden
26912
+ */
26913
+ 403: Problem;
26914
+ /**
26915
+ * Not Found
26916
+ */
26917
+ 404: Problem;
26918
+ /**
26919
+ * Unprocessable Content
26920
+ */
26921
+ 422: Problem;
26922
+ };
26923
+ export type CreateProjectSiteError = CreateProjectSiteErrors[keyof CreateProjectSiteErrors];
26924
+ export type CreateProjectSiteResponses = {
26925
+ /**
26926
+ * Created
26927
+ */
26928
+ 201: ProjectSiteResponseObject;
26929
+ };
26930
+ export type CreateProjectSiteResponse = CreateProjectSiteResponses[keyof CreateProjectSiteResponses];
26931
+ export type DeleteProjectSiteData = {
26932
+ body?: never;
26933
+ path: {
26934
+ project_id: string;
26935
+ id: string;
26936
+ };
26937
+ query?: never;
26938
+ url: '/api/v1/projects/{project_id}/sites/{id}';
26939
+ };
26940
+ export type DeleteProjectSiteErrors = {
26941
+ /**
26942
+ * Forbidden
26943
+ */
26944
+ 403: Problem;
26945
+ /**
26946
+ * Not Found
26947
+ */
26948
+ 404: Problem;
26949
+ };
26950
+ export type DeleteProjectSiteError = DeleteProjectSiteErrors[keyof DeleteProjectSiteErrors];
26951
+ export type DeleteProjectSiteResponses = {
26952
+ /**
26953
+ * No Content
26954
+ */
26955
+ 204: void;
26510
26956
  };
26511
26957
  export type DeleteProjectSiteResponse = DeleteProjectSiteResponses[keyof DeleteProjectSiteResponses];
26512
26958
  export type GetProjectSiteData = {
@@ -26571,6 +27017,322 @@ export type UpdateProjectSiteResponses = {
26571
27017
  200: ProjectSiteResponseObject;
26572
27018
  };
26573
27019
  export type UpdateProjectSiteResponse = UpdateProjectSiteResponses[keyof UpdateProjectSiteResponses];
27020
+ export type ShiftProjectWageDeterminationGenesisData = {
27021
+ body: ProjectWageDeterminationGenesisParameters;
27022
+ headers: {
27023
+ /**
27024
+ * Version validator this write is composed against — the `ETag` from a read of this determination, or `*` to write against whatever exists. See "Version validators" in the API overview.
27025
+ */
27026
+ 'If-Match': string;
27027
+ };
27028
+ path: {
27029
+ project_id: string;
27030
+ wage_determination_id: string;
27031
+ };
27032
+ query?: never;
27033
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/genesis';
27034
+ };
27035
+ export type ShiftProjectWageDeterminationGenesisErrors = {
27036
+ /**
27037
+ * Bad Request (missing effective_date)
27038
+ */
27039
+ 400: Problem;
27040
+ /**
27041
+ * Forbidden
27042
+ */
27043
+ 403: Problem;
27044
+ /**
27045
+ * Not Found
27046
+ */
27047
+ 404: Problem;
27048
+ /**
27049
+ * Conflict
27050
+ */
27051
+ 409: Problem;
27052
+ /**
27053
+ * Precondition Failed
27054
+ */
27055
+ 412: Problem;
27056
+ /**
27057
+ * Unprocessable Content
27058
+ */
27059
+ 422: Problem;
27060
+ /**
27061
+ * Precondition Required
27062
+ */
27063
+ 428: Problem;
27064
+ };
27065
+ export type ShiftProjectWageDeterminationGenesisError = ShiftProjectWageDeterminationGenesisErrors[keyof ShiftProjectWageDeterminationGenesisErrors];
27066
+ export type ShiftProjectWageDeterminationGenesisResponses = {
27067
+ /**
27068
+ * Success
27069
+ */
27070
+ 200: ProjectWageDeterminationResponseObject;
27071
+ };
27072
+ export type ShiftProjectWageDeterminationGenesisResponse = ShiftProjectWageDeterminationGenesisResponses[keyof ShiftProjectWageDeterminationGenesisResponses];
27073
+ export type ListProjectWageDeterminationHistoryData = {
27074
+ body?: never;
27075
+ path: {
27076
+ project_id: string;
27077
+ /**
27078
+ * The determination's version-stable identity, as returned in `id`.
27079
+ */
27080
+ wage_determination_id: string;
27081
+ };
27082
+ query?: {
27083
+ 'as_of[valid]'?: string;
27084
+ };
27085
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/history';
27086
+ };
27087
+ export type ListProjectWageDeterminationHistoryErrors = {
27088
+ /**
27089
+ * Bad Request
27090
+ */
27091
+ 400: Problem;
27092
+ /**
27093
+ * Forbidden
27094
+ */
27095
+ 403: Problem;
27096
+ /**
27097
+ * Not Found
27098
+ */
27099
+ 404: Problem;
27100
+ };
27101
+ export type ListProjectWageDeterminationHistoryError = ListProjectWageDeterminationHistoryErrors[keyof ListProjectWageDeterminationHistoryErrors];
27102
+ export type ListProjectWageDeterminationHistoryResponses = {
27103
+ /**
27104
+ * Success
27105
+ */
27106
+ 200: {
27107
+ meta: Meta;
27108
+ links: Links;
27109
+ data: Array<ProjectWageDeterminationHistoryVersionObject>;
27110
+ };
27111
+ };
27112
+ export type ListProjectWageDeterminationHistoryResponse = ListProjectWageDeterminationHistoryResponses[keyof ListProjectWageDeterminationHistoryResponses];
27113
+ export type CancelProjectWageDeterminationScheduledChangesData = {
27114
+ body?: never;
27115
+ headers: {
27116
+ /**
27117
+ * Version validator this write is composed against — the `ETag` from a read of this determination, or `*` to write against whatever exists. See "Version validators" in the API overview.
27118
+ */
27119
+ 'If-Match': string;
27120
+ };
27121
+ path: {
27122
+ project_id: string;
27123
+ wage_determination_id: string;
27124
+ };
27125
+ query?: never;
27126
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/scheduled_changes';
27127
+ };
27128
+ export type CancelProjectWageDeterminationScheduledChangesErrors = {
27129
+ /**
27130
+ * Forbidden
27131
+ */
27132
+ 403: Problem;
27133
+ /**
27134
+ * Not Found
27135
+ */
27136
+ 404: Problem;
27137
+ /**
27138
+ * Precondition Failed
27139
+ */
27140
+ 412: Problem;
27141
+ /**
27142
+ * Unprocessable Content
27143
+ */
27144
+ 422: Problem;
27145
+ /**
27146
+ * Precondition Required
27147
+ */
27148
+ 428: Problem;
27149
+ };
27150
+ export type CancelProjectWageDeterminationScheduledChangesError = CancelProjectWageDeterminationScheduledChangesErrors[keyof CancelProjectWageDeterminationScheduledChangesErrors];
27151
+ export type CancelProjectWageDeterminationScheduledChangesResponses = {
27152
+ /**
27153
+ * Success
27154
+ */
27155
+ 200: ProjectWageDeterminationResponseObject;
27156
+ };
27157
+ export type CancelProjectWageDeterminationScheduledChangesResponse = CancelProjectWageDeterminationScheduledChangesResponses[keyof CancelProjectWageDeterminationScheduledChangesResponses];
27158
+ export type ListProjectWageDeterminationScheduledChangesData = {
27159
+ body?: never;
27160
+ path: {
27161
+ project_id: string;
27162
+ wage_determination_id: string;
27163
+ };
27164
+ query?: never;
27165
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/scheduled_changes';
27166
+ };
27167
+ export type ListProjectWageDeterminationScheduledChangesErrors = {
27168
+ /**
27169
+ * Forbidden
27170
+ */
27171
+ 403: Problem;
27172
+ /**
27173
+ * Not Found
27174
+ */
27175
+ 404: Problem;
27176
+ };
27177
+ export type ListProjectWageDeterminationScheduledChangesError = ListProjectWageDeterminationScheduledChangesErrors[keyof ListProjectWageDeterminationScheduledChangesErrors];
27178
+ export type ListProjectWageDeterminationScheduledChangesResponses = {
27179
+ /**
27180
+ * Success with scheduled changes
27181
+ */
27182
+ 200: Array<ProjectWageDeterminationResponseObject>;
27183
+ };
27184
+ export type ListProjectWageDeterminationScheduledChangesResponse = ListProjectWageDeterminationScheduledChangesResponses[keyof ListProjectWageDeterminationScheduledChangesResponses];
27185
+ export type ScheduleProjectWageDeterminationChangeData = {
27186
+ body: ProjectWageDeterminationScheduledChangeParameters;
27187
+ headers: {
27188
+ /**
27189
+ * Version validator this write is composed against — the `ETag` from a read of this determination, or `*` to write against whatever exists. See "Version validators" in the API overview.
27190
+ */
27191
+ 'If-Match': string;
27192
+ };
27193
+ path: {
27194
+ project_id: string;
27195
+ wage_determination_id: string;
27196
+ };
27197
+ query?: never;
27198
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/scheduled_changes';
27199
+ };
27200
+ export type ScheduleProjectWageDeterminationChangeErrors = {
27201
+ /**
27202
+ * Bad Request (missing effective_date)
27203
+ */
27204
+ 400: Problem;
27205
+ /**
27206
+ * Forbidden
27207
+ */
27208
+ 403: Problem;
27209
+ /**
27210
+ * Not Found
27211
+ */
27212
+ 404: Problem;
27213
+ /**
27214
+ * Conflict
27215
+ */
27216
+ 409: Problem;
27217
+ /**
27218
+ * Precondition Failed
27219
+ */
27220
+ 412: Problem;
27221
+ /**
27222
+ * Unprocessable Content
27223
+ */
27224
+ 422: Problem;
27225
+ /**
27226
+ * Precondition Required
27227
+ */
27228
+ 428: Problem;
27229
+ };
27230
+ export type ScheduleProjectWageDeterminationChangeError = ScheduleProjectWageDeterminationChangeErrors[keyof ScheduleProjectWageDeterminationChangeErrors];
27231
+ export type ScheduleProjectWageDeterminationChangeResponses = {
27232
+ /**
27233
+ * Created
27234
+ */
27235
+ 201: ProjectWageDeterminationResponseObject;
27236
+ };
27237
+ export type ScheduleProjectWageDeterminationChangeResponse = ScheduleProjectWageDeterminationChangeResponses[keyof ScheduleProjectWageDeterminationChangeResponses];
27238
+ export type CancelProjectWageDeterminationScheduledTerminationData = {
27239
+ body?: never;
27240
+ headers: {
27241
+ /**
27242
+ * Version validator this write is composed against — the `ETag` from a read of this determination, or `*` to write against whatever exists. See "Version validators" in the API overview.
27243
+ */
27244
+ 'If-Match': string;
27245
+ };
27246
+ path: {
27247
+ project_id: string;
27248
+ wage_determination_id: string;
27249
+ };
27250
+ query?: never;
27251
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/scheduled_termination';
27252
+ };
27253
+ export type CancelProjectWageDeterminationScheduledTerminationErrors = {
27254
+ /**
27255
+ * Forbidden
27256
+ */
27257
+ 403: Problem;
27258
+ /**
27259
+ * Not Found
27260
+ */
27261
+ 404: Problem;
27262
+ /**
27263
+ * Precondition Failed
27264
+ */
27265
+ 412: Problem;
27266
+ /**
27267
+ * Unprocessable Content
27268
+ */
27269
+ 422: Problem;
27270
+ /**
27271
+ * Precondition Required
27272
+ */
27273
+ 428: Problem;
27274
+ };
27275
+ export type CancelProjectWageDeterminationScheduledTerminationError = CancelProjectWageDeterminationScheduledTerminationErrors[keyof CancelProjectWageDeterminationScheduledTerminationErrors];
27276
+ export type CancelProjectWageDeterminationScheduledTerminationResponses = {
27277
+ /**
27278
+ * Success
27279
+ */
27280
+ 200: ProjectWageDeterminationResponseObject;
27281
+ };
27282
+ export type CancelProjectWageDeterminationScheduledTerminationResponse = CancelProjectWageDeterminationScheduledTerminationResponses[keyof CancelProjectWageDeterminationScheduledTerminationResponses];
27283
+ export type ScheduleProjectWageDeterminationTerminationData = {
27284
+ body: ProjectWageDeterminationScheduledTerminationParameters;
27285
+ headers: {
27286
+ /**
27287
+ * Version validator this write is composed against — the `ETag` from a read of this determination, or `*` to write against whatever exists. See "Version validators" in the API overview.
27288
+ */
27289
+ 'If-Match': string;
27290
+ };
27291
+ path: {
27292
+ project_id: string;
27293
+ wage_determination_id: string;
27294
+ };
27295
+ query?: never;
27296
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/scheduled_termination';
27297
+ };
27298
+ export type ScheduleProjectWageDeterminationTerminationErrors = {
27299
+ /**
27300
+ * Bad Request (missing effective_date)
27301
+ */
27302
+ 400: Problem;
27303
+ /**
27304
+ * Forbidden
27305
+ */
27306
+ 403: Problem;
27307
+ /**
27308
+ * Not Found
27309
+ */
27310
+ 404: Problem;
27311
+ /**
27312
+ * Conflict
27313
+ */
27314
+ 409: Problem;
27315
+ /**
27316
+ * Precondition Failed
27317
+ */
27318
+ 412: Problem;
27319
+ /**
27320
+ * Unprocessable Content
27321
+ */
27322
+ 422: Problem;
27323
+ /**
27324
+ * Precondition Required
27325
+ */
27326
+ 428: Problem;
27327
+ };
27328
+ export type ScheduleProjectWageDeterminationTerminationError = ScheduleProjectWageDeterminationTerminationErrors[keyof ScheduleProjectWageDeterminationTerminationErrors];
27329
+ export type ScheduleProjectWageDeterminationTerminationResponses = {
27330
+ /**
27331
+ * Created
27332
+ */
27333
+ 201: ProjectWageDeterminationResponseObject;
27334
+ };
27335
+ export type ScheduleProjectWageDeterminationTerminationResponse = ScheduleProjectWageDeterminationTerminationResponses[keyof ScheduleProjectWageDeterminationTerminationResponses];
26574
27336
  export type ListProjectWageDeterminationsData = {
26575
27337
  body?: never;
26576
27338
  path: {
@@ -26798,6 +27560,18 @@ export type ListProjectsData = {
26798
27560
  * Fuzzy-matches the project name (trigram word-similarity). Matches the name column only — not external_id.
26799
27561
  */
26800
27562
  'filter[name]'?: string;
27563
+ /**
27564
+ * Return only projects whose owned_by_company_id matches this value exactly.
27565
+ */
27566
+ 'filter[owned_by_company_id]'?: string;
27567
+ /**
27568
+ * Return only visible projects that have this job.
27569
+ */
27570
+ 'filter[job_id]'?: string;
27571
+ /**
27572
+ * Return only visible projects that have this site.
27573
+ */
27574
+ 'filter[site_id]'?: string;
26801
27575
  'filter[created_at][gte]'?: string;
26802
27576
  'filter[created_at][lte]'?: string;
26803
27577
  'filter[updated_at][gte]'?: string;
@@ -27107,6 +27881,10 @@ export type CreateApprenticeshipOccupationErrors = {
27107
27881
  * Forbidden
27108
27882
  */
27109
27883
  403: Problem;
27884
+ /**
27885
+ * Not Found
27886
+ */
27887
+ 404: Problem;
27110
27888
  /**
27111
27889
  * Unprocessable Content
27112
27890
  */
@@ -28988,6 +29766,10 @@ export type UpdateTimecodeErrors = {
28988
29766
  * Forbidden
28989
29767
  */
28990
29768
  403: Problem;
29769
+ /**
29770
+ * Not Found
29771
+ */
29772
+ 404: Problem;
28991
29773
  /**
28992
29774
  * Conflict
28993
29775
  */
@@ -29887,6 +30669,10 @@ export type AddUserRolesErrors = {
29887
30669
  * Forbidden
29888
30670
  */
29889
30671
  403: Problem;
30672
+ /**
30673
+ * Not Found
30674
+ */
30675
+ 404: Problem;
29890
30676
  /**
29891
30677
  * Unprocessable Entity
29892
30678
  */
@@ -30301,6 +31087,10 @@ export type CreateUserErrors = {
30301
31087
  * Forbidden
30302
31088
  */
30303
31089
  403: Problem;
31090
+ /**
31091
+ * Not Found
31092
+ */
31093
+ 404: Problem;
30304
31094
  /**
30305
31095
  * Unprocessable Content
30306
31096
  */