@dsptch-work/api-client 0.29.0 → 0.31.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.
@@ -640,6 +640,8 @@ export class AssetsAttributes {
640
640
  /**
641
641
  * Create Attribute
642
642
  *
643
+ * Only documented body keys are accepted, including inside `options`. An undeclared key returns 400 before any attribute or option is written.
644
+ *
643
645
  * **Required scope:**
644
646
  *
645
647
  * `assets.attributes:create`
@@ -659,6 +661,8 @@ export class AssetsAttributes {
659
661
  /**
660
662
  * Delete Attribute
661
663
  *
664
+ * A missing attribute or one outside the key company or user visibility returns 404.
665
+ *
662
666
  * **Required scope:**
663
667
  *
664
668
  * `assets.attributes:delete`
@@ -674,6 +678,8 @@ export class AssetsAttributes {
674
678
  /**
675
679
  * Get Attribute
676
680
  *
681
+ * A missing attribute or one outside the key company or user visibility returns 404.
682
+ *
677
683
  * **Required scope:**
678
684
  *
679
685
  * `assets.attributes:read`
@@ -689,6 +695,8 @@ export class AssetsAttributes {
689
695
  /**
690
696
  * Update Attribute
691
697
  *
698
+ * Only documented body keys are accepted, including inside `options`. An undeclared key returns 400 without changing the attribute or its options. A missing attribute or one outside the key company or user visibility returns 404.
699
+ *
692
700
  * **Required scope:**
693
701
  *
694
702
  * `assets.attributes:update`
@@ -725,6 +733,8 @@ export class AssetsCategories {
725
733
  /**
726
734
  * Create Category
727
735
  *
736
+ * Only documented body keys are accepted, including inside `category_attributes`. An undeclared key returns 400 before any category or assignment is written.
737
+ *
728
738
  * **Required scope:**
729
739
  *
730
740
  * `assets.categories:create`
@@ -774,6 +784,8 @@ export class AssetsCategories {
774
784
  /**
775
785
  * Update Category
776
786
  *
787
+ * Only documented body keys are accepted, including inside `category_attributes`. An undeclared key returns 400 before any category or assignment is written.
788
+ *
777
789
  * **Required scope:**
778
790
  *
779
791
  * `assets.categories:update`
@@ -874,6 +886,8 @@ export class AssetsFormAssignmentTriggers {
874
886
  /**
875
887
  * Create Form Assignment Trigger
876
888
  *
889
+ * New form, assignee, and product references must be visible to the API key in its company. Refused writes preserve the trigger and its associations.
890
+ *
877
891
  * **Required scope:**
878
892
  *
879
893
  * `assets.form_assignment_triggers:create`
@@ -923,6 +937,8 @@ export class AssetsFormAssignmentTriggers {
923
937
  /**
924
938
  * Update Form Assignment Trigger
925
939
  *
940
+ * New form, assignee, and product references must be visible to the API key in its company. Refused writes preserve the trigger and its associations.
941
+ *
926
942
  * **Required scope:**
927
943
  *
928
944
  * `assets.form_assignment_triggers:update`
@@ -1195,6 +1211,8 @@ export class AssetsItems {
1195
1211
  /**
1196
1212
  * Create service event
1197
1213
  *
1214
+ * Undeclared JSON-body keys, including keys within attachments_attributes, return 400 unknown_key before any service-event or attachment changes are saved.
1215
+ *
1198
1216
  * **Required scope:**
1199
1217
  *
1200
1218
  * `assets.items.service_events:create`
@@ -1244,6 +1262,8 @@ export class AssetsItems {
1244
1262
  /**
1245
1263
  * Update service event
1246
1264
  *
1265
+ * Undeclared JSON-body keys, including keys within attachments_attributes, return 400 unknown_key before any service-event or attachment changes are saved.
1266
+ *
1247
1267
  * **Required scope:**
1248
1268
  *
1249
1269
  * `assets.items.service_events:update`
@@ -1728,6 +1748,8 @@ export class AssetsSites {
1728
1748
  /**
1729
1749
  * Create Site
1730
1750
  *
1751
+ * Only `site_id`, `kind`, and `name` are writable. An undeclared key returns 400 before any site is written.
1752
+ *
1731
1753
  * **Required scope:**
1732
1754
  *
1733
1755
  * `assets.sites:create`
@@ -1777,6 +1799,8 @@ export class AssetsSites {
1777
1799
  /**
1778
1800
  * Update Site
1779
1801
  *
1802
+ * Only `site_id`, `kind`, and `name` are writable. An undeclared key returns 400 before any site is written.
1803
+ *
1780
1804
  * **Required scope:**
1781
1805
  *
1782
1806
  * `assets.sites:update`
@@ -2129,13 +2153,13 @@ export class CertificationPackages {
2129
2153
  *
2130
2154
  */
2131
2155
  static createPackage(options) {
2132
- return (options?.client ?? client).post({
2156
+ return (options.client ?? client).post({
2133
2157
  security: [{ name: 'X-Api-Key', type: 'apiKey' }],
2134
2158
  url: '/api/v1/certifications/packages',
2135
2159
  ...options,
2136
2160
  headers: {
2137
2161
  'Content-Type': 'application/json',
2138
- ...options?.headers
2162
+ ...options.headers
2139
2163
  }
2140
2164
  });
2141
2165
  }
@@ -2416,6 +2440,11 @@ export class CompaniesDepartments {
2416
2440
  /**
2417
2441
  * Create department
2418
2442
  *
2443
+ * Creates a department in the key's company. The body accepts only `name` and
2444
+ * `description`; undeclared keys or a missing `name` return `400`, and a null
2445
+ * or wrong-typed `name` returns `422`, without creating a department.
2446
+ *
2447
+ *
2419
2448
  * **Required scope:**
2420
2449
  *
2421
2450
  * `companies.departments:create`
@@ -2476,6 +2505,13 @@ export class CompaniesDepartments {
2476
2505
  /**
2477
2506
  * Update department
2478
2507
  *
2508
+ * Updates only the supplied `name` and `description`; omitted fields keep their
2509
+ * values and a null `description` clears it. Undeclared body keys return `400`,
2510
+ * and a null or wrong-typed `name` returns `422`, without changing the
2511
+ * department. A missing or out-of-scope id returns `404`, matching GET and
2512
+ * DELETE. A visible department still requires write authorization.
2513
+ *
2514
+ *
2479
2515
  * **Required scope:**
2480
2516
  *
2481
2517
  * `companies.departments:update`
@@ -2544,6 +2580,152 @@ export class Companies {
2544
2580
  });
2545
2581
  }
2546
2582
  }
2583
+ export class CompetenciesAssessments {
2584
+ /**
2585
+ * List competence assessments
2586
+ *
2587
+ * Lists assessments. competencies_standard_version_id is the revision
2588
+ * pinned when the assessment was opened, not whichever revision is active
2589
+ * now. outcome is null until the assessment is decided. Submit, claim,
2590
+ * return, and decide stay on the web.
2591
+ *
2592
+ *
2593
+ * **Required scope:**
2594
+ *
2595
+ * `competencies.assessments:read`
2596
+ *
2597
+ */
2598
+ static listAssessments(options) {
2599
+ return (options?.client ?? client).get({
2600
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
2601
+ url: '/api/v1/competencies/assessments',
2602
+ ...options
2603
+ });
2604
+ }
2605
+ /**
2606
+ * Show competence assessment
2607
+ *
2608
+ * **Required scope:**
2609
+ *
2610
+ * `competencies.assessments:read`
2611
+ *
2612
+ */
2613
+ static getAssessment(options) {
2614
+ return (options.client ?? client).get({
2615
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
2616
+ url: '/api/v1/competencies/assessments/{id}',
2617
+ ...options
2618
+ });
2619
+ }
2620
+ }
2621
+ export class CompetenciesAssessmentKeyActivities {
2622
+ /**
2623
+ * List assessment key activities
2624
+ *
2625
+ * Lists the task lines snapshotted onto an assessment. decision and
2626
+ * qa_feedback are omitted when the caller is the candidate and the
2627
+ * package is not yet decided.
2628
+ *
2629
+ *
2630
+ * **Required scope:**
2631
+ *
2632
+ * `competencies.assessments.key_activities:read`
2633
+ *
2634
+ */
2635
+ static listAssessmentKeyActivities(options) {
2636
+ return (options.client ?? client).get({
2637
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
2638
+ url: '/api/v1/competencies/assessments/{assessment_id}/key_activities',
2639
+ ...options
2640
+ });
2641
+ }
2642
+ /**
2643
+ * Show assessment key activity
2644
+ *
2645
+ * **Required scope:**
2646
+ *
2647
+ * `competencies.assessments.key_activities:read`
2648
+ *
2649
+ */
2650
+ static getAssessmentKeyActivity(options) {
2651
+ return (options.client ?? client).get({
2652
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
2653
+ url: '/api/v1/competencies/assessments/{assessment_id}/key_activities/{id}',
2654
+ ...options
2655
+ });
2656
+ }
2657
+ }
2658
+ export class CompetenciesEvidenceItems {
2659
+ /**
2660
+ * List competence evidence items
2661
+ *
2662
+ * Lists evidence on one assessment line. File bytes are not served and there is no download URL.
2663
+ *
2664
+ * **Required scope:**
2665
+ *
2666
+ * `competencies.assessments.key_activities.evidence_items:read`
2667
+ *
2668
+ */
2669
+ static listEvidenceItems(options) {
2670
+ return (options.client ?? client).get({
2671
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
2672
+ url: '/api/v1/competencies/assessments/{assessment_id}/key_activities/{key_activity_id}/evidence_items',
2673
+ ...options
2674
+ });
2675
+ }
2676
+ /**
2677
+ * Show competence evidence item
2678
+ *
2679
+ * **Required scope:**
2680
+ *
2681
+ * `competencies.assessments.key_activities.evidence_items:read`
2682
+ *
2683
+ */
2684
+ static getEvidenceItem(options) {
2685
+ return (options.client ?? client).get({
2686
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
2687
+ url: '/api/v1/competencies/assessments/{assessment_id}/key_activities/{key_activity_id}/evidence_items/{id}',
2688
+ ...options
2689
+ });
2690
+ }
2691
+ }
2692
+ export class CompetenciesQualifications {
2693
+ /**
2694
+ * List competence qualifications
2695
+ *
2696
+ * Lists durable standings. level_sort_order is the tier the candidate
2697
+ * passed. The response has no level id, so a standing survives the next
2698
+ * revision. This resource is read-only.
2699
+ *
2700
+ *
2701
+ * **Required scope:**
2702
+ *
2703
+ * `competencies.qualifications:read`
2704
+ *
2705
+ */
2706
+ static listQualifications(options) {
2707
+ return (options?.client ?? client).get({
2708
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
2709
+ url: '/api/v1/competencies/qualifications',
2710
+ ...options
2711
+ });
2712
+ }
2713
+ /**
2714
+ * Show competence qualification
2715
+ *
2716
+ * **Required scope:**
2717
+ *
2718
+ * `competencies.qualifications:read`
2719
+ *
2720
+ */
2721
+ static getQualification(options) {
2722
+ return (options.client ?? client).get({
2723
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
2724
+ url: '/api/v1/competencies/qualifications/{id}',
2725
+ ...options
2726
+ });
2727
+ }
2728
+ }
2547
2729
  export class ComplianceChecks {
2548
2730
  /**
2549
2731
  * List compliance checks
@@ -3068,6 +3250,87 @@ export class Jobs {
3068
3250
  }
3069
3251
  });
3070
3252
  }
3253
+ /**
3254
+ * List good-faith effort exceptions
3255
+ *
3256
+ * Returns the good-faith-effort exceptions nested on the named job. A missing
3257
+ * or out-of-scope job reads as not found. A visible job with no exceptions,
3258
+ * including one that does not track apprenticeship, returns an empty list.
3259
+ * Ordered by request_start_date descending then id. Read-only.
3260
+ *
3261
+ *
3262
+ * **Required scope:**
3263
+ *
3264
+ * `jobs.pwa.apprenticeship.good_faith_effort_exceptions:read`
3265
+ *
3266
+ */
3267
+ static listGoodFaithEffortExceptions(options) {
3268
+ return (options.client ?? client).get({
3269
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
3270
+ url: '/api/v1/jobs/{job_id}/pwa/apprenticeship/good_faith_effort_exceptions',
3271
+ ...options
3272
+ });
3273
+ }
3274
+ /**
3275
+ * Get good-faith effort exception
3276
+ *
3277
+ * Returns one good-faith-effort exception nested on the named job. A missing,
3278
+ * misnested, or out-of-scope id reads as not found. Read-only.
3279
+ *
3280
+ *
3281
+ * **Required scope:**
3282
+ *
3283
+ * `jobs.pwa.apprenticeship.good_faith_effort_exceptions:read`
3284
+ *
3285
+ */
3286
+ static getGoodFaithEffortException(options) {
3287
+ return (options.client ?? client).get({
3288
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
3289
+ url: '/api/v1/jobs/{job_id}/pwa/apprenticeship/good_faith_effort_exceptions/{id}',
3290
+ ...options
3291
+ });
3292
+ }
3293
+ /**
3294
+ * List cure payments
3295
+ *
3296
+ * Returns the PWA cure payments nested on the named job. A missing
3297
+ * or out-of-scope job reads as not found. A visible job with no
3298
+ * payments, including one that does not track federal PWA, returns
3299
+ * an empty list. Ordered by paid_on_date descending, then
3300
+ * created_at descending, then id. Read-only.
3301
+ *
3302
+ *
3303
+ * **Required scope:**
3304
+ *
3305
+ * `jobs.pwa.cure_payments:read`
3306
+ *
3307
+ */
3308
+ static listCurePayments(options) {
3309
+ return (options.client ?? client).get({
3310
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
3311
+ url: '/api/v1/jobs/{job_id}/pwa/cure_payments',
3312
+ ...options
3313
+ });
3314
+ }
3315
+ /**
3316
+ * Get cure payment
3317
+ *
3318
+ * Returns one PWA cure payment nested on the named job. A missing,
3319
+ * misnested, or out-of-scope id reads as not found. Read-only.
3320
+ *
3321
+ *
3322
+ * **Required scope:**
3323
+ *
3324
+ * `jobs.pwa.cure_payments:read`
3325
+ *
3326
+ */
3327
+ static getCurePayment(options) {
3328
+ return (options.client ?? client).get({
3329
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
3330
+ url: '/api/v1/jobs/{job_id}/pwa/cure_payments/{id}',
3331
+ ...options
3332
+ });
3333
+ }
3071
3334
  /**
3072
3335
  * List sites for job
3073
3336
  *
@@ -3184,6 +3447,7 @@ export class Jobs {
3184
3447
  */
3185
3448
  static listJobs(options) {
3186
3449
  return (options?.client ?? client).get({
3450
+ querySerializer: { parameters: { 'filter[federal_pwa_mode]': { array: { explode: false } }, 'filter[regional_pwa_mode]': { array: { explode: false } } } },
3187
3451
  security: [{ name: 'X-Api-Key', type: 'apiKey' }],
3188
3452
  url: '/api/v1/jobs',
3189
3453
  ...options
@@ -3387,6 +3651,12 @@ export class ProductionJobScopePrices {
3387
3651
  /**
3388
3652
  * Create production job scope price
3389
3653
  *
3654
+ * Creates a scope price on the URL's job. The body accepts only `scope_kind`,
3655
+ * `unit_price`, `contracted_count`, and `unit_of_measure`. Undeclared keys or a
3656
+ * missing `scope_kind` or `unit_price` return `400`, and a null or wrong-typed
3657
+ * value returns `422`, without creating a price.
3658
+ *
3659
+ *
3390
3660
  * **Required scope:**
3391
3661
  *
3392
3662
  * `jobs.production.job_scope_prices:create`
@@ -3444,6 +3714,12 @@ export class ProductionJobScopePrices {
3444
3714
  /**
3445
3715
  * Update production job scope price
3446
3716
  *
3717
+ * Updates only the supplied `scope_kind`, `unit_price`, `contracted_count`,
3718
+ * and `unit_of_measure`; a null `contracted_count` clears it. Undeclared body
3719
+ * keys return `400`, and a null or wrong-typed value elsewhere returns `422`,
3720
+ * without changing the scope price. The job stays on the URL.
3721
+ *
3722
+ *
3447
3723
  * **Required scope:**
3448
3724
  *
3449
3725
  * `jobs.production.job_scope_prices:update`
@@ -3595,6 +3871,10 @@ export class PwaTrades {
3595
3871
  * To move determinations between crafts, re-point each one's `pwa_trade_id`
3596
3872
  * rather than renaming the craft they share.
3597
3873
  *
3874
+ * An omitted `name` keeps the craft's name. Undeclared body keys return `400`,
3875
+ * and a null, blank, or wrong-typed `name` returns `422`, without renaming the
3876
+ * craft.
3877
+ *
3598
3878
  *
3599
3879
  * **Required scope:**
3600
3880
  *
@@ -5160,6 +5440,11 @@ export class FringeBenefitPlans {
5160
5440
  /**
5161
5441
  * Delete fringe benefit plan
5162
5442
  *
5443
+ * A missing record or a record outside the key's company
5444
+ * visibility returns 404. User-scoped keys also require user
5445
+ * visibility. A forbidden action on a visible record returns 403.
5446
+ *
5447
+ *
5163
5448
  * **Required scope:**
5164
5449
  *
5165
5450
  * `payrolls.fringe_benefit_plans:delete`
@@ -5175,6 +5460,11 @@ export class FringeBenefitPlans {
5175
5460
  /**
5176
5461
  * Show fringe benefit plan
5177
5462
  *
5463
+ * A missing record or a record outside the key's company
5464
+ * visibility returns 404. User-scoped keys also require user
5465
+ * visibility. A forbidden action on a visible record returns 403.
5466
+ *
5467
+ *
5178
5468
  * **Required scope:**
5179
5469
  *
5180
5470
  * `payrolls.fringe_benefit_plans:read`
@@ -5352,6 +5642,11 @@ export class PayrollRuns {
5352
5642
  /**
5353
5643
  * Delete payroll run
5354
5644
  *
5645
+ * A missing record or a record outside the key's company
5646
+ * visibility returns 404. User-scoped keys also require user
5647
+ * visibility. A forbidden action on a visible record returns 403.
5648
+ *
5649
+ *
5355
5650
  * **Required scope:**
5356
5651
  *
5357
5652
  * `payrolls.payroll_runs:delete`
@@ -5367,6 +5662,11 @@ export class PayrollRuns {
5367
5662
  /**
5368
5663
  * Show payroll run
5369
5664
  *
5665
+ * A missing record or a record outside the key's company
5666
+ * visibility returns 404. User-scoped keys also require user
5667
+ * visibility. A forbidden action on a visible record returns 403.
5668
+ *
5669
+ *
5370
5670
  * **Required scope:**
5371
5671
  *
5372
5672
  * `payrolls.payroll_runs:read`
@@ -5386,6 +5686,8 @@ export class PayrollRuns {
5386
5686
  * admins can update the same payroll run fields. Manager and
5387
5687
  * technician user keys cannot update runs. The owning company is
5388
5688
  * fixed at creation; company_id is rejected on update.
5689
+ * A missing run or a run outside the key's company and user
5690
+ * visibility returns 404, including manager and technician keys.
5389
5691
  *
5390
5692
  *
5391
5693
  * **Required scope:**
@@ -5443,6 +5745,11 @@ export class PaystubLineItems {
5443
5745
  /**
5444
5746
  * Delete paystub line item
5445
5747
  *
5748
+ * A missing record or a record outside the key's company
5749
+ * visibility returns 404. User-scoped keys also require user
5750
+ * visibility. A forbidden action on a visible record returns 403.
5751
+ *
5752
+ *
5446
5753
  * **Required scope:**
5447
5754
  *
5448
5755
  * `paystub_line_items:delete`
@@ -5458,6 +5765,11 @@ export class PaystubLineItems {
5458
5765
  /**
5459
5766
  * Show paystub line item
5460
5767
  *
5768
+ * A missing record or a record outside the key's company
5769
+ * visibility returns 404. User-scoped keys also require user
5770
+ * visibility. A forbidden action on a visible record returns 403.
5771
+ *
5772
+ *
5461
5773
  * **Required scope:**
5462
5774
  *
5463
5775
  * `paystub_line_items:read`
@@ -5528,6 +5840,11 @@ export class Paystubs {
5528
5840
  /**
5529
5841
  * Delete paystub
5530
5842
  *
5843
+ * A missing record or a record outside the key's company
5844
+ * visibility returns 404. User-scoped keys also require user
5845
+ * visibility. A forbidden action on a visible record returns 403.
5846
+ *
5847
+ *
5531
5848
  * **Required scope:**
5532
5849
  *
5533
5850
  * `paystubs:delete`
@@ -5543,6 +5860,11 @@ export class Paystubs {
5543
5860
  /**
5544
5861
  * Show paystub
5545
5862
  *
5863
+ * A missing record or a record outside the key's company
5864
+ * visibility returns 404. User-scoped keys also require user
5865
+ * visibility. A forbidden action on a visible record returns 403.
5866
+ *
5867
+ *
5546
5868
  * **Required scope:**
5547
5869
  *
5548
5870
  * `paystubs:read`
@@ -6334,6 +6656,107 @@ export class ProjectSites {
6334
6656
  });
6335
6657
  }
6336
6658
  }
6659
+ export class ProjectWageDeterminations {
6660
+ /**
6661
+ * List project wage determinations
6662
+ *
6663
+ * **Required scope:**
6664
+ *
6665
+ * `projects.wage_determinations:read`
6666
+ *
6667
+ */
6668
+ static listProjectWageDeterminations(options) {
6669
+ return (options.client ?? client).get({
6670
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
6671
+ url: '/api/v1/projects/{project_id}/wage_determinations',
6672
+ ...options
6673
+ });
6674
+ }
6675
+ /**
6676
+ * Create project wage determination
6677
+ *
6678
+ * **Required scope:**
6679
+ *
6680
+ * `projects.wage_determinations:create`
6681
+ *
6682
+ */
6683
+ static createProjectWageDetermination(options) {
6684
+ return (options.client ?? client).post({
6685
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
6686
+ url: '/api/v1/projects/{project_id}/wage_determinations',
6687
+ ...options,
6688
+ headers: {
6689
+ 'Content-Type': 'application/json',
6690
+ ...options.headers
6691
+ }
6692
+ });
6693
+ }
6694
+ /**
6695
+ * Delete project wage determination
6696
+ *
6697
+ * **Required scope:**
6698
+ *
6699
+ * `projects.wage_determinations:delete`
6700
+ *
6701
+ */
6702
+ static deleteProjectWageDetermination(options) {
6703
+ return (options.client ?? client).delete({
6704
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
6705
+ url: '/api/v1/projects/{project_id}/wage_determinations/{id}',
6706
+ ...options
6707
+ });
6708
+ }
6709
+ /**
6710
+ * Show project wage determination
6711
+ *
6712
+ * **Required scope:**
6713
+ *
6714
+ * `projects.wage_determinations:read`
6715
+ *
6716
+ */
6717
+ static getProjectWageDetermination(options) {
6718
+ return (options.client ?? client).get({
6719
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
6720
+ url: '/api/v1/projects/{project_id}/wage_determinations/{id}',
6721
+ ...options
6722
+ });
6723
+ }
6724
+ /**
6725
+ * Update project wage determination
6726
+ *
6727
+ * Edit a determination's values from `effective_from` forward: every version
6728
+ * starting at or after that instant takes the new values, and earlier
6729
+ * versions are untouched. Where an edit starts inside a version and changes
6730
+ * its values, a boundary is created at `effective_from` so the change applies
6731
+ * only from there.
6732
+ *
6733
+ * This rewrites what the determination said, not when it existed — moving
6734
+ * either end of the timeline is `genesis` or `scheduled_termination`.
6735
+ *
6736
+ * `pwa_trade_id` is the exception: a trade regroups the whole determination
6737
+ * at once, so it moves every version rather than applying from
6738
+ * `effective_from`. Changes synchronize to linked job wage determinations.
6739
+ *
6740
+ * Conditional: send the determination's `ETag` as `If-Match`.
6741
+ *
6742
+ *
6743
+ * **Required scope:**
6744
+ *
6745
+ * `projects.wage_determinations:update`
6746
+ *
6747
+ */
6748
+ static updateProjectWageDetermination(options) {
6749
+ return (options.client ?? client).patch({
6750
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
6751
+ url: '/api/v1/projects/{project_id}/wage_determinations/{id}',
6752
+ ...options,
6753
+ headers: {
6754
+ 'Content-Type': 'application/json',
6755
+ ...options.headers
6756
+ }
6757
+ });
6758
+ }
6759
+ }
6337
6760
  export class Projects {
6338
6761
  /**
6339
6762
  * List projects
@@ -6374,6 +6797,7 @@ export class Projects {
6374
6797
  * Remove a participant's jobs before removing it from this set. Returns 201
6375
6798
  * with the project; unknown or inaccessible parent or
6376
6799
  * company IDs return 404, and invalid attributes or relationships return 422.
6800
+ * Undeclared body keys return 400 before any project or relationship is saved.
6377
6801
  *
6378
6802
  *
6379
6803
  * **Required scope:**
@@ -6417,8 +6841,8 @@ export class Projects {
6417
6841
  * Update project
6418
6842
  *
6419
6843
  * Update a project's attributes. `name` cannot be blanked, and
6420
- * `created_by_user_id` is immutable — any request that sets, changes, or clears it
6421
- * returns 422. The federal-PWA-only fields (administrator contact, budget, IRA
6844
+ * `created_by_user_id` is create-only — any update that includes it returns 400,
6845
+ * even when the value is unchanged. Omit it on PATCH. The federal-PWA-only fields (administrator contact, budget, IRA
6422
6846
  * dates) and `asset_owner` apply only while `federal_pwa_mode` is not `none`:
6423
6847
  * switching it to `none` clears the stored values and forces `asset_owner`
6424
6848
  * false, and sending one of them while federal tracking is off — even as null —
@@ -6427,7 +6851,7 @@ export class Projects {
6427
6851
  * still accepts updates that keep that parent. `participating_company_ids`
6428
6852
  * replaces the complete set of participating companies. Remove a participant's
6429
6853
  * jobs before removing it from this set. Only the owning company may update the
6430
- * project.
6854
+ * project. Undeclared body keys return 400 before any project or relationship changes.
6431
6855
  *
6432
6856
  *
6433
6857
  * **Required scope:**
@@ -6678,6 +7102,7 @@ export class Users {
6678
7102
  */
6679
7103
  static listUsers(options) {
6680
7104
  return (options?.client ?? client).get({
7105
+ querySerializer: { parameters: { 'filter[invite_status]': { array: { explode: false } } } },
6681
7106
  security: [{ name: 'X-Api-Key', type: 'apiKey' }],
6682
7107
  url: '/api/v1/users',
6683
7108
  ...options
@@ -6862,6 +7287,14 @@ export class Tasks {
6862
7287
  /**
6863
7288
  * Create form assignment task
6864
7289
  *
7290
+ * Creates a shared form assignment, or one assignment per user
7291
+ * when `spread_assignees` is true. Supplied
7292
+ * `task_attributes.task_assignee_user_ids` must be an array of
7293
+ * strings; null, scalars, and non-string members return 422.
7294
+ * Omitted or empty assignees fail ordinary task validation;
7295
+ * spread creation returns an empty array without creating tasks.
7296
+ *
7297
+ *
6865
7298
  * **Required scope:**
6866
7299
  *
6867
7300
  * `tasks.form_assignment_tasks:create`
@@ -7032,6 +7465,12 @@ export class TimeCards {
7032
7465
  */
7033
7466
  static listTimeCards(options) {
7034
7467
  return (options?.client ?? client).get({
7468
+ querySerializer: { parameters: {
7469
+ 'filter[employment_type]': { array: { explode: false } },
7470
+ 'filter[compensation_type]': { array: { explode: false } },
7471
+ 'filter[worker_approval_status]': { array: { explode: false } },
7472
+ 'filter[manager_approval_status]': { array: { explode: false } }
7473
+ } },
7035
7474
  security: [{ name: 'X-Api-Key', type: 'apiKey' }],
7036
7475
  url: '/api/v1/time_cards',
7037
7476
  ...options
@@ -7708,6 +8147,8 @@ export class AttestationConfigs {
7708
8147
  /**
7709
8148
  * Create attestation config
7710
8149
  *
8150
+ * Creates a question on the addressed pay schedule. Undeclared body keys or a missing `content` or `expected_response` return 400, and a null or wrong-typed value returns 422, before the question is saved.
8151
+ *
7711
8152
  * **Required scope:**
7712
8153
  *
7713
8154
  * `timekeeping.pay_period_configs.attestation_configs:create`
@@ -7727,6 +8168,8 @@ export class AttestationConfigs {
7727
8168
  /**
7728
8169
  * Delete attestation config
7729
8170
  *
8171
+ * Retires a question on the addressed pay schedule at its current pay period end. Repeated retirement preserves the earliest cutoff. A question from another pay schedule returns 404.
8172
+ *
7730
8173
  * **Required scope:**
7731
8174
  *
7732
8175
  * `timekeeping.pay_period_configs.attestation_configs:delete`
@@ -7939,6 +8382,48 @@ export class TimeCardActuals {
7939
8382
  });
7940
8383
  }
7941
8384
  }
8385
+ export class TimeOffRequests {
8386
+ /**
8387
+ * List time off requests
8388
+ *
8389
+ * List the company's time-off requests (R&R, PTO, and the other absence
8390
+ * types). Results are ordered by created_at descending then id and
8391
+ * cursor-paginated. Narrow with filter[user_id] and filter[status]; omitted
8392
+ * keys do not change the list. Combined filters AND.
8393
+ *
8394
+ *
8395
+ * **Required scope:**
8396
+ *
8397
+ * `timekeeping.time_off_requests:read`
8398
+ *
8399
+ */
8400
+ static listTimeOffRequests(options) {
8401
+ return (options?.client ?? client).get({
8402
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
8403
+ url: '/api/v1/timekeeping/time_off_requests',
8404
+ ...options
8405
+ });
8406
+ }
8407
+ /**
8408
+ * Show time off request
8409
+ *
8410
+ * Fetch one time-off request by id. A missing or other-company id reads as
8411
+ * not found.
8412
+ *
8413
+ *
8414
+ * **Required scope:**
8415
+ *
8416
+ * `timekeeping.time_off_requests:read`
8417
+ *
8418
+ */
8419
+ static getTimeOffRequest(options) {
8420
+ return (options.client ?? client).get({
8421
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
8422
+ url: '/api/v1/timekeeping/time_off_requests/{id}',
8423
+ ...options
8424
+ });
8425
+ }
8426
+ }
7942
8427
  export class TimeSessions {
7943
8428
  /**
7944
8429
  * List time sessions