@dsptch-work/api-client 0.28.0 → 0.30.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.
@@ -395,7 +395,7 @@ export type DirectUploadParameters = {
395
395
  /**
396
396
  * 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.
397
397
  */
398
- resource: 'assets.items' | 'assets.items.documents' | 'assets.items.service_events' | 'assets.products' | 'assets.vendors' | 'compliance.checks' | 'internal.companies' | 'internal.company_todos' | 'internal.job_todos' | 'internal.project_todos' | 'pay_periods.imports.aggregate_times' | 'pay_periods.imports.dsptch_cprs' | 'pay_periods.imports.time_entries' | 'payrolls.payroll_runs.imports.paystubs' | 'users';
398
+ resource: 'assets.items' | 'assets.items.documents' | 'assets.items.service_events' | 'assets.products' | 'assets.vendors' | 'compliance.checks' | 'internal.companies' | 'internal.company_todos' | 'internal.job_todos' | 'internal.project_todos' | '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' | 'users';
399
399
  /**
400
400
  * Metadata describing the file being registered, before its bytes are uploaded.
401
401
  */
@@ -3983,7 +3983,7 @@ export type JobParameters = {
3983
3983
  */
3984
3984
  requested_by_company_id?: string;
3985
3985
  /**
3986
- * IDs of the users who manage the job; null when the job has no managers.
3986
+ * Complete desired set of manager user ID strings. Omit or send null to preserve the set; send an empty array to clear it. Other non-array values or non-string members return 422 before any job or relationship is saved.
3987
3987
  */
3988
3988
  manager_user_ids?: Array<string> | null;
3989
3989
  /**
@@ -4036,7 +4036,7 @@ export type JobParameters = {
4036
4036
  */
4037
4037
  allow_customer_access?: boolean;
4038
4038
  /**
4039
- * IDs of the timecodes to associate with the job; null when none.
4039
+ * Complete desired set of timecode ID strings. Omit or send null to preserve the set; send an empty array to clear it. Other non-array values or non-string members return 422 before any job or relationship is saved.
4040
4040
  */
4041
4041
  timekeeping_timecode_ids?: Array<string> | null;
4042
4042
  /**
@@ -4683,7 +4683,7 @@ export type UserParameters = ({
4683
4683
  /**
4684
4684
  * Roles to grant the worker at your company, as an array of role strings such as TECHNICIAN, FIELD_LEAD, MANAGER, SAFETY_MANAGER, and ADMIN.
4685
4685
  */
4686
- roles?: Array<string>;
4686
+ roles?: Array<string> | null;
4687
4687
  /**
4688
4688
  * Signed ID of a direct-upload blob to attach as the profile picture. Obtain it by first uploading the image to POST /api/v1/direct_uploads.
4689
4689
  */
@@ -4768,7 +4768,7 @@ export type UserParameters = ({
4768
4768
  /**
4769
4769
  * Ids of the groups to add the worker to at your company.
4770
4770
  */
4771
- group_ids?: Array<number>;
4771
+ group_ids?: Array<string> | null;
4772
4772
  /**
4773
4773
  * Values for the employment's custom fields, as a list of configurations and their values. Each configuration may appear only once. Every visible configuration gets a stored value; one left out of the list, or an omitted or empty list, stores null.
4774
4774
  */
@@ -5733,7 +5733,7 @@ export type UserGroupResponse = {
5733
5733
  */
5734
5734
  export type UserGroupParameters = {
5735
5735
  /**
5736
- * IDs of the users to add to the group; users already in the group are ignored, and the full membership list is returned.
5736
+ * Required nonempty array of user ID strings to add to the group. Users already in the group are ignored, and the full membership list is returned.
5737
5737
  */
5738
5738
  user_ids: Array<string>;
5739
5739
  };
@@ -6076,6 +6076,54 @@ export type PaystubImportParameters = {
6076
6076
  */
6077
6077
  file_signed_id: string;
6078
6078
  };
6079
+ /**
6080
+ * One bulk upload of wide paystub amounts against a payroll run, and how it turned out.
6081
+ */
6082
+ export type WidePaystubImportResponseObject = {
6083
+ /**
6084
+ * Unique identifier.
6085
+ */
6086
+ id: string;
6087
+ /**
6088
+ * The payroll run the amounts were imported against.
6089
+ */
6090
+ payrolls_payroll_run_id: string;
6091
+ /**
6092
+ * Where the import has got to. `pending` until the background job starts, then `success` or `failed`.
6093
+ */
6094
+ status: 'pending' | 'processing' | 'processed' | 'success' | 'failed' | 'superseded' | 'withdrawn';
6095
+ /**
6096
+ * 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.
6097
+ */
6098
+ processed_rows_count: number;
6099
+ /**
6100
+ * Every problem found after the import was accepted, oldest row first; empty when there were none, and always empty while the import is `pending`.
6101
+ */
6102
+ processing_errors: Array<ImportProcessingError>;
6103
+ /**
6104
+ * When processing finished; null while the import is still pending.
6105
+ */
6106
+ completed_at: string | null;
6107
+ /**
6108
+ * When the import was submitted.
6109
+ */
6110
+ created_at: string;
6111
+ /**
6112
+ * When the import was last modified.
6113
+ */
6114
+ updated_at: string;
6115
+ };
6116
+ /**
6117
+ * Submit a spreadsheet of wide paystub amounts for a payroll run. Each row is one employee: payroll_id names them, and every other column is a pay, deduction, or contribution amount. Extra pay-element columns are accepted; they are not unknown columns. The run's pay schedule must record the contributor on the external map (`requires_external_map_contributor`) and must not be connected to a payroll provider; where a provider is configured the paystubs come from that connection and a file is refused. payroll_id must be present as a header and carry a value on every row, or the file is refused naming what is missing. Header matching ignores case and treats spaces as underscores, and column order does not matter.
6118
+ *
6119
+ * Because acceptance is synchronous but the write happens in the background, only one wide paystub import at a time is accepted for a payroll run: while an earlier one is still `pending` or `processing`, a second answers 409 naming `import_in_progress`, and nothing is written. Poll the earlier import until it reports, then submit again.
6120
+ */
6121
+ export type WidePaystubImportParameters = {
6122
+ /**
6123
+ * A signed_id from POST /api/v1/direct_uploads identifying the uploaded spreadsheet. Register the upload naming `payrolls.payroll_runs.imports.wide_paystubs` — a signed_id issued for any other resource will not resolve here.
6124
+ */
6125
+ file_signed_id: string;
6126
+ };
6079
6127
  /**
6080
6128
  * One bulk upload of time entries against a pay period, and how it turned out.
6081
6129
  */
@@ -6695,6 +6743,62 @@ export type TimeSessionsResponseObject = {
6695
6743
  */
6696
6744
  data: Array<TimeSessionResponseObject>;
6697
6745
  };
6746
+ /**
6747
+ * A worker request for non-working time (R&R, PTO, and the other absence types). Approval produces an Absence; this read surface does not nest that Absence or the request's comments.
6748
+ */
6749
+ export type TimeOffRequestResponseObject = {
6750
+ /**
6751
+ * Unique identifier.
6752
+ */
6753
+ id: string;
6754
+ /**
6755
+ * ID of the worker (user) the request is for.
6756
+ */
6757
+ user_id: string;
6758
+ /**
6759
+ * Lifecycle status of the request.
6760
+ */
6761
+ status: 'pending' | 'approved' | 'denied' | 'cancelled' | 'expired';
6762
+ /**
6763
+ * Kind of non-working time.
6764
+ */
6765
+ absence_type: 'rest_and_recovery' | 'vacation' | 'bereavement' | 'ca_covid_19_sick' | 'custom' | 'jury_duty' | 'unpaid' | 'training' | 'bench';
6766
+ /**
6767
+ * When the requested absence starts (ISO 8601).
6768
+ */
6769
+ start_time: string;
6770
+ /**
6771
+ * When the requested absence ends (ISO 8601).
6772
+ */
6773
+ end_time: string;
6774
+ /**
6775
+ * When the request was reviewed (ISO 8601); null while it is still pending.
6776
+ */
6777
+ reviewed_at: string | null;
6778
+ /**
6779
+ * ID of the user who reviewed the request; null while it is still pending.
6780
+ */
6781
+ reviewer_user_id: string | null;
6782
+ /**
6783
+ * When the record was created (ISO 8601).
6784
+ */
6785
+ created_at: string;
6786
+ /**
6787
+ * When the record was last updated (ISO 8601).
6788
+ */
6789
+ updated_at: string;
6790
+ };
6791
+ /**
6792
+ * A page of time-off requests, with pagination metadata and navigation links.
6793
+ */
6794
+ export type TimeOffRequestsResponseObject = {
6795
+ meta: Meta;
6796
+ links: Links;
6797
+ /**
6798
+ * The page of time-off requests.
6799
+ */
6800
+ data: Array<TimeOffRequestResponseObject>;
6801
+ };
6698
6802
  /**
6699
6803
  * Request body for locking or unlocking a time card.
6700
6804
  */
@@ -7275,7 +7379,7 @@ export type ProjectResponseObject = {
7275
7379
  updated_at: string;
7276
7380
  };
7277
7381
  /**
7278
- * Request body for creating or updating a project. Only `name` is required by the schema; `created_by_user_id` is additionally required on create and must be a member of the owning company. The owning company is inferred from the API key and is not part of the body. Omit relationship fields on PATCH to leave them unchanged.
7382
+ * Request body for creating a project. `name` and `created_by_user_id` are required; the creator must be a member of the owning company. The owning company is inferred from the API key and is not part of the body. Undeclared body keys return 400 before any project or relationship is saved.
7279
7383
  */
7280
7384
  export type ProjectParameters = {
7281
7385
  /**
@@ -7291,7 +7395,7 @@ export type ProjectParameters = {
7291
7395
  */
7292
7396
  description?: string | null;
7293
7397
  /**
7294
- * User recorded as the project's creator; must be a member of the owning company. Required on create and immutable thereafter — an update that sets, changes, or clears it is rejected.
7398
+ * User recorded as the project's creator; must be a member of the owning company. Required on create and immutable thereafter. Send it only on create; every update that includes it returns 400, even when unchanged.
7295
7399
  */
7296
7400
  created_by_user_id: string;
7297
7401
  /**
@@ -7299,7 +7403,7 @@ export type ProjectParameters = {
7299
7403
  */
7300
7404
  parent_id?: string | null;
7301
7405
  /**
7302
- * Complete desired set of participating company IDs. Send an empty array to clear the set. Remove a participant's jobs before removing it from this set.
7406
+ * Complete desired set of participating company ID strings. Omit to preserve the set; send an empty array to clear it. Null, non-array values, or non-string members return 422 before any project or relationship is saved. Remove a participant's jobs before removing it from this set.
7303
7407
  */
7304
7408
  participating_company_ids?: Array<string>;
7305
7409
  /**
@@ -7364,7 +7468,7 @@ export type ProjectParameters = {
7364
7468
  placed_in_service_date?: string | null;
7365
7469
  };
7366
7470
  /**
7367
- * Request body for updating a project. Every field is optional; omit a field to preserve its current value. The resulting project must still satisfy conditional PWA, regional, and schedule validation rules. `created_by_user_id` is create-only and an update that names it is rejected.
7471
+ * Request body for updating a project. Every field is optional; omit a field to preserve its current value. The resulting project must still satisfy conditional PWA, regional, and schedule validation rules. `created_by_user_id` is create-only; omit it on PATCH. Every update that includes it returns 400, even when unchanged. Undeclared body keys return 400 before any project or relationship changes.
7368
7472
  */
7369
7473
  export type ProjectUpdateParameters = {
7370
7474
  /**
@@ -7384,7 +7488,7 @@ export type ProjectUpdateParameters = {
7384
7488
  */
7385
7489
  parent_id?: string | null;
7386
7490
  /**
7387
- * Complete desired set of participating company IDs. Send an empty array to clear the set. Remove a participant's jobs before removing it from this set.
7491
+ * Complete desired set of participating company ID strings. Omit to preserve the set; send an empty array to clear it. Null, non-array values, or non-string members return 422 before any project or relationship is saved. Remove a participant's jobs before removing it from this set.
7388
7492
  */
7389
7493
  participating_company_ids?: Array<string>;
7390
7494
  /**
@@ -8648,7 +8752,7 @@ export type PaystubLineItemResponseObject = {
8648
8752
  updated_at: string;
8649
8753
  };
8650
8754
  /**
8651
- * Request body for creating a paystub line item. All four fields are required.
8755
+ * Request body for creating a paystub line item. All four fields are required. Undeclared body keys are rejected with 400; references outside the authenticated company return 404.
8652
8756
  */
8653
8757
  export type PaystubLineItemParameters = {
8654
8758
  /**
@@ -8664,12 +8768,12 @@ export type PaystubLineItemParameters = {
8664
8768
  */
8665
8769
  contributor: 'employee' | 'employer';
8666
8770
  /**
8667
- * ID of the external map defining which compensation element this line item represents. Required.
8771
+ * Family ID of the external map defining which compensation element this line item represents. Must be global or belong to a pay schedule of the payroll run company; another schedule within that company is allowed. Required.
8668
8772
  */
8669
8773
  payrolls_external_map_id: string;
8670
8774
  };
8671
8775
  /**
8672
- * Request body for updating a paystub line item. Send only the fields to change.
8776
+ * Request body for updating a paystub line item. Send only the fields to change. Undeclared body keys are rejected with 400; newly supplied references outside the authenticated company return 404.
8673
8777
  */
8674
8778
  export type PaystubLineItemUpdateParameters = {
8675
8779
  /**
@@ -8685,7 +8789,7 @@ export type PaystubLineItemUpdateParameters = {
8685
8789
  */
8686
8790
  contributor?: 'employee' | 'employer';
8687
8791
  /**
8688
- * ID of the external map defining which compensation element this line item represents. Omit to leave it unchanged.
8792
+ * Family ID of the external map defining which compensation element this line item represents. A changed reference must be global or belong to a pay schedule of the payroll run company. Omit or repeat the held ID to leave the relationship unchanged.
8689
8793
  */
8690
8794
  payrolls_external_map_id?: string;
8691
8795
  };
@@ -9477,7 +9581,7 @@ export type PositionParameters = {
9477
9581
  */
9478
9582
  wage_adder_rate_cents?: number | null;
9479
9583
  /**
9480
- * The complete desired set of job wage determination IDs. On PATCH, this replaces the current set; omit the field to leave assignments unchanged. Required federal and regional assignments cannot be removed from a PWA position.
9584
+ * The complete desired set of job wage determination IDs. On PATCH, this replaces the current set; omit the field to leave assignments unchanged. Required federal and regional assignments cannot be removed from a PWA position. Must be an array of ID strings; malformed submitted lists are rejected before any changes are written.
9481
9585
  */
9482
9586
  job_wage_determination_ids?: Array<string>;
9483
9587
  /**
@@ -9938,7 +10042,7 @@ export type CertificationPackageParameters = {
9938
10042
  */
9939
10043
  description?: string | null;
9940
10044
  /**
9941
- * Ids of the certifications in the package; global and your company's own may be mixed. Providing this replaces the entire membership. An id that is neither a global certification nor one of your company's own answers 404, and nothing is written.
10045
+ * Array of certification ID strings; global and your company's own may be mixed. Providing this replaces the entire membership; an empty array clears it. Omit to create an empty package or preserve existing membership on update. Null is not accepted. An id that is neither a global certification nor one of your company's own answers 404, and nothing is written.
9942
10046
  */
9943
10047
  certification_ids?: Array<string>;
9944
10048
  /**
@@ -9959,7 +10063,7 @@ export type CertificationPackageUpdateParameters = {
9959
10063
  */
9960
10064
  description?: string | null;
9961
10065
  /**
9962
- * Ids of the certifications in the package; global and your company's own may be mixed. Providing this replaces the entire membership. An id that is neither a global certification nor one of your company's own answers 404, and nothing is written.
10066
+ * Array of certification ID strings; global and your company's own may be mixed. Providing this replaces the entire membership; an empty array clears it. Omit to create an empty package or preserve existing membership on update. Null is not accepted. An id that is neither a global certification nor one of your company's own answers 404, and nothing is written.
9963
10067
  */
9964
10068
  certification_ids?: Array<string>;
9965
10069
  /**
@@ -14151,6 +14255,10 @@ export type CreateProgramData = {
14151
14255
  url: '/api/v1/apprenticeship/programs';
14152
14256
  };
14153
14257
  export type CreateProgramErrors = {
14258
+ /**
14259
+ * Bad Request
14260
+ */
14261
+ 400: Problem;
14154
14262
  /**
14155
14263
  * Forbidden
14156
14264
  */
@@ -14233,6 +14341,10 @@ export type UpdateProgramData = {
14233
14341
  url: '/api/v1/apprenticeship/programs/{id}';
14234
14342
  };
14235
14343
  export type UpdateProgramErrors = {
14344
+ /**
14345
+ * Bad Request
14346
+ */
14347
+ 400: Problem;
14236
14348
  /**
14237
14349
  * Forbidden
14238
14350
  */
@@ -14668,6 +14780,10 @@ export type CreateAttributeData = {
14668
14780
  url: '/api/v1/assets/attributes';
14669
14781
  };
14670
14782
  export type CreateAttributeErrors = {
14783
+ /**
14784
+ * Bad Request
14785
+ */
14786
+ 400: Problem;
14671
14787
  /**
14672
14788
  * Forbidden
14673
14789
  */
@@ -14750,6 +14866,10 @@ export type UpdateAttributeData = {
14750
14866
  url: '/api/v1/assets/attributes/{id}';
14751
14867
  };
14752
14868
  export type UpdateAttributeErrors = {
14869
+ /**
14870
+ * Bad Request
14871
+ */
14872
+ 400: Problem;
14753
14873
  /**
14754
14874
  * Forbidden
14755
14875
  */
@@ -14827,6 +14947,10 @@ export type CreateCategoryData = {
14827
14947
  url: '/api/v1/assets/categories';
14828
14948
  };
14829
14949
  export type CreateCategoryErrors = {
14950
+ /**
14951
+ * Bad Request
14952
+ */
14953
+ 400: Problem;
14830
14954
  /**
14831
14955
  * Forbidden
14832
14956
  */
@@ -14909,6 +15033,10 @@ export type UpdateCategoryData = {
14909
15033
  url: '/api/v1/assets/categories/{id}';
14910
15034
  };
14911
15035
  export type UpdateCategoryErrors = {
15036
+ /**
15037
+ * Bad Request
15038
+ */
15039
+ 400: Problem;
14912
15040
  /**
14913
15041
  * Forbidden
14914
15042
  */
@@ -15099,10 +15227,18 @@ export type CreateFormAssignmentTriggerData = {
15099
15227
  url: '/api/v1/assets/form_assignment_triggers';
15100
15228
  };
15101
15229
  export type CreateFormAssignmentTriggerErrors = {
15230
+ /**
15231
+ * Bad Request
15232
+ */
15233
+ 400: Problem;
15102
15234
  /**
15103
15235
  * Forbidden
15104
15236
  */
15105
15237
  403: Problem;
15238
+ /**
15239
+ * Reference not found
15240
+ */
15241
+ 404: Problem;
15106
15242
  /**
15107
15243
  * Unprocessable Content (invalid enum)
15108
15244
  */
@@ -15173,10 +15309,22 @@ export type UpdateFormAssignmentTriggerData = {
15173
15309
  url: '/api/v1/assets/form_assignment_triggers/{id}';
15174
15310
  };
15175
15311
  export type UpdateFormAssignmentTriggerErrors = {
15312
+ /**
15313
+ * Bad Request
15314
+ */
15315
+ 400: Problem;
15176
15316
  /**
15177
15317
  * Forbidden
15178
15318
  */
15179
15319
  403: Problem;
15320
+ /**
15321
+ * Reference not found
15322
+ */
15323
+ 404: Problem;
15324
+ /**
15325
+ * Unprocessable Content (malformed ID lists)
15326
+ */
15327
+ 422: Problem;
15180
15328
  };
15181
15329
  export type UpdateFormAssignmentTriggerError = UpdateFormAssignmentTriggerErrors[keyof UpdateFormAssignmentTriggerErrors];
15182
15330
  export type UpdateFormAssignmentTriggerResponses = {
@@ -16518,7 +16666,7 @@ export type UpdateServiceScheduleTemplateResponse = UpdateServiceScheduleTemplat
16518
16666
  export type SeedServiceScheduleTemplateData = {
16519
16667
  body: {
16520
16668
  /**
16521
- * Serial item ids to seed; omit to seed every cleanly-seedable item
16669
+ * Serial item ids to seed; omit or send [] to seed every cleanly-seedable item
16522
16670
  */
16523
16671
  assets_item_ids?: Array<string>;
16524
16672
  /**
@@ -16534,10 +16682,18 @@ export type SeedServiceScheduleTemplateData = {
16534
16682
  url: '/api/v1/assets/products/{product_id}/service_schedule_templates/{service_schedule_template_id}/seeds';
16535
16683
  };
16536
16684
  export type SeedServiceScheduleTemplateErrors = {
16685
+ /**
16686
+ * Bad Request
16687
+ */
16688
+ 400: Problem;
16537
16689
  /**
16538
16690
  * Forbidden
16539
16691
  */
16540
16692
  403: Problem;
16693
+ /**
16694
+ * Unprocessable Content (malformed assets_item_ids)
16695
+ */
16696
+ 422: Problem;
16541
16697
  };
16542
16698
  export type SeedServiceScheduleTemplateError = SeedServiceScheduleTemplateErrors[keyof SeedServiceScheduleTemplateErrors];
16543
16699
  export type SeedServiceScheduleTemplateResponses = {
@@ -16553,7 +16709,7 @@ export type SeedServiceScheduleTemplateResponse = SeedServiceScheduleTemplateRes
16553
16709
  export type SyncServiceScheduleTemplateData = {
16554
16710
  body: {
16555
16711
  /**
16556
- * Blocked schedule ids to sync; omit to sync every blocked schedule
16712
+ * Blocked schedule ids to sync; omit or send [] to sync every blocked schedule
16557
16713
  */
16558
16714
  schedule_ids?: Array<string>;
16559
16715
  /**
@@ -16569,10 +16725,18 @@ export type SyncServiceScheduleTemplateData = {
16569
16725
  url: '/api/v1/assets/products/{product_id}/service_schedule_templates/{service_schedule_template_id}/syncs';
16570
16726
  };
16571
16727
  export type SyncServiceScheduleTemplateErrors = {
16728
+ /**
16729
+ * Bad Request
16730
+ */
16731
+ 400: Problem;
16572
16732
  /**
16573
16733
  * Forbidden
16574
16734
  */
16575
16735
  403: Problem;
16736
+ /**
16737
+ * Unprocessable Content (malformed schedule_ids)
16738
+ */
16739
+ 422: Problem;
16576
16740
  };
16577
16741
  export type SyncServiceScheduleTemplateError = SyncServiceScheduleTemplateErrors[keyof SyncServiceScheduleTemplateErrors];
16578
16742
  export type SyncServiceScheduleTemplateResponses = {
@@ -16641,6 +16805,10 @@ export type CreateSiteData = {
16641
16805
  url: '/api/v1/assets/sites';
16642
16806
  };
16643
16807
  export type CreateSiteErrors = {
16808
+ /**
16809
+ * Bad Request
16810
+ */
16811
+ 400: Problem;
16644
16812
  /**
16645
16813
  * Forbidden
16646
16814
  */
@@ -16715,6 +16883,10 @@ export type UpdateSiteData = {
16715
16883
  url: '/api/v1/assets/sites/{id}';
16716
16884
  };
16717
16885
  export type UpdateSiteErrors = {
16886
+ /**
16887
+ * Bad Request
16888
+ */
16889
+ 400: Problem;
16718
16890
  /**
16719
16891
  * Forbidden
16720
16892
  */
@@ -17062,6 +17234,10 @@ export type CreateVendorData = {
17062
17234
  url: '/api/v1/assets/vendors';
17063
17235
  };
17064
17236
  export type CreateVendorErrors = {
17237
+ /**
17238
+ * Bad Request
17239
+ */
17240
+ 400: Problem;
17065
17241
  /**
17066
17242
  * Forbidden
17067
17243
  */
@@ -17092,6 +17268,10 @@ export type DeleteVendorErrors = {
17092
17268
  * Forbidden
17093
17269
  */
17094
17270
  403: Problem;
17271
+ /**
17272
+ * Not Found
17273
+ */
17274
+ 404: Problem;
17095
17275
  };
17096
17276
  export type DeleteVendorError = DeleteVendorErrors[keyof DeleteVendorErrors];
17097
17277
  export type DeleteVendorResponses = {
@@ -17114,6 +17294,10 @@ export type GetVendorErrors = {
17114
17294
  * Forbidden
17115
17295
  */
17116
17296
  403: Problem;
17297
+ /**
17298
+ * Not Found
17299
+ */
17300
+ 404: Problem;
17117
17301
  };
17118
17302
  export type GetVendorError = GetVendorErrors[keyof GetVendorErrors];
17119
17303
  export type GetVendorResponses = {
@@ -17132,10 +17316,18 @@ export type UpdateVendorData = {
17132
17316
  url: '/api/v1/assets/vendors/{id}';
17133
17317
  };
17134
17318
  export type UpdateVendorErrors = {
17319
+ /**
17320
+ * Bad Request
17321
+ */
17322
+ 400: Problem;
17135
17323
  /**
17136
17324
  * Forbidden
17137
17325
  */
17138
17326
  403: Problem;
17327
+ /**
17328
+ * Not Found
17329
+ */
17330
+ 404: Problem;
17139
17331
  /**
17140
17332
  * Unprocessable Content (invalid logo replacement)
17141
17333
  */
@@ -17940,6 +18132,10 @@ export type CreateDepartmentData = {
17940
18132
  url: '/api/v1/companies/departments';
17941
18133
  };
17942
18134
  export type CreateDepartmentErrors = {
18135
+ /**
18136
+ * Bad Request
18137
+ */
18138
+ 400: Problem;
17943
18139
  /**
17944
18140
  * Forbidden
17945
18141
  */
@@ -18022,10 +18218,18 @@ export type UpdateDepartmentData = {
18022
18218
  url: '/api/v1/companies/departments/{id}';
18023
18219
  };
18024
18220
  export type UpdateDepartmentErrors = {
18221
+ /**
18222
+ * Bad Request
18223
+ */
18224
+ 400: Problem;
18025
18225
  /**
18026
18226
  * Forbidden
18027
18227
  */
18028
18228
  403: Problem;
18229
+ /**
18230
+ * Not Found
18231
+ */
18232
+ 404: Problem;
18029
18233
  /**
18030
18234
  * Unprocessable Content
18031
18235
  */
@@ -18655,6 +18859,10 @@ export type ListFormSubmissionsData = {
18655
18859
  path?: never;
18656
18860
  query?: {
18657
18861
  'filter[form_definition_id]'?: string;
18862
+ /**
18863
+ * Returns only submissions for this worker.
18864
+ */
18865
+ 'filter[user_id]'?: string;
18658
18866
  'filter[created_at][gte]'?: string;
18659
18867
  'filter[created_at][lte]'?: string;
18660
18868
  'filter[updated_at][gte]'?: string;
@@ -18780,6 +18988,10 @@ export type AddUsersToGroupErrors = {
18780
18988
  * Forbidden
18781
18989
  */
18782
18990
  403: Problem;
18991
+ /**
18992
+ * Unprocessable Content (malformed user_ids)
18993
+ */
18994
+ 422: Problem;
18783
18995
  };
18784
18996
  export type AddUsersToGroupError = AddUsersToGroupErrors[keyof AddUsersToGroupErrors];
18785
18997
  export type AddUsersToGroupResponses = {
@@ -19177,6 +19389,10 @@ export type CreateJobScopePriceData = {
19177
19389
  url: '/api/v1/jobs/{job_id}/production/job_scope_prices';
19178
19390
  };
19179
19391
  export type CreateJobScopePriceErrors = {
19392
+ /**
19393
+ * Bad Request
19394
+ */
19395
+ 400: Problem;
19180
19396
  /**
19181
19397
  * Forbidden
19182
19398
  */
@@ -19266,6 +19482,10 @@ export type UpdateJobScopePriceData = {
19266
19482
  url: '/api/v1/jobs/{job_id}/production/job_scope_prices/{id}';
19267
19483
  };
19268
19484
  export type UpdateJobScopePriceErrors = {
19485
+ /**
19486
+ * Bad Request
19487
+ */
19488
+ 400: Problem;
19269
19489
  /**
19270
19490
  * Forbidden
19271
19491
  */
@@ -20191,6 +20411,14 @@ export type ListJobsData = {
20191
20411
  * Returns jobs whose purchase order number contains this substring (case-insensitive).
20192
20412
  */
20193
20413
  'filter[purchase_order_number]'?: string;
20414
+ /**
20415
+ * Returns jobs whose federal_pwa_mode is any of the given values. Comma-separate to match multiple (e.g. `all,pw_only`).
20416
+ */
20417
+ 'filter[federal_pwa_mode]'?: Array<'all' | 'pw_only' | 'ap_only' | 'none'>;
20418
+ /**
20419
+ * Returns jobs whose regional_pwa_mode is any of the given values. Comma-separate to match multiple (e.g. `all,pw_only`).
20420
+ */
20421
+ 'filter[regional_pwa_mode]'?: Array<'all' | 'pw_only' | 'ap_only' | 'none'>;
20194
20422
  /**
20195
20423
  * This pagination cursor corresponds to the cursor value found in the response in
20196
20424
  * `meta.page.next_cursor`.
@@ -20250,6 +20478,10 @@ export type CreateJobErrors = {
20250
20478
  * Forbidden
20251
20479
  */
20252
20480
  403: Problem;
20481
+ /**
20482
+ * Template not found
20483
+ */
20484
+ 404: Problem;
20253
20485
  /**
20254
20486
  * Unprocessable Content
20255
20487
  */
@@ -20575,6 +20807,10 @@ export type UpdateFeatureFormAssignmentTaskErrors = {
20575
20807
  * Not Found
20576
20808
  */
20577
20809
  404: Problem;
20810
+ /**
20811
+ * Unprocessable Content (malformed assignee IDs)
20812
+ */
20813
+ 422: Problem;
20578
20814
  };
20579
20815
  export type UpdateFeatureFormAssignmentTaskError = UpdateFeatureFormAssignmentTaskErrors[keyof UpdateFeatureFormAssignmentTaskErrors];
20580
20816
  export type UpdateFeatureFormAssignmentTaskResponses = {
@@ -20712,6 +20948,10 @@ export type UpdateSiteFormAssignmentTaskErrors = {
20712
20948
  * Not Found
20713
20949
  */
20714
20950
  404: Problem;
20951
+ /**
20952
+ * Unprocessable Content (malformed assignee IDs)
20953
+ */
20954
+ 422: Problem;
20715
20955
  };
20716
20956
  export type UpdateSiteFormAssignmentTaskError = UpdateSiteFormAssignmentTaskErrors[keyof UpdateSiteFormAssignmentTaskErrors];
20717
20957
  export type UpdateSiteFormAssignmentTaskResponses = {
@@ -22947,6 +23187,140 @@ export type GetPaystubImportResponses = {
22947
23187
  200: PaystubImportResponseObject;
22948
23188
  };
22949
23189
  export type GetPaystubImportResponse = GetPaystubImportResponses[keyof GetPaystubImportResponses];
23190
+ export type ListWidePaystubImportsData = {
23191
+ body?: never;
23192
+ path: {
23193
+ payroll_run_id: string;
23194
+ };
23195
+ query?: {
23196
+ /**
23197
+ * Filter by import status:
23198
+ * * `pending`
23199
+ * * `processing`
23200
+ * * `processed`
23201
+ * * `success`
23202
+ * * `failed`
23203
+ * * `superseded`
23204
+ * * `withdrawn`
23205
+ *
23206
+ */
23207
+ 'filter[status]'?: string;
23208
+ 'filter[completed_at][gte]'?: string;
23209
+ 'filter[completed_at][lte]'?: string;
23210
+ 'filter[created_at][gte]'?: string;
23211
+ 'filter[created_at][lte]'?: string;
23212
+ 'filter[updated_at][gte]'?: string;
23213
+ 'filter[updated_at][lte]'?: string;
23214
+ /**
23215
+ * This pagination cursor corresponds to the cursor value found in the response in
23216
+ * `meta.page.next_cursor`.
23217
+ */
23218
+ 'page[cursor]'?: string;
23219
+ /**
23220
+ * 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`.
23221
+ */
23222
+ 'page[limit]'?: number;
23223
+ page?: string;
23224
+ filter?: string;
23225
+ 'filter[unexpected]'?: string;
23226
+ };
23227
+ url: '/api/v1/payrolls/payroll_runs/{payroll_run_id}/imports/wide_paystubs';
23228
+ };
23229
+ export type ListWidePaystubImportsErrors = {
23230
+ /**
23231
+ * Bad Request
23232
+ */
23233
+ 400: Problem;
23234
+ /**
23235
+ * Forbidden
23236
+ */
23237
+ 403: Problem;
23238
+ /**
23239
+ * Not Found
23240
+ */
23241
+ 404: Problem;
23242
+ /**
23243
+ * Unprocessable Content
23244
+ */
23245
+ 422: Problem;
23246
+ };
23247
+ export type ListWidePaystubImportsError = ListWidePaystubImportsErrors[keyof ListWidePaystubImportsErrors];
23248
+ export type ListWidePaystubImportsResponses = {
23249
+ /**
23250
+ * Success
23251
+ */
23252
+ 200: {
23253
+ meta: Meta;
23254
+ links: Links;
23255
+ data: Array<WidePaystubImportResponseObject>;
23256
+ };
23257
+ };
23258
+ export type ListWidePaystubImportsResponse = ListWidePaystubImportsResponses[keyof ListWidePaystubImportsResponses];
23259
+ export type CreateWidePaystubImportData = {
23260
+ body: WidePaystubImportParameters;
23261
+ path: {
23262
+ payroll_run_id: string;
23263
+ };
23264
+ query?: never;
23265
+ url: '/api/v1/payrolls/payroll_runs/{payroll_run_id}/imports/wide_paystubs';
23266
+ };
23267
+ export type CreateWidePaystubImportErrors = {
23268
+ /**
23269
+ * Bad Request
23270
+ */
23271
+ 400: Problem;
23272
+ /**
23273
+ * Forbidden
23274
+ */
23275
+ 403: Problem;
23276
+ /**
23277
+ * Not Found
23278
+ */
23279
+ 404: Problem;
23280
+ /**
23281
+ * Conflict
23282
+ */
23283
+ 409: Problem;
23284
+ /**
23285
+ * Unprocessable Content
23286
+ */
23287
+ 422: Problem;
23288
+ };
23289
+ export type CreateWidePaystubImportError = CreateWidePaystubImportErrors[keyof CreateWidePaystubImportErrors];
23290
+ export type CreateWidePaystubImportResponses = {
23291
+ /**
23292
+ * Created
23293
+ */
23294
+ 201: WidePaystubImportResponseObject;
23295
+ };
23296
+ export type CreateWidePaystubImportResponse = CreateWidePaystubImportResponses[keyof CreateWidePaystubImportResponses];
23297
+ export type GetWidePaystubImportData = {
23298
+ body?: never;
23299
+ path: {
23300
+ payroll_run_id: string;
23301
+ id: string;
23302
+ };
23303
+ query?: never;
23304
+ url: '/api/v1/payrolls/payroll_runs/{payroll_run_id}/imports/wide_paystubs/{id}';
23305
+ };
23306
+ export type GetWidePaystubImportErrors = {
23307
+ /**
23308
+ * Forbidden
23309
+ */
23310
+ 403: Problem;
23311
+ /**
23312
+ * Not Found
23313
+ */
23314
+ 404: Problem;
23315
+ };
23316
+ export type GetWidePaystubImportError = GetWidePaystubImportErrors[keyof GetWidePaystubImportErrors];
23317
+ export type GetWidePaystubImportResponses = {
23318
+ /**
23319
+ * Success
23320
+ */
23321
+ 200: WidePaystubImportResponseObject;
23322
+ };
23323
+ export type GetWidePaystubImportResponse = GetWidePaystubImportResponses[keyof GetWidePaystubImportResponses];
22950
23324
  export type ListPayrollRunsData = {
22951
23325
  body?: never;
22952
23326
  path?: never;
@@ -22963,6 +23337,10 @@ export type ListPayrollRunsData = {
22963
23337
  */
22964
23338
  'filter[run_type]'?: string;
22965
23339
  'filter[timekeeping_pay_period_id]'?: string;
23340
+ /**
23341
+ * Returns only runs that have at least one paystub for this worker.
23342
+ */
23343
+ 'filter[user_id]'?: string;
22966
23344
  'filter[run_date][gte]'?: string;
22967
23345
  'filter[run_date][lte]'?: string;
22968
23346
  'filter[created_at][gte]'?: string;
@@ -23172,10 +23550,18 @@ export type CreatePaystubLineItemData = {
23172
23550
  url: '/api/v1/paystub_line_items';
23173
23551
  };
23174
23552
  export type CreatePaystubLineItemErrors = {
23553
+ /**
23554
+ * Bad Request
23555
+ */
23556
+ 400: Problem;
23175
23557
  /**
23176
23558
  * Forbidden
23177
23559
  */
23178
23560
  403: Problem;
23561
+ /**
23562
+ * Not Found
23563
+ */
23564
+ 404: Problem;
23179
23565
  /**
23180
23566
  * Unprocessable Content
23181
23567
  */
@@ -23259,6 +23645,10 @@ export type UpdatePaystubLineItemData = {
23259
23645
  url: '/api/v1/paystub_line_items/{id}';
23260
23646
  };
23261
23647
  export type UpdatePaystubLineItemErrors = {
23648
+ /**
23649
+ * Bad Request
23650
+ */
23651
+ 400: Problem;
23262
23652
  /**
23263
23653
  * Forbidden
23264
23654
  */
@@ -24971,6 +25361,10 @@ export type CreateProjectData = {
24971
25361
  url: '/api/v1/projects';
24972
25362
  };
24973
25363
  export type CreateProjectErrors = {
25364
+ /**
25365
+ * Bad Request
25366
+ */
25367
+ 400: Problem;
24974
25368
  /**
24975
25369
  * Forbidden
24976
25370
  */
@@ -25033,6 +25427,10 @@ export type UpdateProjectData = {
25033
25427
  url: '/api/v1/projects/{id}';
25034
25428
  };
25035
25429
  export type UpdateProjectErrors = {
25430
+ /**
25431
+ * Bad Request
25432
+ */
25433
+ 400: Problem;
25036
25434
  /**
25037
25435
  * Forbidden
25038
25436
  */
@@ -25554,6 +25952,18 @@ export type ListPositionsData = {
25554
25952
  job_id: string;
25555
25953
  };
25556
25954
  query?: {
25955
+ /**
25956
+ * Return positions on this job fulfilled by this user. A user with no position on the job returns an empty list.
25957
+ */
25958
+ 'filter[fulfilled_by_user_id]'?: string;
25959
+ /**
25960
+ * Set to `true` to return unfilled positions (no assigned worker).
25961
+ */
25962
+ 'filter[fulfilled_by_user_id][null]'?: boolean;
25963
+ /**
25964
+ * Return positions on this job with this function.
25965
+ */
25966
+ 'filter[position_function_id]'?: string;
25557
25967
  'filter[created_at][gte]'?: string;
25558
25968
  'filter[created_at][lte]'?: string;
25559
25969
  'filter[updated_at][gte]'?: string;
@@ -25930,6 +26340,10 @@ export type CreateTimeCardPerDiemData = {
25930
26340
  url: '/api/v1/time_cards/{time_card_id}/per_diems';
25931
26341
  };
25932
26342
  export type CreateTimeCardPerDiemErrors = {
26343
+ /**
26344
+ * Bad Request
26345
+ */
26346
+ 400: Problem;
25933
26347
  /**
25934
26348
  * Forbidden
25935
26349
  */
@@ -25988,6 +26402,10 @@ export type UpdateTimeCardPerDiemData = {
25988
26402
  url: '/api/v1/time_cards/{time_card_id}/per_diems/{id}';
25989
26403
  };
25990
26404
  export type UpdateTimeCardPerDiemErrors = {
26405
+ /**
26406
+ * Bad Request
26407
+ */
26408
+ 400: Problem;
25991
26409
  /**
25992
26410
  * Forbidden
25993
26411
  */
@@ -26275,6 +26693,10 @@ export type ListTimeCardsData = {
26275
26693
  query?: {
26276
26694
  'filter[timekeeping_pay_period_id]'?: string;
26277
26695
  'filter[user_id]'?: string;
26696
+ /**
26697
+ * Returns cards with a time entry on this job or a position on this job overlapping the card's pay period. A job with no matching cards returns an empty list.
26698
+ */
26699
+ 'filter[job_id]'?: string;
26278
26700
  'filter[start_time][gte]'?: string;
26279
26701
  'filter[start_time][lte]'?: string;
26280
26702
  filter?: string;
@@ -27207,6 +27629,10 @@ export type CreateAttestationConfigData = {
27207
27629
  url: '/api/v1/timekeeping/pay_period_configs/{pay_period_config_id}/attestation_configs';
27208
27630
  };
27209
27631
  export type CreateAttestationConfigErrors = {
27632
+ /**
27633
+ * Bad Request
27634
+ */
27635
+ 400: Problem;
27210
27636
  /**
27211
27637
  * Forbidden
27212
27638
  */
@@ -27677,6 +28103,75 @@ export type GetTimeCardActualResponses = {
27677
28103
  200: TimeCardActualsResponseObject;
27678
28104
  };
27679
28105
  export type GetTimeCardActualResponse = GetTimeCardActualResponses[keyof GetTimeCardActualResponses];
28106
+ export type ListTimeOffRequestsData = {
28107
+ body?: never;
28108
+ path?: never;
28109
+ query?: {
28110
+ /**
28111
+ * Returns only requests for this worker.
28112
+ */
28113
+ 'filter[user_id]'?: string;
28114
+ /**
28115
+ * Returns only requests in this status.
28116
+ */
28117
+ 'filter[status]'?: 'pending' | 'approved' | 'denied' | 'cancelled' | 'expired';
28118
+ /**
28119
+ * This pagination cursor corresponds to the cursor value found in the response in
28120
+ * `meta.page.next_cursor`.
28121
+ */
28122
+ 'page[cursor]'?: string;
28123
+ /**
28124
+ * 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`.
28125
+ */
28126
+ 'page[limit]'?: number;
28127
+ page?: string;
28128
+ };
28129
+ url: '/api/v1/timekeeping/time_off_requests';
28130
+ };
28131
+ export type ListTimeOffRequestsErrors = {
28132
+ /**
28133
+ * Bad Request
28134
+ */
28135
+ 400: Problem;
28136
+ /**
28137
+ * Forbidden
28138
+ */
28139
+ 403: Problem;
28140
+ };
28141
+ export type ListTimeOffRequestsError = ListTimeOffRequestsErrors[keyof ListTimeOffRequestsErrors];
28142
+ export type ListTimeOffRequestsResponses = {
28143
+ /**
28144
+ * Success
28145
+ */
28146
+ 200: TimeOffRequestsResponseObject;
28147
+ };
28148
+ export type ListTimeOffRequestsResponse = ListTimeOffRequestsResponses[keyof ListTimeOffRequestsResponses];
28149
+ export type GetTimeOffRequestData = {
28150
+ body?: never;
28151
+ path: {
28152
+ id: string;
28153
+ };
28154
+ query?: never;
28155
+ url: '/api/v1/timekeeping/time_off_requests/{id}';
28156
+ };
28157
+ export type GetTimeOffRequestErrors = {
28158
+ /**
28159
+ * Forbidden
28160
+ */
28161
+ 403: Problem;
28162
+ /**
28163
+ * Not Found
28164
+ */
28165
+ 404: Problem;
28166
+ };
28167
+ export type GetTimeOffRequestError = GetTimeOffRequestErrors[keyof GetTimeOffRequestErrors];
28168
+ export type GetTimeOffRequestResponses = {
28169
+ /**
28170
+ * Success
28171
+ */
28172
+ 200: TimeOffRequestResponseObject;
28173
+ };
28174
+ export type GetTimeOffRequestResponse = GetTimeOffRequestResponses[keyof GetTimeOffRequestResponses];
27680
28175
  export type ListTimeSessionsData = {
27681
28176
  body?: never;
27682
28177
  path?: never;
@@ -28198,6 +28693,14 @@ export type ListUsersData = {
28198
28693
  * Fuzzy-matches the person name (trigram word-similarity). Matches the name column only — not email or phone.
28199
28694
  */
28200
28695
  'filter[name]'?: string;
28696
+ /**
28697
+ * Return people whose currently valid employment at the credential company has this manager. A manager with no reports at this company returns an empty list.
28698
+ */
28699
+ 'filter[manager_user_id]'?: string;
28700
+ /**
28701
+ * Return people whose currently valid employment at the credential company is in this department. A department with no members returns an empty list.
28702
+ */
28703
+ 'filter[department_id]'?: string;
28201
28704
  /**
28202
28705
  * This pagination cursor corresponds to the cursor value found in the response in
28203
28706
  * `meta.page.next_cursor`.