@dsptch-work/api-client 0.40.0 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -259,6 +259,12 @@ export type Problem = {
259
259
  *
260
260
  * The upload behind an image attachment's signed id is not an image content type. Upload an image file.
261
261
  *
262
+ * ### certified_payroll_format_unavailable
263
+ *
264
+ * **Certified Payroll Format Unavailable**
265
+ *
266
+ * The named job does not offer this certified payroll format. WH-347 is available only on a job that tracks federal prevailing wage. Use a job that offers the format.
267
+ *
262
268
  * ### company_not_employer
263
269
  *
264
270
  * **Company Not Program Employer**
@@ -313,6 +319,18 @@ export type Problem = {
313
319
  *
314
320
  * An attachment signed id names no upload this endpoint can read. A signed id is issued for one `resource` and verifies only there, so an id for a different resource is indistinguishable from one that is malformed, expired, or tampered with, and all of them answer alike. The message names the resource the upload needed; upload the file again to the direct-uploads endpoint naming it, and pass the signed id that call returns.
315
321
  *
322
+ * ### not_incomplete_permanent_copy
323
+ *
324
+ * **Not An Incomplete Permanent Copy**
325
+ *
326
+ * Ending a form assignment task is allowed only for the open incomplete permanent copy. Completed copies, non-permanent rows, and other uid-family members are refused. Re-read the assignment and end only that open copy.
327
+ *
328
+ * ### nothing_exportable
329
+ *
330
+ * **Nothing Exportable**
331
+ *
332
+ * The requested date range has no reportable pay periods to file for this job. Certified payroll starts at the first week with PWA work and includes only periods whose pay date has elapsed (or, in aggregate mode, periods that have ended). Widen or shift the range, or wait until a period is reportable.
333
+ *
316
334
  * ### nothing_to_cancel
317
335
  *
318
336
  * **Nothing To Cancel**
@@ -394,7 +412,7 @@ export type Problem = {
394
412
  * Another write to the same resource held it for longer than this request was willing to wait, or collided with it, so nothing was applied. The request itself is fine — resend it unchanged after the `Retry-After` window.
395
413
  *
396
414
  */
397
- 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' | 'authorization_revoked' | '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' | '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' | 'database_timeout' | 'write_contended';
415
+ 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' | 'authorization_revoked' | 'import_in_progress' | 'pay_schedule_already_exists' | 'product_archived' | 'recorded_since_termination' | 'span_beyond_timeline_end' | 'version_overlap' | 'precondition_failed' | 'attachment_not_image' | 'certified_payroll_format_unavailable' | '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' | 'not_incomplete_permanent_copy' | 'nothing_exportable' | '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' | 'database_timeout' | 'write_contended';
398
416
  export type ApiKeyScopeResponseObject = {
399
417
  resource: string;
400
418
  action: 'read' | 'create' | 'update' | 'delete';
@@ -407,7 +425,7 @@ export type DirectUploadParameters = {
407
425
  /**
408
426
  * What the file is for, named as the endpoint that will attach it (for example `assets.vendors`). Required. It decides where the file is stored, and the signed ID this call returns is issued for that resource alone — it will not resolve at any other endpoint, so a vendor logo cannot be attached as an avatar, or an avatar as a logo.
409
427
  */
410
- resource: 'assets.items' | 'assets.items.documents' | 'assets.items.service_events' | 'assets.products' | 'assets.vendors' | 'compliance.checks' | 'form_submissions' | 'internal.companies' | 'internal.company_todos' | 'internal.job_todos' | 'internal.project_todos' | 'jobs.documents' | 'pay_periods.imports.aggregate_times' | 'pay_periods.imports.dsptch_cprs' | 'pay_periods.imports.time_entries' | 'payrolls.payroll_runs.imports.paystubs' | 'payrolls.payroll_runs.imports.wide_paystubs' | 'projects.documents' | 'users';
428
+ resource: 'assets.items' | 'assets.items.documents' | 'assets.items.service_events' | 'assets.products' | 'assets.vendors' | 'compliance.checks' | 'form_submissions' | 'internal.companies' | 'internal.company_todos' | 'internal.job_todos' | 'internal.project_todos' | 'jobs.documents' | 'jobs.pwa.apprenticeship.good_faith_effort_exceptions' | 'jobs.pwa.cure_payments' | 'pay_periods.imports.aggregate_times' | 'pay_periods.imports.dsptch_cprs' | 'pay_periods.imports.time_entries' | 'payrolls.payroll_runs.imports.paystubs' | 'payrolls.payroll_runs.imports.wide_paystubs' | 'projects' | 'projects.documents' | 'users';
411
429
  /**
412
430
  * Metadata describing the file being registered, before its bytes are uploaded.
413
431
  */
@@ -792,7 +810,7 @@ export type CompetencyCriterionParameters = {
792
810
  */
793
811
  evidence_note?: string | null;
794
812
  /**
795
- * Suggested assessment methods. Optional. Send an empty array to clear.
813
+ * Suggested assessment methods. Optional. Send an empty array to clear; a repeated method answers 422.
796
814
  */
797
815
  assessment_methods?: Array<'direct_observation' | 'simulation' | 'oral_questioning' | 'written_questioning' | 'products_of_work' | 'recognized_prior_learning' | 'witness_testimony' | 'other'>;
798
816
  };
@@ -1090,21 +1108,21 @@ export type CompetencyEvidenceItemResponseObject = {
1090
1108
  */
1091
1109
  kind: 'upload' | 'form_submission' | 'certification';
1092
1110
  /**
1093
- * Free-text description; null when unset, or when the caller cannot open the form or certification.
1111
+ * Free-text description; null when unset. Omitted when the caller cannot open the item's form submission or certification.
1094
1112
  */
1095
- description: string | null;
1113
+ description?: string | null;
1096
1114
  /**
1097
1115
  * Date the evidence was captured.
1098
1116
  */
1099
1117
  captured_on: string;
1100
1118
  /**
1101
- * ID of the form submission when kind is form_submission and the caller can open it; otherwise null.
1119
+ * ID of the form submission when kind is form_submission; otherwise null. Omitted when the caller cannot open it.
1102
1120
  */
1103
- form_submission_id: string | null;
1121
+ form_submission_id?: string | null;
1104
1122
  /**
1105
- * ID of the user certification when kind is certification and the caller can open it; otherwise null.
1123
+ * ID of the user certification when kind is certification; otherwise null. Omitted when the caller cannot open it.
1106
1124
  */
1107
- user_certification_id: string | null;
1125
+ user_certification_id?: string | null;
1108
1126
  /**
1109
1127
  * ID of the user who added the evidence.
1110
1128
  */
@@ -2780,6 +2798,10 @@ export type AssetsProductResponseObject = {
2780
2798
  * Human-readable product name.
2781
2799
  */
2782
2800
  name: string;
2801
+ /**
2802
+ * Free-text description of the product. Null when not set.
2803
+ */
2804
+ description: string | null;
2783
2805
  /**
2784
2806
  * Universal Product Code; unique within the company. Null when not set.
2785
2807
  */
@@ -2789,7 +2811,7 @@ export type AssetsProductResponseObject = {
2789
2811
  */
2790
2812
  internal_sku: string | null;
2791
2813
  /**
2792
- * Default low-stock reorder threshold for this product's items, applied across sites unless a site overrides it. Null when not set.
2814
+ * Default low-stock reorder threshold for this product's items, applied across sites unless a site overrides it. At least 1; null when not set.
2793
2815
  */
2794
2816
  default_minimum_quantity: number | null;
2795
2817
  /**
@@ -2843,7 +2865,7 @@ export type AssetsProductParameters = {
2843
2865
  */
2844
2866
  name: string;
2845
2867
  /**
2846
- * Free-text description of the product. Write-only — accepted here but not returned in the product response.
2868
+ * Free-text description of the product. Null when not set.
2847
2869
  */
2848
2870
  description?: string | null;
2849
2871
  /**
@@ -2863,7 +2885,7 @@ export type AssetsProductParameters = {
2863
2885
  */
2864
2886
  internal_sku?: string | null;
2865
2887
  /**
2866
- * Default low-stock reorder threshold for this product's items, applied across sites unless a site overrides it. Null when not set.
2888
+ * Default low-stock reorder threshold for this product's items, applied across sites unless a site overrides it. At least 1; null when not set.
2867
2889
  */
2868
2890
  default_minimum_quantity?: number | null;
2869
2891
  /**
@@ -2950,7 +2972,7 @@ export type AssetsProductUpdateParameters = {
2950
2972
  */
2951
2973
  internal_sku?: string | null;
2952
2974
  /**
2953
- * Default low-stock reorder threshold for this product's items, applied across sites unless a site overrides it. Null when not set.
2975
+ * Default low-stock reorder threshold for this product's items, applied across sites unless a site overrides it. At least 1; null when not set.
2954
2976
  */
2955
2977
  default_minimum_quantity?: number | null;
2956
2978
  /**
@@ -3333,7 +3355,7 @@ export type AssetsCategoryParameters = {
3333
3355
  */
3334
3356
  name: string;
3335
3357
  /**
3336
- * ID of the parent category; null for a root category.
3358
+ * ID of the parent category; null or blank files the category at the root. A category that is not visible to the API key, or does not exist, answers 404.
3337
3359
  */
3338
3360
  parent_id?: string | null;
3339
3361
  /**
@@ -3345,7 +3367,7 @@ export type AssetsCategoryParameters = {
3345
3367
  */
3346
3368
  id?: string;
3347
3369
  /**
3348
- * ID of the attribute definition.
3370
+ * ID of the attribute definition to assign. An attribute that is not visible to the API key, or does not exist, answers 404.
3349
3371
  */
3350
3372
  assets_attribute_id?: string;
3351
3373
  /**
@@ -3375,7 +3397,7 @@ export type AssetsCategoryUpdateParameters = {
3375
3397
  */
3376
3398
  name?: string;
3377
3399
  /**
3378
- * ID of the parent category; null for a root category.
3400
+ * ID of the parent category; null or blank files the category at the root. A category that is not visible to the API key, or does not exist, answers 404.
3379
3401
  */
3380
3402
  parent_id?: string | null;
3381
3403
  /**
@@ -3387,7 +3409,7 @@ export type AssetsCategoryUpdateParameters = {
3387
3409
  */
3388
3410
  id?: string;
3389
3411
  /**
3390
- * ID of the attribute definition.
3412
+ * ID of the attribute definition to assign. An attribute that is not visible to the API key, or does not exist, answers 404.
3391
3413
  */
3392
3414
  assets_attribute_id?: string;
3393
3415
  /**
@@ -3786,6 +3808,18 @@ export type PayPeriodConfigResponseObject = {
3786
3808
  * Whether a pay date that falls on a holiday shifts to after the holiday.
3787
3809
  */
3788
3810
  paid_after_holiday: boolean;
3811
+ /**
3812
+ * Whole days from the pay period's end to payday.
3813
+ */
3814
+ arrear_days: number;
3815
+ /**
3816
+ * Whole days after the pay period's end when its time cards lock automatically; null when they never do.
3817
+ */
3818
+ time_card_auto_lock_days: number | null;
3819
+ /**
3820
+ * Time rounding in minutes, 1 or 15.
3821
+ */
3822
+ rounding_interval: 1 | 15;
3789
3823
  /**
3790
3824
  * Whether this is a demo schedule holding non-production data. Null when unset.
3791
3825
  */
@@ -3821,6 +3855,9 @@ export type PayPeriodConfigHistoryCorrectionObject = {
3821
3855
  actuals_enabled: boolean | null;
3822
3856
  requires_external_map_contributor: boolean;
3823
3857
  paid_after_holiday: boolean;
3858
+ arrear_days: number;
3859
+ time_card_auto_lock_days: number | null;
3860
+ rounding_interval: 1 | 15;
3824
3861
  demo: boolean | null;
3825
3862
  valid_from: string | null;
3826
3863
  valid_to: string | null;
@@ -3844,6 +3881,9 @@ export type PayPeriodConfigHistoryVersionObject = {
3844
3881
  actuals_enabled: boolean | null;
3845
3882
  requires_external_map_contributor: boolean;
3846
3883
  paid_after_holiday: boolean;
3884
+ arrear_days: number;
3885
+ time_card_auto_lock_days: number | null;
3886
+ rounding_interval: 1 | 15;
3847
3887
  demo: boolean | null;
3848
3888
  valid_from: string | null;
3849
3889
  valid_to: string | null;
@@ -4691,7 +4731,7 @@ export type JobResponseObject = {
4691
4731
  */
4692
4732
  end_time: string | null;
4693
4733
  /**
4694
- * Purchase order number for the job; null when unset.
4734
+ * The job's External ID; null when unset. A new or changed value must be unique within the creating company, but jobs saved before that rule may still share one.
4695
4735
  */
4696
4736
  purchase_order_number: string | null;
4697
4737
  time_card_start_day: TimeCardStartDay;
@@ -4948,7 +4988,7 @@ export type JobCreateParameters = {
4948
4988
  */
4949
4989
  requested_by_company_id?: string;
4950
4990
  /**
4951
- * Purchase order number for the job; null when unset.
4991
+ * The job's External ID, unique within the creating company. Leading and trailing spaces are removed, and a value another job in that company already holds, compared case-sensitively, answers 422. A job copied from a template does not inherit the template's value. Null or a blank value stores none.
4952
4992
  */
4953
4993
  purchase_order_number?: string | null;
4954
4994
  /**
@@ -5189,7 +5229,7 @@ export type JobUpdateParameters = {
5189
5229
  */
5190
5230
  requested_by_company_id?: string;
5191
5231
  /**
5192
- * Purchase order number for the job; null when unset.
5232
+ * The job's External ID, unique within the creating company. Leading and trailing spaces are removed, and a value another job in that company already holds, compared case-sensitively, answers 422. A job copied from a template does not inherit the template's value. Null or a blank value stores none.
5193
5233
  */
5194
5234
  purchase_order_number?: string | null;
5195
5235
  /**
@@ -6122,17 +6162,33 @@ export type TimeEntryResponseObject = {
6122
6162
  */
6123
6163
  incentive_pay_one_five_x_minutes_worked: number;
6124
6164
  /**
6125
- * Base hourly rate in cents, serialized as a string to preserve precision; the underlying column is arbitrary-precision numeric, so values may include fractional cents. Null when no rate is set.
6165
+ * Base hourly rate in cents, serialized as a string to preserve precision; the underlying column is arbitrary-precision numeric, so values may include fractional cents. Null when no rate is set. Present for company keys and for administrators of the company whose pay schedule holds the entry; omitted for other user keys.
6126
6166
  */
6127
- hourly_rate_cents: string | null;
6167
+ hourly_rate_cents?: string | null;
6128
6168
  /**
6129
- * ISO currency code for the money fields, delegated from the time card's pay schedule.
6169
+ * ISO currency code for the money fields, delegated from the time card's pay schedule. Present for company keys and for administrators of the company whose pay schedule holds the entry; omitted for other user keys.
6130
6170
  */
6131
- currency: string;
6171
+ currency?: string;
6132
6172
  /**
6133
- * Where the base rate came from: one of user_default, position, prevailing_wage, or custom; null when no rate is set. (The schema types this as a free-form nullable string; the value set is defined by the model enum.)
6173
+ * Where the base rate came from: one of user_default, position, prevailing_wage, or custom; null when no rate is set. (The schema types this as a free-form nullable string; the value set is defined by the model enum.) Present for company keys and for administrators of the company whose pay schedule holds the entry; omitted for other user keys.
6134
6174
  */
6135
- hourly_rate_src_type: string | null;
6175
+ hourly_rate_src_type?: string | null;
6176
+ /**
6177
+ * Complete 1.5x overtime wage premium in cents, additional to the base hourly rate; serialized as a decimal string preserving fractional cents. Null when no premium is set. Present for company keys and company administrators; omitted for other user keys.
6178
+ */
6179
+ one_five_x_adder_rate_cents?: string | null;
6180
+ /**
6181
+ * Source of the saved 1.5x overtime wage premium; null when no premium is set. Read-only. Present for company keys and company administrators; omitted for other user keys.
6182
+ */
6183
+ one_five_x_adder_rate_src_type?: 'position' | 'prevailing_wage' | 'custom' | null;
6184
+ /**
6185
+ * Complete 2x overtime wage premium in cents, additional to the base hourly rate; serialized as a decimal string preserving fractional cents. Null when no premium is set. Present for company keys and company administrators; omitted for other user keys.
6186
+ */
6187
+ two_x_adder_rate_cents?: string | null;
6188
+ /**
6189
+ * Source of the saved 2x overtime wage premium; null when no premium is set. Read-only. Present for company keys and company administrators; omitted for other user keys.
6190
+ */
6191
+ two_x_adder_rate_src_type?: 'position' | 'prevailing_wage' | 'custom' | null;
6136
6192
  /**
6137
6193
  * Id of the pay period containing this entry (resolved through the time card).
6138
6194
  */
@@ -6245,6 +6301,14 @@ export type TimeEntryCreateParameters = {
6245
6301
  * Base hourly rate in cents, sent as a string to preserve precision; omit it to let the system derive the rate from the position/user default, and null also derives the default. Admin only on user-scoped keys.
6246
6302
  */
6247
6303
  hourly_rate_cents?: string | null;
6304
+ /**
6305
+ * Complete 1.5x overtime wage premium in cents, additional to the base hourly rate rather than a full overtime wage or another increment. Send a nonnegative decimal string; fractional cents and zero are supported. Omission derives the automatic premium on create and preserves the saved premium on update. Null resets to the current automatic premium. An entered amount equal to the computed premium uses its automatic source; an untouched Custom premium stays Custom if the default catches up. Each tier is independent. Company keys and company administrators may write this field; other user keys receive 403, including for null.
6306
+ */
6307
+ one_five_x_adder_rate_cents?: string | null;
6308
+ /**
6309
+ * Complete 2x overtime wage premium in cents, additional to the base hourly rate rather than a full overtime wage or another increment. Send a nonnegative decimal string; fractional cents and zero are supported. Omission derives the automatic premium on create and preserves the saved premium on update. Null resets to the current automatic premium. An entered amount equal to the computed premium uses its automatic source; an untouched Custom premium stays Custom if the default catches up. Each tier is independent. Company keys and company administrators may write this field; other user keys receive 403, including for null.
6310
+ */
6311
+ two_x_adder_rate_cents?: string | null;
6248
6312
  /**
6249
6313
  * Complete desired set of unique nonblank IDs of the features to allocate to this time entry. Only features your company can view are accepted. Omit to keep the allocations (none on create); send an empty array to clear them. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anything is written.
6250
6314
  */
@@ -6286,6 +6350,14 @@ export type TimeEntryUpdateParameters = {
6286
6350
  * Base hourly rate in cents, sent as a string to preserve precision; omit it to let the system derive the rate from the position/user default, and null also derives the default. Admin only on user-scoped keys.
6287
6351
  */
6288
6352
  hourly_rate_cents?: string | null;
6353
+ /**
6354
+ * Complete 1.5x overtime wage premium in cents, additional to the base hourly rate rather than a full overtime wage or another increment. Send a nonnegative decimal string; fractional cents and zero are supported. Omission derives the automatic premium on create and preserves the saved premium on update. Null resets to the current automatic premium. An entered amount equal to the computed premium uses its automatic source; an untouched Custom premium stays Custom if the default catches up. Each tier is independent. Company keys and company administrators may write this field; other user keys receive 403, including for null.
6355
+ */
6356
+ one_five_x_adder_rate_cents?: string | null;
6357
+ /**
6358
+ * Complete 2x overtime wage premium in cents, additional to the base hourly rate rather than a full overtime wage or another increment. Send a nonnegative decimal string; fractional cents and zero are supported. Omission derives the automatic premium on create and preserves the saved premium on update. Null resets to the current automatic premium. An entered amount equal to the computed premium uses its automatic source; an untouched Custom premium stays Custom if the default catches up. Each tier is independent. Company keys and company administrators may write this field; other user keys receive 403, including for null.
6359
+ */
6360
+ two_x_adder_rate_cents?: string | null;
6289
6361
  /**
6290
6362
  * Complete desired set of unique nonblank IDs of the features to allocate to this time entry. Only features your company can view are accepted. Omit to keep the allocations (none on create); send an empty array to clear them. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anything is written.
6291
6363
  */
@@ -6367,6 +6439,10 @@ export type FormDefinitionObject = {
6367
6439
  * When the record was created (ISO 8601).
6368
6440
  */
6369
6441
  created_at: string;
6442
+ /**
6443
+ * When the form definition was last changed (ISO 8601). The index filters on this value.
6444
+ */
6445
+ updated_at: string;
6370
6446
  };
6371
6447
  /**
6372
6448
  * A page of form definitions. A form definition is a SurveyJS form template built and versioned in the web app's form builder, so this API is read-only.
@@ -6412,7 +6488,7 @@ export type FormSubmissionIndexObject = {
6412
6488
  }>;
6413
6489
  };
6414
6490
  /**
6415
- * A single form submission with resolved answers, returned by both show and create.
6491
+ * A single form submission with resolved answers, returned by show, create, and update.
6416
6492
  */
6417
6493
  export type FormSubmissionResponseObject = {
6418
6494
  /**
@@ -6480,7 +6556,7 @@ export type FormSubmissionCreateParameters = {
6480
6556
  */
6481
6557
  user_id: string;
6482
6558
  /**
6483
- * Answer object keyed by SurveyJS valueName when set, otherwise name. Use question choice values and GlobalIDs for DSPTCH reference questions. Missing or null returns 422. The API validates recursive structure and primitive types. Choice fields accept strings, which are stored unchanged. Choice membership, required answers, dates, and SurveyJS logic are not validated.
6559
+ * Answer object keyed by SurveyJS valueName when set, otherwise name. Use question choice values and GlobalIDs for DSPTCH reference questions. Missing or null returns 422. The API validates recursive structure and primitive types. Choice fields accept strings, which are stored unchanged. Choice membership, required answers, dates, and SurveyJS logic are not validated. File and signature answers take signed IDs from POST /api/v1/direct_uploads with resource form_submissions, never file contents. A file answer is an array of signed IDs, and a signature answer is one. An image file upload must be no larger than 10 MiB. A signature upload must be a PNG or JPEG image, declared as image/png or image/jpeg to match its bytes or as application/octet-stream, no larger than 256 KiB, and no more than 2,000 pixels wide or tall. A submission's signature answers may hold at most 2 MiB together, and an upload counts once for each answer naming it.
6484
6560
  */
6485
6561
  json: {
6486
6562
  [key: string]: unknown;
@@ -6490,6 +6566,21 @@ export type FormSubmissionCreateParameters = {
6490
6566
  */
6491
6567
  timezone?: string;
6492
6568
  };
6569
+ /**
6570
+ * Request body for updating a submission's timezone and answers. Send only fields to change; omitted fields remain unchanged. form_definition_id and user_id cannot change.
6571
+ */
6572
+ export type FormSubmissionUpdateParameters = {
6573
+ /**
6574
+ * Optional IANA timezone such as America/Chicago. Omit to leave it unchanged. A non-string value answers 422.
6575
+ */
6576
+ timezone?: string;
6577
+ /**
6578
+ * SurveyJS answer tree as stored, including file-answer objects with name, type, and content. File content is rewritten through the same writer the web uses. A value that is not an object answers 422.
6579
+ */
6580
+ json?: {
6581
+ [key: string]: unknown;
6582
+ };
6583
+ };
6493
6584
  /**
6494
6585
  * Request body for updating a worker's employment at your company. Corrects administrative fields (employment type, title, manager, payroll id, hire date, and time-and-attendance enrollment) across the whole employment history, and changes the custom-field values it lists. For time-effective pay changes, use the scheduled-changes endpoints instead. A value of the wrong JSON type, a null for a field that is not nullable, or a value outside a listed set answers 422 at its pointer, and nothing is written.
6495
6586
  */
@@ -7184,7 +7275,7 @@ export type AggregateTimeImportResponseObject = {
7184
7275
  */
7185
7276
  status: 'pending' | 'processing' | 'processed' | 'success' | 'failed' | 'superseded' | 'withdrawn';
7186
7277
  /**
7187
- * How many rows passed validation and were prepared for writing. On a `success` import that is also how many rows were written. On a `failed` one it is not — the import writes all of its rows in a single transaction, so a failure part-way through undoes every write already made while this count still reports every row that had been prepared.
7278
+ * How many records the import wrote, not how many rows the file held. It counts job time cards. One job time card is written per worker and job on the period, so several file rows for the same worker and job make one and the count can be lower than the number of rows in the file. On a `success` import that is the number written. On a `failed` import nothing is kept, because the import writes in a single transaction and a failure undoes every write, so the count is only how many had been built when it failed. It is `0` while the import is `pending`.
7188
7279
  */
7189
7280
  processed_rows_count: number;
7190
7281
  /**
@@ -7234,7 +7325,7 @@ export type DsptchCprImportResponseObject = {
7234
7325
  */
7235
7326
  status: 'pending' | 'processing' | 'processed' | 'success' | 'failed' | 'superseded' | 'withdrawn';
7236
7327
  /**
7237
- * How many rows passed validation and were prepared for writing. On a `success` import that is also how many rows were written. On a `failed` one it is not — the import writes all of its rows in a single transaction, so a failure part-way through undoes every write already made while this count still reports every row that had been prepared.
7328
+ * How many records the import wrote, not how many rows the file held. It counts job time cards. One job time card is written per worker and job on the period, so several file rows for the same worker and job make one and the count can be lower than the number of rows in the file. On a `success` import that is the number written. On a `failed` import nothing is kept, because the import writes in a single transaction and a failure undoes every write, so the count is only how many had been built when it failed. It is `0` while the import is `pending`.
7238
7329
  */
7239
7330
  processed_rows_count: number;
7240
7331
  /**
@@ -7284,7 +7375,7 @@ export type PaystubImportResponseObject = {
7284
7375
  */
7285
7376
  status: 'pending' | 'processing' | 'processed' | 'success' | 'failed' | 'superseded' | 'withdrawn';
7286
7377
  /**
7287
- * How many rows passed validation and were prepared for writing. On a `success` import that is also how many rows were written. On a `failed` one it is not — the import writes all of its rows in a single transaction, so a failure part-way through undoes every write already made while this count still reports every row that had been prepared.
7378
+ * How many records the import wrote, not how many rows the file held. It counts paystub line items. Each file row becomes one line item, and a paystub holds the line items of one worker, so the count is not the number of paystubs. On a `success` import that is the number written. On a `failed` import nothing is kept, because the import writes in a single transaction and a failure undoes every write, so the count is only how many had been built when it failed. It is `0` while the import is `pending`.
7288
7379
  */
7289
7380
  processed_rows_count: number;
7290
7381
  /**
@@ -7334,7 +7425,7 @@ export type WidePaystubImportResponseObject = {
7334
7425
  */
7335
7426
  status: 'pending' | 'processing' | 'processed' | 'success' | 'failed' | 'superseded' | 'withdrawn';
7336
7427
  /**
7337
- * How many rows passed validation and were prepared for writing. On a `success` import that is also how many rows were written. On a `failed` one it is not — the import writes all of its rows in a single transaction, so a failure part-way through undoes every write already made while this count still reports every row that had been prepared.
7428
+ * How many records the import wrote, not how many rows the file held. It counts paystubs. Each file row names one worker and becomes one paystub, unless it has no amounts, in which case it writes nothing. On a `success` import that is the number written. On a `failed` import nothing is kept, because the import writes in a single transaction and a failure undoes every write, so the count is only how many had been built when it failed. It is `0` while the import is `pending`.
7338
7429
  */
7339
7430
  processed_rows_count: number;
7340
7431
  /**
@@ -7382,7 +7473,7 @@ export type TimeEntryImportResponseObject = {
7382
7473
  */
7383
7474
  status: 'pending' | 'processing' | 'processed' | 'success' | 'failed' | 'superseded' | 'withdrawn';
7384
7475
  /**
7385
- * How many rows passed validation and were prepared for writing. On a `success` import that is also how many rows were written. On a `failed` one it is not — the import writes all of its rows in a single transaction, so a failure part-way through undoes every write already made while this count still reports every row that had been prepared.
7476
+ * How many records the import wrote, not how many rows the file held. It counts time entries. Each file row becomes one time entry. On a `success` import that is the number written. On a `failed` import nothing is kept, because the import writes in a single transaction and a failure undoes every write, so the count is only how many had been built when it failed. It is `0` while the import is `pending`.
7386
7477
  */
7387
7478
  processed_rows_count: number;
7388
7479
  /**
@@ -7528,19 +7619,19 @@ export type TimeCardResponseObject = {
7528
7619
  2: number;
7529
7620
  };
7530
7621
  /**
7531
- * Total pay for the period in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7622
+ * Total pay for the period in integer cents, as a decimal string. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7532
7623
  */
7533
7624
  pay_cents?: string;
7534
7625
  /**
7535
- * Base-wage portion of pay in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7626
+ * Base-wage portion of pay in integer cents, as a decimal string. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7536
7627
  */
7537
7628
  base_wage_pay_cents?: string;
7538
7629
  /**
7539
- * Additional pay from the 1.5x overtime multiplier in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7630
+ * Additional pay from the 1.5x overtime multiplier in integer cents, as a decimal string. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7540
7631
  */
7541
7632
  one_five_x_adder_cents?: string;
7542
7633
  /**
7543
- * Additional pay from the 2.0x overtime multiplier in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7634
+ * Additional pay from the 2.0x overtime multiplier in integer cents, as a decimal string. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7544
7635
  */
7545
7636
  two_x_adder_cents?: string;
7546
7637
  /**
@@ -7651,19 +7742,19 @@ export type JobTimeCardDayResponseObject = {
7651
7742
  2: number;
7652
7743
  };
7653
7744
  /**
7654
- * Total pay for this date in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7745
+ * Total pay for this date in integer cents, as a decimal string. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7655
7746
  */
7656
7747
  pay_cents?: string;
7657
7748
  /**
7658
- * Base-wage portion of this date's pay in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7749
+ * Base-wage portion of this date's pay in integer cents, as a decimal string. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7659
7750
  */
7660
7751
  base_wage_pay_cents?: string;
7661
7752
  /**
7662
- * Additional pay from the 1.5x overtime multiplier on this date, in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7753
+ * Additional pay from the 1.5x overtime multiplier on this date, in integer cents, as a decimal string. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7663
7754
  */
7664
7755
  one_five_x_adder_cents?: string;
7665
7756
  /**
7666
- * Additional pay from the 2.0x overtime multiplier on this date, in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7757
+ * Additional pay from the 2.0x overtime multiplier on this date, in integer cents, as a decimal string. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7667
7758
  */
7668
7759
  two_x_adder_cents?: string;
7669
7760
  /**
@@ -7819,35 +7910,35 @@ export type JobTimeCardDayResponseObject = {
7819
7910
  2: number;
7820
7911
  };
7821
7912
  /**
7822
- * Pay-period-to-date running total of total pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7913
+ * Pay-period-to-date running total of total pay in integer cents, as a decimal string, through this date. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7823
7914
  */
7824
7915
  cumulative_pay_cents?: string;
7825
7916
  /**
7826
- * Week-to-date running total of total pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7917
+ * Week-to-date running total of total pay in integer cents, as a decimal string, through this date. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7827
7918
  */
7828
7919
  weekly_cumulative_pay_cents?: string;
7829
7920
  /**
7830
- * Pay-period-to-date running total of base-wage pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7921
+ * Pay-period-to-date running total of base-wage pay in integer cents, as a decimal string, through this date. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7831
7922
  */
7832
7923
  cumulative_base_wage_pay_cents?: string;
7833
7924
  /**
7834
- * Week-to-date running total of base-wage pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7925
+ * Week-to-date running total of base-wage pay in integer cents, as a decimal string, through this date. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7835
7926
  */
7836
7927
  weekly_cumulative_base_wage_pay_cents?: string;
7837
7928
  /**
7838
- * Pay-period-to-date running total of 1.5x overtime adder pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7929
+ * Pay-period-to-date running total of 1.5x overtime adder pay in integer cents, as a decimal string, through this date. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7839
7930
  */
7840
7931
  cumulative_one_five_x_adder_cents?: string;
7841
7932
  /**
7842
- * Week-to-date running total of 1.5x overtime adder pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7933
+ * Week-to-date running total of 1.5x overtime adder pay in integer cents, as a decimal string, through this date. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7843
7934
  */
7844
7935
  weekly_cumulative_one_five_x_adder_cents?: string;
7845
7936
  /**
7846
- * Pay-period-to-date running total of 2.0x overtime adder pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7937
+ * Pay-period-to-date running total of 2.0x overtime adder pay in integer cents, as a decimal string, through this date. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7847
7938
  */
7848
7939
  cumulative_two_x_adder_cents?: string;
7849
7940
  /**
7850
- * Week-to-date running total of 2.0x overtime adder pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7941
+ * Week-to-date running total of 2.0x overtime adder pay in integer cents, as a decimal string, through this date. Present for company keys, for administrators of the card's company, and for the person the card belongs to; omitted for other user keys.
7851
7942
  */
7852
7943
  weekly_cumulative_two_x_adder_cents?: string;
7853
7944
  /**
@@ -8040,6 +8131,44 @@ export type TimeOffRequestsResponseObject = {
8040
8131
  */
8041
8132
  data: Array<TimeOffRequestResponseObject>;
8042
8133
  };
8134
+ /**
8135
+ * Create a time-off request for a worker. Instants must be the beginning of the first day and the end of the last day in the company's pay-schedule timezone (company timezone, else UTC). When the filer is the worker the request is born pending; otherwise it is born approved with the filer stamped as reviewer, and an Absence is built in the background.
8136
+ */
8137
+ export type TimeOffRequestParameters = {
8138
+ /**
8139
+ * ID of the worker the request is for. Must be visible to the API key and employed by the company. Required.
8140
+ */
8141
+ user_id: string;
8142
+ /**
8143
+ * ID of the user filing the request. Must be visible to the API key. Required.
8144
+ */
8145
+ performed_by_user_id: string;
8146
+ /**
8147
+ * Kind of non-working time. Required.
8148
+ */
8149
+ absence_type: 'rest_and_recovery' | 'vacation' | 'bereavement' | 'ca_covid_19_sick' | 'custom' | 'jury_duty' | 'unpaid' | 'training' | 'bench';
8150
+ /**
8151
+ * When the requested absence starts (ISO 8601 with a UTC offset). Must be the beginning of the first day in the pay-schedule timezone. Required.
8152
+ */
8153
+ start_time: string;
8154
+ /**
8155
+ * When the requested absence ends (ISO 8601 with a UTC offset). Must be the end of the last day in the pay-schedule timezone. Required.
8156
+ */
8157
+ end_time: string;
8158
+ };
8159
+ /**
8160
+ * Approve, deny, or cancel a pending time-off request. The named filer is the reviewer: only the worker may cancel, and nobody may approve or deny their own row. Approving enqueues the Absence build.
8161
+ */
8162
+ export type TimeOffRequestReviewParameters = {
8163
+ /**
8164
+ * Outcome to record: approved, denied, or cancelled. Required.
8165
+ */
8166
+ status: 'approved' | 'denied' | 'cancelled';
8167
+ /**
8168
+ * ID of the user performing the review. Must be visible to the API key. Required.
8169
+ */
8170
+ performed_by_user_id: string;
8171
+ };
8043
8172
  /**
8044
8173
  * Request body for locking or unlocking a time card.
8045
8174
  */
@@ -8623,6 +8752,81 @@ export type ProjectResponseObject = {
8623
8752
  * IRA placed-in-service date as an ISO8601 date, or null; only meaningful while federal PWA tracking is enabled.
8624
8753
  */
8625
8754
  placed_in_service_date: string | null;
8755
+ /**
8756
+ * Prevailing-wage lock-in supporting document, or null when none is attached.
8757
+ */
8758
+ lock_in_date_doc: {
8759
+ /**
8760
+ * ID of the evidence document; unchanged when the slot's file is replaced.
8761
+ */
8762
+ id: string;
8763
+ /**
8764
+ * Stored name of the uploaded file.
8765
+ */
8766
+ filename: string;
8767
+ /**
8768
+ * MIME type of the file; null when not recorded.
8769
+ */
8770
+ content_type: string | null;
8771
+ /**
8772
+ * Size of the file in bytes.
8773
+ */
8774
+ byte_size: number;
8775
+ /**
8776
+ * A URL to download the file.
8777
+ */
8778
+ url: string;
8779
+ } | null;
8780
+ /**
8781
+ * IRA beginning-of-construction supporting document, or null when none is attached.
8782
+ */
8783
+ beginning_of_construction_doc: {
8784
+ /**
8785
+ * ID of the evidence document; unchanged when the slot's file is replaced.
8786
+ */
8787
+ id: string;
8788
+ /**
8789
+ * Stored name of the uploaded file.
8790
+ */
8791
+ filename: string;
8792
+ /**
8793
+ * MIME type of the file; null when not recorded.
8794
+ */
8795
+ content_type: string | null;
8796
+ /**
8797
+ * Size of the file in bytes.
8798
+ */
8799
+ byte_size: number;
8800
+ /**
8801
+ * A URL to download the file.
8802
+ */
8803
+ url: string;
8804
+ } | null;
8805
+ /**
8806
+ * IRA placed-in-service supporting document, or null when none is attached.
8807
+ */
8808
+ placed_in_service_doc: {
8809
+ /**
8810
+ * ID of the evidence document; unchanged when the slot's file is replaced.
8811
+ */
8812
+ id: string;
8813
+ /**
8814
+ * Stored name of the uploaded file.
8815
+ */
8816
+ filename: string;
8817
+ /**
8818
+ * MIME type of the file; null when not recorded.
8819
+ */
8820
+ content_type: string | null;
8821
+ /**
8822
+ * Size of the file in bytes.
8823
+ */
8824
+ byte_size: number;
8825
+ /**
8826
+ * A URL to download the file.
8827
+ */
8828
+ url: string;
8829
+ } | null;
8626
8830
  /**
8627
8831
  * Time the project was created, as an ISO8601 date-time string.
8628
8832
  */
@@ -8633,7 +8837,7 @@ export type ProjectResponseObject = {
8633
8837
  updated_at: string;
8634
8838
  };
8635
8839
  /**
8636
- * Request body for creating a project. `name` and `created_by_user_id` are required, and omitting either returns 400; the creator must be a member of the owning company. The owning company is inferred from the API key and is not part of the body. Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any project or relationship is saved.
8840
+ * Request body for creating a project. `name` and `created_by_user_id` are required, and omitting either returns 400; the creator must be a member of the owning company. The owning company is inferred from the API key and is not part of the body. IRA evidence files attach through `lock_in_date_doc_signed_id`, `beginning_of_construction_doc_signed_id`, and `placed_in_service_doc_signed_id` (purpose-bound `projects` signed ids); when any of those keys is present, `performed_by_user_id` is required. Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any project or relationship is saved.
8637
8841
  */
8638
8842
  export type ProjectParameters = {
8639
8843
  /**
@@ -8720,13 +8924,29 @@ export type ProjectParameters = {
8720
8924
  * IRA placed-in-service date as an ISO8601 date (YYYY-MM-DD); any other string, a timestamp included, answers 422. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8721
8925
  */
8722
8926
  placed_in_service_date?: string | null;
8927
+ /**
8928
+ * A signed_id from POST /api/v1/direct_uploads registered for `projects` (not `projects.documents`). Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any evidence signed id is present, `performed_by_user_id` is required.
8929
+ */
8930
+ lock_in_date_doc_signed_id?: string;
8931
+ /**
8932
+ * A signed_id from POST /api/v1/direct_uploads registered for `projects` (not `projects.documents`). Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any evidence signed id is present, `performed_by_user_id` is required.
8933
+ */
8934
+ beginning_of_construction_doc_signed_id?: string;
8935
+ /**
8936
+ * A signed_id from POST /api/v1/direct_uploads registered for `projects` (not `projects.documents`). Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any evidence signed id is present, `performed_by_user_id` is required.
8937
+ */
8938
+ placed_in_service_doc_signed_id?: string;
8939
+ /**
8940
+ * ID of the user recorded as creator of a newly attached IRA evidence document. Required when any `*_doc_signed_id` is present (omission then answers 400); ignored when every evidence signed id is omitted. Supplied null, a blank ID, or a wrong type answers 422. A user the API key cannot see answers 404 `reference_not_found`. Replacing a populated slot keeps the original creator and records this user as the actor on the replacement's document history.
8941
+ */
8942
+ performed_by_user_id?: string;
8723
8943
  /**
8724
8944
  * User recorded as the project's creator; must be a member of the owning company. Required on create and immutable thereafter. Omission answers 400; null, a blank ID, or a wrong type answers 422. Send it only on create; every update that includes it returns 400, even when unchanged.
8725
8945
  */
8726
8946
  created_by_user_id: string;
8727
8947
  };
8728
8948
  /**
8729
- * Request body for updating a project. Every field is optional; omit a field to preserve its current value. The resulting project must still satisfy conditional PWA, regional, and schedule validation rules. `created_by_user_id` is create-only; omit it on PATCH. Every update that includes it returns 400, even when unchanged. Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any project or relationship changes.
8949
+ * Request body for updating a project. Every field is optional; omit a field to preserve its current value. The resulting project must still satisfy conditional PWA, regional, and schedule validation rules. `created_by_user_id` is create-only; omit it on PATCH. Every update that includes it returns 400, even when unchanged. IRA evidence files attach through the same `*_doc_signed_id` keys as create; omit a key to keep the stored file, and send `performed_by_user_id` when any signed id is present. Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any project or relationship changes.
8730
8950
  */
8731
8951
  export type ProjectUpdateParameters = {
8732
8952
  /**
@@ -8813,6 +9033,22 @@ export type ProjectUpdateParameters = {
8813
9033
  * IRA placed-in-service date as an ISO8601 date (YYYY-MM-DD); any other string, a timestamp included, answers 422. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8814
9034
  */
8815
9035
  placed_in_service_date?: string | null;
9036
+ /**
9037
+ * A signed_id from POST /api/v1/direct_uploads registered for `projects` (not `projects.documents`). Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any evidence signed id is present, `performed_by_user_id` is required.
9038
+ */
9039
+ lock_in_date_doc_signed_id?: string;
9040
+ /**
9041
+ * A signed_id from POST /api/v1/direct_uploads registered for `projects` (not `projects.documents`). Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any evidence signed id is present, `performed_by_user_id` is required.
9042
+ */
9043
+ beginning_of_construction_doc_signed_id?: string;
9044
+ /**
9045
+ * A signed_id from POST /api/v1/direct_uploads registered for `projects` (not `projects.documents`). Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any evidence signed id is present, `performed_by_user_id` is required.
9046
+ */
9047
+ placed_in_service_doc_signed_id?: string;
9048
+ /**
9049
+ * ID of the user recorded as creator of a newly attached IRA evidence document. Required when any `*_doc_signed_id` is present (omission then answers 400); ignored when every evidence signed id is omitted. Supplied null, a blank ID, or a wrong type answers 422. A user the API key cannot see answers 404 `reference_not_found`. Replacing a populated slot keeps the original creator and records this user as the actor on the replacement's document history.
9050
+ */
9051
+ performed_by_user_id?: string;
8816
9052
  };
8817
9053
  /**
8818
9054
  * A project–site assignment: the join linking a project to a site, optionally scoping which of that site's features apply. Path `{id}` is this join's id, not the Site's. Not included on project GET.
@@ -10407,7 +10643,7 @@ export type JobDocumentUpdateParameters = {
10407
10643
  url?: string | null;
10408
10644
  };
10409
10645
  /**
10410
- * A good-faith-effort exception on a job — a record that the employer requested apprentices from a registered program and did not receive the full request, or that no qualifying program existed. Read-only. Does not include supporting document slots.
10646
+ * A good-faith-effort exception on a job — a record that the employer requested apprentices from a registered program and did not receive the full request, or that no qualifying program existed. Proof files are always present as `null` or a document object; omit a signed-id key on write to keep the stored file.
10411
10647
  */
10412
10648
  export type JobGoodFaithEffortExceptionResponseObject = {
10413
10649
  /**
@@ -10431,7 +10667,7 @@ export type JobGoodFaithEffortExceptionResponseObject = {
10431
10667
  */
10432
10668
  num_apprentices_provided: number | null;
10433
10669
  /**
10434
- * Requested minutes of apprentice labor per apprentice; null when absent. Not converted to hours.
10670
+ * Requested apprentice labor per apprentice, in minutes — always a whole number of hours (a multiple of 60); null when absent. Not converted to hours.
10435
10671
  */
10436
10672
  minutes_per_apprentice: number | null;
10437
10673
  /**
@@ -10458,6 +10694,106 @@ export type JobGoodFaithEffortExceptionResponseObject = {
10458
10694
  * The program's reply — `no_response`, `denied`, or `partial`. Null when `program_unavailable` is true.
10459
10695
  */
10460
10696
  response: 'no_response' | 'denied' | 'partial' | null;
10697
+ /**
10698
+ * The request sent to the apprenticeship program, or null when none is attached.
10699
+ */
10700
+ request_letter: {
10701
+ /**
10702
+ * ID of the evidence document; unchanged when the slot's file is replaced.
10703
+ */
10704
+ id: string;
10705
+ /**
10706
+ * Stored name of the uploaded file.
10707
+ */
10708
+ filename: string;
10709
+ /**
10710
+ * MIME type of the file; null when not recorded.
10711
+ */
10712
+ content_type: string | null;
10713
+ /**
10714
+ * Size of the file in bytes.
10715
+ */
10716
+ byte_size: number;
10717
+ /**
10718
+ * A URL to download the file.
10719
+ */
10720
+ url: string;
10721
+ } | null;
10722
+ /**
10723
+ * Proof that the request was submitted, or null when none is attached.
10724
+ */
10725
+ submission_proof: {
10726
+ /**
10727
+ * ID of the evidence document; unchanged when the slot's file is replaced.
10728
+ */
10729
+ id: string;
10730
+ /**
10731
+ * Stored name of the uploaded file.
10732
+ */
10733
+ filename: string;
10734
+ /**
10735
+ * MIME type of the file; null when not recorded.
10736
+ */
10737
+ content_type: string | null;
10738
+ /**
10739
+ * Size of the file in bytes.
10740
+ */
10741
+ byte_size: number;
10742
+ /**
10743
+ * A URL to download the file.
10744
+ */
10745
+ url: string;
10746
+ } | null;
10747
+ /**
10748
+ * The program's reply document, or null when none is attached.
10749
+ */
10750
+ response_letter: {
10751
+ /**
10752
+ * ID of the evidence document; unchanged when the slot's file is replaced.
10753
+ */
10754
+ id: string;
10755
+ /**
10756
+ * Stored name of the uploaded file.
10757
+ */
10758
+ filename: string;
10759
+ /**
10760
+ * MIME type of the file; null when not recorded.
10761
+ */
10762
+ content_type: string | null;
10763
+ /**
10764
+ * Size of the file in bytes.
10765
+ */
10766
+ byte_size: number;
10767
+ /**
10768
+ * A URL to download the file.
10769
+ */
10770
+ url: string;
10771
+ } | null;
10772
+ /**
10773
+ * Evidence that no qualifying program existed, or null when none is attached.
10774
+ */
10775
+ no_availability_proof: {
10776
+ /**
10777
+ * ID of the evidence document; unchanged when the slot's file is replaced.
10778
+ */
10779
+ id: string;
10780
+ /**
10781
+ * Stored name of the uploaded file.
10782
+ */
10783
+ filename: string;
10784
+ /**
10785
+ * MIME type of the file; null when not recorded.
10786
+ */
10787
+ content_type: string | null;
10788
+ /**
10789
+ * Size of the file in bytes.
10790
+ */
10791
+ byte_size: number;
10792
+ /**
10793
+ * A URL to download the file.
10794
+ */
10795
+ url: string;
10796
+ } | null;
10461
10797
  /**
10462
10798
  * When the exception was created.
10463
10799
  */
@@ -10467,6 +10803,136 @@ export type JobGoodFaithEffortExceptionResponseObject = {
10467
10803
  */
10468
10804
  updated_at: string;
10469
10805
  };
10806
+ /**
10807
+ * Request body for creating a good-faith-effort exception on the job in the path. `job_id` is not part of the body. Every field is optional at the transport layer; model validations answer 422 when the two tracks, presence rules, one-year window, or `response=partial` constraint fail. Proof files attach through `request_letter_signed_id`, `submission_proof_signed_id`, `response_letter_signed_id`, and `no_availability_proof_signed_id` minted by `POST /api/v1/direct_uploads` naming `jobs.pwa.apprenticeship.good_faith_effort_exceptions`; when any of those keys is present, `performed_by_user_id` is required. Undeclared body keys, including the web form's `hours_per_apprentice`, return 400.
10808
+ */
10809
+ export type JobGoodFaithEffortExceptionParameters = {
10810
+ /**
10811
+ * True when no qualifying apprenticeship program existed; false when a program was asked. Omission stores false. Null or a non-boolean answers 422.
10812
+ */
10813
+ program_unavailable?: boolean;
10814
+ /**
10815
+ * Number of apprentices requested. Null or omission is absent; a non-integer answers 422. Presence and comparison rules are model validations.
10816
+ */
10817
+ num_apprentices_requested?: number | null;
10818
+ /**
10819
+ * Number of apprentices the program provided. Null or omission is absent; a non-integer answers 422.
10820
+ */
10821
+ num_apprentices_provided?: number | null;
10822
+ /**
10823
+ * Requested apprentice labor per apprentice, in minutes — not hours — and a whole number of hours, so a multiple of 60 (for example 480 for 8 hours). Null or omission is absent; a non-integer or a value that is not a multiple of 60 answers 422.
10824
+ */
10825
+ minutes_per_apprentice?: number | null;
10826
+ /**
10827
+ * Calendar date the request was made as YYYY-MM-DD, or null. Any other string, a timestamp included, answers 422.
10828
+ */
10829
+ requested_on_date?: string | null;
10830
+ /**
10831
+ * First calendar day of the requested coverage window as YYYY-MM-DD, or null. Any other string, a timestamp included, answers 422.
10832
+ */
10833
+ request_start_date?: string | null;
10834
+ /**
10835
+ * Last calendar day of the requested coverage window as YYYY-MM-DD, or null. Must be on or after request_start_date and at most one year later.
10836
+ */
10837
+ request_end_date?: string | null;
10838
+ /**
10839
+ * Occupation named in the request, or null. Must be absent when `program_unavailable` is true.
10840
+ */
10841
+ occupation?: string | null;
10842
+ /**
10843
+ * Name of the apprenticeship program that was asked, or null. Must be absent when `program_unavailable` is true.
10844
+ */
10845
+ program_name?: string | null;
10846
+ /**
10847
+ * The program's reply — `no_response`, `denied`, or `partial`. Null when `program_unavailable` is true. Any other value answers 422. Must be `partial` when `num_apprentices_provided` is greater than 0.
10848
+ */
10849
+ response?: 'no_response' | 'denied' | 'partial' | null;
10850
+ /**
10851
+ * A signed_id from POST /api/v1/direct_uploads registered for `jobs.pwa.apprenticeship.good_faith_effort_exceptions`. Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any proof signed id is present, `performed_by_user_id` is required.
10852
+ */
10853
+ request_letter_signed_id?: string;
10854
+ /**
10855
+ * A signed_id from POST /api/v1/direct_uploads registered for `jobs.pwa.apprenticeship.good_faith_effort_exceptions`. Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any proof signed id is present, `performed_by_user_id` is required.
10856
+ */
10857
+ submission_proof_signed_id?: string;
10858
+ /**
10859
+ * A signed_id from POST /api/v1/direct_uploads registered for `jobs.pwa.apprenticeship.good_faith_effort_exceptions`. Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any proof signed id is present, `performed_by_user_id` is required.
10860
+ */
10861
+ response_letter_signed_id?: string;
10862
+ /**
10863
+ * A signed_id from POST /api/v1/direct_uploads registered for `jobs.pwa.apprenticeship.good_faith_effort_exceptions`. Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any proof signed id is present, `performed_by_user_id` is required.
10864
+ */
10865
+ no_availability_proof_signed_id?: string;
10866
+ /**
10867
+ * ID of the user recorded as creator of a newly attached proof document. Required when any proof signed id is present (omission then answers 400); ignored when every proof signed id is omitted. Supplied null, a blank ID, or a wrong type answers 422. A user the API key cannot see answers 404 `reference_not_found`. Replacing a populated slot keeps the original creator and records this user as the actor on the replacement's document history.
10868
+ */
10869
+ performed_by_user_id?: string;
10870
+ };
10871
+ /**
10872
+ * Request body for updating a good-faith-effort exception. Every field is optional; omit a field to preserve its current value. The resulting record must still satisfy the two-track, presence, one-year-window, and `response=partial` validations. Proof files attach through the same `*_signed_id` keys as create; omit a key to keep the stored file, and send `performed_by_user_id` when any signed id is present. `job_id` comes from the path and cannot be sent. Undeclared body keys, including `hours_per_apprentice`, return 400.
10873
+ */
10874
+ export type JobGoodFaithEffortExceptionUpdateParameters = {
10875
+ /**
10876
+ * True when no qualifying apprenticeship program existed; false when a program was asked. Omission stores false. Null or a non-boolean answers 422.
10877
+ */
10878
+ program_unavailable?: boolean;
10879
+ /**
10880
+ * Number of apprentices requested. Null or omission is absent; a non-integer answers 422. Presence and comparison rules are model validations.
10881
+ */
10882
+ num_apprentices_requested?: number | null;
10883
+ /**
10884
+ * Number of apprentices the program provided. Null or omission is absent; a non-integer answers 422.
10885
+ */
10886
+ num_apprentices_provided?: number | null;
10887
+ /**
10888
+ * Requested apprentice labor per apprentice, in minutes — not hours — and a whole number of hours, so a multiple of 60 (for example 480 for 8 hours). Null or omission is absent; a non-integer or a value that is not a multiple of 60 answers 422.
10889
+ */
10890
+ minutes_per_apprentice?: number | null;
10891
+ /**
10892
+ * Calendar date the request was made as YYYY-MM-DD, or null. Any other string, a timestamp included, answers 422.
10893
+ */
10894
+ requested_on_date?: string | null;
10895
+ /**
10896
+ * First calendar day of the requested coverage window as YYYY-MM-DD, or null. Any other string, a timestamp included, answers 422.
10897
+ */
10898
+ request_start_date?: string | null;
10899
+ /**
10900
+ * Last calendar day of the requested coverage window as YYYY-MM-DD, or null. Must be on or after request_start_date and at most one year later.
10901
+ */
10902
+ request_end_date?: string | null;
10903
+ /**
10904
+ * Occupation named in the request, or null. Must be absent when `program_unavailable` is true.
10905
+ */
10906
+ occupation?: string | null;
10907
+ /**
10908
+ * Name of the apprenticeship program that was asked, or null. Must be absent when `program_unavailable` is true.
10909
+ */
10910
+ program_name?: string | null;
10911
+ /**
10912
+ * The program's reply — `no_response`, `denied`, or `partial`. Null when `program_unavailable` is true. Any other value answers 422. Must be `partial` when `num_apprentices_provided` is greater than 0.
10913
+ */
10914
+ response?: 'no_response' | 'denied' | 'partial' | null;
10915
+ /**
10916
+ * A signed_id from POST /api/v1/direct_uploads registered for `jobs.pwa.apprenticeship.good_faith_effort_exceptions`. Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any proof signed id is present, `performed_by_user_id` is required.
10917
+ */
10918
+ request_letter_signed_id?: string;
10919
+ /**
10920
+ * A signed_id from POST /api/v1/direct_uploads registered for `jobs.pwa.apprenticeship.good_faith_effort_exceptions`. Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any proof signed id is present, `performed_by_user_id` is required.
10921
+ */
10922
+ submission_proof_signed_id?: string;
10923
+ /**
10924
+ * A signed_id from POST /api/v1/direct_uploads registered for `jobs.pwa.apprenticeship.good_faith_effort_exceptions`. Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any proof signed id is present, `performed_by_user_id` is required.
10925
+ */
10926
+ response_letter_signed_id?: string;
10927
+ /**
10928
+ * A signed_id from POST /api/v1/direct_uploads registered for `jobs.pwa.apprenticeship.good_faith_effort_exceptions`. Omit the key to keep the stored file; a signed id creates or replaces the named-slot document. Null or a blank string answers 422 — there is no clear. When any proof signed id is present, `performed_by_user_id` is required.
10929
+ */
10930
+ no_availability_proof_signed_id?: string;
10931
+ /**
10932
+ * ID of the user recorded as creator of a newly attached proof document. Required when any proof signed id is present (omission then answers 400); ignored when every proof signed id is omitted. Supplied null, a blank ID, or a wrong type answers 422. A user the API key cannot see answers 404 `reference_not_found`. Replacing a populated slot keeps the original creator and records this user as the actor on the replacement's document history.
10933
+ */
10934
+ performed_by_user_id?: string;
10935
+ };
10470
10936
  /**
10471
10937
  * A page of a job's good-faith-effort exceptions, with pagination metadata and navigation links.
10472
10938
  */
@@ -10478,6 +10944,92 @@ export type JobGoodFaithEffortExceptionsResponseObject = {
10478
10944
  */
10479
10945
  data: Array<JobGoodFaithEffortExceptionResponseObject>;
10480
10946
  };
10947
+ /**
10948
+ * A job-scoped WH-347 certified-payroll export. The generation handle is polled through this same document; `file` is null until a ZIP is attached. Signing fields are not published.
10949
+ */
10950
+ export type JobWh347ExportResponseObject = {
10951
+ /**
10952
+ * Id of the WH-347 export row.
10953
+ */
10954
+ id: string;
10955
+ /**
10956
+ * Id of the job this export is scoped to. Always matches the job in the URL path.
10957
+ */
10958
+ job_id: string;
10959
+ /**
10960
+ * First calendar day of the filing window.
10961
+ */
10962
+ start_date: string;
10963
+ /**
10964
+ * Last calendar day of the filing window.
10965
+ */
10966
+ end_date: string;
10967
+ /**
10968
+ * Generation-handle status — `pending`, `processing`, `signing`, `signed`, `certifying`, `success`, or `failed`. Create never enters the signing states; those appear only on jobs created in the web app.
10969
+ */
10970
+ status: 'pending' | 'processing' | 'signing' | 'signed' | 'certifying' | 'success' | 'failed';
10971
+ /**
10972
+ * The generated ZIP's filename, content type, size, and URL; null when no file is attached.
10973
+ */
10974
+ file: {
10975
+ /**
10976
+ * Stored name of the generated ZIP.
10977
+ */
10978
+ filename: string;
10979
+ /**
10980
+ * MIME type of the file; null when not recorded.
10981
+ */
10982
+ content_type: string | null;
10983
+ /**
10984
+ * Size of the file in bytes.
10985
+ */
10986
+ byte_size: number;
10987
+ /**
10988
+ * A URL to download the file.
10989
+ */
10990
+ url: string;
10991
+ } | null;
10992
+ /**
10993
+ * When source data was observed to have drifted from this export; null when it has not.
10994
+ */
10995
+ invalidated_at: string | null;
10996
+ /**
10997
+ * Why the export was invalidated — `source_data_changed`, `source_records_deleted`, or `ratio_status_changed`. Null when `invalidated_at` is null.
10998
+ */
10999
+ invalidation_reason: 'source_data_changed' | 'source_records_deleted' | 'ratio_status_changed' | null;
11000
+ /**
11001
+ * WH-347 form version that was or will be generated — `v1` or `v2`. Server-selected on create.
11002
+ */
11003
+ version: 'v1' | 'v2';
11004
+ /**
11005
+ * When the WH-347 export row was created.
11006
+ */
11007
+ created_at: string;
11008
+ };
11009
+ /**
11010
+ * A page of a job's WH-347 certified-payroll exports, with pagination metadata and navigation links.
11011
+ */
11012
+ export type JobWh347ExportsResponseObject = {
11013
+ meta: Meta;
11014
+ links: Links;
11015
+ /**
11016
+ * The page of WH-347 exports.
11017
+ */
11018
+ data: Array<JobWh347ExportResponseObject>;
11019
+ };
11020
+ /**
11021
+ * Start a job-scoped WH-347 certified-payroll export over a calendar window. Creation requires a user-scoped API key, because the generation handle attributes the export to a person. The response is the pending export; poll the member GET for status and the file URL. Version, filename, and signing are server-owned. A job that does not offer WH-347 answers 422 certified_payroll_format_unavailable. A window with no reportable pay periods answers 422 nothing_exportable.
11022
+ */
11023
+ export type JobWh347ExportCreateParameters = {
11024
+ /**
11025
+ * First calendar day of the filing window, `YYYY-MM-DD`. Required; omission answers 400. Must be on or before `end_date`.
11026
+ */
11027
+ start_date: string;
11028
+ /**
11029
+ * Last calendar day of the filing window, `YYYY-MM-DD`. Required; omission answers 400. Must be on or after `start_date`.
11030
+ */
11031
+ end_date: string;
11032
+ };
10481
11033
  /**
10482
11034
  * A form-completion task attached to a job — a SurveyJS form assigned to users with a due time, optional recurrence, and reminders. Path `{id}` is the `Tasks::JobFormAssignmentTask` id, not the web show `Task#uid`.
10483
11035
  */
@@ -10537,7 +11089,7 @@ export type JobFormAssignmentResponseObject = {
10537
11089
  }>;
10538
11090
  };
10539
11091
  /**
10540
- * A corrective payment recorded against a job's PWA obligations. Read-only. Does not include attestation files, pretty type, currency, or a Money amount.
11092
+ * A corrective payment recorded against a job's PWA obligations. Does not include pretty type, currency, or a Money amount.
10541
11093
  */
10542
11094
  export type JobCurePaymentResponseObject = {
10543
11095
  /**
@@ -10576,6 +11128,31 @@ export type JobCurePaymentResponseObject = {
10576
11128
  * Id of the user who recorded the payment.
10577
11129
  */
10578
11130
  created_by_user_id: string;
11131
+ /**
11132
+ * Attestation file for this payment, or null when none is attached.
11133
+ */
11134
+ attestation: {
11135
+ /**
11136
+ * ID of the attestation document; unchanged when the file is replaced.
11137
+ */
11138
+ id: string;
11139
+ /**
11140
+ * Stored name of the uploaded file.
11141
+ */
11142
+ filename: string;
11143
+ /**
11144
+ * MIME type of the file; null when not recorded.
11145
+ */
11146
+ content_type: string | null;
11147
+ /**
11148
+ * Size of the file in bytes.
11149
+ */
11150
+ byte_size: number;
11151
+ /**
11152
+ * A URL to download the file.
11153
+ */
11154
+ url: string;
11155
+ } | null;
10579
11156
  /**
10580
11157
  * When the payment was created.
10581
11158
  */
@@ -10585,6 +11162,76 @@ export type JobCurePaymentResponseObject = {
10585
11162
  */
10586
11163
  updated_at: string;
10587
11164
  };
11165
+ /**
11166
+ * Request body for creating a job PWA cure payment. `job_id` comes from the path and is not part of the body. `type`, `amount_cents`, the three dates, and `performed_by_user_id` are required; omitting any of those returns 400. The attestation file attaches through `attestation_signed_id` (a purpose-bound `jobs.pwa.cure_payments` signed id). Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any payment is saved.
11167
+ */
11168
+ export type JobCurePaymentParameters = {
11169
+ /**
11170
+ * Payment amount in whole cents as a digit string, for example `"150000"`. A JSON integer, a fractional string, or a non-digit value answers 422.
11171
+ */
11172
+ amount_cents: string;
11173
+ /**
11174
+ * Calendar date the payment was made, as `YYYY-MM-DD`. Any other string, a timestamp included, answers 422. Must not be in the future.
11175
+ */
11176
+ paid_on_date: string;
11177
+ /**
11178
+ * First calendar day of the window this payment cures, as `YYYY-MM-DD`. Must be on or before `cures_to_date` and not in the future.
11179
+ */
11180
+ cures_from_date: string;
11181
+ /**
11182
+ * Last calendar day of the window this payment cures, as `YYYY-MM-DD`. Must be on or after `cures_from_date` and not in the future.
11183
+ */
11184
+ cures_to_date: string;
11185
+ /**
11186
+ * Optional notes; null stores absence.
11187
+ */
11188
+ notes?: string | null;
11189
+ /**
11190
+ * A signed_id from POST /api/v1/direct_uploads registered for `jobs.pwa.cure_payments`. Omit the key to keep the stored file; a signed id creates or replaces the attestation document. Null or a blank string answers 422 — there is no clear.
11191
+ */
11192
+ attestation_signed_id?: string;
11193
+ /**
11194
+ * ID of the user recorded as creator of the payment (and of a newly attached attestation). Required on create (omission answers 400). On update it is required when `attestation_signed_id` is present and ignored when that key is omitted. Supplied null, a blank ID, or a wrong type answers 422. A user the API key cannot see answers 404 `reference_not_found`. Replacing a populated attestation keeps the original document creator and records this user as the actor on the replacement's document history.
11195
+ */
11196
+ performed_by_user_id: string;
11197
+ /**
11198
+ * Stored STI class name — `Pwa::CurePayments::Federal` or `Pwa::CurePayments::Regional`. Create-only; every update that includes it returns 400, even when unchanged.
11199
+ */
11200
+ type: 'Pwa::CurePayments::Federal' | 'Pwa::CurePayments::Regional';
11201
+ };
11202
+ /**
11203
+ * Request body for updating a job PWA cure payment. Every field is optional; omit a field to preserve its current value. `type` is create-only; omit it on PATCH. Every update that includes it returns 400, even when unchanged. The attestation file attaches through the same `attestation_signed_id` key as create; omit the key to keep the stored file, and send `performed_by_user_id` when a signed id is present. Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any payment changes.
11204
+ */
11205
+ export type JobCurePaymentUpdateParameters = {
11206
+ /**
11207
+ * Replacement payment amount in whole cents as a digit string. A JSON integer, a fractional string, or a non-digit value answers 422. Omit to preserve the current amount.
11208
+ */
11209
+ amount_cents?: string;
11210
+ /**
11211
+ * Replacement calendar date the payment was made, as `YYYY-MM-DD`. Must not be in the future.
11212
+ */
11213
+ paid_on_date?: string;
11214
+ /**
11215
+ * Replacement first calendar day of the cured window, as `YYYY-MM-DD`.
11216
+ */
11217
+ cures_from_date?: string;
11218
+ /**
11219
+ * Replacement last calendar day of the cured window, as `YYYY-MM-DD`.
11220
+ */
11221
+ cures_to_date?: string;
11222
+ /**
11223
+ * Replacement notes; null stores absence. Omit to preserve the current value.
11224
+ */
11225
+ notes?: string | null;
11226
+ /**
11227
+ * A signed_id from POST /api/v1/direct_uploads registered for `jobs.pwa.cure_payments`. Omit the key to keep the stored file; a signed id creates or replaces the attestation document. Null or a blank string answers 422 — there is no clear. When this key is present, `performed_by_user_id` is required.
11228
+ */
11229
+ attestation_signed_id?: string;
11230
+ /**
11231
+ * ID of the user recorded as creator of a newly attached attestation. Required when `attestation_signed_id` is present (omission then answers 400); ignored when that key is omitted. A user the API key cannot see answers 404 `reference_not_found`. Replacing a populated slot keeps the original creator and records this user as the actor on the replacement's document history.
11232
+ */
11233
+ performed_by_user_id?: string;
11234
+ };
10588
11235
  /**
10589
11236
  * A page of a job's PWA cure payments, with pagination metadata and navigation links.
10590
11237
  */
@@ -11290,7 +11937,7 @@ export type PositionParameters = {
11290
11937
  };
11291
11938
  };
11292
11939
  /**
11293
- * Parameters for creating a per-unit scope price on a job. `scope_kind` and `unit_price_cents` are required; omitting either answers 400, and a null or wrong-typed value answers 422.
11940
+ * Parameters for creating a per-unit scope price on a job. `scope_kind` is required; omission answers 400. Omit `unit_price_cents` or send null to create with an unknown price. Supplied nonnull prices must be nonnegative decimal strings.
11294
11941
  */
11295
11942
  export type ProductionJobScopePriceParameters = {
11296
11943
  /**
@@ -11298,9 +11945,9 @@ export type ProductionJobScopePriceParameters = {
11298
11945
  */
11299
11946
  scope_kind: string;
11300
11947
  /**
11301
- * Billing rate per unit in cents, as a decimal string (e.g. "120000" or the read form "120000.0" for $1,200.00, or "3.5" for $0.035); a fraction of a cent is kept exactly and bills exactly. A negative value or a JSON number answers 422.
11948
+ * Billing rate per unit in cents, as a decimal string (e.g. "120000" or the read form "120000.0" for $1,200.00, or "3.5" for $0.035); a fraction of a cent is kept exactly and bills exactly. Null means the current price is unknown; "0" is a known zero price. A negative value, blank string, JSON number, or wrong type answers 422.
11302
11949
  */
11303
- unit_price_cents: string;
11950
+ unit_price_cents?: string | null;
11304
11951
  /**
11305
11952
  * Contracted number of units expected for this scope on the job, as an integer; null when no target is set.
11306
11953
  */
@@ -11311,7 +11958,7 @@ export type ProductionJobScopePriceParameters = {
11311
11958
  unit_of_measure?: string;
11312
11959
  };
11313
11960
  /**
11314
- * Parameters for updating a per-unit scope price on a job. Every field is optional; omit a field to preserve its current value, or send null for `contracted_count` to clear it. A null or wrong-typed value for any other field answers 422. The resulting price must retain a scope kind and non-negative unit price.
11961
+ * Parameters for updating a per-unit scope price on a job. Every field is optional; omit a field to preserve its current value. Send null for `unit_price_cents` to clear the known price, or for `contracted_count` to clear the target. A null value for any other field, or a wrong-typed value, answers 422. The resulting price must retain a scope kind; supplied nonnull prices must be nonnegative decimal strings.
11315
11962
  */
11316
11963
  export type ProductionJobScopePriceUpdateParameters = {
11317
11964
  /**
@@ -11319,9 +11966,9 @@ export type ProductionJobScopePriceUpdateParameters = {
11319
11966
  */
11320
11967
  scope_kind?: string;
11321
11968
  /**
11322
- * Billing rate per unit in cents, as a decimal string (e.g. "120000" or the read form "120000.0" for $1,200.00, or "3.5" for $0.035); a fraction of a cent is kept exactly and bills exactly. A negative value or a JSON number answers 422.
11969
+ * Billing rate per unit in cents, as a decimal string (e.g. "120000" or the read form "120000.0" for $1,200.00, or "3.5" for $0.035); a fraction of a cent is kept exactly and bills exactly. Null means the current price is unknown; "0" is a known zero price. A negative value, blank string, JSON number, or wrong type answers 422.
11323
11970
  */
11324
- unit_price_cents?: string;
11971
+ unit_price_cents?: string | null;
11325
11972
  /**
11326
11973
  * Contracted number of units expected for this scope on the job, as an integer; null when no target is set.
11327
11974
  */
@@ -11352,9 +11999,9 @@ export type ProductionJobScopePriceResponseObject = {
11352
11999
  */
11353
12000
  unit_of_measure: string;
11354
12001
  /**
11355
- * Billing rate per unit in cents, as a decimal string (e.g. "120000.0" is $1,200.00 and "3.5" is $0.035); a fraction of a cent is kept exactly. Present for company keys and for administrators, managers, safety managers, and field leads of the company that owns the job; omitted for other user keys.
12002
+ * Billing rate per unit in cents, as a decimal string (e.g. "120000.0" is $1,200.00 and "3.5" is $0.035); a fraction of a cent is kept exactly. Null means the current price is unknown; "0.0" is a known zero price. Present for company keys and for administrators, managers, safety managers, and field leads of the company that owns the job; omitted for other user keys.
11356
12003
  */
11357
- unit_price_cents?: string;
12004
+ unit_price_cents?: string | null;
11358
12005
  /**
11359
12006
  * Contracted number of units expected for this scope on the job; null when no target is set. Present for company keys and for administrators, managers, safety managers, and field leads of the company that owns the job; omitted for other user keys.
11360
12007
  */
@@ -12668,21 +13315,14 @@ export type RegionalJobWageDeterminationHistoryCorrectionObject = {
12668
13315
  updated_at: string;
12669
13316
  };
12670
13317
  /**
12671
- * State-specific rate fields recorded on a Regional determination, as decimal-string money in
12672
- * cents (e.g. "538.0"). Which keys appear is set by the job's region, so this object is always
12673
- * a region-determined subset of these keys — never a fixed shape:
13318
+ * State-specific categorized fringe rates recorded on a Regional determination, as decimal-string
13319
+ * money in cents (e.g. "538.0"). Categorized-fringe regions (currently IL) carry
13320
+ * `combined_health_fringe_rate_cents`, `combined_savings_fringe_rate_cents`,
13321
+ * `combined_holiday_pto_fringe_rate_cents`, `training_fringe_rate_cents`, and
13322
+ * `other_fringe_rate_cents`. These values are non-null when present. Other regions return an empty object.
12674
13323
  *
12675
- * - Categorized-fringe regions (currently IL) carry `combined_health_fringe_rate_cents`,
12676
- * `combined_savings_fringe_rate_cents`, `combined_holiday_pto_fringe_rate_cents`,
12677
- * `training_fringe_rate_cents`, and `other_fringe_rate_cents`.
12678
- * - Overtime-adder regions (currently IL and NY) carry `one_five_x_adder_rate_cents`,
12679
- * `two_x_adder_rate_cents`, `one_five_x_fringe_adder_rate_cents`, and
12680
- * `two_x_fringe_adder_rate_cents`.
12681
- * - A region with neither returns an empty object.
12682
- *
12683
- * Categorized-fringe values are non-null when present; legacy overtime-adder values may be null.
12684
- * The overtime-adder fields are read-only. Configure new overtime premiums through the
12685
- * determination's rate rules.
13324
+ * Overtime wage and fringe premiums belong to the determination's rate-rule package. They are not
13325
+ * returned as scalar regional rate fields.
12686
13326
  *
12687
13327
  */
12688
13328
  export type RegionalWageDeterminationFieldsResponse = {
@@ -15838,7 +16478,7 @@ export type AssetsArchiveParameters = {
15838
16478
  */
15839
16479
  export type AssetsServiceScheduleSeedParameters = {
15840
16480
  /**
15841
- * Optional. Serial item IDs to seed. An ID the API key cannot see answers 404; a visible item the template cannot seed, or a blank member, answers 422 at that member. Omit to seed every seedable item. An empty list, null, or a value that is not an array of strings answers 422.
16481
+ * Optional. Serial item IDs to seed. An ID the API key cannot see answers 404; a visible item the template cannot seed, or a blank member, answers 422 at that member. Omit to seed every seedable item. An empty list, null, a repeated ID, or a value that is not an array of strings answers 422.
15842
16482
  */
15843
16483
  assets_item_ids?: Array<string>;
15844
16484
  /**
@@ -15851,7 +16491,7 @@ export type AssetsServiceScheduleSeedParameters = {
15851
16491
  */
15852
16492
  export type AssetsServiceScheduleSyncParameters = {
15853
16493
  /**
15854
- * Optional. Blocked schedule IDs to sync. An ID the API key cannot see answers 404; a visible schedule the template cannot sync, or a blank member, answers 422 at that member. Omit to sync every blocked schedule. An empty list, null, or a value that is not an array of strings answers 422.
16494
+ * Optional. Blocked schedule IDs to sync. An ID the API key cannot see answers 404; a visible schedule the template cannot sync, or a blank member, answers 422 at that member. Omit to sync every blocked schedule. An empty list, null, a repeated ID, or a value that is not an array of strings answers 422.
15855
16495
  */
15856
16496
  schedule_ids?: Array<string>;
15857
16497
  /**
@@ -17356,6 +17996,10 @@ export type CreateCategoryErrors = {
17356
17996
  * Forbidden
17357
17997
  */
17358
17998
  403: Problem;
17999
+ /**
18000
+ * Not Found
18001
+ */
18002
+ 404: Problem;
17359
18003
  /**
17360
18004
  * Unprocessable Content
17361
18005
  */
@@ -17465,8 +18109,22 @@ export type ListCustodiesData = {
17465
18109
  query?: {
17466
18110
  'filter[assets_item_id]'?: string;
17467
18111
  'filter[user_id]'?: string;
18112
+ 'filter[created_at][gte]'?: string;
18113
+ 'filter[created_at][lte]'?: string;
18114
+ 'filter[updated_at][gte]'?: string;
18115
+ 'filter[updated_at][lte]'?: string;
17468
18116
  filter?: string;
17469
18117
  'filter[unexpected]'?: string;
18118
+ /**
18119
+ * This pagination cursor corresponds to the cursor value found in the response in
18120
+ * `meta.page.next_cursor`.
18121
+ */
18122
+ 'page[cursor]'?: string;
18123
+ /**
18124
+ * 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`.
18125
+ */
18126
+ 'page[limit]'?: number;
18127
+ page?: string;
17470
18128
  };
17471
18129
  url: '/api/v1/assets/custodies';
17472
18130
  };
@@ -17479,6 +18137,10 @@ export type ListCustodiesErrors = {
17479
18137
  * Forbidden
17480
18138
  */
17481
18139
  403: Problem;
18140
+ /**
18141
+ * Unprocessable Content
18142
+ */
18143
+ 422: Problem;
17482
18144
  };
17483
18145
  export type ListCustodiesError = ListCustodiesErrors[keyof ListCustodiesErrors];
17484
18146
  export type ListCustodiesResponses = {
@@ -17753,8 +18415,22 @@ export type ListInventoriesData = {
17753
18415
  query?: {
17754
18416
  'filter[assets_item_id]'?: string;
17755
18417
  'filter[assets_site_id]'?: string;
18418
+ 'filter[created_at][gte]'?: string;
18419
+ 'filter[created_at][lte]'?: string;
18420
+ 'filter[updated_at][gte]'?: string;
18421
+ 'filter[updated_at][lte]'?: string;
17756
18422
  filter?: string;
17757
18423
  'filter[unexpected]'?: string;
18424
+ /**
18425
+ * This pagination cursor corresponds to the cursor value found in the response in
18426
+ * `meta.page.next_cursor`.
18427
+ */
18428
+ 'page[cursor]'?: string;
18429
+ /**
18430
+ * 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`.
18431
+ */
18432
+ 'page[limit]'?: number;
18433
+ page?: string;
17758
18434
  };
17759
18435
  url: '/api/v1/assets/inventories';
17760
18436
  };
@@ -17767,6 +18443,10 @@ export type ListInventoriesErrors = {
17767
18443
  * Forbidden
17768
18444
  */
17769
18445
  403: Problem;
18446
+ /**
18447
+ * Unprocessable Content
18448
+ */
18449
+ 422: Problem;
17770
18450
  };
17771
18451
  export type ListInventoriesError = ListInventoriesErrors[keyof ListInventoriesErrors];
17772
18452
  export type ListInventoriesResponses = {
@@ -18507,6 +19187,37 @@ export type CreateItemFormAssignmentTaskResponses = {
18507
19187
  201: AssetsItemFormAssignmentResponseObject;
18508
19188
  };
18509
19189
  export type CreateItemFormAssignmentTaskResponse = CreateItemFormAssignmentTaskResponses[keyof CreateItemFormAssignmentTaskResponses];
19190
+ export type DeleteFormAssignmentTaskData = {
19191
+ body?: never;
19192
+ path: {
19193
+ item_id: string;
19194
+ id: string;
19195
+ };
19196
+ query?: never;
19197
+ url: '/api/v1/assets/items/{item_id}/form_assignment_tasks/{id}';
19198
+ };
19199
+ export type DeleteFormAssignmentTaskErrors = {
19200
+ /**
19201
+ * Forbidden
19202
+ */
19203
+ 403: Problem;
19204
+ /**
19205
+ * Not Found
19206
+ */
19207
+ 404: Problem;
19208
+ /**
19209
+ * Unprocessable Content
19210
+ */
19211
+ 422: Problem;
19212
+ };
19213
+ export type DeleteFormAssignmentTaskError = DeleteFormAssignmentTaskErrors[keyof DeleteFormAssignmentTaskErrors];
19214
+ export type DeleteFormAssignmentTaskResponses = {
19215
+ /**
19216
+ * No Content
19217
+ */
19218
+ 204: void;
19219
+ };
19220
+ export type DeleteFormAssignmentTaskResponse = DeleteFormAssignmentTaskResponses[keyof DeleteFormAssignmentTaskResponses];
18510
19221
  export type GetFormAssignmentTaskData = {
18511
19222
  body?: never;
18512
19223
  path: {
@@ -18741,10 +19452,17 @@ export type ListVersionsData = {
18741
19452
  item_id: string;
18742
19453
  document_id: string;
18743
19454
  };
18744
- query?: never;
19455
+ query?: {
19456
+ filter?: string;
19457
+ 'filter[unexpected]'?: string;
19458
+ };
18745
19459
  url: '/api/v1/assets/items/{item_id}/documents/{document_id}/versions';
18746
19460
  };
18747
19461
  export type ListVersionsErrors = {
19462
+ /**
19463
+ * Bad Request
19464
+ */
19465
+ 400: Problem;
18748
19466
  /**
18749
19467
  * Forbidden
18750
19468
  */
@@ -19700,8 +20418,22 @@ export type ListTransfersData = {
19700
20418
  *
19701
20419
  */
19702
20420
  'filter[status]'?: string;
20421
+ 'filter[created_at][gte]'?: string;
20422
+ 'filter[created_at][lte]'?: string;
20423
+ 'filter[updated_at][gte]'?: string;
20424
+ 'filter[updated_at][lte]'?: string;
19703
20425
  filter?: string;
19704
20426
  'filter[unexpected]'?: string;
20427
+ /**
20428
+ * This pagination cursor corresponds to the cursor value found in the response in
20429
+ * `meta.page.next_cursor`.
20430
+ */
20431
+ 'page[cursor]'?: string;
20432
+ /**
20433
+ * 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`.
20434
+ */
20435
+ 'page[limit]'?: number;
20436
+ page?: string;
19705
20437
  };
19706
20438
  url: '/api/v1/assets/transfers';
19707
20439
  };
@@ -20123,7 +20855,7 @@ export type ListPwaUserCountsByProjectByMonthsData = {
20123
20855
  path?: never;
20124
20856
  query?: {
20125
20857
  /**
20126
- * Filter to a single month (`YYYY-MM`)
20858
+ * Filter to a single month, written `YYYY-MM`
20127
20859
  */
20128
20860
  'filter[year_month]'?: string;
20129
20861
  'filter[project_id]'?: string;
@@ -20131,6 +20863,16 @@ export type ListPwaUserCountsByProjectByMonthsData = {
20131
20863
  * Filter to one job outside any project
20132
20864
  */
20133
20865
  'filter[job_id]'?: string;
20866
+ /**
20867
+ * This pagination cursor corresponds to the cursor value found in the response in
20868
+ * `meta.page.next_cursor`.
20869
+ */
20870
+ 'page[cursor]'?: string;
20871
+ /**
20872
+ * 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`.
20873
+ */
20874
+ 'page[limit]'?: number;
20875
+ page?: string;
20134
20876
  filter?: string;
20135
20877
  'filter[unexpected]'?: string;
20136
20878
  };
@@ -20145,13 +20887,21 @@ export type ListPwaUserCountsByProjectByMonthsErrors = {
20145
20887
  * Forbidden
20146
20888
  */
20147
20889
  403: Problem;
20890
+ /**
20891
+ * Unprocessable Content
20892
+ */
20893
+ 422: Problem;
20148
20894
  };
20149
20895
  export type ListPwaUserCountsByProjectByMonthsError = ListPwaUserCountsByProjectByMonthsErrors[keyof ListPwaUserCountsByProjectByMonthsErrors];
20150
20896
  export type ListPwaUserCountsByProjectByMonthsResponses = {
20151
20897
  /**
20152
20898
  * Success
20153
20899
  */
20154
- 200: Array<BillingPwaUserCountByProjectByMonthResponseObject>;
20900
+ 200: {
20901
+ meta: Meta;
20902
+ links: Links;
20903
+ data: Array<BillingPwaUserCountByProjectByMonthResponseObject>;
20904
+ };
20155
20905
  };
20156
20906
  export type ListPwaUserCountsByProjectByMonthsResponse = ListPwaUserCountsByProjectByMonthsResponses[keyof ListPwaUserCountsByProjectByMonthsResponses];
20157
20907
  export type ListPackagesData = {
@@ -20604,9 +21354,9 @@ export type CreateCertificationErrors = {
20604
21354
  export type CreateCertificationError = CreateCertificationErrors[keyof CreateCertificationErrors];
20605
21355
  export type CreateCertificationResponses = {
20606
21356
  /**
20607
- * Success
21357
+ * Created
20608
21358
  */
20609
- 200: CertificationResponseObject;
21359
+ 201: CertificationResponseObject;
20610
21360
  };
20611
21361
  export type CreateCertificationResponse = CreateCertificationResponses[keyof CreateCertificationResponses];
20612
21362
  export type DeleteCertificationData = {
@@ -20626,6 +21376,10 @@ export type DeleteCertificationErrors = {
20626
21376
  * Not Found
20627
21377
  */
20628
21378
  404: Problem;
21379
+ /**
21380
+ * Unprocessable Content
21381
+ */
21382
+ 422: Problem;
20629
21383
  };
20630
21384
  export type DeleteCertificationError = DeleteCertificationErrors[keyof DeleteCertificationErrors];
20631
21385
  export type DeleteCertificationResponses = {
@@ -20682,6 +21436,10 @@ export type UpdateCertificationErrors = {
20682
21436
  * Not Found
20683
21437
  */
20684
21438
  404: Problem;
21439
+ /**
21440
+ * Unprocessable Content
21441
+ */
21442
+ 422: Problem;
20685
21443
  };
20686
21444
  export type UpdateCertificationError = UpdateCertificationErrors[keyof UpdateCertificationErrors];
20687
21445
  export type UpdateCertificationResponses = {
@@ -20991,6 +21749,10 @@ export type ListAssessmentsData = {
20991
21749
  * competent or not_yet_competent. Null until the assessment is decided.
20992
21750
  */
20993
21751
  'filter[outcome]'?: 'competent' | 'not_yet_competent' | null;
21752
+ 'filter[created_at][gte]'?: string;
21753
+ 'filter[created_at][lte]'?: string;
21754
+ 'filter[updated_at][gte]'?: string;
21755
+ 'filter[updated_at][lte]'?: string;
20994
21756
  filter?: string;
20995
21757
  'filter[unexpected]'?: string;
20996
21758
  };
@@ -21005,6 +21767,10 @@ export type ListAssessmentsErrors = {
21005
21767
  * Forbidden
21006
21768
  */
21007
21769
  403: Problem;
21770
+ /**
21771
+ * Unprocessable Content
21772
+ */
21773
+ 422: Problem;
21008
21774
  };
21009
21775
  export type ListAssessmentsError = ListAssessmentsErrors[keyof ListAssessmentsErrors];
21010
21776
  export type ListAssessmentsResponses = {
@@ -21050,6 +21816,10 @@ export type ListAssessmentCriteriaData = {
21050
21816
  assessment_id: string;
21051
21817
  };
21052
21818
  query?: {
21819
+ 'filter[created_at][gte]'?: string;
21820
+ 'filter[created_at][lte]'?: string;
21821
+ 'filter[updated_at][gte]'?: string;
21822
+ 'filter[updated_at][lte]'?: string;
21053
21823
  filter?: string;
21054
21824
  'filter[unexpected]'?: string;
21055
21825
  };
@@ -21064,11 +21834,15 @@ export type ListAssessmentCriteriaErrors = {
21064
21834
  * Forbidden
21065
21835
  */
21066
21836
  403: Problem;
21837
+ /**
21838
+ * Unprocessable Content
21839
+ */
21840
+ 422: Problem;
21067
21841
  };
21068
21842
  export type ListAssessmentCriteriaError = ListAssessmentCriteriaErrors[keyof ListAssessmentCriteriaErrors];
21069
21843
  export type ListAssessmentCriteriaResponses = {
21070
21844
  /**
21071
- * Candidate sees a decided review
21845
+ * Success
21072
21846
  */
21073
21847
  200: {
21074
21848
  meta: Meta;
@@ -21111,6 +21885,8 @@ export type ListEvidenceItemsData = {
21111
21885
  * upload, form_submission, or certification.
21112
21886
  */
21113
21887
  'filter[kind]'?: 'upload' | 'form_submission' | 'certification';
21888
+ 'filter[created_at][gte]'?: string;
21889
+ 'filter[created_at][lte]'?: string;
21114
21890
  filter?: string;
21115
21891
  'filter[unexpected]'?: string;
21116
21892
  };
@@ -21125,6 +21901,10 @@ export type ListEvidenceItemsErrors = {
21125
21901
  * Forbidden
21126
21902
  */
21127
21903
  403: Problem;
21904
+ /**
21905
+ * Unprocessable Content
21906
+ */
21907
+ 422: Problem;
21128
21908
  };
21129
21909
  export type ListEvidenceItemsError = ListEvidenceItemsErrors[keyof ListEvidenceItemsErrors];
21130
21910
  export type ListEvidenceItemsResponses = {
@@ -21368,6 +22148,10 @@ export type ListLevelsData = {
21368
22148
  version_id: string;
21369
22149
  };
21370
22150
  query?: {
22151
+ 'filter[created_at][gte]'?: string;
22152
+ 'filter[created_at][lte]'?: string;
22153
+ 'filter[updated_at][gte]'?: string;
22154
+ 'filter[updated_at][lte]'?: string;
21371
22155
  filter?: string;
21372
22156
  'filter[unexpected]'?: string;
21373
22157
  };
@@ -21382,6 +22166,10 @@ export type ListLevelsErrors = {
21382
22166
  * Forbidden
21383
22167
  */
21384
22168
  403: Problem;
22169
+ /**
22170
+ * Unprocessable Content
22171
+ */
22172
+ 422: Problem;
21385
22173
  };
21386
22174
  export type ListLevelsError = ListLevelsErrors[keyof ListLevelsErrors];
21387
22175
  export type ListLevelsResponses = {
@@ -21541,6 +22329,10 @@ export type ListKeyActivitiesData = {
21541
22329
  level_id: string;
21542
22330
  };
21543
22331
  query?: {
22332
+ 'filter[created_at][gte]'?: string;
22333
+ 'filter[created_at][lte]'?: string;
22334
+ 'filter[updated_at][gte]'?: string;
22335
+ 'filter[updated_at][lte]'?: string;
21544
22336
  filter?: string;
21545
22337
  'filter[unexpected]'?: string;
21546
22338
  };
@@ -21555,6 +22347,10 @@ export type ListKeyActivitiesErrors = {
21555
22347
  * Forbidden
21556
22348
  */
21557
22349
  403: Problem;
22350
+ /**
22351
+ * Unprocessable Content
22352
+ */
22353
+ 422: Problem;
21558
22354
  };
21559
22355
  export type ListKeyActivitiesError = ListKeyActivitiesErrors[keyof ListKeyActivitiesErrors];
21560
22356
  export type ListKeyActivitiesResponses = {
@@ -21716,6 +22512,10 @@ export type ListCriteriaData = {
21716
22512
  key_activity_id: string;
21717
22513
  };
21718
22514
  query?: {
22515
+ 'filter[created_at][gte]'?: string;
22516
+ 'filter[created_at][lte]'?: string;
22517
+ 'filter[updated_at][gte]'?: string;
22518
+ 'filter[updated_at][lte]'?: string;
21719
22519
  filter?: string;
21720
22520
  'filter[unexpected]'?: string;
21721
22521
  };
@@ -21730,6 +22530,10 @@ export type ListCriteriaErrors = {
21730
22530
  * Forbidden
21731
22531
  */
21732
22532
  403: Problem;
22533
+ /**
22534
+ * Unprocessable Content
22535
+ */
22536
+ 422: Problem;
21733
22537
  };
21734
22538
  export type ListCriteriaError = ListCriteriaErrors[keyof ListCriteriaErrors];
21735
22539
  export type ListCriteriaResponses = {
@@ -21763,6 +22567,10 @@ export type CreateCriterionErrors = {
21763
22567
  * Forbidden
21764
22568
  */
21765
22569
  403: Problem;
22570
+ /**
22571
+ * Unprocessable Content
22572
+ */
22573
+ 422: Problem;
21766
22574
  };
21767
22575
  export type CreateCriterionError = CreateCriterionErrors[keyof CreateCriterionErrors];
21768
22576
  export type CreateCriterionResponses = {
@@ -21844,6 +22652,10 @@ export type UpdateCriterionErrors = {
21844
22652
  * Forbidden
21845
22653
  */
21846
22654
  403: Problem;
22655
+ /**
22656
+ * Unprocessable Content
22657
+ */
22658
+ 422: Problem;
21847
22659
  };
21848
22660
  export type UpdateCriterionError = UpdateCriterionErrors[keyof UpdateCriterionErrors];
21849
22661
  export type UpdateCriterionResponses = {
@@ -21903,6 +22715,10 @@ export type ListQualificationsData = {
21903
22715
  * Standings at this tier.
21904
22716
  */
21905
22717
  'filter[level_sort_order]'?: number;
22718
+ 'filter[created_at][gte]'?: string;
22719
+ 'filter[created_at][lte]'?: string;
22720
+ 'filter[updated_at][gte]'?: string;
22721
+ 'filter[updated_at][lte]'?: string;
21906
22722
  filter?: string;
21907
22723
  'filter[unexpected]'?: string;
21908
22724
  /**
@@ -21927,6 +22743,10 @@ export type ListQualificationsErrors = {
21927
22743
  * Forbidden
21928
22744
  */
21929
22745
  403: Problem;
22746
+ /**
22747
+ * Unprocessable Content
22748
+ */
22749
+ 422: Problem;
21930
22750
  };
21931
22751
  export type ListQualificationsError = ListQualificationsErrors[keyof ListQualificationsErrors];
21932
22752
  export type ListQualificationsResponses = {
@@ -22350,6 +23170,10 @@ export type PromoteCompetencyStandardVersionErrors = {
22350
23170
  * Forbidden
22351
23171
  */
22352
23172
  403: Problem;
23173
+ /**
23174
+ * Not Found
23175
+ */
23176
+ 404: Problem;
22353
23177
  };
22354
23178
  export type PromoteCompetencyStandardVersionError = PromoteCompetencyStandardVersionErrors[keyof PromoteCompetencyStandardVersionErrors];
22355
23179
  export type PromoteCompetencyStandardVersionResponses = {
@@ -22384,6 +23208,10 @@ export type ListChecksData = {
22384
23208
  'filter[assignee_user_id]'?: string;
22385
23209
  'filter[time_due][gte]'?: string;
22386
23210
  'filter[time_due][lte]'?: string;
23211
+ 'filter[created_at][gte]'?: string;
23212
+ 'filter[created_at][lte]'?: string;
23213
+ 'filter[updated_at][gte]'?: string;
23214
+ 'filter[updated_at][lte]'?: string;
22387
23215
  filter?: string;
22388
23216
  'filter[unexpected]'?: string;
22389
23217
  /**
@@ -22959,6 +23787,36 @@ export type CreateFormSubmissionResponses = {
22959
23787
  201: FormSubmissionResponseObject;
22960
23788
  };
22961
23789
  export type CreateFormSubmissionResponse = CreateFormSubmissionResponses[keyof CreateFormSubmissionResponses];
23790
+ export type DeleteFormSubmissionData = {
23791
+ body?: never;
23792
+ path: {
23793
+ id: string;
23794
+ };
23795
+ query?: never;
23796
+ url: '/api/v1/form_submissions/{id}';
23797
+ };
23798
+ export type DeleteFormSubmissionErrors = {
23799
+ /**
23800
+ * Forbidden
23801
+ */
23802
+ 403: Problem;
23803
+ /**
23804
+ * Not Found
23805
+ */
23806
+ 404: Problem;
23807
+ /**
23808
+ * Unprocessable Content
23809
+ */
23810
+ 422: Problem;
23811
+ };
23812
+ export type DeleteFormSubmissionError = DeleteFormSubmissionErrors[keyof DeleteFormSubmissionErrors];
23813
+ export type DeleteFormSubmissionResponses = {
23814
+ /**
23815
+ * No Content
23816
+ */
23817
+ 204: void;
23818
+ };
23819
+ export type DeleteFormSubmissionResponse = DeleteFormSubmissionResponses[keyof DeleteFormSubmissionResponses];
22962
23820
  export type GetFormSubmissionData = {
22963
23821
  body?: never;
22964
23822
  path: {
@@ -22985,6 +23843,40 @@ export type GetFormSubmissionResponses = {
22985
23843
  200: FormSubmissionResponseObject;
22986
23844
  };
22987
23845
  export type GetFormSubmissionResponse = GetFormSubmissionResponses[keyof GetFormSubmissionResponses];
23846
+ export type UpdateFormSubmissionData = {
23847
+ body?: FormSubmissionUpdateParameters;
23848
+ path: {
23849
+ id: string;
23850
+ };
23851
+ query?: never;
23852
+ url: '/api/v1/form_submissions/{id}';
23853
+ };
23854
+ export type UpdateFormSubmissionErrors = {
23855
+ /**
23856
+ * Bad Request
23857
+ */
23858
+ 400: Problem;
23859
+ /**
23860
+ * Forbidden
23861
+ */
23862
+ 403: Problem;
23863
+ /**
23864
+ * Not Found
23865
+ */
23866
+ 404: Problem;
23867
+ /**
23868
+ * Unprocessable Content
23869
+ */
23870
+ 422: Problem;
23871
+ };
23872
+ export type UpdateFormSubmissionError = UpdateFormSubmissionErrors[keyof UpdateFormSubmissionErrors];
23873
+ export type UpdateFormSubmissionResponses = {
23874
+ /**
23875
+ * Success
23876
+ */
23877
+ 200: FormSubmissionResponseObject;
23878
+ };
23879
+ export type UpdateFormSubmissionResponse = UpdateFormSubmissionResponses[keyof UpdateFormSubmissionResponses];
22988
23880
  export type ListGroupUsersData = {
22989
23881
  body?: never;
22990
23882
  path: {
@@ -23463,6 +24355,37 @@ export type CreateJobFormAssignmentTaskResponses = {
23463
24355
  201: JobFormAssignmentResponseObject;
23464
24356
  };
23465
24357
  export type CreateJobFormAssignmentTaskResponse = CreateJobFormAssignmentTaskResponses[keyof CreateJobFormAssignmentTaskResponses];
24358
+ export type DeleteJobFormAssignmentTaskData = {
24359
+ body?: never;
24360
+ path: {
24361
+ job_id: string;
24362
+ id: string;
24363
+ };
24364
+ query?: never;
24365
+ url: '/api/v1/jobs/{job_id}/form_assignment_tasks/{id}';
24366
+ };
24367
+ export type DeleteJobFormAssignmentTaskErrors = {
24368
+ /**
24369
+ * Forbidden
24370
+ */
24371
+ 403: Problem;
24372
+ /**
24373
+ * Not Found
24374
+ */
24375
+ 404: Problem;
24376
+ /**
24377
+ * Unprocessable Content
24378
+ */
24379
+ 422: Problem;
24380
+ };
24381
+ export type DeleteJobFormAssignmentTaskError = DeleteJobFormAssignmentTaskErrors[keyof DeleteJobFormAssignmentTaskErrors];
24382
+ export type DeleteJobFormAssignmentTaskResponses = {
24383
+ /**
24384
+ * No Content
24385
+ */
24386
+ 204: void;
24387
+ };
24388
+ export type DeleteJobFormAssignmentTaskResponse = DeleteJobFormAssignmentTaskResponses[keyof DeleteJobFormAssignmentTaskResponses];
23466
24389
  export type GetJobFormAssignmentTaskData = {
23467
24390
  body?: never;
23468
24391
  path: {
@@ -23560,6 +24483,10 @@ export type ListJobScopePricesErrors = {
23560
24483
  * Forbidden
23561
24484
  */
23562
24485
  403: Problem;
24486
+ /**
24487
+ * Not Found
24488
+ */
24489
+ 404: Problem;
23563
24490
  /**
23564
24491
  * Unprocessable Content
23565
24492
  */
@@ -23747,6 +24674,67 @@ export type ListGoodFaithEffortExceptionsResponses = {
23747
24674
  200: JobGoodFaithEffortExceptionsResponseObject;
23748
24675
  };
23749
24676
  export type ListGoodFaithEffortExceptionsResponse = ListGoodFaithEffortExceptionsResponses[keyof ListGoodFaithEffortExceptionsResponses];
24677
+ export type CreateGoodFaithEffortExceptionData = {
24678
+ body: JobGoodFaithEffortExceptionParameters;
24679
+ path: {
24680
+ job_id: string;
24681
+ };
24682
+ query?: never;
24683
+ url: '/api/v1/jobs/{job_id}/pwa/apprenticeship/good_faith_effort_exceptions';
24684
+ };
24685
+ export type CreateGoodFaithEffortExceptionErrors = {
24686
+ /**
24687
+ * Bad Request
24688
+ */
24689
+ 400: Problem;
24690
+ /**
24691
+ * Forbidden
24692
+ */
24693
+ 403: Problem;
24694
+ /**
24695
+ * Not Found
24696
+ */
24697
+ 404: Problem;
24698
+ /**
24699
+ * Unprocessable Content (invalid signed id)
24700
+ */
24701
+ 422: Problem;
24702
+ };
24703
+ export type CreateGoodFaithEffortExceptionError = CreateGoodFaithEffortExceptionErrors[keyof CreateGoodFaithEffortExceptionErrors];
24704
+ export type CreateGoodFaithEffortExceptionResponses = {
24705
+ /**
24706
+ * Created
24707
+ */
24708
+ 201: JobGoodFaithEffortExceptionResponseObject;
24709
+ };
24710
+ export type CreateGoodFaithEffortExceptionResponse = CreateGoodFaithEffortExceptionResponses[keyof CreateGoodFaithEffortExceptionResponses];
24711
+ export type DeleteGoodFaithEffortExceptionData = {
24712
+ body?: never;
24713
+ path: {
24714
+ job_id: string;
24715
+ id: string;
24716
+ };
24717
+ query?: never;
24718
+ url: '/api/v1/jobs/{job_id}/pwa/apprenticeship/good_faith_effort_exceptions/{id}';
24719
+ };
24720
+ export type DeleteGoodFaithEffortExceptionErrors = {
24721
+ /**
24722
+ * Forbidden
24723
+ */
24724
+ 403: Problem;
24725
+ /**
24726
+ * Not Found
24727
+ */
24728
+ 404: Problem;
24729
+ };
24730
+ export type DeleteGoodFaithEffortExceptionError = DeleteGoodFaithEffortExceptionErrors[keyof DeleteGoodFaithEffortExceptionErrors];
24731
+ export type DeleteGoodFaithEffortExceptionResponses = {
24732
+ /**
24733
+ * No Content
24734
+ */
24735
+ 204: void;
24736
+ };
24737
+ export type DeleteGoodFaithEffortExceptionResponse = DeleteGoodFaithEffortExceptionResponses[keyof DeleteGoodFaithEffortExceptionResponses];
23750
24738
  export type GetGoodFaithEffortExceptionData = {
23751
24739
  body?: never;
23752
24740
  path: {
@@ -23774,6 +24762,149 @@ export type GetGoodFaithEffortExceptionResponses = {
23774
24762
  200: JobGoodFaithEffortExceptionResponseObject;
23775
24763
  };
23776
24764
  export type GetGoodFaithEffortExceptionResponse = GetGoodFaithEffortExceptionResponses[keyof GetGoodFaithEffortExceptionResponses];
24765
+ export type UpdateGoodFaithEffortExceptionData = {
24766
+ body: JobGoodFaithEffortExceptionUpdateParameters;
24767
+ path: {
24768
+ job_id: string;
24769
+ id: string;
24770
+ };
24771
+ query?: never;
24772
+ url: '/api/v1/jobs/{job_id}/pwa/apprenticeship/good_faith_effort_exceptions/{id}';
24773
+ };
24774
+ export type UpdateGoodFaithEffortExceptionErrors = {
24775
+ /**
24776
+ * Bad Request
24777
+ */
24778
+ 400: Problem;
24779
+ /**
24780
+ * Forbidden
24781
+ */
24782
+ 403: Problem;
24783
+ /**
24784
+ * Not Found
24785
+ */
24786
+ 404: Problem;
24787
+ /**
24788
+ * Unprocessable Content
24789
+ */
24790
+ 422: Problem;
24791
+ };
24792
+ export type UpdateGoodFaithEffortExceptionError = UpdateGoodFaithEffortExceptionErrors[keyof UpdateGoodFaithEffortExceptionErrors];
24793
+ export type UpdateGoodFaithEffortExceptionResponses = {
24794
+ /**
24795
+ * Success
24796
+ */
24797
+ 200: JobGoodFaithEffortExceptionResponseObject;
24798
+ };
24799
+ export type UpdateGoodFaithEffortExceptionResponse = UpdateGoodFaithEffortExceptionResponses[keyof UpdateGoodFaithEffortExceptionResponses];
24800
+ export type ListWh347ExportsData = {
24801
+ body?: never;
24802
+ path: {
24803
+ job_id: string;
24804
+ };
24805
+ query?: {
24806
+ /**
24807
+ * Returns exports whose generation handle has any of these statuses. Comma-separate to match multiple (e.g. `pending,processing`). One of pending, processing, signing, signed, certifying, success, or failed.
24808
+ */
24809
+ 'filter[status]'?: string;
24810
+ filter?: string;
24811
+ 'filter[unexpected]'?: string;
24812
+ /**
24813
+ * This pagination cursor corresponds to the cursor value found in the response in
24814
+ * `meta.page.next_cursor`.
24815
+ */
24816
+ 'page[cursor]'?: string;
24817
+ /**
24818
+ * 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`.
24819
+ */
24820
+ 'page[limit]'?: number;
24821
+ page?: string;
24822
+ };
24823
+ url: '/api/v1/jobs/{job_id}/pwa/certified_payrolls/wh347_exports';
24824
+ };
24825
+ export type ListWh347ExportsErrors = {
24826
+ /**
24827
+ * Bad Request
24828
+ */
24829
+ 400: Problem;
24830
+ /**
24831
+ * Forbidden
24832
+ */
24833
+ 403: Problem;
24834
+ /**
24835
+ * Not Found
24836
+ */
24837
+ 404: Problem;
24838
+ };
24839
+ export type ListWh347ExportsError = ListWh347ExportsErrors[keyof ListWh347ExportsErrors];
24840
+ export type ListWh347ExportsResponses = {
24841
+ /**
24842
+ * Success
24843
+ */
24844
+ 200: JobWh347ExportsResponseObject;
24845
+ };
24846
+ export type ListWh347ExportsResponse = ListWh347ExportsResponses[keyof ListWh347ExportsResponses];
24847
+ export type CreateWh347ExportData = {
24848
+ body: JobWh347ExportCreateParameters;
24849
+ path: {
24850
+ job_id: string;
24851
+ };
24852
+ query?: never;
24853
+ url: '/api/v1/jobs/{job_id}/pwa/certified_payrolls/wh347_exports';
24854
+ };
24855
+ export type CreateWh347ExportErrors = {
24856
+ /**
24857
+ * Bad Request
24858
+ */
24859
+ 400: Problem;
24860
+ /**
24861
+ * Forbidden
24862
+ */
24863
+ 403: Problem;
24864
+ /**
24865
+ * Not Found
24866
+ */
24867
+ 404: Problem;
24868
+ /**
24869
+ * Unprocessable Content
24870
+ */
24871
+ 422: Problem;
24872
+ };
24873
+ export type CreateWh347ExportError = CreateWh347ExportErrors[keyof CreateWh347ExportErrors];
24874
+ export type CreateWh347ExportResponses = {
24875
+ /**
24876
+ * Created
24877
+ */
24878
+ 201: JobWh347ExportResponseObject;
24879
+ };
24880
+ export type CreateWh347ExportResponse = CreateWh347ExportResponses[keyof CreateWh347ExportResponses];
24881
+ export type GetWh347ExportData = {
24882
+ body?: never;
24883
+ path: {
24884
+ job_id: string;
24885
+ id: string;
24886
+ };
24887
+ query?: never;
24888
+ url: '/api/v1/jobs/{job_id}/pwa/certified_payrolls/wh347_exports/{id}';
24889
+ };
24890
+ export type GetWh347ExportErrors = {
24891
+ /**
24892
+ * Forbidden
24893
+ */
24894
+ 403: Problem;
24895
+ /**
24896
+ * Not Found
24897
+ */
24898
+ 404: Problem;
24899
+ };
24900
+ export type GetWh347ExportError = GetWh347ExportErrors[keyof GetWh347ExportErrors];
24901
+ export type GetWh347ExportResponses = {
24902
+ /**
24903
+ * Success
24904
+ */
24905
+ 200: JobWh347ExportResponseObject;
24906
+ };
24907
+ export type GetWh347ExportResponse = GetWh347ExportResponses[keyof GetWh347ExportResponses];
23777
24908
  export type ListCurePaymentsData = {
23778
24909
  body?: never;
23779
24910
  path: {
@@ -23817,6 +24948,67 @@ export type ListCurePaymentsResponses = {
23817
24948
  200: JobCurePaymentsResponseObject;
23818
24949
  };
23819
24950
  export type ListCurePaymentsResponse = ListCurePaymentsResponses[keyof ListCurePaymentsResponses];
24951
+ export type CreateCurePaymentData = {
24952
+ body: JobCurePaymentParameters;
24953
+ path: {
24954
+ job_id: string;
24955
+ };
24956
+ query?: never;
24957
+ url: '/api/v1/jobs/{job_id}/pwa/cure_payments';
24958
+ };
24959
+ export type CreateCurePaymentErrors = {
24960
+ /**
24961
+ * Bad Request
24962
+ */
24963
+ 400: Problem;
24964
+ /**
24965
+ * Forbidden
24966
+ */
24967
+ 403: Problem;
24968
+ /**
24969
+ * Not Found
24970
+ */
24971
+ 404: Problem;
24972
+ /**
24973
+ * Unprocessable Content
24974
+ */
24975
+ 422: Problem;
24976
+ };
24977
+ export type CreateCurePaymentError = CreateCurePaymentErrors[keyof CreateCurePaymentErrors];
24978
+ export type CreateCurePaymentResponses = {
24979
+ /**
24980
+ * Created
24981
+ */
24982
+ 201: JobCurePaymentResponseObject;
24983
+ };
24984
+ export type CreateCurePaymentResponse = CreateCurePaymentResponses[keyof CreateCurePaymentResponses];
24985
+ export type DeleteCurePaymentData = {
24986
+ body?: never;
24987
+ path: {
24988
+ job_id: string;
24989
+ id: string;
24990
+ };
24991
+ query?: never;
24992
+ url: '/api/v1/jobs/{job_id}/pwa/cure_payments/{id}';
24993
+ };
24994
+ export type DeleteCurePaymentErrors = {
24995
+ /**
24996
+ * Forbidden
24997
+ */
24998
+ 403: Problem;
24999
+ /**
25000
+ * Not Found
25001
+ */
25002
+ 404: Problem;
25003
+ };
25004
+ export type DeleteCurePaymentError = DeleteCurePaymentErrors[keyof DeleteCurePaymentErrors];
25005
+ export type DeleteCurePaymentResponses = {
25006
+ /**
25007
+ * No Content
25008
+ */
25009
+ 204: void;
25010
+ };
25011
+ export type DeleteCurePaymentResponse = DeleteCurePaymentResponses[keyof DeleteCurePaymentResponses];
23820
25012
  export type GetCurePaymentData = {
23821
25013
  body?: never;
23822
25014
  path: {
@@ -23844,6 +25036,41 @@ export type GetCurePaymentResponses = {
23844
25036
  200: JobCurePaymentResponseObject;
23845
25037
  };
23846
25038
  export type GetCurePaymentResponse = GetCurePaymentResponses[keyof GetCurePaymentResponses];
25039
+ export type UpdateCurePaymentData = {
25040
+ body: JobCurePaymentUpdateParameters;
25041
+ path: {
25042
+ job_id: string;
25043
+ id: string;
25044
+ };
25045
+ query?: never;
25046
+ url: '/api/v1/jobs/{job_id}/pwa/cure_payments/{id}';
25047
+ };
25048
+ export type UpdateCurePaymentErrors = {
25049
+ /**
25050
+ * Bad Request
25051
+ */
25052
+ 400: Problem;
25053
+ /**
25054
+ * Forbidden
25055
+ */
25056
+ 403: Problem;
25057
+ /**
25058
+ * Not Found
25059
+ */
25060
+ 404: Problem;
25061
+ /**
25062
+ * Unprocessable Content
25063
+ */
25064
+ 422: Problem;
25065
+ };
25066
+ export type UpdateCurePaymentError = UpdateCurePaymentErrors[keyof UpdateCurePaymentErrors];
25067
+ export type UpdateCurePaymentResponses = {
25068
+ /**
25069
+ * Success
25070
+ */
25071
+ 200: JobCurePaymentResponseObject;
25072
+ };
25073
+ export type UpdateCurePaymentResponse = UpdateCurePaymentResponses[keyof UpdateCurePaymentResponses];
23847
25074
  export type CreateJobTradeData = {
23848
25075
  body: PwaTradeParameters;
23849
25076
  path: {
@@ -25478,6 +26705,38 @@ export type CreateFeatureFormAssignmentTaskResponses = {
25478
26705
  201: FeatureFormAssignmentResponseObject;
25479
26706
  };
25480
26707
  export type CreateFeatureFormAssignmentTaskResponse = CreateFeatureFormAssignmentTaskResponses[keyof CreateFeatureFormAssignmentTaskResponses];
26708
+ export type DeleteFeatureFormAssignmentTaskData = {
26709
+ body?: never;
26710
+ path: {
26711
+ site_id: string;
26712
+ feature_id: string;
26713
+ id: string;
26714
+ };
26715
+ query?: never;
26716
+ url: '/api/v1/oversite/sites/{site_id}/features/{feature_id}/form_assignment_tasks/{id}';
26717
+ };
26718
+ export type DeleteFeatureFormAssignmentTaskErrors = {
26719
+ /**
26720
+ * Forbidden
26721
+ */
26722
+ 403: Problem;
26723
+ /**
26724
+ * Not Found
26725
+ */
26726
+ 404: Problem;
26727
+ /**
26728
+ * Unprocessable Content
26729
+ */
26730
+ 422: Problem;
26731
+ };
26732
+ export type DeleteFeatureFormAssignmentTaskError = DeleteFeatureFormAssignmentTaskErrors[keyof DeleteFeatureFormAssignmentTaskErrors];
26733
+ export type DeleteFeatureFormAssignmentTaskResponses = {
26734
+ /**
26735
+ * No Content
26736
+ */
26737
+ 204: void;
26738
+ };
26739
+ export type DeleteFeatureFormAssignmentTaskResponse = DeleteFeatureFormAssignmentTaskResponses[keyof DeleteFeatureFormAssignmentTaskResponses];
25481
26740
  export type GetFeatureFormAssignmentTaskData = {
25482
26741
  body?: never;
25483
26742
  path: {
@@ -25621,6 +26880,37 @@ export type CreateSiteFormAssignmentTaskResponses = {
25621
26880
  201: SiteFormAssignmentResponseObject;
25622
26881
  };
25623
26882
  export type CreateSiteFormAssignmentTaskResponse = CreateSiteFormAssignmentTaskResponses[keyof CreateSiteFormAssignmentTaskResponses];
26883
+ export type DeleteSiteFormAssignmentTaskData = {
26884
+ body?: never;
26885
+ path: {
26886
+ site_id: string;
26887
+ id: string;
26888
+ };
26889
+ query?: never;
26890
+ url: '/api/v1/oversite/sites/{site_id}/form_assignment_tasks/{id}';
26891
+ };
26892
+ export type DeleteSiteFormAssignmentTaskErrors = {
26893
+ /**
26894
+ * Forbidden
26895
+ */
26896
+ 403: Problem;
26897
+ /**
26898
+ * Not Found
26899
+ */
26900
+ 404: Problem;
26901
+ /**
26902
+ * Unprocessable Content
26903
+ */
26904
+ 422: Problem;
26905
+ };
26906
+ export type DeleteSiteFormAssignmentTaskError = DeleteSiteFormAssignmentTaskErrors[keyof DeleteSiteFormAssignmentTaskErrors];
26907
+ export type DeleteSiteFormAssignmentTaskResponses = {
26908
+ /**
26909
+ * No Content
26910
+ */
26911
+ 204: void;
26912
+ };
26913
+ export type DeleteSiteFormAssignmentTaskResponse = DeleteSiteFormAssignmentTaskResponses[keyof DeleteSiteFormAssignmentTaskResponses];
25624
26914
  export type GetSiteFormAssignmentTaskData = {
25625
26915
  body?: never;
25626
26916
  path: {
@@ -27744,6 +29034,10 @@ export type DeleteFringeBenefitPlanErrors = {
27744
29034
  * Not Found
27745
29035
  */
27746
29036
  404: Problem;
29037
+ /**
29038
+ * Unprocessable Content
29039
+ */
29040
+ 422: Problem;
27747
29041
  };
27748
29042
  export type DeleteFringeBenefitPlanError = DeleteFringeBenefitPlanErrors[keyof DeleteFringeBenefitPlanErrors];
27749
29043
  export type DeleteFringeBenefitPlanResponses = {
@@ -28922,6 +30216,10 @@ export type DeleteEmploymentScheduledChangeErrors = {
28922
30216
  * Precondition Failed
28923
30217
  */
28924
30218
  412: Problem;
30219
+ /**
30220
+ * Unprocessable Content
30221
+ */
30222
+ 422: Problem;
28925
30223
  /**
28926
30224
  * Precondition Required
28927
30225
  */
@@ -29872,6 +31170,8 @@ export type ListProjectDocumentVersionsData = {
29872
31170
  */
29873
31171
  'page[limit]'?: number;
29874
31172
  page?: string;
31173
+ filter?: string;
31174
+ 'filter[unexpected]'?: string;
29875
31175
  };
29876
31176
  url: '/api/v1/projects/{project_id}/documents/{document_id}/versions';
29877
31177
  };
@@ -30442,6 +31742,8 @@ export type ListProjectWageDeterminationRateRulesData = {
30442
31742
  'as_of[bogus_axis]'?: string;
30443
31743
  'as_of[valid][gte]'?: string;
30444
31744
  'as_of[transaction]'?: string;
31745
+ filter?: string;
31746
+ 'filter[unexpected]'?: string;
30445
31747
  };
30446
31748
  url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/rate_rules';
30447
31749
  };
@@ -30639,6 +31941,8 @@ export type ListProjectSitesData = {
30639
31941
  */
30640
31942
  'page[limit]'?: number;
30641
31943
  page?: string;
31944
+ filter?: string;
31945
+ 'filter[unexpected]'?: string;
30642
31946
  };
30643
31947
  url: '/api/v1/projects/{project_id}/sites';
30644
31948
  };
@@ -31256,6 +32560,8 @@ export type ListProjectWageDeterminationsData = {
31256
32560
  'as_of[bogus_axis]'?: string;
31257
32561
  'as_of[valid][gte]'?: string;
31258
32562
  'as_of[transaction]'?: string;
32563
+ filter?: string;
32564
+ 'filter[unexpected]'?: string;
31259
32565
  };
31260
32566
  url: '/api/v1/projects/{project_id}/wage_determinations';
31261
32567
  };
@@ -31546,7 +32852,7 @@ export type CreateProjectErrors = {
31546
32852
  */
31547
32853
  404: Problem;
31548
32854
  /**
31549
- * Unprocessable Content
32855
+ * Unprocessable Content (invalid signed id)
31550
32856
  */
31551
32857
  422: Problem;
31552
32858
  };
@@ -32329,6 +33635,10 @@ export type ListPositionsErrors = {
32329
33635
  * Forbidden
32330
33636
  */
32331
33637
  403: Problem;
33638
+ /**
33639
+ * Not Found
33640
+ */
33641
+ 404: Problem;
32332
33642
  /**
32333
33643
  * Unprocessable Content
32334
33644
  */
@@ -34527,6 +35837,38 @@ export type ListTimeOffRequestsResponses = {
34527
35837
  200: TimeOffRequestsResponseObject;
34528
35838
  };
34529
35839
  export type ListTimeOffRequestsResponse = ListTimeOffRequestsResponses[keyof ListTimeOffRequestsResponses];
35840
+ export type CreateTimeOffRequestData = {
35841
+ body: TimeOffRequestParameters;
35842
+ path?: never;
35843
+ query?: never;
35844
+ url: '/api/v1/timekeeping/time_off_requests';
35845
+ };
35846
+ export type CreateTimeOffRequestErrors = {
35847
+ /**
35848
+ * Bad Request
35849
+ */
35850
+ 400: Problem;
35851
+ /**
35852
+ * Forbidden
35853
+ */
35854
+ 403: Problem;
35855
+ /**
35856
+ * Not Found
35857
+ */
35858
+ 404: Problem;
35859
+ /**
35860
+ * Unprocessable Content
35861
+ */
35862
+ 422: Problem;
35863
+ };
35864
+ export type CreateTimeOffRequestError = CreateTimeOffRequestErrors[keyof CreateTimeOffRequestErrors];
35865
+ export type CreateTimeOffRequestResponses = {
35866
+ /**
35867
+ * Created
35868
+ */
35869
+ 201: TimeOffRequestResponseObject;
35870
+ };
35871
+ export type CreateTimeOffRequestResponse = CreateTimeOffRequestResponses[keyof CreateTimeOffRequestResponses];
34530
35872
  export type GetTimeOffRequestData = {
34531
35873
  body?: never;
34532
35874
  path: {
@@ -34553,6 +35895,40 @@ export type GetTimeOffRequestResponses = {
34553
35895
  200: TimeOffRequestResponseObject;
34554
35896
  };
34555
35897
  export type GetTimeOffRequestResponse = GetTimeOffRequestResponses[keyof GetTimeOffRequestResponses];
35898
+ export type CreateReviewData = {
35899
+ body: TimeOffRequestReviewParameters;
35900
+ path: {
35901
+ time_off_request_id: string;
35902
+ };
35903
+ query?: never;
35904
+ url: '/api/v1/timekeeping/time_off_requests/{time_off_request_id}/reviews';
35905
+ };
35906
+ export type CreateReviewErrors = {
35907
+ /**
35908
+ * Bad Request
35909
+ */
35910
+ 400: Problem;
35911
+ /**
35912
+ * Forbidden
35913
+ */
35914
+ 403: Problem;
35915
+ /**
35916
+ * Not Found
35917
+ */
35918
+ 404: Problem;
35919
+ /**
35920
+ * Unprocessable Content
35921
+ */
35922
+ 422: Problem;
35923
+ };
35924
+ export type CreateReviewError = CreateReviewErrors[keyof CreateReviewErrors];
35925
+ export type CreateReviewResponses = {
35926
+ /**
35927
+ * Created
35928
+ */
35929
+ 201: TimeOffRequestResponseObject;
35930
+ };
35931
+ export type CreateReviewResponse = CreateReviewResponses[keyof CreateReviewResponses];
34556
35932
  export type ListTimeSessionsData = {
34557
35933
  body?: never;
34558
35934
  path?: never;
@@ -34747,9 +36123,9 @@ export type AddUserRolesErrors = {
34747
36123
  export type AddUserRolesError = AddUserRolesErrors[keyof AddUserRolesErrors];
34748
36124
  export type AddUserRolesResponses = {
34749
36125
  /**
34750
- * Success
36126
+ * Created
34751
36127
  */
34752
- 200: UserRoleResponse;
36128
+ 201: UserRoleResponse;
34753
36129
  };
34754
36130
  export type AddUserRolesResponse = AddUserRolesResponses[keyof AddUserRolesResponses];
34755
36131
  export type DeleteUserRoleData = {
@@ -34859,6 +36235,10 @@ export type CancelUserCompanyScheduledChangeErrors = {
34859
36235
  * Not Found
34860
36236
  */
34861
36237
  404: Problem;
36238
+ /**
36239
+ * Unprocessable Content
36240
+ */
36241
+ 422: Problem;
34862
36242
  };
34863
36243
  export type CancelUserCompanyScheduledChangeError = CancelUserCompanyScheduledChangeErrors[keyof CancelUserCompanyScheduledChangeErrors];
34864
36244
  export type CancelUserCompanyScheduledChangeResponses = {