@dsptch-work/api-client 0.40.0 → 0.41.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.
@@ -407,7 +407,7 @@ export type DirectUploadParameters = {
407
407
  /**
408
408
  * 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
409
  */
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';
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' | '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
411
  /**
412
412
  * Metadata describing the file being registered, before its bytes are uploaded.
413
413
  */
@@ -1090,21 +1090,21 @@ export type CompetencyEvidenceItemResponseObject = {
1090
1090
  */
1091
1091
  kind: 'upload' | 'form_submission' | 'certification';
1092
1092
  /**
1093
- * Free-text description; null when unset, or when the caller cannot open the form or certification.
1093
+ * Free-text description; null when unset. Omitted when the caller cannot open the item's form submission or certification.
1094
1094
  */
1095
- description: string | null;
1095
+ description?: string | null;
1096
1096
  /**
1097
1097
  * Date the evidence was captured.
1098
1098
  */
1099
1099
  captured_on: string;
1100
1100
  /**
1101
- * ID of the form submission when kind is form_submission and the caller can open it; otherwise null.
1101
+ * ID of the form submission when kind is form_submission; otherwise null. Omitted when the caller cannot open it.
1102
1102
  */
1103
- form_submission_id: string | null;
1103
+ form_submission_id?: string | null;
1104
1104
  /**
1105
- * ID of the user certification when kind is certification and the caller can open it; otherwise null.
1105
+ * ID of the user certification when kind is certification; otherwise null. Omitted when the caller cannot open it.
1106
1106
  */
1107
- user_certification_id: string | null;
1107
+ user_certification_id?: string | null;
1108
1108
  /**
1109
1109
  * ID of the user who added the evidence.
1110
1110
  */
@@ -2780,6 +2780,10 @@ export type AssetsProductResponseObject = {
2780
2780
  * Human-readable product name.
2781
2781
  */
2782
2782
  name: string;
2783
+ /**
2784
+ * Free-text description of the product. Null when not set.
2785
+ */
2786
+ description: string | null;
2783
2787
  /**
2784
2788
  * Universal Product Code; unique within the company. Null when not set.
2785
2789
  */
@@ -2789,7 +2793,7 @@ export type AssetsProductResponseObject = {
2789
2793
  */
2790
2794
  internal_sku: string | null;
2791
2795
  /**
2792
- * Default low-stock reorder threshold for this product's items, applied across sites unless a site overrides it. Null when not set.
2796
+ * 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
2797
  */
2794
2798
  default_minimum_quantity: number | null;
2795
2799
  /**
@@ -2843,7 +2847,7 @@ export type AssetsProductParameters = {
2843
2847
  */
2844
2848
  name: string;
2845
2849
  /**
2846
- * Free-text description of the product. Write-only — accepted here but not returned in the product response.
2850
+ * Free-text description of the product. Null when not set.
2847
2851
  */
2848
2852
  description?: string | null;
2849
2853
  /**
@@ -2863,7 +2867,7 @@ export type AssetsProductParameters = {
2863
2867
  */
2864
2868
  internal_sku?: string | null;
2865
2869
  /**
2866
- * Default low-stock reorder threshold for this product's items, applied across sites unless a site overrides it. Null when not set.
2870
+ * 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
2871
  */
2868
2872
  default_minimum_quantity?: number | null;
2869
2873
  /**
@@ -2950,7 +2954,7 @@ export type AssetsProductUpdateParameters = {
2950
2954
  */
2951
2955
  internal_sku?: string | null;
2952
2956
  /**
2953
- * Default low-stock reorder threshold for this product's items, applied across sites unless a site overrides it. Null when not set.
2957
+ * 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
2958
  */
2955
2959
  default_minimum_quantity?: number | null;
2956
2960
  /**
@@ -3786,6 +3790,18 @@ export type PayPeriodConfigResponseObject = {
3786
3790
  * Whether a pay date that falls on a holiday shifts to after the holiday.
3787
3791
  */
3788
3792
  paid_after_holiday: boolean;
3793
+ /**
3794
+ * Whole days from the pay period's end to payday.
3795
+ */
3796
+ arrear_days: number;
3797
+ /**
3798
+ * Whole days after the pay period's end when its time cards lock automatically; null when they never do.
3799
+ */
3800
+ time_card_auto_lock_days: number | null;
3801
+ /**
3802
+ * Time rounding in minutes, 1 or 15.
3803
+ */
3804
+ rounding_interval: 1 | 15;
3789
3805
  /**
3790
3806
  * Whether this is a demo schedule holding non-production data. Null when unset.
3791
3807
  */
@@ -3821,6 +3837,9 @@ export type PayPeriodConfigHistoryCorrectionObject = {
3821
3837
  actuals_enabled: boolean | null;
3822
3838
  requires_external_map_contributor: boolean;
3823
3839
  paid_after_holiday: boolean;
3840
+ arrear_days: number;
3841
+ time_card_auto_lock_days: number | null;
3842
+ rounding_interval: 1 | 15;
3824
3843
  demo: boolean | null;
3825
3844
  valid_from: string | null;
3826
3845
  valid_to: string | null;
@@ -3844,6 +3863,9 @@ export type PayPeriodConfigHistoryVersionObject = {
3844
3863
  actuals_enabled: boolean | null;
3845
3864
  requires_external_map_contributor: boolean;
3846
3865
  paid_after_holiday: boolean;
3866
+ arrear_days: number;
3867
+ time_card_auto_lock_days: number | null;
3868
+ rounding_interval: 1 | 15;
3847
3869
  demo: boolean | null;
3848
3870
  valid_from: string | null;
3849
3871
  valid_to: string | null;
@@ -4691,7 +4713,7 @@ export type JobResponseObject = {
4691
4713
  */
4692
4714
  end_time: string | null;
4693
4715
  /**
4694
- * Purchase order number for the job; null when unset.
4716
+ * 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
4717
  */
4696
4718
  purchase_order_number: string | null;
4697
4719
  time_card_start_day: TimeCardStartDay;
@@ -4948,7 +4970,7 @@ export type JobCreateParameters = {
4948
4970
  */
4949
4971
  requested_by_company_id?: string;
4950
4972
  /**
4951
- * Purchase order number for the job; null when unset.
4973
+ * 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
4974
  */
4953
4975
  purchase_order_number?: string | null;
4954
4976
  /**
@@ -5189,7 +5211,7 @@ export type JobUpdateParameters = {
5189
5211
  */
5190
5212
  requested_by_company_id?: string;
5191
5213
  /**
5192
- * Purchase order number for the job; null when unset.
5214
+ * 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
5215
  */
5194
5216
  purchase_order_number?: string | null;
5195
5217
  /**
@@ -6122,17 +6144,17 @@ export type TimeEntryResponseObject = {
6122
6144
  */
6123
6145
  incentive_pay_one_five_x_minutes_worked: number;
6124
6146
  /**
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.
6147
+ * 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
6148
  */
6127
- hourly_rate_cents: string | null;
6149
+ hourly_rate_cents?: string | null;
6128
6150
  /**
6129
- * ISO currency code for the money fields, delegated from the time card's pay schedule.
6151
+ * 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
6152
  */
6131
- currency: string;
6153
+ currency?: string;
6132
6154
  /**
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.)
6155
+ * 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
6156
  */
6135
- hourly_rate_src_type: string | null;
6157
+ hourly_rate_src_type?: string | null;
6136
6158
  /**
6137
6159
  * Id of the pay period containing this entry (resolved through the time card).
6138
6160
  */
@@ -6367,6 +6389,10 @@ export type FormDefinitionObject = {
6367
6389
  * When the record was created (ISO 8601).
6368
6390
  */
6369
6391
  created_at: string;
6392
+ /**
6393
+ * When the form definition was last changed (ISO 8601). The index filters on this value.
6394
+ */
6395
+ updated_at: string;
6370
6396
  };
6371
6397
  /**
6372
6398
  * 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 +6438,7 @@ export type FormSubmissionIndexObject = {
6412
6438
  }>;
6413
6439
  };
6414
6440
  /**
6415
- * A single form submission with resolved answers, returned by both show and create.
6441
+ * A single form submission with resolved answers, returned by show, create, and update.
6416
6442
  */
6417
6443
  export type FormSubmissionResponseObject = {
6418
6444
  /**
@@ -6480,7 +6506,7 @@ export type FormSubmissionCreateParameters = {
6480
6506
  */
6481
6507
  user_id: string;
6482
6508
  /**
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.
6509
+ * 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
6510
  */
6485
6511
  json: {
6486
6512
  [key: string]: unknown;
@@ -6490,6 +6516,21 @@ export type FormSubmissionCreateParameters = {
6490
6516
  */
6491
6517
  timezone?: string;
6492
6518
  };
6519
+ /**
6520
+ * 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.
6521
+ */
6522
+ export type FormSubmissionUpdateParameters = {
6523
+ /**
6524
+ * Optional IANA timezone such as America/Chicago. Omit to leave it unchanged. A non-string value answers 422.
6525
+ */
6526
+ timezone?: string;
6527
+ /**
6528
+ * 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.
6529
+ */
6530
+ json?: {
6531
+ [key: string]: unknown;
6532
+ };
6533
+ };
6493
6534
  /**
6494
6535
  * 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
6536
  */
@@ -7184,7 +7225,7 @@ export type AggregateTimeImportResponseObject = {
7184
7225
  */
7185
7226
  status: 'pending' | 'processing' | 'processed' | 'success' | 'failed' | 'superseded' | 'withdrawn';
7186
7227
  /**
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.
7228
+ * 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
7229
  */
7189
7230
  processed_rows_count: number;
7190
7231
  /**
@@ -7234,7 +7275,7 @@ export type DsptchCprImportResponseObject = {
7234
7275
  */
7235
7276
  status: 'pending' | 'processing' | 'processed' | 'success' | 'failed' | 'superseded' | 'withdrawn';
7236
7277
  /**
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.
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`.
7238
7279
  */
7239
7280
  processed_rows_count: number;
7240
7281
  /**
@@ -7284,7 +7325,7 @@ export type PaystubImportResponseObject = {
7284
7325
  */
7285
7326
  status: 'pending' | 'processing' | 'processed' | 'success' | 'failed' | 'superseded' | 'withdrawn';
7286
7327
  /**
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.
7328
+ * 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
7329
  */
7289
7330
  processed_rows_count: number;
7290
7331
  /**
@@ -7334,7 +7375,7 @@ export type WidePaystubImportResponseObject = {
7334
7375
  */
7335
7376
  status: 'pending' | 'processing' | 'processed' | 'success' | 'failed' | 'superseded' | 'withdrawn';
7336
7377
  /**
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.
7378
+ * 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
7379
  */
7339
7380
  processed_rows_count: number;
7340
7381
  /**
@@ -7382,7 +7423,7 @@ export type TimeEntryImportResponseObject = {
7382
7423
  */
7383
7424
  status: 'pending' | 'processing' | 'processed' | 'success' | 'failed' | 'superseded' | 'withdrawn';
7384
7425
  /**
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.
7426
+ * 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
7427
  */
7387
7428
  processed_rows_count: number;
7388
7429
  /**
@@ -8040,6 +8081,44 @@ export type TimeOffRequestsResponseObject = {
8040
8081
  */
8041
8082
  data: Array<TimeOffRequestResponseObject>;
8042
8083
  };
8084
+ /**
8085
+ * 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.
8086
+ */
8087
+ export type TimeOffRequestParameters = {
8088
+ /**
8089
+ * ID of the worker the request is for. Must be visible to the API key and employed by the company. Required.
8090
+ */
8091
+ user_id: string;
8092
+ /**
8093
+ * ID of the user filing the request. Must be visible to the API key. Required.
8094
+ */
8095
+ performed_by_user_id: string;
8096
+ /**
8097
+ * Kind of non-working time. Required.
8098
+ */
8099
+ absence_type: 'rest_and_recovery' | 'vacation' | 'bereavement' | 'ca_covid_19_sick' | 'custom' | 'jury_duty' | 'unpaid' | 'training' | 'bench';
8100
+ /**
8101
+ * 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.
8102
+ */
8103
+ start_time: string;
8104
+ /**
8105
+ * 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.
8106
+ */
8107
+ end_time: string;
8108
+ };
8109
+ /**
8110
+ * 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.
8111
+ */
8112
+ export type TimeOffRequestReviewParameters = {
8113
+ /**
8114
+ * Outcome to record: approved, denied, or cancelled. Required.
8115
+ */
8116
+ status: 'approved' | 'denied' | 'cancelled';
8117
+ /**
8118
+ * ID of the user performing the review. Must be visible to the API key. Required.
8119
+ */
8120
+ performed_by_user_id: string;
8121
+ };
8043
8122
  /**
8044
8123
  * Request body for locking or unlocking a time card.
8045
8124
  */
@@ -8623,6 +8702,81 @@ export type ProjectResponseObject = {
8623
8702
  * IRA placed-in-service date as an ISO8601 date, or null; only meaningful while federal PWA tracking is enabled.
8624
8703
  */
8625
8704
  placed_in_service_date: string | null;
8705
+ /**
8706
+ * Prevailing-wage lock-in supporting document, or null when none is attached.
8707
+ */
8708
+ lock_in_date_doc: {
8709
+ /**
8710
+ * ID of the evidence document; unchanged when the slot's file is replaced.
8711
+ */
8712
+ id: string;
8713
+ /**
8714
+ * Stored name of the uploaded file.
8715
+ */
8716
+ filename: string;
8717
+ /**
8718
+ * MIME type of the file; null when not recorded.
8719
+ */
8720
+ content_type: string | null;
8721
+ /**
8722
+ * Size of the file in bytes.
8723
+ */
8724
+ byte_size: number;
8725
+ /**
8726
+ * A URL to download the file.
8727
+ */
8728
+ url: string;
8729
+ } | null;
8730
+ /**
8731
+ * IRA beginning-of-construction supporting document, or null when none is attached.
8732
+ */
8733
+ beginning_of_construction_doc: {
8734
+ /**
8735
+ * ID of the evidence document; unchanged when the slot's file is replaced.
8736
+ */
8737
+ id: string;
8738
+ /**
8739
+ * Stored name of the uploaded file.
8740
+ */
8741
+ filename: string;
8742
+ /**
8743
+ * MIME type of the file; null when not recorded.
8744
+ */
8745
+ content_type: string | null;
8746
+ /**
8747
+ * Size of the file in bytes.
8748
+ */
8749
+ byte_size: number;
8750
+ /**
8751
+ * A URL to download the file.
8752
+ */
8753
+ url: string;
8754
+ } | null;
8755
+ /**
8756
+ * IRA placed-in-service supporting document, or null when none is attached.
8757
+ */
8758
+ placed_in_service_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;
8626
8780
  /**
8627
8781
  * Time the project was created, as an ISO8601 date-time string.
8628
8782
  */
@@ -8633,7 +8787,7 @@ export type ProjectResponseObject = {
8633
8787
  updated_at: string;
8634
8788
  };
8635
8789
  /**
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.
8790
+ * 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
8791
  */
8638
8792
  export type ProjectParameters = {
8639
8793
  /**
@@ -8720,13 +8874,29 @@ export type ProjectParameters = {
8720
8874
  * 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
8875
  */
8722
8876
  placed_in_service_date?: string | null;
8877
+ /**
8878
+ * 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.
8879
+ */
8880
+ lock_in_date_doc_signed_id?: string;
8881
+ /**
8882
+ * 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.
8883
+ */
8884
+ beginning_of_construction_doc_signed_id?: string;
8885
+ /**
8886
+ * 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.
8887
+ */
8888
+ placed_in_service_doc_signed_id?: string;
8889
+ /**
8890
+ * 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.
8891
+ */
8892
+ performed_by_user_id?: string;
8723
8893
  /**
8724
8894
  * 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
8895
  */
8726
8896
  created_by_user_id: string;
8727
8897
  };
8728
8898
  /**
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.
8899
+ * 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
8900
  */
8731
8901
  export type ProjectUpdateParameters = {
8732
8902
  /**
@@ -8813,6 +8983,22 @@ export type ProjectUpdateParameters = {
8813
8983
  * 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
8984
  */
8815
8985
  placed_in_service_date?: string | null;
8986
+ /**
8987
+ * 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.
8988
+ */
8989
+ lock_in_date_doc_signed_id?: string;
8990
+ /**
8991
+ * 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.
8992
+ */
8993
+ beginning_of_construction_doc_signed_id?: string;
8994
+ /**
8995
+ * 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.
8996
+ */
8997
+ placed_in_service_doc_signed_id?: string;
8998
+ /**
8999
+ * 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.
9000
+ */
9001
+ performed_by_user_id?: string;
8816
9002
  };
8817
9003
  /**
8818
9004
  * 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 +10593,7 @@ export type JobDocumentUpdateParameters = {
10407
10593
  url?: string | null;
10408
10594
  };
10409
10595
  /**
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.
10596
+ * 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
10597
  */
10412
10598
  export type JobGoodFaithEffortExceptionResponseObject = {
10413
10599
  /**
@@ -10458,6 +10644,106 @@ export type JobGoodFaithEffortExceptionResponseObject = {
10458
10644
  * The program's reply — `no_response`, `denied`, or `partial`. Null when `program_unavailable` is true.
10459
10645
  */
10460
10646
  response: 'no_response' | 'denied' | 'partial' | null;
10647
+ /**
10648
+ * The request sent to the apprenticeship program, or null when none is attached.
10649
+ */
10650
+ request_letter: {
10651
+ /**
10652
+ * ID of the evidence document; unchanged when the slot's file is replaced.
10653
+ */
10654
+ id: string;
10655
+ /**
10656
+ * Stored name of the uploaded file.
10657
+ */
10658
+ filename: string;
10659
+ /**
10660
+ * MIME type of the file; null when not recorded.
10661
+ */
10662
+ content_type: string | null;
10663
+ /**
10664
+ * Size of the file in bytes.
10665
+ */
10666
+ byte_size: number;
10667
+ /**
10668
+ * A URL to download the file.
10669
+ */
10670
+ url: string;
10671
+ } | null;
10672
+ /**
10673
+ * Proof that the request was submitted, or null when none is attached.
10674
+ */
10675
+ submission_proof: {
10676
+ /**
10677
+ * ID of the evidence document; unchanged when the slot's file is replaced.
10678
+ */
10679
+ id: string;
10680
+ /**
10681
+ * Stored name of the uploaded file.
10682
+ */
10683
+ filename: string;
10684
+ /**
10685
+ * MIME type of the file; null when not recorded.
10686
+ */
10687
+ content_type: string | null;
10688
+ /**
10689
+ * Size of the file in bytes.
10690
+ */
10691
+ byte_size: number;
10692
+ /**
10693
+ * A URL to download the file.
10694
+ */
10695
+ url: string;
10696
+ } | null;
10697
+ /**
10698
+ * The program's reply document, or null when none is attached.
10699
+ */
10700
+ response_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
+ * Evidence that no qualifying program existed, or null when none is attached.
10724
+ */
10725
+ no_availability_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;
10461
10747
  /**
10462
10748
  * When the exception was created.
10463
10749
  */
@@ -10467,6 +10753,136 @@ export type JobGoodFaithEffortExceptionResponseObject = {
10467
10753
  */
10468
10754
  updated_at: string;
10469
10755
  };
10756
+ /**
10757
+ * 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.
10758
+ */
10759
+ export type JobGoodFaithEffortExceptionParameters = {
10760
+ /**
10761
+ * True when no qualifying apprenticeship program existed; false when a program was asked. Omission stores false. Null or a non-boolean answers 422.
10762
+ */
10763
+ program_unavailable?: boolean;
10764
+ /**
10765
+ * Number of apprentices requested. Null or omission is absent; a non-integer answers 422. Presence and comparison rules are model validations.
10766
+ */
10767
+ num_apprentices_requested?: number | null;
10768
+ /**
10769
+ * Number of apprentices the program provided. Null or omission is absent; a non-integer answers 422.
10770
+ */
10771
+ num_apprentices_provided?: number | null;
10772
+ /**
10773
+ * Requested apprentice labor per apprentice, in minutes — not hours. Null or omission is absent; a non-integer answers 422.
10774
+ */
10775
+ minutes_per_apprentice?: number | null;
10776
+ /**
10777
+ * Calendar date the request was made as YYYY-MM-DD, or null. Any other string, a timestamp included, answers 422.
10778
+ */
10779
+ requested_on_date?: string | null;
10780
+ /**
10781
+ * First calendar day of the requested coverage window as YYYY-MM-DD, or null. Any other string, a timestamp included, answers 422.
10782
+ */
10783
+ request_start_date?: string | null;
10784
+ /**
10785
+ * 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.
10786
+ */
10787
+ request_end_date?: string | null;
10788
+ /**
10789
+ * Occupation named in the request, or null. Must be absent when `program_unavailable` is true.
10790
+ */
10791
+ occupation?: string | null;
10792
+ /**
10793
+ * Name of the apprenticeship program that was asked, or null. Must be absent when `program_unavailable` is true.
10794
+ */
10795
+ program_name?: string | null;
10796
+ /**
10797
+ * 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.
10798
+ */
10799
+ response?: 'no_response' | 'denied' | 'partial' | null;
10800
+ /**
10801
+ * 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.
10802
+ */
10803
+ request_letter_signed_id?: string;
10804
+ /**
10805
+ * 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.
10806
+ */
10807
+ submission_proof_signed_id?: string;
10808
+ /**
10809
+ * 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.
10810
+ */
10811
+ response_letter_signed_id?: string;
10812
+ /**
10813
+ * 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.
10814
+ */
10815
+ no_availability_proof_signed_id?: string;
10816
+ /**
10817
+ * 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.
10818
+ */
10819
+ performed_by_user_id?: string;
10820
+ };
10821
+ /**
10822
+ * 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.
10823
+ */
10824
+ export type JobGoodFaithEffortExceptionUpdateParameters = {
10825
+ /**
10826
+ * True when no qualifying apprenticeship program existed; false when a program was asked. Omission stores false. Null or a non-boolean answers 422.
10827
+ */
10828
+ program_unavailable?: boolean;
10829
+ /**
10830
+ * Number of apprentices requested. Null or omission is absent; a non-integer answers 422. Presence and comparison rules are model validations.
10831
+ */
10832
+ num_apprentices_requested?: number | null;
10833
+ /**
10834
+ * Number of apprentices the program provided. Null or omission is absent; a non-integer answers 422.
10835
+ */
10836
+ num_apprentices_provided?: number | null;
10837
+ /**
10838
+ * Requested apprentice labor per apprentice, in minutes — not hours. Null or omission is absent; a non-integer answers 422.
10839
+ */
10840
+ minutes_per_apprentice?: number | null;
10841
+ /**
10842
+ * Calendar date the request was made as YYYY-MM-DD, or null. Any other string, a timestamp included, answers 422.
10843
+ */
10844
+ requested_on_date?: string | null;
10845
+ /**
10846
+ * First calendar day of the requested coverage window as YYYY-MM-DD, or null. Any other string, a timestamp included, answers 422.
10847
+ */
10848
+ request_start_date?: string | null;
10849
+ /**
10850
+ * 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.
10851
+ */
10852
+ request_end_date?: string | null;
10853
+ /**
10854
+ * Occupation named in the request, or null. Must be absent when `program_unavailable` is true.
10855
+ */
10856
+ occupation?: string | null;
10857
+ /**
10858
+ * Name of the apprenticeship program that was asked, or null. Must be absent when `program_unavailable` is true.
10859
+ */
10860
+ program_name?: string | null;
10861
+ /**
10862
+ * 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.
10863
+ */
10864
+ response?: 'no_response' | 'denied' | 'partial' | null;
10865
+ /**
10866
+ * 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.
10867
+ */
10868
+ request_letter_signed_id?: string;
10869
+ /**
10870
+ * 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.
10871
+ */
10872
+ submission_proof_signed_id?: string;
10873
+ /**
10874
+ * 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.
10875
+ */
10876
+ response_letter_signed_id?: string;
10877
+ /**
10878
+ * 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.
10879
+ */
10880
+ no_availability_proof_signed_id?: string;
10881
+ /**
10882
+ * 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.
10883
+ */
10884
+ performed_by_user_id?: string;
10885
+ };
10470
10886
  /**
10471
10887
  * A page of a job's good-faith-effort exceptions, with pagination metadata and navigation links.
10472
10888
  */
@@ -10537,7 +10953,7 @@ export type JobFormAssignmentResponseObject = {
10537
10953
  }>;
10538
10954
  };
10539
10955
  /**
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.
10956
+ * A corrective payment recorded against a job's PWA obligations. Does not include pretty type, currency, or a Money amount.
10541
10957
  */
10542
10958
  export type JobCurePaymentResponseObject = {
10543
10959
  /**
@@ -10576,6 +10992,31 @@ export type JobCurePaymentResponseObject = {
10576
10992
  * Id of the user who recorded the payment.
10577
10993
  */
10578
10994
  created_by_user_id: string;
10995
+ /**
10996
+ * Attestation file for this payment, or null when none is attached.
10997
+ */
10998
+ attestation: {
10999
+ /**
11000
+ * ID of the attestation document; unchanged when the file is replaced.
11001
+ */
11002
+ id: string;
11003
+ /**
11004
+ * Stored name of the uploaded file.
11005
+ */
11006
+ filename: string;
11007
+ /**
11008
+ * MIME type of the file; null when not recorded.
11009
+ */
11010
+ content_type: string | null;
11011
+ /**
11012
+ * Size of the file in bytes.
11013
+ */
11014
+ byte_size: number;
11015
+ /**
11016
+ * A URL to download the file.
11017
+ */
11018
+ url: string;
11019
+ } | null;
10579
11020
  /**
10580
11021
  * When the payment was created.
10581
11022
  */
@@ -10585,6 +11026,76 @@ export type JobCurePaymentResponseObject = {
10585
11026
  */
10586
11027
  updated_at: string;
10587
11028
  };
11029
+ /**
11030
+ * 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.
11031
+ */
11032
+ export type JobCurePaymentParameters = {
11033
+ /**
11034
+ * 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.
11035
+ */
11036
+ amount_cents: string;
11037
+ /**
11038
+ * Calendar date the payment was made, as `YYYY-MM-DD`. Any other string, a timestamp included, answers 422. Must not be in the future.
11039
+ */
11040
+ paid_on_date: string;
11041
+ /**
11042
+ * 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.
11043
+ */
11044
+ cures_from_date: string;
11045
+ /**
11046
+ * 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.
11047
+ */
11048
+ cures_to_date: string;
11049
+ /**
11050
+ * Optional notes; null stores absence.
11051
+ */
11052
+ notes?: string | null;
11053
+ /**
11054
+ * 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.
11055
+ */
11056
+ attestation_signed_id?: string;
11057
+ /**
11058
+ * 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.
11059
+ */
11060
+ performed_by_user_id: string;
11061
+ /**
11062
+ * Stored STI class name — `Pwa::CurePayments::Federal` or `Pwa::CurePayments::Regional`. Create-only; every update that includes it returns 400, even when unchanged.
11063
+ */
11064
+ type: 'Pwa::CurePayments::Federal' | 'Pwa::CurePayments::Regional';
11065
+ };
11066
+ /**
11067
+ * 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.
11068
+ */
11069
+ export type JobCurePaymentUpdateParameters = {
11070
+ /**
11071
+ * 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.
11072
+ */
11073
+ amount_cents?: string;
11074
+ /**
11075
+ * Replacement calendar date the payment was made, as `YYYY-MM-DD`. Must not be in the future.
11076
+ */
11077
+ paid_on_date?: string;
11078
+ /**
11079
+ * Replacement first calendar day of the cured window, as `YYYY-MM-DD`.
11080
+ */
11081
+ cures_from_date?: string;
11082
+ /**
11083
+ * Replacement last calendar day of the cured window, as `YYYY-MM-DD`.
11084
+ */
11085
+ cures_to_date?: string;
11086
+ /**
11087
+ * Replacement notes; null stores absence. Omit to preserve the current value.
11088
+ */
11089
+ notes?: string | null;
11090
+ /**
11091
+ * 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.
11092
+ */
11093
+ attestation_signed_id?: string;
11094
+ /**
11095
+ * 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.
11096
+ */
11097
+ performed_by_user_id?: string;
11098
+ };
10588
11099
  /**
10589
11100
  * A page of a job's PWA cure payments, with pagination metadata and navigation links.
10590
11101
  */
@@ -17356,6 +17867,10 @@ export type CreateCategoryErrors = {
17356
17867
  * Forbidden
17357
17868
  */
17358
17869
  403: Problem;
17870
+ /**
17871
+ * Not Found
17872
+ */
17873
+ 404: Problem;
17359
17874
  /**
17360
17875
  * Unprocessable Content
17361
17876
  */
@@ -17465,8 +17980,22 @@ export type ListCustodiesData = {
17465
17980
  query?: {
17466
17981
  'filter[assets_item_id]'?: string;
17467
17982
  'filter[user_id]'?: string;
17983
+ 'filter[created_at][gte]'?: string;
17984
+ 'filter[created_at][lte]'?: string;
17985
+ 'filter[updated_at][gte]'?: string;
17986
+ 'filter[updated_at][lte]'?: string;
17468
17987
  filter?: string;
17469
17988
  'filter[unexpected]'?: string;
17989
+ /**
17990
+ * This pagination cursor corresponds to the cursor value found in the response in
17991
+ * `meta.page.next_cursor`.
17992
+ */
17993
+ 'page[cursor]'?: string;
17994
+ /**
17995
+ * 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`.
17996
+ */
17997
+ 'page[limit]'?: number;
17998
+ page?: string;
17470
17999
  };
17471
18000
  url: '/api/v1/assets/custodies';
17472
18001
  };
@@ -17479,6 +18008,10 @@ export type ListCustodiesErrors = {
17479
18008
  * Forbidden
17480
18009
  */
17481
18010
  403: Problem;
18011
+ /**
18012
+ * Unprocessable Content
18013
+ */
18014
+ 422: Problem;
17482
18015
  };
17483
18016
  export type ListCustodiesError = ListCustodiesErrors[keyof ListCustodiesErrors];
17484
18017
  export type ListCustodiesResponses = {
@@ -17753,8 +18286,22 @@ export type ListInventoriesData = {
17753
18286
  query?: {
17754
18287
  'filter[assets_item_id]'?: string;
17755
18288
  'filter[assets_site_id]'?: string;
18289
+ 'filter[created_at][gte]'?: string;
18290
+ 'filter[created_at][lte]'?: string;
18291
+ 'filter[updated_at][gte]'?: string;
18292
+ 'filter[updated_at][lte]'?: string;
17756
18293
  filter?: string;
17757
18294
  'filter[unexpected]'?: string;
18295
+ /**
18296
+ * This pagination cursor corresponds to the cursor value found in the response in
18297
+ * `meta.page.next_cursor`.
18298
+ */
18299
+ 'page[cursor]'?: string;
18300
+ /**
18301
+ * 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`.
18302
+ */
18303
+ 'page[limit]'?: number;
18304
+ page?: string;
17758
18305
  };
17759
18306
  url: '/api/v1/assets/inventories';
17760
18307
  };
@@ -17767,6 +18314,10 @@ export type ListInventoriesErrors = {
17767
18314
  * Forbidden
17768
18315
  */
17769
18316
  403: Problem;
18317
+ /**
18318
+ * Unprocessable Content
18319
+ */
18320
+ 422: Problem;
17770
18321
  };
17771
18322
  export type ListInventoriesError = ListInventoriesErrors[keyof ListInventoriesErrors];
17772
18323
  export type ListInventoriesResponses = {
@@ -19700,8 +20251,22 @@ export type ListTransfersData = {
19700
20251
  *
19701
20252
  */
19702
20253
  'filter[status]'?: string;
20254
+ 'filter[created_at][gte]'?: string;
20255
+ 'filter[created_at][lte]'?: string;
20256
+ 'filter[updated_at][gte]'?: string;
20257
+ 'filter[updated_at][lte]'?: string;
19703
20258
  filter?: string;
19704
20259
  'filter[unexpected]'?: string;
20260
+ /**
20261
+ * This pagination cursor corresponds to the cursor value found in the response in
20262
+ * `meta.page.next_cursor`.
20263
+ */
20264
+ 'page[cursor]'?: string;
20265
+ /**
20266
+ * 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`.
20267
+ */
20268
+ 'page[limit]'?: number;
20269
+ page?: string;
19705
20270
  };
19706
20271
  url: '/api/v1/assets/transfers';
19707
20272
  };
@@ -20626,6 +21191,10 @@ export type DeleteCertificationErrors = {
20626
21191
  * Not Found
20627
21192
  */
20628
21193
  404: Problem;
21194
+ /**
21195
+ * Unprocessable Content
21196
+ */
21197
+ 422: Problem;
20629
21198
  };
20630
21199
  export type DeleteCertificationError = DeleteCertificationErrors[keyof DeleteCertificationErrors];
20631
21200
  export type DeleteCertificationResponses = {
@@ -20682,6 +21251,10 @@ export type UpdateCertificationErrors = {
20682
21251
  * Not Found
20683
21252
  */
20684
21253
  404: Problem;
21254
+ /**
21255
+ * Unprocessable Content
21256
+ */
21257
+ 422: Problem;
20685
21258
  };
20686
21259
  export type UpdateCertificationError = UpdateCertificationErrors[keyof UpdateCertificationErrors];
20687
21260
  export type UpdateCertificationResponses = {
@@ -20991,6 +21564,10 @@ export type ListAssessmentsData = {
20991
21564
  * competent or not_yet_competent. Null until the assessment is decided.
20992
21565
  */
20993
21566
  'filter[outcome]'?: 'competent' | 'not_yet_competent' | null;
21567
+ 'filter[created_at][gte]'?: string;
21568
+ 'filter[created_at][lte]'?: string;
21569
+ 'filter[updated_at][gte]'?: string;
21570
+ 'filter[updated_at][lte]'?: string;
20994
21571
  filter?: string;
20995
21572
  'filter[unexpected]'?: string;
20996
21573
  };
@@ -21005,6 +21582,10 @@ export type ListAssessmentsErrors = {
21005
21582
  * Forbidden
21006
21583
  */
21007
21584
  403: Problem;
21585
+ /**
21586
+ * Unprocessable Content
21587
+ */
21588
+ 422: Problem;
21008
21589
  };
21009
21590
  export type ListAssessmentsError = ListAssessmentsErrors[keyof ListAssessmentsErrors];
21010
21591
  export type ListAssessmentsResponses = {
@@ -21050,6 +21631,10 @@ export type ListAssessmentCriteriaData = {
21050
21631
  assessment_id: string;
21051
21632
  };
21052
21633
  query?: {
21634
+ 'filter[created_at][gte]'?: string;
21635
+ 'filter[created_at][lte]'?: string;
21636
+ 'filter[updated_at][gte]'?: string;
21637
+ 'filter[updated_at][lte]'?: string;
21053
21638
  filter?: string;
21054
21639
  'filter[unexpected]'?: string;
21055
21640
  };
@@ -21064,11 +21649,15 @@ export type ListAssessmentCriteriaErrors = {
21064
21649
  * Forbidden
21065
21650
  */
21066
21651
  403: Problem;
21652
+ /**
21653
+ * Unprocessable Content
21654
+ */
21655
+ 422: Problem;
21067
21656
  };
21068
21657
  export type ListAssessmentCriteriaError = ListAssessmentCriteriaErrors[keyof ListAssessmentCriteriaErrors];
21069
21658
  export type ListAssessmentCriteriaResponses = {
21070
21659
  /**
21071
- * Candidate sees a decided review
21660
+ * Success
21072
21661
  */
21073
21662
  200: {
21074
21663
  meta: Meta;
@@ -21111,6 +21700,8 @@ export type ListEvidenceItemsData = {
21111
21700
  * upload, form_submission, or certification.
21112
21701
  */
21113
21702
  'filter[kind]'?: 'upload' | 'form_submission' | 'certification';
21703
+ 'filter[created_at][gte]'?: string;
21704
+ 'filter[created_at][lte]'?: string;
21114
21705
  filter?: string;
21115
21706
  'filter[unexpected]'?: string;
21116
21707
  };
@@ -21125,6 +21716,10 @@ export type ListEvidenceItemsErrors = {
21125
21716
  * Forbidden
21126
21717
  */
21127
21718
  403: Problem;
21719
+ /**
21720
+ * Unprocessable Content
21721
+ */
21722
+ 422: Problem;
21128
21723
  };
21129
21724
  export type ListEvidenceItemsError = ListEvidenceItemsErrors[keyof ListEvidenceItemsErrors];
21130
21725
  export type ListEvidenceItemsResponses = {
@@ -21368,6 +21963,10 @@ export type ListLevelsData = {
21368
21963
  version_id: string;
21369
21964
  };
21370
21965
  query?: {
21966
+ 'filter[created_at][gte]'?: string;
21967
+ 'filter[created_at][lte]'?: string;
21968
+ 'filter[updated_at][gte]'?: string;
21969
+ 'filter[updated_at][lte]'?: string;
21371
21970
  filter?: string;
21372
21971
  'filter[unexpected]'?: string;
21373
21972
  };
@@ -21382,6 +21981,10 @@ export type ListLevelsErrors = {
21382
21981
  * Forbidden
21383
21982
  */
21384
21983
  403: Problem;
21984
+ /**
21985
+ * Unprocessable Content
21986
+ */
21987
+ 422: Problem;
21385
21988
  };
21386
21989
  export type ListLevelsError = ListLevelsErrors[keyof ListLevelsErrors];
21387
21990
  export type ListLevelsResponses = {
@@ -21541,6 +22144,10 @@ export type ListKeyActivitiesData = {
21541
22144
  level_id: string;
21542
22145
  };
21543
22146
  query?: {
22147
+ 'filter[created_at][gte]'?: string;
22148
+ 'filter[created_at][lte]'?: string;
22149
+ 'filter[updated_at][gte]'?: string;
22150
+ 'filter[updated_at][lte]'?: string;
21544
22151
  filter?: string;
21545
22152
  'filter[unexpected]'?: string;
21546
22153
  };
@@ -21555,6 +22162,10 @@ export type ListKeyActivitiesErrors = {
21555
22162
  * Forbidden
21556
22163
  */
21557
22164
  403: Problem;
22165
+ /**
22166
+ * Unprocessable Content
22167
+ */
22168
+ 422: Problem;
21558
22169
  };
21559
22170
  export type ListKeyActivitiesError = ListKeyActivitiesErrors[keyof ListKeyActivitiesErrors];
21560
22171
  export type ListKeyActivitiesResponses = {
@@ -21716,6 +22327,10 @@ export type ListCriteriaData = {
21716
22327
  key_activity_id: string;
21717
22328
  };
21718
22329
  query?: {
22330
+ 'filter[created_at][gte]'?: string;
22331
+ 'filter[created_at][lte]'?: string;
22332
+ 'filter[updated_at][gte]'?: string;
22333
+ 'filter[updated_at][lte]'?: string;
21719
22334
  filter?: string;
21720
22335
  'filter[unexpected]'?: string;
21721
22336
  };
@@ -21730,6 +22345,10 @@ export type ListCriteriaErrors = {
21730
22345
  * Forbidden
21731
22346
  */
21732
22347
  403: Problem;
22348
+ /**
22349
+ * Unprocessable Content
22350
+ */
22351
+ 422: Problem;
21733
22352
  };
21734
22353
  export type ListCriteriaError = ListCriteriaErrors[keyof ListCriteriaErrors];
21735
22354
  export type ListCriteriaResponses = {
@@ -21903,6 +22522,10 @@ export type ListQualificationsData = {
21903
22522
  * Standings at this tier.
21904
22523
  */
21905
22524
  'filter[level_sort_order]'?: number;
22525
+ 'filter[created_at][gte]'?: string;
22526
+ 'filter[created_at][lte]'?: string;
22527
+ 'filter[updated_at][gte]'?: string;
22528
+ 'filter[updated_at][lte]'?: string;
21906
22529
  filter?: string;
21907
22530
  'filter[unexpected]'?: string;
21908
22531
  /**
@@ -21927,6 +22550,10 @@ export type ListQualificationsErrors = {
21927
22550
  * Forbidden
21928
22551
  */
21929
22552
  403: Problem;
22553
+ /**
22554
+ * Unprocessable Content
22555
+ */
22556
+ 422: Problem;
21930
22557
  };
21931
22558
  export type ListQualificationsError = ListQualificationsErrors[keyof ListQualificationsErrors];
21932
22559
  export type ListQualificationsResponses = {
@@ -22350,6 +22977,10 @@ export type PromoteCompetencyStandardVersionErrors = {
22350
22977
  * Forbidden
22351
22978
  */
22352
22979
  403: Problem;
22980
+ /**
22981
+ * Not Found
22982
+ */
22983
+ 404: Problem;
22353
22984
  };
22354
22985
  export type PromoteCompetencyStandardVersionError = PromoteCompetencyStandardVersionErrors[keyof PromoteCompetencyStandardVersionErrors];
22355
22986
  export type PromoteCompetencyStandardVersionResponses = {
@@ -22384,6 +23015,10 @@ export type ListChecksData = {
22384
23015
  'filter[assignee_user_id]'?: string;
22385
23016
  'filter[time_due][gte]'?: string;
22386
23017
  'filter[time_due][lte]'?: string;
23018
+ 'filter[created_at][gte]'?: string;
23019
+ 'filter[created_at][lte]'?: string;
23020
+ 'filter[updated_at][gte]'?: string;
23021
+ 'filter[updated_at][lte]'?: string;
22387
23022
  filter?: string;
22388
23023
  'filter[unexpected]'?: string;
22389
23024
  /**
@@ -22959,6 +23594,36 @@ export type CreateFormSubmissionResponses = {
22959
23594
  201: FormSubmissionResponseObject;
22960
23595
  };
22961
23596
  export type CreateFormSubmissionResponse = CreateFormSubmissionResponses[keyof CreateFormSubmissionResponses];
23597
+ export type DeleteFormSubmissionData = {
23598
+ body?: never;
23599
+ path: {
23600
+ id: string;
23601
+ };
23602
+ query?: never;
23603
+ url: '/api/v1/form_submissions/{id}';
23604
+ };
23605
+ export type DeleteFormSubmissionErrors = {
23606
+ /**
23607
+ * Forbidden
23608
+ */
23609
+ 403: Problem;
23610
+ /**
23611
+ * Not Found
23612
+ */
23613
+ 404: Problem;
23614
+ /**
23615
+ * Unprocessable Content
23616
+ */
23617
+ 422: Problem;
23618
+ };
23619
+ export type DeleteFormSubmissionError = DeleteFormSubmissionErrors[keyof DeleteFormSubmissionErrors];
23620
+ export type DeleteFormSubmissionResponses = {
23621
+ /**
23622
+ * No Content
23623
+ */
23624
+ 204: void;
23625
+ };
23626
+ export type DeleteFormSubmissionResponse = DeleteFormSubmissionResponses[keyof DeleteFormSubmissionResponses];
22962
23627
  export type GetFormSubmissionData = {
22963
23628
  body?: never;
22964
23629
  path: {
@@ -22985,6 +23650,40 @@ export type GetFormSubmissionResponses = {
22985
23650
  200: FormSubmissionResponseObject;
22986
23651
  };
22987
23652
  export type GetFormSubmissionResponse = GetFormSubmissionResponses[keyof GetFormSubmissionResponses];
23653
+ export type UpdateFormSubmissionData = {
23654
+ body?: FormSubmissionUpdateParameters;
23655
+ path: {
23656
+ id: string;
23657
+ };
23658
+ query?: never;
23659
+ url: '/api/v1/form_submissions/{id}';
23660
+ };
23661
+ export type UpdateFormSubmissionErrors = {
23662
+ /**
23663
+ * Bad Request
23664
+ */
23665
+ 400: Problem;
23666
+ /**
23667
+ * Forbidden
23668
+ */
23669
+ 403: Problem;
23670
+ /**
23671
+ * Not Found
23672
+ */
23673
+ 404: Problem;
23674
+ /**
23675
+ * Unprocessable Content
23676
+ */
23677
+ 422: Problem;
23678
+ };
23679
+ export type UpdateFormSubmissionError = UpdateFormSubmissionErrors[keyof UpdateFormSubmissionErrors];
23680
+ export type UpdateFormSubmissionResponses = {
23681
+ /**
23682
+ * Success
23683
+ */
23684
+ 200: FormSubmissionResponseObject;
23685
+ };
23686
+ export type UpdateFormSubmissionResponse = UpdateFormSubmissionResponses[keyof UpdateFormSubmissionResponses];
22988
23687
  export type ListGroupUsersData = {
22989
23688
  body?: never;
22990
23689
  path: {
@@ -23747,6 +24446,67 @@ export type ListGoodFaithEffortExceptionsResponses = {
23747
24446
  200: JobGoodFaithEffortExceptionsResponseObject;
23748
24447
  };
23749
24448
  export type ListGoodFaithEffortExceptionsResponse = ListGoodFaithEffortExceptionsResponses[keyof ListGoodFaithEffortExceptionsResponses];
24449
+ export type CreateGoodFaithEffortExceptionData = {
24450
+ body: JobGoodFaithEffortExceptionParameters;
24451
+ path: {
24452
+ job_id: string;
24453
+ };
24454
+ query?: never;
24455
+ url: '/api/v1/jobs/{job_id}/pwa/apprenticeship/good_faith_effort_exceptions';
24456
+ };
24457
+ export type CreateGoodFaithEffortExceptionErrors = {
24458
+ /**
24459
+ * Bad Request
24460
+ */
24461
+ 400: Problem;
24462
+ /**
24463
+ * Forbidden
24464
+ */
24465
+ 403: Problem;
24466
+ /**
24467
+ * Not Found
24468
+ */
24469
+ 404: Problem;
24470
+ /**
24471
+ * Unprocessable Content (invalid signed id)
24472
+ */
24473
+ 422: Problem;
24474
+ };
24475
+ export type CreateGoodFaithEffortExceptionError = CreateGoodFaithEffortExceptionErrors[keyof CreateGoodFaithEffortExceptionErrors];
24476
+ export type CreateGoodFaithEffortExceptionResponses = {
24477
+ /**
24478
+ * Created
24479
+ */
24480
+ 201: JobGoodFaithEffortExceptionResponseObject;
24481
+ };
24482
+ export type CreateGoodFaithEffortExceptionResponse = CreateGoodFaithEffortExceptionResponses[keyof CreateGoodFaithEffortExceptionResponses];
24483
+ export type DeleteGoodFaithEffortExceptionData = {
24484
+ body?: never;
24485
+ path: {
24486
+ job_id: string;
24487
+ id: string;
24488
+ };
24489
+ query?: never;
24490
+ url: '/api/v1/jobs/{job_id}/pwa/apprenticeship/good_faith_effort_exceptions/{id}';
24491
+ };
24492
+ export type DeleteGoodFaithEffortExceptionErrors = {
24493
+ /**
24494
+ * Forbidden
24495
+ */
24496
+ 403: Problem;
24497
+ /**
24498
+ * Not Found
24499
+ */
24500
+ 404: Problem;
24501
+ };
24502
+ export type DeleteGoodFaithEffortExceptionError = DeleteGoodFaithEffortExceptionErrors[keyof DeleteGoodFaithEffortExceptionErrors];
24503
+ export type DeleteGoodFaithEffortExceptionResponses = {
24504
+ /**
24505
+ * No Content
24506
+ */
24507
+ 204: void;
24508
+ };
24509
+ export type DeleteGoodFaithEffortExceptionResponse = DeleteGoodFaithEffortExceptionResponses[keyof DeleteGoodFaithEffortExceptionResponses];
23750
24510
  export type GetGoodFaithEffortExceptionData = {
23751
24511
  body?: never;
23752
24512
  path: {
@@ -23774,6 +24534,37 @@ export type GetGoodFaithEffortExceptionResponses = {
23774
24534
  200: JobGoodFaithEffortExceptionResponseObject;
23775
24535
  };
23776
24536
  export type GetGoodFaithEffortExceptionResponse = GetGoodFaithEffortExceptionResponses[keyof GetGoodFaithEffortExceptionResponses];
24537
+ export type UpdateGoodFaithEffortExceptionData = {
24538
+ body: JobGoodFaithEffortExceptionUpdateParameters;
24539
+ path: {
24540
+ job_id: string;
24541
+ id: string;
24542
+ };
24543
+ query?: never;
24544
+ url: '/api/v1/jobs/{job_id}/pwa/apprenticeship/good_faith_effort_exceptions/{id}';
24545
+ };
24546
+ export type UpdateGoodFaithEffortExceptionErrors = {
24547
+ /**
24548
+ * Bad Request
24549
+ */
24550
+ 400: Problem;
24551
+ /**
24552
+ * Forbidden
24553
+ */
24554
+ 403: Problem;
24555
+ /**
24556
+ * Not Found
24557
+ */
24558
+ 404: Problem;
24559
+ };
24560
+ export type UpdateGoodFaithEffortExceptionError = UpdateGoodFaithEffortExceptionErrors[keyof UpdateGoodFaithEffortExceptionErrors];
24561
+ export type UpdateGoodFaithEffortExceptionResponses = {
24562
+ /**
24563
+ * Success
24564
+ */
24565
+ 200: JobGoodFaithEffortExceptionResponseObject;
24566
+ };
24567
+ export type UpdateGoodFaithEffortExceptionResponse = UpdateGoodFaithEffortExceptionResponses[keyof UpdateGoodFaithEffortExceptionResponses];
23777
24568
  export type ListCurePaymentsData = {
23778
24569
  body?: never;
23779
24570
  path: {
@@ -23817,6 +24608,67 @@ export type ListCurePaymentsResponses = {
23817
24608
  200: JobCurePaymentsResponseObject;
23818
24609
  };
23819
24610
  export type ListCurePaymentsResponse = ListCurePaymentsResponses[keyof ListCurePaymentsResponses];
24611
+ export type CreateCurePaymentData = {
24612
+ body: JobCurePaymentParameters;
24613
+ path: {
24614
+ job_id: string;
24615
+ };
24616
+ query?: never;
24617
+ url: '/api/v1/jobs/{job_id}/pwa/cure_payments';
24618
+ };
24619
+ export type CreateCurePaymentErrors = {
24620
+ /**
24621
+ * Bad Request
24622
+ */
24623
+ 400: Problem;
24624
+ /**
24625
+ * Forbidden
24626
+ */
24627
+ 403: Problem;
24628
+ /**
24629
+ * Not Found
24630
+ */
24631
+ 404: Problem;
24632
+ /**
24633
+ * Unprocessable Content
24634
+ */
24635
+ 422: Problem;
24636
+ };
24637
+ export type CreateCurePaymentError = CreateCurePaymentErrors[keyof CreateCurePaymentErrors];
24638
+ export type CreateCurePaymentResponses = {
24639
+ /**
24640
+ * Created
24641
+ */
24642
+ 201: JobCurePaymentResponseObject;
24643
+ };
24644
+ export type CreateCurePaymentResponse = CreateCurePaymentResponses[keyof CreateCurePaymentResponses];
24645
+ export type DeleteCurePaymentData = {
24646
+ body?: never;
24647
+ path: {
24648
+ job_id: string;
24649
+ id: string;
24650
+ };
24651
+ query?: never;
24652
+ url: '/api/v1/jobs/{job_id}/pwa/cure_payments/{id}';
24653
+ };
24654
+ export type DeleteCurePaymentErrors = {
24655
+ /**
24656
+ * Forbidden
24657
+ */
24658
+ 403: Problem;
24659
+ /**
24660
+ * Not Found
24661
+ */
24662
+ 404: Problem;
24663
+ };
24664
+ export type DeleteCurePaymentError = DeleteCurePaymentErrors[keyof DeleteCurePaymentErrors];
24665
+ export type DeleteCurePaymentResponses = {
24666
+ /**
24667
+ * No Content
24668
+ */
24669
+ 204: void;
24670
+ };
24671
+ export type DeleteCurePaymentResponse = DeleteCurePaymentResponses[keyof DeleteCurePaymentResponses];
23820
24672
  export type GetCurePaymentData = {
23821
24673
  body?: never;
23822
24674
  path: {
@@ -23844,6 +24696,41 @@ export type GetCurePaymentResponses = {
23844
24696
  200: JobCurePaymentResponseObject;
23845
24697
  };
23846
24698
  export type GetCurePaymentResponse = GetCurePaymentResponses[keyof GetCurePaymentResponses];
24699
+ export type UpdateCurePaymentData = {
24700
+ body: JobCurePaymentUpdateParameters;
24701
+ path: {
24702
+ job_id: string;
24703
+ id: string;
24704
+ };
24705
+ query?: never;
24706
+ url: '/api/v1/jobs/{job_id}/pwa/cure_payments/{id}';
24707
+ };
24708
+ export type UpdateCurePaymentErrors = {
24709
+ /**
24710
+ * Bad Request
24711
+ */
24712
+ 400: Problem;
24713
+ /**
24714
+ * Forbidden
24715
+ */
24716
+ 403: Problem;
24717
+ /**
24718
+ * Not Found
24719
+ */
24720
+ 404: Problem;
24721
+ /**
24722
+ * Unprocessable Content
24723
+ */
24724
+ 422: Problem;
24725
+ };
24726
+ export type UpdateCurePaymentError = UpdateCurePaymentErrors[keyof UpdateCurePaymentErrors];
24727
+ export type UpdateCurePaymentResponses = {
24728
+ /**
24729
+ * Success
24730
+ */
24731
+ 200: JobCurePaymentResponseObject;
24732
+ };
24733
+ export type UpdateCurePaymentResponse = UpdateCurePaymentResponses[keyof UpdateCurePaymentResponses];
23847
24734
  export type CreateJobTradeData = {
23848
24735
  body: PwaTradeParameters;
23849
24736
  path: {
@@ -27744,6 +28631,10 @@ export type DeleteFringeBenefitPlanErrors = {
27744
28631
  * Not Found
27745
28632
  */
27746
28633
  404: Problem;
28634
+ /**
28635
+ * Unprocessable Content
28636
+ */
28637
+ 422: Problem;
27747
28638
  };
27748
28639
  export type DeleteFringeBenefitPlanError = DeleteFringeBenefitPlanErrors[keyof DeleteFringeBenefitPlanErrors];
27749
28640
  export type DeleteFringeBenefitPlanResponses = {
@@ -28922,6 +29813,10 @@ export type DeleteEmploymentScheduledChangeErrors = {
28922
29813
  * Precondition Failed
28923
29814
  */
28924
29815
  412: Problem;
29816
+ /**
29817
+ * Unprocessable Content
29818
+ */
29819
+ 422: Problem;
28925
29820
  /**
28926
29821
  * Precondition Required
28927
29822
  */
@@ -31546,7 +32441,7 @@ export type CreateProjectErrors = {
31546
32441
  */
31547
32442
  404: Problem;
31548
32443
  /**
31549
- * Unprocessable Content
32444
+ * Unprocessable Content (invalid signed id)
31550
32445
  */
31551
32446
  422: Problem;
31552
32447
  };
@@ -32329,6 +33224,10 @@ export type ListPositionsErrors = {
32329
33224
  * Forbidden
32330
33225
  */
32331
33226
  403: Problem;
33227
+ /**
33228
+ * Not Found
33229
+ */
33230
+ 404: Problem;
32332
33231
  /**
32333
33232
  * Unprocessable Content
32334
33233
  */
@@ -34527,6 +35426,38 @@ export type ListTimeOffRequestsResponses = {
34527
35426
  200: TimeOffRequestsResponseObject;
34528
35427
  };
34529
35428
  export type ListTimeOffRequestsResponse = ListTimeOffRequestsResponses[keyof ListTimeOffRequestsResponses];
35429
+ export type CreateTimeOffRequestData = {
35430
+ body: TimeOffRequestParameters;
35431
+ path?: never;
35432
+ query?: never;
35433
+ url: '/api/v1/timekeeping/time_off_requests';
35434
+ };
35435
+ export type CreateTimeOffRequestErrors = {
35436
+ /**
35437
+ * Bad Request
35438
+ */
35439
+ 400: Problem;
35440
+ /**
35441
+ * Forbidden
35442
+ */
35443
+ 403: Problem;
35444
+ /**
35445
+ * Not Found
35446
+ */
35447
+ 404: Problem;
35448
+ /**
35449
+ * Unprocessable Content
35450
+ */
35451
+ 422: Problem;
35452
+ };
35453
+ export type CreateTimeOffRequestError = CreateTimeOffRequestErrors[keyof CreateTimeOffRequestErrors];
35454
+ export type CreateTimeOffRequestResponses = {
35455
+ /**
35456
+ * Created
35457
+ */
35458
+ 201: TimeOffRequestResponseObject;
35459
+ };
35460
+ export type CreateTimeOffRequestResponse = CreateTimeOffRequestResponses[keyof CreateTimeOffRequestResponses];
34530
35461
  export type GetTimeOffRequestData = {
34531
35462
  body?: never;
34532
35463
  path: {
@@ -34553,6 +35484,40 @@ export type GetTimeOffRequestResponses = {
34553
35484
  200: TimeOffRequestResponseObject;
34554
35485
  };
34555
35486
  export type GetTimeOffRequestResponse = GetTimeOffRequestResponses[keyof GetTimeOffRequestResponses];
35487
+ export type CreateReviewData = {
35488
+ body: TimeOffRequestReviewParameters;
35489
+ path: {
35490
+ time_off_request_id: string;
35491
+ };
35492
+ query?: never;
35493
+ url: '/api/v1/timekeeping/time_off_requests/{time_off_request_id}/reviews';
35494
+ };
35495
+ export type CreateReviewErrors = {
35496
+ /**
35497
+ * Bad Request
35498
+ */
35499
+ 400: Problem;
35500
+ /**
35501
+ * Forbidden
35502
+ */
35503
+ 403: Problem;
35504
+ /**
35505
+ * Not Found
35506
+ */
35507
+ 404: Problem;
35508
+ /**
35509
+ * Unprocessable Content
35510
+ */
35511
+ 422: Problem;
35512
+ };
35513
+ export type CreateReviewError = CreateReviewErrors[keyof CreateReviewErrors];
35514
+ export type CreateReviewResponses = {
35515
+ /**
35516
+ * Created
35517
+ */
35518
+ 201: TimeOffRequestResponseObject;
35519
+ };
35520
+ export type CreateReviewResponse = CreateReviewResponses[keyof CreateReviewResponses];
34556
35521
  export type ListTimeSessionsData = {
34557
35522
  body?: never;
34558
35523
  path?: never;
@@ -34859,6 +35824,10 @@ export type CancelUserCompanyScheduledChangeErrors = {
34859
35824
  * Not Found
34860
35825
  */
34861
35826
  404: Problem;
35827
+ /**
35828
+ * Unprocessable Content
35829
+ */
35830
+ 422: Problem;
34862
35831
  };
34863
35832
  export type CancelUserCompanyScheduledChangeError = CancelUserCompanyScheduledChangeErrors[keyof CancelUserCompanyScheduledChangeErrors];
34864
35833
  export type CancelUserCompanyScheduledChangeResponses = {