@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.
@@ -83,7 +83,7 @@ export type Problem = {
83
83
  *
84
84
  * **Malformed Request Body**
85
85
  *
86
- * The request body could not be parsed in the declared content type — most commonly a body that is not valid JSON. Send a well-formed body matching the `Content-Type` header.
86
+ * The request body could not be parsed in the declared content type — most commonly a body that is not valid JSON. Send a well-formed body matching the `Content-Type` header. A JSON object that repeats a key, at any depth, is refused too rather than resolved to one of its values; send each key once per object.
87
87
  *
88
88
  * ### non_range_filter_value
89
89
  *
@@ -107,7 +107,7 @@ export type Problem = {
107
107
  *
108
108
  * **Required Parameter Missing**
109
109
  *
110
- * A required request parameter is absent or empty. The message names it; supply the parameter and retry.
110
+ * A required request parameter is absent. Some older endpoints also treat an empty value as absent. The message names the parameter; supply it and retry.
111
111
  *
112
112
  * ### parameter_not_object
113
113
  *
@@ -490,6 +490,242 @@ export type DirectUploadResponseObject = {
490
490
  };
491
491
  };
492
492
  };
493
+ /**
494
+ * A durable standing. The candidate passed the standard at level_sort_order. There is no level id, so the standing survives the next revision. This API does not create or update qualifications.
495
+ */
496
+ export type CompetencyQualificationResponseObject = {
497
+ /**
498
+ * ID of the qualification.
499
+ */
500
+ id: string;
501
+ /**
502
+ * ID of the technician who holds the standing.
503
+ */
504
+ candidate_user_id: string;
505
+ /**
506
+ * ID of the standard the standing is against.
507
+ */
508
+ competencies_standard_id: string;
509
+ /**
510
+ * Tier the candidate passed, matching the level's sort_order on the revision that was assessed. Not a level id.
511
+ */
512
+ level_sort_order: number;
513
+ /**
514
+ * When the standing was first awarded.
515
+ */
516
+ awarded_at: string;
517
+ /**
518
+ * When the standing was last confirmed. Later verification updates this timestamp only.
519
+ */
520
+ last_verified_at: string;
521
+ /**
522
+ * When the qualification row was created.
523
+ */
524
+ created_at: string;
525
+ /**
526
+ * When the qualification row was last updated.
527
+ */
528
+ updated_at: string;
529
+ };
530
+ /**
531
+ * An assessment pinned to one level on one revision. competencies_standard_version_id is that revision, not whatever revision is active now. outcome is null until the assessment is decided. Submit, claim, return, and decide are web-only.
532
+ */
533
+ export type CompetencyAssessmentResponseObject = {
534
+ /**
535
+ * ID of the assessment.
536
+ */
537
+ id: string;
538
+ /**
539
+ * ID of the technician being assessed.
540
+ */
541
+ candidate_user_id: string;
542
+ /**
543
+ * ID of the level pinned when the assessment was opened.
544
+ */
545
+ competencies_level_id: string;
546
+ /**
547
+ * sort_order of the pinned level. A qualification awarded from this assessment stores this tier, not the level id.
548
+ */
549
+ level_sort_order: number;
550
+ /**
551
+ * ID of the revision the pinned level belongs to. Later drafts do not move this assessment.
552
+ */
553
+ competencies_standard_version_id: string;
554
+ /**
555
+ * ID of the standard that revision belongs to.
556
+ */
557
+ competencies_standard_id: string;
558
+ /**
559
+ * ID of the earlier assessment this one continues; null when this is the first.
560
+ */
561
+ predecessor_assessment_id: string | null;
562
+ /**
563
+ * Workflow state: evidence_collection, submitted, in_review, or decided.
564
+ */
565
+ status: 'evidence_collection' | 'submitted' | 'in_review' | 'decided';
566
+ /**
567
+ * Decision of the package: competent or not_yet_competent. Null until status is decided.
568
+ */
569
+ outcome: 'competent' | 'not_yet_competent' | null;
570
+ /**
571
+ * ID of the user who opened the assessment.
572
+ */
573
+ requested_by_user_id: string;
574
+ /**
575
+ * When the assessment was opened.
576
+ */
577
+ requested_at: string;
578
+ /**
579
+ * ID of the user who submitted the package; null until it is submitted.
580
+ */
581
+ submitted_by_user_id: string | null;
582
+ /**
583
+ * When the package was submitted; null until then.
584
+ */
585
+ submitted_at: string | null;
586
+ /**
587
+ * ID of the qualified assessor who claimed the review; null until it is claimed.
588
+ */
589
+ claimed_by_user_id: string | null;
590
+ /**
591
+ * When the review was claimed; null until then.
592
+ */
593
+ claimed_at: string | null;
594
+ /**
595
+ * ID of the qualified assessor who decided the package; null until it is decided.
596
+ */
597
+ decided_by_user_id: string | null;
598
+ /**
599
+ * When the package was decided; null until then.
600
+ */
601
+ decided_at: string | null;
602
+ /**
603
+ * When the assessment row was created.
604
+ */
605
+ created_at: string;
606
+ /**
607
+ * When the assessment row was last updated.
608
+ */
609
+ updated_at: string;
610
+ };
611
+ /**
612
+ * One task line on an assessment. decision and qa_feedback are omitted, not null, when the caller is the candidate and the package is not yet decided.
613
+ */
614
+ export type CompetencyAssessmentKeyActivityResponseObject = {
615
+ /**
616
+ * ID of the line.
617
+ */
618
+ id: string;
619
+ /**
620
+ * ID of the assessment this line belongs to.
621
+ */
622
+ competencies_assessment_id: string;
623
+ /**
624
+ * ID of the catalog key activity snapshotted onto the line.
625
+ */
626
+ competencies_key_activity_id: string;
627
+ /**
628
+ * Methods the assessor recorded for this line. Empty when none have been recorded.
629
+ */
630
+ assessment_methods: Array<'direct_observation' | 'simulation' | 'oral_questioning' | 'written_questioning' | 'products_of_work' | 'recognized_prior_learning' | 'witness_testimony' | 'other'>;
631
+ /**
632
+ * Assessor feedback visible to readers of the assessment; null when unset.
633
+ */
634
+ aa_feedback: string | null;
635
+ /**
636
+ * Date evidence for this line was submitted; null when unset.
637
+ */
638
+ evidence_submitted_on: string | null;
639
+ /**
640
+ * ID of the assessor who recorded the line; null when unset.
641
+ */
642
+ assessed_by_user_id: string | null;
643
+ /**
644
+ * When the line was assessed; null when unset.
645
+ */
646
+ assessed_at: string | null;
647
+ /**
648
+ * ID of the line on a predecessor assessment this one was carried from; null when it was not carried.
649
+ */
650
+ carried_from_id: string | null;
651
+ /**
652
+ * When the reviewer decided this line; null until then.
653
+ */
654
+ decided_at: string | null;
655
+ /**
656
+ * Reviewer decision: pending, competent, or not_yet_competent. Omitted when the caller is the candidate and the package is not yet decided.
657
+ */
658
+ decision?: 'pending' | 'competent' | 'not_yet_competent';
659
+ /**
660
+ * Reviewer feedback. Omitted, together with decision, when the caller is the candidate and the package is not yet decided. Null when the caller may see it and none was recorded.
661
+ */
662
+ qa_feedback?: string | null;
663
+ /**
664
+ * When the line was created.
665
+ */
666
+ created_at: string;
667
+ /**
668
+ * When the line was last updated.
669
+ */
670
+ updated_at: string;
671
+ };
672
+ /**
673
+ * One piece of evidence on an assessment line. File bytes are not served. file_name, file_byte_size, and file_content_type describe an upload and are null for other kinds.
674
+ */
675
+ export type CompetencyEvidenceItemResponseObject = {
676
+ /**
677
+ * ID of the evidence item.
678
+ */
679
+ id: string;
680
+ /**
681
+ * ID of the assessment line this evidence is attached to.
682
+ */
683
+ competencies_assessment_key_activity_id: string;
684
+ /**
685
+ * What the evidence points at: upload, form_submission, or certification.
686
+ */
687
+ kind: 'upload' | 'form_submission' | 'certification';
688
+ /**
689
+ * Free-text description; null when unset, or when the caller cannot open the form or certification.
690
+ */
691
+ description: string | null;
692
+ /**
693
+ * Date the evidence was captured.
694
+ */
695
+ captured_on: string;
696
+ /**
697
+ * ID of the form submission when kind is form_submission and the caller can open it; otherwise null.
698
+ */
699
+ form_submission_id: string | null;
700
+ /**
701
+ * ID of the user certification when kind is certification and the caller can open it; otherwise null.
702
+ */
703
+ user_certification_id: string | null;
704
+ /**
705
+ * ID of the user who added the evidence.
706
+ */
707
+ added_by_user_id: string;
708
+ /**
709
+ * Filename of an uploaded file; null when kind is not upload or no file is attached.
710
+ */
711
+ file_name: string | null;
712
+ /**
713
+ * Size in bytes of an uploaded file; null when no file is attached.
714
+ */
715
+ file_byte_size: number | null;
716
+ /**
717
+ * Content type of an uploaded file; null when no file is attached.
718
+ */
719
+ file_content_type: string | null;
720
+ /**
721
+ * When the evidence item was created.
722
+ */
723
+ created_at: string;
724
+ /**
725
+ * When the evidence item was last updated.
726
+ */
727
+ updated_at: string;
728
+ };
493
729
  /**
494
730
  * A DOL-registered apprenticeship program, sponsored by a company and visible to its sponsor and enrolled employers.
495
731
  */
@@ -1038,11 +1274,11 @@ export type ApprenticeshipOccupationUpdateParameters = {
1038
1274
  */
1039
1275
  export type ApprenticeshipProgramEmployerParameters = {
1040
1276
  /**
1041
- * ID of the company to authorize as an employer. A company-scoped key may name only its own company; a user-scoped key may name a company its user administers or manages. Required.
1277
+ * ID of the company to authorize as an employer. A company-scoped key may name only its own company; a user-scoped key may name a company its user administers or manages. Required; omission answers 400, and supplied null, a blank string, or a wrong type answers 422.
1042
1278
  */
1043
1279
  company_id: string;
1044
1280
  /**
1045
- * Whether this employer's apprentices must allocate apprenticeship hours from DSPTCH time cards rather than recording them standalone; optional, defaults to false.
1281
+ * Whether this employer's apprentices must allocate apprenticeship hours from DSPTCH time cards rather than recording them standalone; optional, defaults to false. Supplied null or a non-boolean answers 422.
1046
1282
  */
1047
1283
  require_timecard_allocation?: boolean;
1048
1284
  };
@@ -1051,11 +1287,11 @@ export type ApprenticeshipProgramEmployerParameters = {
1051
1287
  */
1052
1288
  export type ApprenticeshipProgramEmployerUpdateParameters = {
1053
1289
  /**
1054
- * ID of the company authorized as an employer. A company-scoped key may name only its own company; a user-scoped key may name a company its user administers or manages. Omit to leave it unchanged.
1290
+ * ID of the company authorized as an employer. A company-scoped key may name only its own company; a user-scoped key may name a company its user administers or manages. Omit to leave it unchanged; supplied null, a blank string, or a wrong type answers 422.
1055
1291
  */
1056
1292
  company_id?: string;
1057
1293
  /**
1058
- * Whether this employer's apprentices must allocate apprenticeship hours from DSPTCH time cards rather than recording them standalone; omit to leave it unchanged.
1294
+ * Whether this employer's apprentices must allocate apprenticeship hours from DSPTCH time cards rather than recording them standalone; omit to leave it unchanged. Supplied null or a non-boolean answers 422.
1059
1295
  */
1060
1296
  require_timecard_allocation?: boolean;
1061
1297
  };
@@ -2272,7 +2508,7 @@ export type AssetsProductParameters = {
2272
2508
  */
2273
2509
  images_attributes?: Array<AssetsAttachmentParameters>;
2274
2510
  /**
2275
- * ID of the user this write is performed on behalf of, recorded for auditing. Required on create; must belong to your company.
2511
+ * ID of the user this write is performed on behalf of, recorded for auditing. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
2276
2512
  */
2277
2513
  performed_by_user_id: string;
2278
2514
  };
@@ -2780,28 +3016,28 @@ export type DepartmentResponseObject = {
2780
3016
  updated_at: string;
2781
3017
  };
2782
3018
  /**
2783
- * Request body for creating a department.
3019
+ * Request body for creating a department. Send fields in JSON; the department belongs to the company that owns the API key.
2784
3020
  */
2785
3021
  export type DepartmentParameters = {
2786
3022
  /**
2787
- * Department name; required and unique within the company.
3023
+ * Required department name, unique within the company. Omission answers 400; supplied null or a wrong type answers 422. Blank names fail model validation with 422.
2788
3024
  */
2789
3025
  name: string;
2790
3026
  /**
2791
- * Optional free-text description.
3027
+ * Optional free-text description. Null or a blank string leaves it unset; nonstring values other than null answer 422.
2792
3028
  */
2793
3029
  description?: string | null;
2794
3030
  };
2795
3031
  /**
2796
- * Request body for updating a department. Send only the fields to change.
3032
+ * Request body for updating a department. Send only fields to change in JSON; omitted fields remain unchanged.
2797
3033
  */
2798
3034
  export type DepartmentUpdateParameters = {
2799
3035
  /**
2800
- * Department name; unique within the company. Omit to leave it unchanged.
3036
+ * Department name, unique within the company; omit to leave it unchanged. Supplied null, a wrong type, or a blank name answers 422.
2801
3037
  */
2802
3038
  name?: string;
2803
3039
  /**
2804
- * Optional free-text description; null clears it.
3040
+ * Optional free-text description; omit to leave it unchanged, or send null or a blank string to clear it. Nonstring values other than null answer 422.
2805
3041
  */
2806
3042
  description?: string | null;
2807
3043
  };
@@ -2991,19 +3227,19 @@ export type AttestationConfigResponseObject = {
2991
3227
  updated_at: string;
2992
3228
  };
2993
3229
  /**
2994
- * Create an attestation config on a pay schedule; content and expected_response are required. The pay schedule is taken from the URL path.
3230
+ * Create an attestation config on a pay schedule; content and expected_response are required, and omitting either answers 400. A null or wrong-typed value answers 422. The pay schedule is taken from the URL path.
2995
3231
  */
2996
3232
  export type AttestationConfigParameters = {
2997
3233
  /**
2998
- * The attestation question presented to the worker when a shift ends.
3234
+ * The attestation question presented to the worker when a shift ends. A blank question fails model validation with 422.
2999
3235
  */
3000
3236
  content: string;
3001
3237
  /**
3002
- * The answer expected for a compliant shift (true or false).
3238
+ * The answer expected for a compliant shift, as a JSON boolean.
3003
3239
  */
3004
3240
  expected_response: boolean;
3005
3241
  /**
3006
- * US state to scope this config to; omit to apply to every state.
3242
+ * US state to scope this config to; omit it or send null to apply to every state. A blank string answers 422.
3007
3243
  */
3008
3244
  us_state_id?: string | null;
3009
3245
  };
@@ -3629,7 +3865,7 @@ export type PwaTradeParameters = {
3629
3865
  */
3630
3866
  export type PwaTradeUpdateParameters = {
3631
3867
  /**
3632
- * New display name for the craft, e.g. "Electrician".
3868
+ * New display name for the craft, e.g. "Electrician"; omit to leave it unchanged. Supplied null, a wrong type, or a blank name answers 422.
3633
3869
  */
3634
3870
  name?: string;
3635
3871
  };
@@ -3983,7 +4219,7 @@ export type JobParameters = {
3983
4219
  */
3984
4220
  requested_by_company_id?: string;
3985
4221
  /**
3986
- * IDs of the users who manage the job; null when the job has no managers.
4222
+ * 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
4223
  */
3988
4224
  manager_user_ids?: Array<string> | null;
3989
4225
  /**
@@ -4036,7 +4272,7 @@ export type JobParameters = {
4036
4272
  */
4037
4273
  allow_customer_access?: boolean;
4038
4274
  /**
4039
- * IDs of the timecodes to associate with the job; null when none.
4275
+ * 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
4276
  */
4041
4277
  timekeeping_timecode_ids?: Array<string> | null;
4042
4278
  /**
@@ -4278,20 +4514,20 @@ export type GroupResponseObject = {
4278
4514
  updated_at: string;
4279
4515
  };
4280
4516
  /**
4281
- * Request body for creating a group.
4517
+ * Request body for creating a group. Send fields in JSON; the group belongs to the company that owns the API key.
4282
4518
  */
4283
4519
  export type GroupParameters = {
4284
4520
  /**
4285
- * The group's display name; required and unique within the company.
4521
+ * Required display name, unique within the company. Omission answers 400; supplied null or a wrong type answers 422. Blank names fail model validation with 422.
4286
4522
  */
4287
4523
  name: string;
4288
4524
  };
4289
4525
  /**
4290
- * Request body for updating a group. Send only the fields to change.
4526
+ * Request body for updating a group. Send only fields to change in JSON; omitted fields remain unchanged.
4291
4527
  */
4292
4528
  export type GroupUpdateParameters = {
4293
4529
  /**
4294
- * The group's display name; unique within the company. Omit to leave it unchanged.
4530
+ * The group's display name, unique within the company; omit to leave it unchanged. Supplied null, a wrong type, or a blank name answers 422.
4295
4531
  */
4296
4532
  name?: string;
4297
4533
  };
@@ -4683,7 +4919,7 @@ export type UserParameters = ({
4683
4919
  /**
4684
4920
  * 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
4921
  */
4686
- roles?: Array<string>;
4922
+ roles?: Array<string> | null;
4687
4923
  /**
4688
4924
  * Signed ID of a direct-upload blob to attach as the profile picture. Obtain it by first uploading the image to POST /api/v1/direct_uploads.
4689
4925
  */
@@ -4768,7 +5004,7 @@ export type UserParameters = ({
4768
5004
  /**
4769
5005
  * Ids of the groups to add the worker to at your company.
4770
5006
  */
4771
- group_ids?: Array<number>;
5007
+ group_ids?: Array<string> | null;
4772
5008
  /**
4773
5009
  * 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
5010
  */
@@ -5509,28 +5745,28 @@ export type PositionFunctionResponseObject = {
5509
5745
  updated_at: string;
5510
5746
  };
5511
5747
  /**
5512
- * Request body for creating a position function.
5748
+ * Request body for creating a position function. Send fields in JSON; the function belongs to the company that owns the API key.
5513
5749
  */
5514
5750
  export type PositionFunctionParameters = {
5515
5751
  /**
5516
- * The function name (e.g. "Electrician", "Foreman").
5752
+ * Required function name (e.g. "Electrician", "Foreman"), unique among the company's functions. Omission answers 400; supplied null or a wrong type answers 422. Blank values fail model validation with 422.
5517
5753
  */
5518
5754
  value: string;
5519
5755
  /**
5520
- * What the function covers.
5756
+ * Required description of what the function covers. Omission answers 400; supplied null or a wrong type answers 422. Blank descriptions fail model validation with 422.
5521
5757
  */
5522
5758
  description: string;
5523
5759
  };
5524
5760
  /**
5525
- * Request body for updating a position function. Send only the fields to change.
5761
+ * Request body for updating a position function. Send only fields to change in JSON; omitted fields remain unchanged.
5526
5762
  */
5527
5763
  export type PositionFunctionUpdateParameters = {
5528
5764
  /**
5529
- * The function name (e.g. "Electrician", "Foreman"). Omit to leave it unchanged.
5765
+ * The function name (e.g. "Electrician", "Foreman"), unique among the company's functions; omit to leave it unchanged. Supplied null, a wrong type, or a blank value answers 422.
5530
5766
  */
5531
5767
  value?: string;
5532
5768
  /**
5533
- * What the function covers. Omit to leave it unchanged.
5769
+ * What the function covers; omit to leave it unchanged. Supplied null, a wrong type, or a blank description answers 422.
5534
5770
  */
5535
5771
  description?: string;
5536
5772
  };
@@ -5733,7 +5969,7 @@ export type UserGroupResponse = {
5733
5969
  */
5734
5970
  export type UserGroupParameters = {
5735
5971
  /**
5736
- * IDs of the users to add to the group; users already in the group are ignored, and the full membership list is returned.
5972
+ * 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
5973
  */
5738
5974
  user_ids: Array<string>;
5739
5975
  };
@@ -6743,6 +6979,62 @@ export type TimeSessionsResponseObject = {
6743
6979
  */
6744
6980
  data: Array<TimeSessionResponseObject>;
6745
6981
  };
6982
+ /**
6983
+ * 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.
6984
+ */
6985
+ export type TimeOffRequestResponseObject = {
6986
+ /**
6987
+ * Unique identifier.
6988
+ */
6989
+ id: string;
6990
+ /**
6991
+ * ID of the worker (user) the request is for.
6992
+ */
6993
+ user_id: string;
6994
+ /**
6995
+ * Lifecycle status of the request.
6996
+ */
6997
+ status: 'pending' | 'approved' | 'denied' | 'cancelled' | 'expired';
6998
+ /**
6999
+ * Kind of non-working time.
7000
+ */
7001
+ absence_type: 'rest_and_recovery' | 'vacation' | 'bereavement' | 'ca_covid_19_sick' | 'custom' | 'jury_duty' | 'unpaid' | 'training' | 'bench';
7002
+ /**
7003
+ * When the requested absence starts (ISO 8601).
7004
+ */
7005
+ start_time: string;
7006
+ /**
7007
+ * When the requested absence ends (ISO 8601).
7008
+ */
7009
+ end_time: string;
7010
+ /**
7011
+ * When the request was reviewed (ISO 8601); null while it is still pending.
7012
+ */
7013
+ reviewed_at: string | null;
7014
+ /**
7015
+ * ID of the user who reviewed the request; null while it is still pending.
7016
+ */
7017
+ reviewer_user_id: string | null;
7018
+ /**
7019
+ * When the record was created (ISO 8601).
7020
+ */
7021
+ created_at: string;
7022
+ /**
7023
+ * When the record was last updated (ISO 8601).
7024
+ */
7025
+ updated_at: string;
7026
+ };
7027
+ /**
7028
+ * A page of time-off requests, with pagination metadata and navigation links.
7029
+ */
7030
+ export type TimeOffRequestsResponseObject = {
7031
+ meta: Meta;
7032
+ links: Links;
7033
+ /**
7034
+ * The page of time-off requests.
7035
+ */
7036
+ data: Array<TimeOffRequestResponseObject>;
7037
+ };
6746
7038
  /**
6747
7039
  * Request body for locking or unlocking a time card.
6748
7040
  */
@@ -7323,7 +7615,7 @@ export type ProjectResponseObject = {
7323
7615
  updated_at: string;
7324
7616
  };
7325
7617
  /**
7326
- * 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.
7618
+ * 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.
7327
7619
  */
7328
7620
  export type ProjectParameters = {
7329
7621
  /**
@@ -7339,7 +7631,7 @@ export type ProjectParameters = {
7339
7631
  */
7340
7632
  description?: string | null;
7341
7633
  /**
7342
- * 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.
7634
+ * 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.
7343
7635
  */
7344
7636
  created_by_user_id: string;
7345
7637
  /**
@@ -7347,7 +7639,7 @@ export type ProjectParameters = {
7347
7639
  */
7348
7640
  parent_id?: string | null;
7349
7641
  /**
7350
- * 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.
7642
+ * 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.
7351
7643
  */
7352
7644
  participating_company_ids?: Array<string>;
7353
7645
  /**
@@ -7412,7 +7704,7 @@ export type ProjectParameters = {
7412
7704
  placed_in_service_date?: string | null;
7413
7705
  };
7414
7706
  /**
7415
- * 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.
7707
+ * 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.
7416
7708
  */
7417
7709
  export type ProjectUpdateParameters = {
7418
7710
  /**
@@ -7432,7 +7724,7 @@ export type ProjectUpdateParameters = {
7432
7724
  */
7433
7725
  parent_id?: string | null;
7434
7726
  /**
7435
- * 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.
7727
+ * 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.
7436
7728
  */
7437
7729
  participating_company_ids?: Array<string>;
7438
7730
  /**
@@ -8788,75 +9080,89 @@ export type JobSiteUpdateParameters = {
8788
9080
  feature_ids?: Array<string>;
8789
9081
  };
8790
9082
  /**
8791
- * A form-completion task attached to a job — a SurveyJS form assigned to users with a due time, optional recurrence, and reminders. Path `{id}` is the `Tasks::JobFormAssignmentTask` id, not the web show `Task#uid`.
9083
+ * 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.
8792
9084
  */
8793
- export type JobFormAssignmentResponseObject = {
9085
+ export type JobGoodFaithEffortExceptionResponseObject = {
8794
9086
  /**
8795
- * Unique identifier.
9087
+ * Id of the exception.
8796
9088
  */
8797
9089
  id: string;
8798
9090
  /**
8799
- * ID of the job this form task belongs to; always matches the job in the URL path.
9091
+ * Id of the job this exception belongs to.
8800
9092
  */
8801
9093
  job_id: string;
8802
9094
  /**
8803
- * ID of the form definition (a SurveyJS form template) this assignment is for.
9095
+ * True when no qualifying apprenticeship program existed in the area or occupation; false when a program was asked.
8804
9096
  */
8805
- form_definition_id: string;
9097
+ program_unavailable: boolean;
8806
9098
  /**
8807
- * Name of the form task; defaults to the form definition's name.
9099
+ * Number of apprentices requested from the program; null when absent.
8808
9100
  */
8809
- name: string;
9101
+ num_apprentices_requested: number | null;
8810
9102
  /**
8811
- * Free-text description of the task.
9103
+ * Number of apprentices the program provided; null when absent.
8812
9104
  */
8813
- description: string | null;
9105
+ num_apprentices_provided: number | null;
8814
9106
  /**
8815
- * IANA time zone in which time_due is interpreted; always set, defaulting to US/Central.
9107
+ * Requested minutes of apprentice labor per apprentice; null when absent. Not converted to hours.
8816
9108
  */
8817
- tz_name: string;
9109
+ minutes_per_apprentice: number | null;
8818
9110
  /**
8819
- * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
9111
+ * Calendar date the request was made; null when absent.
8820
9112
  */
8821
- time_due: string | null;
9113
+ requested_on_date: string | null;
8822
9114
  /**
8823
- * How often this form task recurs: one of DAILY, WORKDAILY, WORKDAILYSIX, WEEKLY, BIWEEKLY, MONTHLY, or QUARTERLY. Null for a one-time assignment; on write, applied only when recurring is true.
9115
+ * First calendar day of the requested coverage window; null when absent.
8824
9116
  */
8825
- frequency: 'DAILY' | 'WORKDAILY' | 'WORKDAILYSIX' | 'WEEKLY' | 'BIWEEKLY' | 'MONTHLY' | 'QUARTERLY' | null;
9117
+ request_start_date: string | null;
8826
9118
  /**
8827
- * When recurrence stops (ISO 8601); null for a non-recurring or open-ended task.
9119
+ * Last calendar day of the requested coverage window; null when absent.
8828
9120
  */
8829
- recurrence_end_time: string | null;
9121
+ request_end_date: string | null;
8830
9122
  /**
8831
- * IDs of the users this form task is assigned to.
9123
+ * Occupation named in the request; null when absent, including when no program existed.
8832
9124
  */
8833
- task_assignee_user_ids: Array<string>;
9125
+ occupation: string | null;
8834
9126
  /**
8835
- * Reminder notifications for this task, each scheduled at an offset from the due time.
9127
+ * Name of the apprenticeship program that was asked; null when absent, including when no program existed.
8836
9128
  */
8837
- reminders: Array<{
8838
- /**
8839
- * ISO 8601 duration offset from the due time for the reminder (e.g. -PT1H for one hour before); must be one of the preset reminder times.
8840
- */
8841
- offset: string;
8842
- /**
8843
- * When the reminder fires (ISO 8601), computed as the due time plus the offset.
8844
- */
8845
- remind_at: string;
8846
- }>;
9129
+ program_name: string | null;
9130
+ /**
9131
+ * The program's reply — `no_response`, `denied`, or `partial`. Null when `program_unavailable` is true.
9132
+ */
9133
+ response: 'no_response' | 'denied' | 'partial' | null;
9134
+ /**
9135
+ * When the exception was created.
9136
+ */
9137
+ created_at: string;
9138
+ /**
9139
+ * When the exception was last updated.
9140
+ */
9141
+ updated_at: string;
8847
9142
  };
8848
9143
  /**
8849
- * A form-completion task attached to a site — a SurveyJS form assigned to users with a due time, optional recurrence, and reminders. Path `{id}` is the `Tasks::SiteFormAssignmentTask` id, not the web show `Task#uid`. Sites are shared across companies; another company's assignment on the same site is not found. An empty assignee list is valid.
9144
+ * A page of a job's good-faith-effort exceptions, with pagination metadata and navigation links.
8850
9145
  */
8851
- export type SiteFormAssignmentResponseObject = {
9146
+ export type JobGoodFaithEffortExceptionsResponseObject = {
9147
+ meta: Meta;
9148
+ links: Links;
9149
+ /**
9150
+ * The page of good-faith-effort exceptions.
9151
+ */
9152
+ data: Array<JobGoodFaithEffortExceptionResponseObject>;
9153
+ };
9154
+ /**
9155
+ * A form-completion task attached to a job — a SurveyJS form assigned to users with a due time, optional recurrence, and reminders. Path `{id}` is the `Tasks::JobFormAssignmentTask` id, not the web show `Task#uid`.
9156
+ */
9157
+ export type JobFormAssignmentResponseObject = {
8852
9158
  /**
8853
9159
  * Unique identifier.
8854
9160
  */
8855
9161
  id: string;
8856
9162
  /**
8857
- * ID of the site this form task belongs to; always matches the site in the URL path.
9163
+ * ID of the job this form task belongs to; always matches the job in the URL path.
8858
9164
  */
8859
- site_id: string;
9165
+ job_id: string;
8860
9166
  /**
8861
9167
  * ID of the form definition (a SurveyJS form template) this assignment is for.
8862
9168
  */
@@ -8904,37 +9210,155 @@ export type SiteFormAssignmentResponseObject = {
8904
9210
  }>;
8905
9211
  };
8906
9212
  /**
8907
- * Create a site form assignment. form_definition_id and task_attributes are required, and task_attributes.created_by_user_id is required (a missing value returns 400). site_id comes from the path and is not part of the body. recurring gates the recurrence fields. An empty task_assignee_user_ids list is valid. The company must hold a SiteClaim on the site with site_forms enabled.
9213
+ * A corrective payment recorded against a job's PWA obligations. Read-only. Does not include attestation files, pretty type, currency, or a Money amount.
8908
9214
  */
8909
- export type SiteFormAssignmentParameters = {
9215
+ export type JobCurePaymentResponseObject = {
8910
9216
  /**
8911
- * ID of the form definition (a SurveyJS form template) this assignment is for.
9217
+ * Id of the cure payment.
8912
9218
  */
8913
- form_definition_id: string;
9219
+ id: string;
8914
9220
  /**
8915
- * When true, frequency and recurrence_end_time apply; when false or omitted, the task is one-time and those fields are cleared.
9221
+ * Id of the job this payment belongs to.
8916
9222
  */
8917
- recurring?: boolean;
9223
+ job_id: string;
8918
9224
  /**
8919
- * The underlying task's name, schedule, assignees, and reminders.
9225
+ * Stored STI class name — `Pwa::CurePayments::Federal` or `Pwa::CurePayments::Regional`. The full class name, not a demodulized label.
8920
9226
  */
8921
- task_attributes: {
8922
- /**
8923
- * Name of the form task; defaults to the form definition's name.
8924
- */
8925
- name?: string | null;
8926
- /**
8927
- * Free-text description of the task.
8928
- */
8929
- description?: string | null;
8930
- /**
8931
- * ID of the user creating the task, recorded as its creator. Required; a missing value returns 400.
8932
- */
8933
- created_by_user_id: string;
8934
- /**
8935
- * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
8936
- */
8937
- time_due?: string | null;
9227
+ type: 'Pwa::CurePayments::Federal' | 'Pwa::CurePayments::Regional';
9228
+ /**
9229
+ * Payment amount in cents as a decimal string (numeric(19,2)), for example `"150000.0"`. Not an integer, not dollars, and not rounded.
9230
+ */
9231
+ amount_cents: string;
9232
+ /**
9233
+ * Calendar date the payment was made.
9234
+ */
9235
+ paid_on_date: string;
9236
+ /**
9237
+ * First calendar day of the window this payment cures.
9238
+ */
9239
+ cures_from_date: string;
9240
+ /**
9241
+ * Last calendar day of the window this payment cures.
9242
+ */
9243
+ cures_to_date: string;
9244
+ /**
9245
+ * Optional notes; null when absent.
9246
+ */
9247
+ notes: string | null;
9248
+ /**
9249
+ * Id of the user who recorded the payment.
9250
+ */
9251
+ created_by_user_id: string;
9252
+ /**
9253
+ * When the payment was created.
9254
+ */
9255
+ created_at: string;
9256
+ /**
9257
+ * When the payment was last updated.
9258
+ */
9259
+ updated_at: string;
9260
+ };
9261
+ /**
9262
+ * A page of a job's PWA cure payments, with pagination metadata and navigation links.
9263
+ */
9264
+ export type JobCurePaymentsResponseObject = {
9265
+ meta: Meta;
9266
+ links: Links;
9267
+ /**
9268
+ * The page of cure payments.
9269
+ */
9270
+ data: Array<JobCurePaymentResponseObject>;
9271
+ };
9272
+ /**
9273
+ * A form-completion task attached to a site — a SurveyJS form assigned to users with a due time, optional recurrence, and reminders. Path `{id}` is the `Tasks::SiteFormAssignmentTask` id, not the web show `Task#uid`. Sites are shared across companies; another company's assignment on the same site is not found. An empty assignee list is valid.
9274
+ */
9275
+ export type SiteFormAssignmentResponseObject = {
9276
+ /**
9277
+ * Unique identifier.
9278
+ */
9279
+ id: string;
9280
+ /**
9281
+ * ID of the site this form task belongs to; always matches the site in the URL path.
9282
+ */
9283
+ site_id: string;
9284
+ /**
9285
+ * ID of the form definition (a SurveyJS form template) this assignment is for.
9286
+ */
9287
+ form_definition_id: string;
9288
+ /**
9289
+ * Name of the form task; defaults to the form definition's name.
9290
+ */
9291
+ name: string;
9292
+ /**
9293
+ * Free-text description of the task.
9294
+ */
9295
+ description: string | null;
9296
+ /**
9297
+ * IANA time zone in which time_due is interpreted; always set, defaulting to US/Central.
9298
+ */
9299
+ tz_name: string;
9300
+ /**
9301
+ * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
9302
+ */
9303
+ time_due: string | null;
9304
+ /**
9305
+ * How often this form task recurs: one of DAILY, WORKDAILY, WORKDAILYSIX, WEEKLY, BIWEEKLY, MONTHLY, or QUARTERLY. Null for a one-time assignment; on write, applied only when recurring is true.
9306
+ */
9307
+ frequency: 'DAILY' | 'WORKDAILY' | 'WORKDAILYSIX' | 'WEEKLY' | 'BIWEEKLY' | 'MONTHLY' | 'QUARTERLY' | null;
9308
+ /**
9309
+ * When recurrence stops (ISO 8601); null for a non-recurring or open-ended task.
9310
+ */
9311
+ recurrence_end_time: string | null;
9312
+ /**
9313
+ * IDs of the users this form task is assigned to.
9314
+ */
9315
+ task_assignee_user_ids: Array<string>;
9316
+ /**
9317
+ * Reminder notifications for this task, each scheduled at an offset from the due time.
9318
+ */
9319
+ reminders: Array<{
9320
+ /**
9321
+ * ISO 8601 duration offset from the due time for the reminder (e.g. -PT1H for one hour before); must be one of the preset reminder times.
9322
+ */
9323
+ offset: string;
9324
+ /**
9325
+ * When the reminder fires (ISO 8601), computed as the due time plus the offset.
9326
+ */
9327
+ remind_at: string;
9328
+ }>;
9329
+ };
9330
+ /**
9331
+ * Create a site form assignment. form_definition_id and task_attributes are required, and task_attributes.created_by_user_id is required (a missing value returns 400). site_id comes from the path and is not part of the body. recurring gates the recurrence fields. An empty task_assignee_user_ids list is valid. The company must hold a SiteClaim on the site with site_forms enabled.
9332
+ */
9333
+ export type SiteFormAssignmentParameters = {
9334
+ /**
9335
+ * ID of the form definition (a SurveyJS form template) this assignment is for.
9336
+ */
9337
+ form_definition_id: string;
9338
+ /**
9339
+ * When true, frequency and recurrence_end_time apply; when false or omitted, the task is one-time and those fields are cleared.
9340
+ */
9341
+ recurring?: boolean;
9342
+ /**
9343
+ * The underlying task's name, schedule, assignees, and reminders.
9344
+ */
9345
+ task_attributes: {
9346
+ /**
9347
+ * Name of the form task; defaults to the form definition's name.
9348
+ */
9349
+ name?: string | null;
9350
+ /**
9351
+ * Free-text description of the task.
9352
+ */
9353
+ description?: string | null;
9354
+ /**
9355
+ * ID of the user creating the task, recorded as its creator. Required; a missing value returns 400.
9356
+ */
9357
+ created_by_user_id: string;
9358
+ /**
9359
+ * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
9360
+ */
9361
+ time_due?: string | null;
8938
9362
  /**
8939
9363
  * IANA time zone in which time_due is interpreted; null for an unscheduled task.
8940
9364
  */
@@ -9525,7 +9949,7 @@ export type PositionParameters = {
9525
9949
  */
9526
9950
  wage_adder_rate_cents?: number | null;
9527
9951
  /**
9528
- * 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.
9952
+ * 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.
9529
9953
  */
9530
9954
  job_wage_determination_ids?: Array<string>;
9531
9955
  /**
@@ -9539,7 +9963,7 @@ export type PositionParameters = {
9539
9963
  };
9540
9964
  };
9541
9965
  /**
9542
- * Parameters for creating a per-unit scope price on a job. `scope_kind` and `unit_price` are required.
9966
+ * Parameters for creating a per-unit scope price on a job. `scope_kind` and `unit_price` are required; omitting either answers 400, and a null or wrong-typed value answers 422.
9543
9967
  */
9544
9968
  export type ProductionJobScopePriceParameters = {
9545
9969
  /**
@@ -9547,11 +9971,11 @@ export type ProductionJobScopePriceParameters = {
9547
9971
  */
9548
9972
  scope_kind: string;
9549
9973
  /**
9550
- * Billing rate per unit, as a decimal string in the company's currency.
9974
+ * Billing rate per unit, as a decimal string in the company's currency. A JSON number answers 422.
9551
9975
  */
9552
9976
  unit_price: string;
9553
9977
  /**
9554
- * Contracted number of units expected for this scope on the job; null when no target is set.
9978
+ * Contracted number of units expected for this scope on the job, as an integer; null when no target is set.
9555
9979
  */
9556
9980
  contracted_count?: number | null;
9557
9981
  /**
@@ -9560,7 +9984,7 @@ export type ProductionJobScopePriceParameters = {
9560
9984
  unit_of_measure?: string;
9561
9985
  };
9562
9986
  /**
9563
- * Parameters for updating a per-unit scope price on a job. Every field is optional; omit a field to preserve its current value. The resulting price must retain a scope kind and non-negative unit price.
9987
+ * Parameters for updating a per-unit scope price on a job. Every field is optional; omit a field to preserve its current value, or send null for `contracted_count` to clear it. A null or wrong-typed value for any other field answers 422. The resulting price must retain a scope kind and non-negative unit price.
9564
9988
  */
9565
9989
  export type ProductionJobScopePriceUpdateParameters = {
9566
9990
  /**
@@ -9568,11 +9992,11 @@ export type ProductionJobScopePriceUpdateParameters = {
9568
9992
  */
9569
9993
  scope_kind?: string;
9570
9994
  /**
9571
- * Billing rate per unit, as a decimal string in the company's currency.
9995
+ * Billing rate per unit, as a decimal string in the company's currency. A JSON number answers 422.
9572
9996
  */
9573
9997
  unit_price?: string;
9574
9998
  /**
9575
- * Contracted number of units expected for this scope on the job; null when no target is set.
9999
+ * Contracted number of units expected for this scope on the job, as an integer; null when no target is set.
9576
10000
  */
9577
10001
  contracted_count?: number | null;
9578
10002
  /**
@@ -9653,9 +10077,9 @@ export type ProductionCompletionBaseParameters = {
9653
10077
  */
9654
10078
  production_job_scope_price_id?: string;
9655
10079
  /**
9656
- * Company member filing the completion; required on create.
10080
+ * ID of the company member filing the completion. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
9657
10081
  */
9658
- performed_by_user_id?: string;
10082
+ performed_by_user_id: string;
9659
10083
  /**
9660
10084
  * Free-text notes on the completion; null when none.
9661
10085
  */
@@ -9974,44 +10398,44 @@ export type CertificationPackageResponseObject = {
9974
10398
  updated_at: string;
9975
10399
  };
9976
10400
  /**
9977
- * Request body for creating a certification package — a named set of certifications a company requires together. The package belongs to the company that owns the API key.
10401
+ * Request body for creating a certification package. Send fields in JSON; query parameters cannot supply write fields or the filing user. The package belongs to the company that owns the API key.
9978
10402
  */
9979
10403
  export type CertificationPackageParameters = {
9980
10404
  /**
9981
- * Name of the package. Unique within the company.
10405
+ * Required name of the package, unique within the company. Omission answers 400; supplied null or a wrong type answers 422. Blank names fail model validation with 422.
9982
10406
  */
9983
10407
  name: string;
9984
10408
  /**
9985
- * Optional free-text description of the package.
10409
+ * Optional free-text description of the package. Null clears it; an empty string is preserved. Nonstring values other than null answer 422.
9986
10410
  */
9987
10411
  description?: string | null;
9988
10412
  /**
9989
- * 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.
10413
+ * Unique nonblank 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, null members, wrong types, blank IDs, and duplicate IDs answer 422. An unavailable certification answers 404. Refused requests preserve fields, membership, and filing-user stamps.
9990
10414
  */
9991
10415
  certification_ids?: Array<string>;
9992
10416
  /**
9993
- * Id of the company member recorded as creating or updating the package. Required, and must belong to the company that owns the API key.
10417
+ * Id of the company member recorded as creating or updating the package. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
9994
10418
  */
9995
10419
  performed_by_user_id: string;
9996
10420
  };
9997
10421
  /**
9998
- * Request body for updating a certification package — a named set of certifications a company requires together. Include only the fields to change.
10422
+ * Request body for updating a certification package. Send only fields to change in JSON; omitted fields remain unchanged. The filing user is required in the body.
9999
10423
  */
10000
10424
  export type CertificationPackageUpdateParameters = {
10001
10425
  /**
10002
- * Name of the package. Unique within the company; omit to leave it unchanged.
10426
+ * Name of the package, unique within the company; omit to leave it unchanged. Supplied null, a wrong type, or a blank name answers 422.
10003
10427
  */
10004
10428
  name?: string;
10005
10429
  /**
10006
- * Optional free-text description of the package; omit to leave it unchanged.
10430
+ * Optional free-text description of the package; omit to leave it unchanged, or send null to clear it. An empty string is preserved. Nonstring values other than null answer 422.
10007
10431
  */
10008
10432
  description?: string | null;
10009
10433
  /**
10010
- * 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.
10434
+ * Unique nonblank 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, null members, wrong types, blank IDs, and duplicate IDs answer 422. An unavailable certification answers 404. Refused requests preserve fields, membership, and filing-user stamps.
10011
10435
  */
10012
10436
  certification_ids?: Array<string>;
10013
10437
  /**
10014
- * Id of the company member recorded as updating the package. Required, and must belong to the company that owns the API key.
10438
+ * Id of the company member recorded as creating or updating the package. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
10015
10439
  */
10016
10440
  performed_by_user_id: string;
10017
10441
  };
@@ -11187,153 +11611,425 @@ export type JobWageDeterminationScheduledTerminationParameters = {
11187
11611
  effective_date: string;
11188
11612
  };
11189
11613
  /**
11190
- * The adjustment applied when a rule matches — an addition to the wage or fringe rate.
11614
+ * A wage determination applied to a project — the prevailing-wage and fringe rates for one labor classification. The type discriminator selects the Federal or Regional representation.
11191
11615
  */
11192
- export type RateRuleEffect = {
11616
+ export type ProjectWageDeterminationResponseObject = ({
11617
+ type: 'Pwa::ProjectWageDeterminations::Federal';
11618
+ } & FederalProjectWageDeterminationResponseObject) | ({
11619
+ type: 'Pwa::ProjectWageDeterminations::Regional';
11620
+ } & RegionalProjectWageDeterminationResponseObject);
11621
+ /**
11622
+ * A Federal (Davis-Bacon) wage determination on a project.
11623
+ */
11624
+ export type FederalProjectWageDeterminationResponseObject = {
11193
11625
  /**
11194
- * Which base rate the effect adds to: `wage_increment` the hourly wage rate, `fringe_increment` the fringe rate.
11626
+ * Identifier of the determination, stable across every one of its temporal versions — it addresses the determination itself, not the version you happen to be reading, and is what the member and history paths take.
11195
11627
  */
11196
- type: 'wage_increment' | 'fringe_increment';
11628
+ id: string;
11197
11629
  /**
11198
- * Amount added to the base rate, in whole cents as a decimal string (e.g. "300" is $3.00). Zero or positive; fractional input is truncated.
11630
+ * ID of the project this wage determination applies to.
11199
11631
  */
11200
- amount_cents: string;
11201
- };
11202
- /**
11203
- * Restricts the rule to a time-of-day window.
11204
- */
11205
- export type RateRuleTimeRangeCondition = {
11632
+ project_id: string;
11206
11633
  /**
11207
- * Condition-type discriminator; its value (see the enum) selects this condition's shape.
11634
+ * UUID of the craft grouping (trade) this determination pools into for apprenticeship-ratio tracking; obtain one from the project or project PWA trades endpoint before assigning it here.
11208
11635
  */
11209
- type: 'time_range';
11636
+ pwa_trade_id: string;
11210
11637
  /**
11211
- * Start of the day window (inclusive), HH:MM (00:00–23:59). A window whose start is after its end wraps past midnight.
11638
+ * ID of the overtime package whose rules apply to this determination, or null when none is set. Not a versioned attribute: every version of the determination carries the same package, so this reads the same whatever point in time you ask for. The rules inside the package carry their own valid times.
11212
11639
  */
11213
- start_time: string;
11640
+ overtime_package_id: string | null;
11214
11641
  /**
11215
- * End of the day window (exclusive), HH:MM (00:00–23:59).
11642
+ * ID of the pay-rate rule package attached to this determination family, or null when none is set. The attachment is shared by every temporal version of the determination.
11216
11643
  */
11217
- end_time: string;
11218
- };
11219
- /**
11220
- * Restricts the rule to specific days of the week.
11221
- */
11222
- export type RateRuleDaysCondition = {
11644
+ pay_rates_rule_package_id: string | null;
11223
11645
  /**
11224
- * Condition-type discriminator; its value (see the enum) selects this condition's shape.
11646
+ * Determination type — the Federal or Regional subtype (an STI class name). Federal carries a DOL class code and construction category; Regional carries the nested regional_fields object.
11225
11647
  */
11226
- type: 'days';
11648
+ type: 'Pwa::ProjectWageDeterminations::Federal';
11227
11649
  /**
11228
- * Days of the week the rule applies to, as integers 0 (Sunday)–6 (Saturday).
11650
+ * Human-readable labor classification — the craft or trade this determination sets rates for; the display label, distinct from the machine class code.
11229
11651
  */
11230
- days: Array<number>;
11231
- };
11232
- /**
11233
- * Restricts the rule to a single calendar date.
11234
- */
11235
- export type RateRuleSpecificDateCondition = {
11652
+ labor_classification: string;
11236
11653
  /**
11237
- * Condition-type discriminator; its value (see the enum) selects this condition's shape.
11654
+ * Base hourly wage rate, in cents as a decimal string (e.g. "5380.0" is $53.80).
11238
11655
  */
11239
- type: 'specific_date';
11656
+ hourly_rate_cents: string;
11240
11657
  /**
11241
- * The calendar date the rule applies to, YYYY-MM-DD.
11658
+ * Hourly fringe rate, in cents as a decimal string (e.g. "1200.0" is $12.00).
11242
11659
  */
11243
- date: string;
11244
- };
11245
- /**
11246
- * Restricts the rule to a given apprenticeship wage-schedule period.
11247
- */
11248
- export type RateRuleApprenticePeriodCondition = {
11660
+ fringe_rate_cents: string;
11249
11661
  /**
11250
- * Condition-type discriminator; its value (see the enum) selects this condition's shape.
11662
+ * The DOL wage-classification code identifying this classification within its general decision (e.g. "LABO0324-014"); null when not recorded.
11251
11663
  */
11252
- type: 'apprentice_period';
11664
+ class_code: string | null;
11253
11665
  /**
11254
- * 1-indexed apprenticeship wage-schedule period (1–100).
11666
+ * Broad DOL construction category — one of building, heavy, highway, or residential; null when not recorded.
11255
11667
  */
11256
- period: number;
11257
- };
11258
- /**
11259
- * Restricts the rule to a cumulative-apprentice-hours band.
11260
- */
11261
- export type RateRuleApprenticeHoursCondition = {
11668
+ construction_category: 'building' | 'heavy' | 'highway' | 'residential' | null;
11262
11669
  /**
11263
- * Condition-type discriminator; its value (see the enum) selects this condition's shape.
11670
+ * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
11264
11671
  */
11265
- type: 'apprentice_hours';
11672
+ general_wage_determination: string | null;
11266
11673
  /**
11267
- * Lower bound of cumulative apprentice hours (inclusive); 0–100000.
11674
+ * Valid time — when this version of the determination took effect (ISO 8601); null when the version has no recorded start.
11268
11675
  */
11269
- min_hours: number;
11676
+ valid_from: string | null;
11270
11677
  /**
11271
- * Upper bound of cumulative apprentice hours (exclusive); must exceed min_hours; 0–100000.
11678
+ * Valid time — when this version stopped applying (ISO 8601); null while it is still current.
11272
11679
  */
11273
- max_hours: number;
11274
- };
11275
- /**
11276
- * Restricts the rule to a specific overtime tier.
11277
- */
11278
- export type RateRuleOvertimeMultiplierCondition = {
11680
+ valid_to: string | null;
11279
11681
  /**
11280
- * Condition-type discriminator; its value (see the enum) selects this condition's shape.
11682
+ * When the record was created (ISO 8601).
11281
11683
  */
11282
- type: 'overtime_multiplier';
11684
+ created_at: string;
11283
11685
  /**
11284
- * Overtime tier the rule targets: `1.5` (time-and-a-half) or `2.0` (double time).
11686
+ * When the record was last updated (ISO 8601).
11285
11687
  */
11286
- multiplier: '1.5' | '2.0';
11688
+ updated_at: string;
11287
11689
  };
11288
11690
  /**
11289
- * A single match condition. At most one condition per category may appear on a rule — time (time_range), day-selection (days or specific_date), apprentice (apprentice_period or apprentice_hours), and overtime (overtime_multiplier). The `type` field selects the shape.
11290
- */
11291
- export type RateRuleCondition = ({
11292
- type: 'time_range';
11293
- } & RateRuleTimeRangeCondition) | ({
11294
- type: 'days';
11295
- } & RateRuleDaysCondition) | ({
11296
- type: 'specific_date';
11297
- } & RateRuleSpecificDateCondition) | ({
11298
- type: 'apprentice_period';
11299
- } & RateRuleApprenticePeriodCondition) | ({
11300
- type: 'apprentice_hours';
11301
- } & RateRuleApprenticeHoursCondition) | ({
11302
- type: 'overtime_multiplier';
11303
- } & RateRuleOvertimeMultiplierCondition);
11304
- /**
11305
- * A conditional rate-modification rule on a job wage determination — it adds wage or fringe cents when its conditions match. `valid_from` and `valid_to` bound the window over which this version of the rule is in effect.
11691
+ * A Regional (state prevailing-wage) wage determination on a project.
11306
11692
  */
11307
- export type RateRuleResponseObject = {
11693
+ export type RegionalProjectWageDeterminationResponseObject = {
11308
11694
  /**
11309
- * Identity shared by every version of the rule, never a per-version row id — the value the member and history paths address the rule by.
11695
+ * Identifier of the determination, stable across every one of its temporal versions — it addresses the determination itself, not the version you happen to be reading, and is what the member and history paths take.
11310
11696
  */
11311
11697
  id: string;
11312
11698
  /**
11313
- * ID of the job wage determination this rule is applied to, taken from the request path — the determination's own family identifier, stable across its temporal versions. Because rules attach to a shared package, the same rule can surface under more than one determination.
11699
+ * ID of the project this wage determination applies to.
11314
11700
  */
11315
- job_wage_determination_id: string;
11701
+ project_id: string;
11316
11702
  /**
11317
- * ID of the rule package that owns this rule — an internal container the API manages on the determination's behalf.
11703
+ * UUID of the craft grouping (trade) this determination pools into for apprenticeship-ratio tracking; obtain one from the project or project PWA trades endpoint before assigning it here.
11318
11704
  */
11319
- pay_rates_rule_package_id: string;
11320
- effect: RateRuleEffect;
11705
+ pwa_trade_id: string;
11321
11706
  /**
11322
- * The rule's match conditions, at most one per category (time, day-selection, apprentice, overtime). An empty list means the rule always applies.
11707
+ * ID of the overtime package whose rules apply to this determination, or null when none is set. Not a versioned attribute: every version of the determination carries the same package, so this reads the same whatever point in time you ask for. The rules inside the package carry their own valid times.
11323
11708
  */
11324
- conditions: Array<RateRuleCondition>;
11709
+ overtime_package_id: string | null;
11325
11710
  /**
11326
- * Valid time — when this version of the rule took effect (ISO 8601); null when the version has no recorded start.
11711
+ * ID of the pay-rate rule package attached to this determination family, or null when none is set. The attachment is shared by every temporal version of the determination.
11327
11712
  */
11328
- valid_from: string | null;
11713
+ pay_rates_rule_package_id: string | null;
11329
11714
  /**
11330
- * Valid time — when this version stopped applying (ISO 8601); null while it is still current.
11715
+ * Determination type — the Federal or Regional subtype (an STI class name). Federal carries a DOL class code and construction category; Regional carries the nested regional_fields object.
11331
11716
  */
11332
- valid_to: string | null;
11717
+ type: 'Pwa::ProjectWageDeterminations::Regional';
11333
11718
  /**
11334
- * When the record was created (ISO 8601).
11719
+ * Human-readable labor classification — the craft or trade this determination sets rates for; the display label, distinct from the machine class code.
11335
11720
  */
11336
- created_at: string;
11721
+ labor_classification: string;
11722
+ /**
11723
+ * Base hourly wage rate, in cents as a decimal string (e.g. "5380.0" is $53.80).
11724
+ */
11725
+ hourly_rate_cents: string;
11726
+ /**
11727
+ * Hourly fringe rate, in cents as a decimal string (e.g. "1200.0" is $12.00).
11728
+ */
11729
+ fringe_rate_cents: string;
11730
+ /**
11731
+ * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
11732
+ */
11733
+ general_wage_determination: string | null;
11734
+ regional_fields: RegionalWageDeterminationFieldsResponse;
11735
+ /**
11736
+ * Valid time — when this version of the determination took effect (ISO 8601); null when the version has no recorded start.
11737
+ */
11738
+ valid_from: string | null;
11739
+ /**
11740
+ * Valid time — when this version stopped applying (ISO 8601); null while it is still current.
11741
+ */
11742
+ valid_to: string | null;
11743
+ /**
11744
+ * When the record was created (ISO 8601).
11745
+ */
11746
+ created_at: string;
11747
+ /**
11748
+ * When the record was last updated (ISO 8601).
11749
+ */
11750
+ updated_at: string;
11751
+ };
11752
+ /**
11753
+ * Parameters for creating a project wage determination. Provide the Federal or Regional shape; the type discriminator selects which. Editing an existing determination uses the update parameters, which take an `effective_from` instead of a type.
11754
+ */
11755
+ export type ProjectWageDeterminationParameters = ({
11756
+ type: 'Pwa::ProjectWageDeterminations::Federal';
11757
+ } & FederalProjectWageDeterminationParameters) | ({
11758
+ type: 'Pwa::ProjectWageDeterminations::Regional';
11759
+ } & RegionalProjectWageDeterminationParameters);
11760
+ /**
11761
+ * Parameters for creating a Federal (Davis-Bacon) wage determination on a project.
11762
+ */
11763
+ export type FederalProjectWageDeterminationParameters = {
11764
+ /**
11765
+ * Determination type — the Federal or Regional subtype (an STI class name). Federal carries a DOL class code and construction category; Regional carries the nested regional_fields object.
11766
+ */
11767
+ type: 'Pwa::ProjectWageDeterminations::Federal';
11768
+ /**
11769
+ * Human-readable labor classification — the craft or trade this determination sets rates for; the display label, distinct from the machine class code.
11770
+ */
11771
+ labor_classification: string;
11772
+ /**
11773
+ * UUID of the craft grouping (trade) this determination pools into for apprenticeship-ratio tracking; obtain one from the project or project PWA trades endpoint before assigning it here.
11774
+ */
11775
+ pwa_trade_id: string;
11776
+ /**
11777
+ * Base hourly wage rate, in cents as a decimal string (e.g. "5380.0" is $53.80).
11778
+ */
11779
+ hourly_rate_cents: string;
11780
+ /**
11781
+ * Hourly fringe rate, in cents as a decimal string (e.g. "1200.0" is $12.00).
11782
+ */
11783
+ fringe_rate_cents: string;
11784
+ /**
11785
+ * The DOL wage-classification code identifying this classification within its general decision (e.g. "LABO0324-014"); null when not recorded.
11786
+ */
11787
+ class_code?: string | null;
11788
+ /**
11789
+ * Broad DOL construction category — one of building, heavy, highway, or residential; null when not recorded.
11790
+ */
11791
+ construction_category?: 'building' | 'heavy' | 'highway' | 'residential' | null;
11792
+ /**
11793
+ * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
11794
+ */
11795
+ general_wage_determination?: string | null;
11796
+ /**
11797
+ * Pay-rate rule package attached to the whole determination family. On create, omit it or send null to leave the family unattached. A package belonging to another company is refused.
11798
+ */
11799
+ pay_rates_rule_package_id?: string | null;
11800
+ };
11801
+ /**
11802
+ * Parameters for creating a Regional (state prevailing-wage) wage determination on a project.
11803
+ */
11804
+ export type RegionalProjectWageDeterminationParameters = {
11805
+ /**
11806
+ * Determination type — the Federal or Regional subtype (an STI class name). Federal carries a DOL class code and construction category; Regional carries the nested regional_fields object.
11807
+ */
11808
+ type: 'Pwa::ProjectWageDeterminations::Regional';
11809
+ /**
11810
+ * Human-readable labor classification — the craft or trade this determination sets rates for; the display label, distinct from the machine class code.
11811
+ */
11812
+ labor_classification: string;
11813
+ /**
11814
+ * UUID of the craft grouping (trade) this determination pools into for apprenticeship-ratio tracking; obtain one from the project or project PWA trades endpoint before assigning it here.
11815
+ */
11816
+ pwa_trade_id: string;
11817
+ /**
11818
+ * Base hourly wage rate, in cents as a decimal string (e.g. "5380.0" is $53.80).
11819
+ */
11820
+ hourly_rate_cents: string;
11821
+ /**
11822
+ * Hourly fringe rate, in cents as a decimal string (e.g. "1200.0" is $12.00).
11823
+ */
11824
+ fringe_rate_cents?: string;
11825
+ /**
11826
+ * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
11827
+ */
11828
+ general_wage_determination?: string | null;
11829
+ /**
11830
+ * Overtime package whose rules govern overtime on work under this determination. This is not a versioned attribute: setting it points every version at that package, not only the one this request writes, and `effective_from` does not date it. Send null to detach, leaving the determination with no overtime package of its own. Omit the key to leave the current attachment alone. A package belonging to another company is refused, and a Federal determination refuses one outright — only a Regional determination carries overtime rules.
11831
+ */
11832
+ overtime_package_id?: string | null;
11833
+ /**
11834
+ * Pay-rate rule package attached to the whole determination family. On create, omit it or send null to leave the family unattached. A package belonging to another company is refused.
11835
+ */
11836
+ pay_rates_rule_package_id?: string | null;
11837
+ regional_fields?: RegionalWageDeterminationFields;
11838
+ };
11839
+ /**
11840
+ * Parameters for editing a project wage determination from a point in valid time forward. The type is fixed by the determination the id names and is not sent.
11841
+ */
11842
+ export type ProjectWageDeterminationUpdateParameters = {
11843
+ /**
11844
+ * Where the edit starts applying, as a calendar date (`YYYY-MM-DD`). Every version from this date forward takes the new values; earlier versions are untouched. Optional; defaults to the start of the version valid now, which corrects that version in place.
11845
+ */
11846
+ effective_from?: string;
11847
+ /**
11848
+ * Overtime package whose rules govern overtime on work under this determination. This is not a versioned attribute: setting it points every version at that package, not only the one this request writes, and `effective_from` does not date it. Send null to detach, leaving the determination with no overtime package of its own. Omit the key to leave the current attachment alone. A package belonging to another company is refused, and a Federal determination refuses one outright — only a Regional determination carries overtime rules.
11849
+ */
11850
+ overtime_package_id?: string | null;
11851
+ /**
11852
+ * Pay-rate rule package attached to the whole determination family. On create, omit it or send null to leave the family unattached. On update, send null to detach it or omit the key to keep the current attachment. A package belonging to another company is refused.
11853
+ */
11854
+ pay_rates_rule_package_id?: string | null;
11855
+ /**
11856
+ * Human-readable labor classification — the craft or trade this determination sets rates for; the display label, distinct from the machine class code.
11857
+ */
11858
+ labor_classification?: string;
11859
+ /**
11860
+ * UUID of the craft grouping (trade) this determination pools into for apprenticeship-ratio tracking; obtain one from the project or project PWA trades endpoint before assigning it here.
11861
+ */
11862
+ pwa_trade_id?: string;
11863
+ /**
11864
+ * Base hourly wage rate, in cents as a decimal string (e.g. "5380.0" is $53.80).
11865
+ */
11866
+ hourly_rate_cents?: string;
11867
+ /**
11868
+ * Hourly fringe rate, in cents as a decimal string (e.g. "1200.0" is $12.00).
11869
+ */
11870
+ fringe_rate_cents?: string;
11871
+ /**
11872
+ * The DOL wage-classification code identifying this classification within its general decision (e.g. "LABO0324-014"); null when not recorded.
11873
+ */
11874
+ class_code?: string | null;
11875
+ /**
11876
+ * Broad DOL construction category — one of building, heavy, highway, or residential; null when not recorded.
11877
+ */
11878
+ construction_category?: 'building' | 'heavy' | 'highway' | 'residential' | null;
11879
+ /**
11880
+ * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
11881
+ */
11882
+ general_wage_determination?: string | null;
11883
+ regional_fields?: RegionalWageDeterminationFields;
11884
+ };
11885
+ /**
11886
+ * The adjustment applied when a rule matches — an addition to the wage or fringe rate.
11887
+ */
11888
+ export type RateRuleEffect = {
11889
+ /**
11890
+ * Which base rate the effect adds to: `wage_increment` the hourly wage rate, `fringe_increment` the fringe rate.
11891
+ */
11892
+ type: 'wage_increment' | 'fringe_increment';
11893
+ /**
11894
+ * Amount added to the base rate, in whole cents as a decimal string (e.g. "300" is $3.00). Zero or positive; fractional input is truncated.
11895
+ */
11896
+ amount_cents: string;
11897
+ };
11898
+ /**
11899
+ * Restricts the rule to a time-of-day window.
11900
+ */
11901
+ export type RateRuleTimeRangeCondition = {
11902
+ /**
11903
+ * Condition-type discriminator; its value (see the enum) selects this condition's shape.
11904
+ */
11905
+ type: 'time_range';
11906
+ /**
11907
+ * Start of the day window (inclusive), HH:MM (00:00–23:59). A window whose start is after its end wraps past midnight.
11908
+ */
11909
+ start_time: string;
11910
+ /**
11911
+ * End of the day window (exclusive), HH:MM (00:00–23:59).
11912
+ */
11913
+ end_time: string;
11914
+ };
11915
+ /**
11916
+ * Restricts the rule to specific days of the week.
11917
+ */
11918
+ export type RateRuleDaysCondition = {
11919
+ /**
11920
+ * Condition-type discriminator; its value (see the enum) selects this condition's shape.
11921
+ */
11922
+ type: 'days';
11923
+ /**
11924
+ * Days of the week the rule applies to, as integers 0 (Sunday)–6 (Saturday).
11925
+ */
11926
+ days: Array<number>;
11927
+ };
11928
+ /**
11929
+ * Restricts the rule to a single calendar date.
11930
+ */
11931
+ export type RateRuleSpecificDateCondition = {
11932
+ /**
11933
+ * Condition-type discriminator; its value (see the enum) selects this condition's shape.
11934
+ */
11935
+ type: 'specific_date';
11936
+ /**
11937
+ * The calendar date the rule applies to, YYYY-MM-DD.
11938
+ */
11939
+ date: string;
11940
+ };
11941
+ /**
11942
+ * Restricts the rule to a given apprenticeship wage-schedule period.
11943
+ */
11944
+ export type RateRuleApprenticePeriodCondition = {
11945
+ /**
11946
+ * Condition-type discriminator; its value (see the enum) selects this condition's shape.
11947
+ */
11948
+ type: 'apprentice_period';
11949
+ /**
11950
+ * 1-indexed apprenticeship wage-schedule period (1–100).
11951
+ */
11952
+ period: number;
11953
+ };
11954
+ /**
11955
+ * Restricts the rule to a cumulative-apprentice-hours band.
11956
+ */
11957
+ export type RateRuleApprenticeHoursCondition = {
11958
+ /**
11959
+ * Condition-type discriminator; its value (see the enum) selects this condition's shape.
11960
+ */
11961
+ type: 'apprentice_hours';
11962
+ /**
11963
+ * Lower bound of cumulative apprentice hours (inclusive); 0–100000.
11964
+ */
11965
+ min_hours: number;
11966
+ /**
11967
+ * Upper bound of cumulative apprentice hours (exclusive); must exceed min_hours; 0–100000.
11968
+ */
11969
+ max_hours: number;
11970
+ };
11971
+ /**
11972
+ * Restricts the rule to a specific overtime tier.
11973
+ */
11974
+ export type RateRuleOvertimeMultiplierCondition = {
11975
+ /**
11976
+ * Condition-type discriminator; its value (see the enum) selects this condition's shape.
11977
+ */
11978
+ type: 'overtime_multiplier';
11979
+ /**
11980
+ * Overtime tier the rule targets: `1.5` (time-and-a-half) or `2.0` (double time).
11981
+ */
11982
+ multiplier: '1.5' | '2.0';
11983
+ };
11984
+ /**
11985
+ * A single match condition. At most one condition per category may appear on a rule — time (time_range), day-selection (days or specific_date), apprentice (apprentice_period or apprentice_hours), and overtime (overtime_multiplier). The `type` field selects the shape.
11986
+ */
11987
+ export type RateRuleCondition = ({
11988
+ type: 'time_range';
11989
+ } & RateRuleTimeRangeCondition) | ({
11990
+ type: 'days';
11991
+ } & RateRuleDaysCondition) | ({
11992
+ type: 'specific_date';
11993
+ } & RateRuleSpecificDateCondition) | ({
11994
+ type: 'apprentice_period';
11995
+ } & RateRuleApprenticePeriodCondition) | ({
11996
+ type: 'apprentice_hours';
11997
+ } & RateRuleApprenticeHoursCondition) | ({
11998
+ type: 'overtime_multiplier';
11999
+ } & RateRuleOvertimeMultiplierCondition);
12000
+ /**
12001
+ * A conditional rate-modification rule on a job wage determination — it adds wage or fringe cents when its conditions match. `valid_from` and `valid_to` bound the window over which this version of the rule is in effect.
12002
+ */
12003
+ export type RateRuleResponseObject = {
12004
+ /**
12005
+ * Identity shared by every version of the rule, never a per-version row id — the value the member and history paths address the rule by.
12006
+ */
12007
+ id: string;
12008
+ /**
12009
+ * ID of the job wage determination this rule is applied to, taken from the request path — the determination's own family identifier, stable across its temporal versions. Because rules attach to a shared package, the same rule can surface under more than one determination.
12010
+ */
12011
+ job_wage_determination_id: string;
12012
+ /**
12013
+ * ID of the rule package that owns this rule — an internal container the API manages on the determination's behalf.
12014
+ */
12015
+ pay_rates_rule_package_id: string;
12016
+ effect: RateRuleEffect;
12017
+ /**
12018
+ * The rule's match conditions, at most one per category (time, day-selection, apprentice, overtime). An empty list means the rule always applies.
12019
+ */
12020
+ conditions: Array<RateRuleCondition>;
12021
+ /**
12022
+ * Valid time — when this version of the rule took effect (ISO 8601); null when the version has no recorded start.
12023
+ */
12024
+ valid_from: string | null;
12025
+ /**
12026
+ * Valid time — when this version stopped applying (ISO 8601); null while it is still current.
12027
+ */
12028
+ valid_to: string | null;
12029
+ /**
12030
+ * When the record was created (ISO 8601).
12031
+ */
12032
+ created_at: string;
11337
12033
  /**
11338
12034
  * When the record was last updated (ISO 8601).
11339
12035
  */
@@ -11899,7 +12595,7 @@ export type AssetsItemParameters = {
11899
12595
  */
11900
12596
  assets_sub_location_id?: string;
11901
12597
  /**
11902
- * ID of the user this write is performed on behalf of — recorded as the item's creator or updater and attributed to any placement. Required; must belong to your company.
12598
+ * ID of the user this write is performed on behalf of — recorded as the item's creator or updater and attributed to any placement. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
11903
12599
  */
11904
12600
  performed_by_user_id: string;
11905
12601
  };
@@ -11965,7 +12661,7 @@ export type AssetsItemUpdateParameters = {
11965
12661
  */
11966
12662
  images_attributes?: Array<AssetsAttachmentParameters>;
11967
12663
  /**
11968
- * ID of the user this update is performed on behalf of, recorded as updater. Required; must belong to your company.
12664
+ * ID of the user this update is performed on behalf of, recorded as updater. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
11969
12665
  */
11970
12666
  performed_by_user_id: string;
11971
12667
  };
@@ -11999,7 +12695,7 @@ export type AssetsVendorResponseObject = {
11999
12695
  updated_at: string;
12000
12696
  };
12001
12697
  /**
12002
- * Create or update a vendor. Only name is required.
12698
+ * Create a vendor. Only name is required; omitting it answers 400, and a null or wrong-typed value answers 422.
12003
12699
  */
12004
12700
  export type AssetsVendorParameters = {
12005
12701
  /**
@@ -12007,12 +12703,12 @@ export type AssetsVendorParameters = {
12007
12703
  */
12008
12704
  name: string;
12009
12705
  /**
12010
- * A signed_id from POST /api/v1/direct_uploads registered for assets.vendors. The logo must be a readable PNG, JPEG, GIF, or HEIC image, at most 10 MiB, 20,000 pixels per side, and 50 megapixels total. An invalid logo rejects the entire create or update; the existing vendor and logo remain unchanged.
12706
+ * A signed_id from POST /api/v1/direct_uploads registered for assets.vendors. The logo must be a readable PNG, JPEG, GIF, or HEIC image, at most 10 MiB, 20,000 pixels per side, and 50 megapixels total. An invalid logo rejects the entire create; null creates the vendor without a logo, and a blank string answers 422.
12011
12707
  */
12012
- logo_signed_id?: string;
12708
+ logo_signed_id?: string | null;
12013
12709
  };
12014
12710
  /**
12015
- * Update a vendor. All fields are optional — send only what changes.
12711
+ * Update a vendor. All fields are optional — send only what changes. A null name or a wrong-typed value answers 422.
12016
12712
  */
12017
12713
  export type AssetsVendorUpdateParameters = {
12018
12714
  /**
@@ -12020,9 +12716,9 @@ export type AssetsVendorUpdateParameters = {
12020
12716
  */
12021
12717
  name?: string;
12022
12718
  /**
12023
- * A signed_id from POST /api/v1/direct_uploads registered for assets.vendors. The logo must be a readable PNG, JPEG, GIF, or HEIC image, at most 10 MiB, 20,000 pixels per side, and 50 megapixels total. An invalid logo rejects the entire update; the existing vendor and logo remain unchanged.
12719
+ * A signed_id from POST /api/v1/direct_uploads registered for assets.vendors. The logo must be a readable PNG, JPEG, GIF, or HEIC image, at most 10 MiB, 20,000 pixels per side, and 50 megapixels total. An invalid logo rejects the entire update; the existing vendor and logo remain unchanged. Omit it to keep the current logo, or send null to remove it; a blank string answers 422.
12024
12720
  */
12025
- logo_signed_id?: string;
12721
+ logo_signed_id?: string | null;
12026
12722
  };
12027
12723
  /**
12028
12724
  * A location that holds a company's assets and inventory — a warehouse or yard, optionally backed by a site on the Atlas map.
@@ -12410,6 +13106,10 @@ export type AssetsDocumentParameters = {
12410
13106
  * Free-text description of the document; null when none.
12411
13107
  */
12412
13108
  description?: string | null;
13109
+ /**
13110
+ * ID of the user this document is attached on behalf of, recorded as its creator. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
13111
+ */
13112
+ performed_by_user_id: string;
12413
13113
  };
12414
13114
  /**
12415
13115
  * Update an asset-item document. All fields are optional — send only what changes. Omit file to retain the existing attachment, or supply a new signed_id to replace it.
@@ -12917,7 +13617,7 @@ export type AssetsServiceScheduleParameters = {
12917
13617
  */
12918
13618
  last_serviced_on?: string | null;
12919
13619
  /**
12920
- * ID of the user this write is performed on behalf of, recorded as the schedule's creator or updater. Required; must belong to your company.
13620
+ * ID of the user this write is performed on behalf of, recorded as the schedule's creator or updater. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
12921
13621
  */
12922
13622
  performed_by_user_id: string;
12923
13623
  };
@@ -12946,7 +13646,7 @@ export type AssetsServiceScheduleUpdateParameters = {
12946
13646
  */
12947
13647
  last_serviced_on?: string | null;
12948
13648
  /**
12949
- * ID of the user this update is performed on behalf of, recorded as the schedule's updater. Required; must belong to your company.
13649
+ * ID of the user this update is performed on behalf of, recorded as the schedule's updater. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
12950
13650
  */
12951
13651
  performed_by_user_id: string;
12952
13652
  };
@@ -13020,7 +13720,7 @@ export type AssetsServiceEventParameters = {
13020
13720
  */
13021
13721
  assets_service_schedule_id?: string | null;
13022
13722
  /**
13023
- * ID of the user who performed the service. Required; must belong to your company.
13723
+ * ID of the user who performed the service. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
13024
13724
  */
13025
13725
  performed_by_user_id: string;
13026
13726
  /**
@@ -13049,7 +13749,7 @@ export type AssetsServiceEventUpdateParameters = {
13049
13749
  */
13050
13750
  assets_service_schedule_id?: string | null;
13051
13751
  /**
13052
- * ID of the user this update is performed on behalf of. Required; must belong to your company.
13752
+ * ID of the user this update is performed on behalf of. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
13053
13753
  */
13054
13754
  performed_by_user_id: string;
13055
13755
  /**
@@ -13119,7 +13819,7 @@ export type AssetsServiceScheduleTemplateParameters = {
13119
13819
  */
13120
13820
  interval_count: number;
13121
13821
  /**
13122
- * ID of the user this write is performed on behalf of, recorded as the template's creator or updater. Required; must belong to your company.
13822
+ * ID of the user this write is performed on behalf of, recorded as the template's creator or updater. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
13123
13823
  */
13124
13824
  performed_by_user_id: string;
13125
13825
  };
@@ -13144,7 +13844,7 @@ export type AssetsServiceScheduleTemplateUpdateParameters = {
13144
13844
  */
13145
13845
  interval_count?: number;
13146
13846
  /**
13147
- * ID of the user this update is performed on behalf of, recorded as the template's updater. Required; must belong to your company.
13847
+ * ID of the user this update is performed on behalf of, recorded as the template's updater. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
13148
13848
  */
13149
13849
  performed_by_user_id: string;
13150
13850
  };
@@ -13366,7 +14066,7 @@ export type AssetsTransferParameters = {
13366
14066
  */
13367
14067
  to_assets_sub_location_id?: string;
13368
14068
  /**
13369
- * ID of the user this move is performed on behalf of, recorded as its initiator. Required; must belong to your company.
14069
+ * ID of the user this move is performed on behalf of, recorded as its initiator. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
13370
14070
  */
13371
14071
  performed_by_user_id: string;
13372
14072
  /**
@@ -13400,7 +14100,7 @@ export type AssetsRestockParameters = {
13400
14100
  */
13401
14101
  quantity: number;
13402
14102
  /**
13403
- * ID of the user this restock is performed on behalf of, recorded on the transaction. Required; must belong to your company.
14103
+ * ID of the user this restock is performed on behalf of, recorded on the transaction. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
13404
14104
  */
13405
14105
  performed_by_user_id: string;
13406
14106
  };
@@ -13421,7 +14121,7 @@ export type AssetsAdjustmentParameters = {
13421
14121
  */
13422
14122
  new_quantity: number;
13423
14123
  /**
13424
- * ID of the user this adjustment is performed on behalf of, recorded on the transaction. Required; must belong to your company.
14124
+ * ID of the user this adjustment is performed on behalf of, recorded on the transaction. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
13425
14125
  */
13426
14126
  performed_by_user_id: string;
13427
14127
  };
@@ -13430,7 +14130,7 @@ export type AssetsAdjustmentParameters = {
13430
14130
  */
13431
14131
  export type AssetsArchiveParameters = {
13432
14132
  /**
13433
- * ID of the user this archive or unarchive is performed on behalf of, recorded for auditing. Required; must belong to your company.
14133
+ * ID of the user this archive or unarchive is performed on behalf of, recorded for auditing. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
13434
14134
  */
13435
14135
  performed_by_user_id: string;
13436
14136
  };
@@ -14199,6 +14899,10 @@ export type CreateProgramData = {
14199
14899
  url: '/api/v1/apprenticeship/programs';
14200
14900
  };
14201
14901
  export type CreateProgramErrors = {
14902
+ /**
14903
+ * Bad Request
14904
+ */
14905
+ 400: Problem;
14202
14906
  /**
14203
14907
  * Forbidden
14204
14908
  */
@@ -14281,6 +14985,10 @@ export type UpdateProgramData = {
14281
14985
  url: '/api/v1/apprenticeship/programs/{id}';
14282
14986
  };
14283
14987
  export type UpdateProgramErrors = {
14988
+ /**
14989
+ * Bad Request
14990
+ */
14991
+ 400: Problem;
14284
14992
  /**
14285
14993
  * Forbidden
14286
14994
  */
@@ -14716,6 +15424,10 @@ export type CreateAttributeData = {
14716
15424
  url: '/api/v1/assets/attributes';
14717
15425
  };
14718
15426
  export type CreateAttributeErrors = {
15427
+ /**
15428
+ * Bad Request
15429
+ */
15430
+ 400: Problem;
14719
15431
  /**
14720
15432
  * Forbidden
14721
15433
  */
@@ -14798,6 +15510,10 @@ export type UpdateAttributeData = {
14798
15510
  url: '/api/v1/assets/attributes/{id}';
14799
15511
  };
14800
15512
  export type UpdateAttributeErrors = {
15513
+ /**
15514
+ * Bad Request
15515
+ */
15516
+ 400: Problem;
14801
15517
  /**
14802
15518
  * Forbidden
14803
15519
  */
@@ -14875,6 +15591,10 @@ export type CreateCategoryData = {
14875
15591
  url: '/api/v1/assets/categories';
14876
15592
  };
14877
15593
  export type CreateCategoryErrors = {
15594
+ /**
15595
+ * Bad Request
15596
+ */
15597
+ 400: Problem;
14878
15598
  /**
14879
15599
  * Forbidden
14880
15600
  */
@@ -14957,6 +15677,10 @@ export type UpdateCategoryData = {
14957
15677
  url: '/api/v1/assets/categories/{id}';
14958
15678
  };
14959
15679
  export type UpdateCategoryErrors = {
15680
+ /**
15681
+ * Bad Request
15682
+ */
15683
+ 400: Problem;
14960
15684
  /**
14961
15685
  * Forbidden
14962
15686
  */
@@ -15024,6 +15748,10 @@ export type GetCustodyErrors = {
15024
15748
  * Forbidden
15025
15749
  */
15026
15750
  403: Problem;
15751
+ /**
15752
+ * Not Found
15753
+ */
15754
+ 404: Problem;
15027
15755
  };
15028
15756
  export type GetCustodyError = GetCustodyErrors[keyof GetCustodyErrors];
15029
15757
  export type GetCustodyResponses = {
@@ -15079,6 +15807,10 @@ export type GetEventErrors = {
15079
15807
  * Forbidden
15080
15808
  */
15081
15809
  403: Problem;
15810
+ /**
15811
+ * Not Found
15812
+ */
15813
+ 404: Problem;
15082
15814
  };
15083
15815
  export type GetEventError = GetEventErrors[keyof GetEventErrors];
15084
15816
  export type GetEventResponses = {
@@ -15147,10 +15879,18 @@ export type CreateFormAssignmentTriggerData = {
15147
15879
  url: '/api/v1/assets/form_assignment_triggers';
15148
15880
  };
15149
15881
  export type CreateFormAssignmentTriggerErrors = {
15882
+ /**
15883
+ * Bad Request
15884
+ */
15885
+ 400: Problem;
15150
15886
  /**
15151
15887
  * Forbidden
15152
15888
  */
15153
15889
  403: Problem;
15890
+ /**
15891
+ * Reference not found
15892
+ */
15893
+ 404: Problem;
15154
15894
  /**
15155
15895
  * Unprocessable Content (invalid enum)
15156
15896
  */
@@ -15177,6 +15917,10 @@ export type DeleteFormAssignmentTriggerErrors = {
15177
15917
  * Forbidden
15178
15918
  */
15179
15919
  403: Problem;
15920
+ /**
15921
+ * Not Found
15922
+ */
15923
+ 404: Problem;
15180
15924
  };
15181
15925
  export type DeleteFormAssignmentTriggerError = DeleteFormAssignmentTriggerErrors[keyof DeleteFormAssignmentTriggerErrors];
15182
15926
  export type DeleteFormAssignmentTriggerResponses = {
@@ -15221,10 +15965,22 @@ export type UpdateFormAssignmentTriggerData = {
15221
15965
  url: '/api/v1/assets/form_assignment_triggers/{id}';
15222
15966
  };
15223
15967
  export type UpdateFormAssignmentTriggerErrors = {
15968
+ /**
15969
+ * Bad Request
15970
+ */
15971
+ 400: Problem;
15224
15972
  /**
15225
15973
  * Forbidden
15226
15974
  */
15227
15975
  403: Problem;
15976
+ /**
15977
+ * Reference not found
15978
+ */
15979
+ 404: Problem;
15980
+ /**
15981
+ * Unprocessable Content (malformed ID lists)
15982
+ */
15983
+ 422: Problem;
15228
15984
  };
15229
15985
  export type UpdateFormAssignmentTriggerError = UpdateFormAssignmentTriggerErrors[keyof UpdateFormAssignmentTriggerErrors];
15230
15986
  export type UpdateFormAssignmentTriggerResponses = {
@@ -15280,6 +16036,10 @@ export type GetInventoryErrors = {
15280
16036
  * Forbidden
15281
16037
  */
15282
16038
  403: Problem;
16039
+ /**
16040
+ * Not Found
16041
+ */
16042
+ 404: Problem;
15283
16043
  };
15284
16044
  export type GetInventoryError = GetInventoryErrors[keyof GetInventoryErrors];
15285
16045
  export type GetInventoryResponses = {
@@ -15367,6 +16127,10 @@ export type CreateItemData = {
15367
16127
  url: '/api/v1/assets/items';
15368
16128
  };
15369
16129
  export type CreateItemErrors = {
16130
+ /**
16131
+ * Bad Request (missing performed_by_user_id)
16132
+ */
16133
+ 400: Problem;
15370
16134
  /**
15371
16135
  * Forbidden
15372
16136
  */
@@ -15376,7 +16140,7 @@ export type CreateItemErrors = {
15376
16140
  */
15377
16141
  404: Problem;
15378
16142
  /**
15379
- * Unprocessable Content (missing required attribute)
16143
+ * Unprocessable Content
15380
16144
  */
15381
16145
  422: Problem;
15382
16146
  };
@@ -15401,6 +16165,10 @@ export type DeleteItemErrors = {
15401
16165
  * Forbidden
15402
16166
  */
15403
16167
  403: Problem;
16168
+ /**
16169
+ * Not Found
16170
+ */
16171
+ 404: Problem;
15404
16172
  };
15405
16173
  export type DeleteItemError = DeleteItemErrors[keyof DeleteItemErrors];
15406
16174
  export type DeleteItemResponses = {
@@ -15423,6 +16191,10 @@ export type GetItemErrors = {
15423
16191
  * Forbidden
15424
16192
  */
15425
16193
  403: Problem;
16194
+ /**
16195
+ * Not Found
16196
+ */
16197
+ 404: Problem;
15426
16198
  };
15427
16199
  export type GetItemError = GetItemErrors[keyof GetItemErrors];
15428
16200
  export type GetItemResponses = {
@@ -15449,6 +16221,10 @@ export type UpdateItemErrors = {
15449
16221
  * Forbidden
15450
16222
  */
15451
16223
  403: Problem;
16224
+ /**
16225
+ * Not Found
16226
+ */
16227
+ 404: Problem;
15452
16228
  /**
15453
16229
  * Unprocessable Content
15454
16230
  */
@@ -15479,10 +16255,18 @@ export type UnarchiveItemErrors = {
15479
16255
  * Forbidden
15480
16256
  */
15481
16257
  403: Problem;
16258
+ /**
16259
+ * Not Found
16260
+ */
16261
+ 404: Problem;
15482
16262
  /**
15483
16263
  * Conflict
15484
16264
  */
15485
16265
  409: Problem;
16266
+ /**
16267
+ * Unprocessable Content
16268
+ */
16269
+ 422: Problem;
15486
16270
  };
15487
16271
  export type UnarchiveItemError = UnarchiveItemErrors[keyof UnarchiveItemErrors];
15488
16272
  export type UnarchiveItemResponses = {
@@ -15509,6 +16293,14 @@ export type ArchiveItemErrors = {
15509
16293
  * Forbidden
15510
16294
  */
15511
16295
  403: Problem;
16296
+ /**
16297
+ * Not Found
16298
+ */
16299
+ 404: Problem;
16300
+ /**
16301
+ * Unprocessable Content
16302
+ */
16303
+ 422: Problem;
15512
16304
  };
15513
16305
  export type ArchiveItemError = ArchiveItemErrors[keyof ArchiveItemErrors];
15514
16306
  export type ArchiveItemResponses = {
@@ -15553,6 +16345,10 @@ export type ListServiceSchedulesErrors = {
15553
16345
  * Forbidden
15554
16346
  */
15555
16347
  403: Problem;
16348
+ /**
16349
+ * Not Found
16350
+ */
16351
+ 404: Problem;
15556
16352
  /**
15557
16353
  * Unprocessable Content
15558
16354
  */
@@ -15587,6 +16383,14 @@ export type CreateServiceScheduleErrors = {
15587
16383
  * Forbidden
15588
16384
  */
15589
16385
  403: Problem;
16386
+ /**
16387
+ * Not Found
16388
+ */
16389
+ 404: Problem;
16390
+ /**
16391
+ * Unprocessable Content
16392
+ */
16393
+ 422: Problem;
15590
16394
  };
15591
16395
  export type CreateServiceScheduleError = CreateServiceScheduleErrors[keyof CreateServiceScheduleErrors];
15592
16396
  export type CreateServiceScheduleResponses = {
@@ -15610,6 +16414,10 @@ export type DeleteServiceScheduleErrors = {
15610
16414
  * Forbidden
15611
16415
  */
15612
16416
  403: Problem;
16417
+ /**
16418
+ * Not Found
16419
+ */
16420
+ 404: Problem;
15613
16421
  };
15614
16422
  export type DeleteServiceScheduleError = DeleteServiceScheduleErrors[keyof DeleteServiceScheduleErrors];
15615
16423
  export type DeleteServiceScheduleResponses = {
@@ -15664,6 +16472,14 @@ export type UpdateServiceScheduleErrors = {
15664
16472
  * Forbidden
15665
16473
  */
15666
16474
  403: Problem;
16475
+ /**
16476
+ * Not Found
16477
+ */
16478
+ 404: Problem;
16479
+ /**
16480
+ * Unprocessable Content
16481
+ */
16482
+ 422: Problem;
15667
16483
  };
15668
16484
  export type UpdateServiceScheduleError = UpdateServiceScheduleErrors[keyof UpdateServiceScheduleErrors];
15669
16485
  export type UpdateServiceScheduleResponses = {
@@ -15715,6 +16531,10 @@ export type ListServiceEventsErrors = {
15715
16531
  * Forbidden
15716
16532
  */
15717
16533
  403: Problem;
16534
+ /**
16535
+ * Not Found
16536
+ */
16537
+ 404: Problem;
15718
16538
  /**
15719
16539
  * Unprocessable Content
15720
16540
  */
@@ -15749,6 +16569,14 @@ export type CreateServiceEventErrors = {
15749
16569
  * Forbidden
15750
16570
  */
15751
16571
  403: Problem;
16572
+ /**
16573
+ * Not Found
16574
+ */
16575
+ 404: Problem;
16576
+ /**
16577
+ * Unprocessable Content
16578
+ */
16579
+ 422: Problem;
15752
16580
  };
15753
16581
  export type CreateServiceEventError = CreateServiceEventErrors[keyof CreateServiceEventErrors];
15754
16582
  export type CreateServiceEventResponses = {
@@ -15772,6 +16600,10 @@ export type DeleteServiceEventErrors = {
15772
16600
  * Forbidden
15773
16601
  */
15774
16602
  403: Problem;
16603
+ /**
16604
+ * Not Found
16605
+ */
16606
+ 404: Problem;
15775
16607
  };
15776
16608
  export type DeleteServiceEventError = DeleteServiceEventErrors[keyof DeleteServiceEventErrors];
15777
16609
  export type DeleteServiceEventResponses = {
@@ -15826,6 +16658,14 @@ export type UpdateServiceEventErrors = {
15826
16658
  * Forbidden
15827
16659
  */
15828
16660
  403: Problem;
16661
+ /**
16662
+ * Not Found
16663
+ */
16664
+ 404: Problem;
16665
+ /**
16666
+ * Unprocessable Content
16667
+ */
16668
+ 422: Problem;
15829
16669
  };
15830
16670
  export type UpdateServiceEventError = UpdateServiceEventErrors[keyof UpdateServiceEventErrors];
15831
16671
  export type UpdateServiceEventResponses = {
@@ -16002,6 +16842,10 @@ export type ListDocumentsErrors = {
16002
16842
  * Forbidden
16003
16843
  */
16004
16844
  403: Problem;
16845
+ /**
16846
+ * Not Found
16847
+ */
16848
+ 404: Problem;
16005
16849
  };
16006
16850
  export type ListDocumentsError = ListDocumentsErrors[keyof ListDocumentsErrors];
16007
16851
  export type ListDocumentsResponses = {
@@ -16033,7 +16877,11 @@ export type CreateDocumentErrors = {
16033
16877
  */
16034
16878
  403: Problem;
16035
16879
  /**
16036
- * Unprocessable Content (missing file)
16880
+ * Not Found
16881
+ */
16882
+ 404: Problem;
16883
+ /**
16884
+ * Unprocessable Content
16037
16885
  */
16038
16886
  422: Problem;
16039
16887
  };
@@ -16059,6 +16907,10 @@ export type DeleteDocumentErrors = {
16059
16907
  * Forbidden
16060
16908
  */
16061
16909
  403: Problem;
16910
+ /**
16911
+ * Not Found
16912
+ */
16913
+ 404: Problem;
16062
16914
  };
16063
16915
  export type DeleteDocumentError = DeleteDocumentErrors[keyof DeleteDocumentErrors];
16064
16916
  export type DeleteDocumentResponses = {
@@ -16109,6 +16961,10 @@ export type UpdateDocumentErrors = {
16109
16961
  * Forbidden
16110
16962
  */
16111
16963
  403: Problem;
16964
+ /**
16965
+ * Not Found
16966
+ */
16967
+ 404: Problem;
16112
16968
  };
16113
16969
  export type UpdateDocumentError = UpdateDocumentErrors[keyof UpdateDocumentErrors];
16114
16970
  export type UpdateDocumentResponses = {
@@ -16132,6 +16988,10 @@ export type ListVersionsErrors = {
16132
16988
  * Forbidden
16133
16989
  */
16134
16990
  403: Problem;
16991
+ /**
16992
+ * Not Found
16993
+ */
16994
+ 404: Problem;
16135
16995
  };
16136
16996
  export type ListVersionsError = ListVersionsErrors[keyof ListVersionsErrors];
16137
16997
  export type ListVersionsResponses = {
@@ -16222,7 +17082,7 @@ export type CreateProductErrors = {
16222
17082
  */
16223
17083
  403: Problem;
16224
17084
  /**
16225
- * Unprocessable Content (missing required attribute)
17085
+ * Unprocessable Content
16226
17086
  */
16227
17087
  422: Problem;
16228
17088
  };
@@ -16247,6 +17107,10 @@ export type DeleteProductErrors = {
16247
17107
  * Forbidden
16248
17108
  */
16249
17109
  403: Problem;
17110
+ /**
17111
+ * Not Found
17112
+ */
17113
+ 404: Problem;
16250
17114
  /**
16251
17115
  * Unprocessable Content (product has items)
16252
17116
  */
@@ -16299,6 +17163,10 @@ export type UpdateProductErrors = {
16299
17163
  * Forbidden
16300
17164
  */
16301
17165
  403: Problem;
17166
+ /**
17167
+ * Not Found
17168
+ */
17169
+ 404: Problem;
16302
17170
  /**
16303
17171
  * Unprocessable Content
16304
17172
  */
@@ -16329,6 +17197,14 @@ export type UnarchiveProductErrors = {
16329
17197
  * Forbidden
16330
17198
  */
16331
17199
  403: Problem;
17200
+ /**
17201
+ * Not Found
17202
+ */
17203
+ 404: Problem;
17204
+ /**
17205
+ * Unprocessable Content
17206
+ */
17207
+ 422: Problem;
16332
17208
  };
16333
17209
  export type UnarchiveProductError = UnarchiveProductErrors[keyof UnarchiveProductErrors];
16334
17210
  export type UnarchiveProductResponses = {
@@ -16355,6 +17231,14 @@ export type ArchiveProductErrors = {
16355
17231
  * Forbidden
16356
17232
  */
16357
17233
  403: Problem;
17234
+ /**
17235
+ * Not Found
17236
+ */
17237
+ 404: Problem;
17238
+ /**
17239
+ * Unprocessable Content
17240
+ */
17241
+ 422: Problem;
16358
17242
  };
16359
17243
  export type ArchiveProductError = ArchiveProductErrors[keyof ArchiveProductErrors];
16360
17244
  export type ArchiveProductResponses = {
@@ -16373,6 +17257,10 @@ export type AdjustProductInventoryData = {
16373
17257
  url: '/api/v1/assets/products/{product_id}/adjustments';
16374
17258
  };
16375
17259
  export type AdjustProductInventoryErrors = {
17260
+ /**
17261
+ * Bad Request (missing performed_by_user_id)
17262
+ */
17263
+ 400: Problem;
16376
17264
  /**
16377
17265
  * Forbidden
16378
17266
  */
@@ -16381,6 +17269,10 @@ export type AdjustProductInventoryErrors = {
16381
17269
  * Not Found
16382
17270
  */
16383
17271
  404: Problem;
17272
+ /**
17273
+ * Unprocessable Content
17274
+ */
17275
+ 422: Problem;
16384
17276
  };
16385
17277
  export type AdjustProductInventoryError = AdjustProductInventoryErrors[keyof AdjustProductInventoryErrors];
16386
17278
  export type AdjustProductInventoryResponses = {
@@ -16399,6 +17291,10 @@ export type RestockProductData = {
16399
17291
  url: '/api/v1/assets/products/{product_id}/restocks';
16400
17292
  };
16401
17293
  export type RestockProductErrors = {
17294
+ /**
17295
+ * Bad Request (missing performed_by_user_id)
17296
+ */
17297
+ 400: Problem;
16402
17298
  /**
16403
17299
  * Forbidden
16404
17300
  */
@@ -16407,6 +17303,10 @@ export type RestockProductErrors = {
16407
17303
  * Not Found
16408
17304
  */
16409
17305
  404: Problem;
17306
+ /**
17307
+ * Unprocessable Content
17308
+ */
17309
+ 422: Problem;
16410
17310
  };
16411
17311
  export type RestockProductError = RestockProductErrors[keyof RestockProductErrors];
16412
17312
  export type RestockProductResponses = {
@@ -16447,6 +17347,10 @@ export type ListServiceScheduleTemplatesErrors = {
16447
17347
  * Forbidden
16448
17348
  */
16449
17349
  403: Problem;
17350
+ /**
17351
+ * Not Found
17352
+ */
17353
+ 404: Problem;
16450
17354
  };
16451
17355
  export type ListServiceScheduleTemplatesError = ListServiceScheduleTemplatesErrors[keyof ListServiceScheduleTemplatesErrors];
16452
17356
  export type ListServiceScheduleTemplatesResponses = {
@@ -16477,6 +17381,14 @@ export type CreateServiceScheduleTemplateErrors = {
16477
17381
  * Forbidden
16478
17382
  */
16479
17383
  403: Problem;
17384
+ /**
17385
+ * Not Found
17386
+ */
17387
+ 404: Problem;
17388
+ /**
17389
+ * Unprocessable Content
17390
+ */
17391
+ 422: Problem;
16480
17392
  };
16481
17393
  export type CreateServiceScheduleTemplateError = CreateServiceScheduleTemplateErrors[keyof CreateServiceScheduleTemplateErrors];
16482
17394
  export type CreateServiceScheduleTemplateResponses = {
@@ -16500,6 +17412,10 @@ export type DeleteServiceScheduleTemplateErrors = {
16500
17412
  * Forbidden
16501
17413
  */
16502
17414
  403: Problem;
17415
+ /**
17416
+ * Not Found
17417
+ */
17418
+ 404: Problem;
16503
17419
  };
16504
17420
  export type DeleteServiceScheduleTemplateError = DeleteServiceScheduleTemplateErrors[keyof DeleteServiceScheduleTemplateErrors];
16505
17421
  export type DeleteServiceScheduleTemplateResponses = {
@@ -16554,6 +17470,14 @@ export type UpdateServiceScheduleTemplateErrors = {
16554
17470
  * Forbidden
16555
17471
  */
16556
17472
  403: Problem;
17473
+ /**
17474
+ * Not Found
17475
+ */
17476
+ 404: Problem;
17477
+ /**
17478
+ * Unprocessable Content
17479
+ */
17480
+ 422: Problem;
16557
17481
  };
16558
17482
  export type UpdateServiceScheduleTemplateError = UpdateServiceScheduleTemplateErrors[keyof UpdateServiceScheduleTemplateErrors];
16559
17483
  export type UpdateServiceScheduleTemplateResponses = {
@@ -16566,11 +17490,11 @@ export type UpdateServiceScheduleTemplateResponse = UpdateServiceScheduleTemplat
16566
17490
  export type SeedServiceScheduleTemplateData = {
16567
17491
  body: {
16568
17492
  /**
16569
- * Serial item ids to seed; omit to seed every cleanly-seedable item
17493
+ * Serial item ids to seed; omit or send [] to seed every cleanly-seedable item
16570
17494
  */
16571
17495
  assets_item_ids?: Array<string>;
16572
17496
  /**
16573
- * Required
17497
+ * ID of the user this seed is performed on behalf of, recorded as creator and updater of the seeded schedules. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
16574
17498
  */
16575
17499
  performed_by_user_id: string;
16576
17500
  };
@@ -16582,10 +17506,22 @@ export type SeedServiceScheduleTemplateData = {
16582
17506
  url: '/api/v1/assets/products/{product_id}/service_schedule_templates/{service_schedule_template_id}/seeds';
16583
17507
  };
16584
17508
  export type SeedServiceScheduleTemplateErrors = {
17509
+ /**
17510
+ * Bad Request
17511
+ */
17512
+ 400: Problem;
16585
17513
  /**
16586
17514
  * Forbidden
16587
17515
  */
16588
17516
  403: Problem;
17517
+ /**
17518
+ * Not Found
17519
+ */
17520
+ 404: Problem;
17521
+ /**
17522
+ * Unprocessable Content
17523
+ */
17524
+ 422: Problem;
16589
17525
  };
16590
17526
  export type SeedServiceScheduleTemplateError = SeedServiceScheduleTemplateErrors[keyof SeedServiceScheduleTemplateErrors];
16591
17527
  export type SeedServiceScheduleTemplateResponses = {
@@ -16601,11 +17537,11 @@ export type SeedServiceScheduleTemplateResponse = SeedServiceScheduleTemplateRes
16601
17537
  export type SyncServiceScheduleTemplateData = {
16602
17538
  body: {
16603
17539
  /**
16604
- * Blocked schedule ids to sync; omit to sync every blocked schedule
17540
+ * Blocked schedule ids to sync; omit or send [] to sync every blocked schedule
16605
17541
  */
16606
17542
  schedule_ids?: Array<string>;
16607
17543
  /**
16608
- * Required
17544
+ * ID of the user this sync is performed on behalf of, recorded as updater of the synced schedules. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
16609
17545
  */
16610
17546
  performed_by_user_id: string;
16611
17547
  };
@@ -16617,10 +17553,22 @@ export type SyncServiceScheduleTemplateData = {
16617
17553
  url: '/api/v1/assets/products/{product_id}/service_schedule_templates/{service_schedule_template_id}/syncs';
16618
17554
  };
16619
17555
  export type SyncServiceScheduleTemplateErrors = {
17556
+ /**
17557
+ * Bad Request
17558
+ */
17559
+ 400: Problem;
16620
17560
  /**
16621
17561
  * Forbidden
16622
17562
  */
16623
17563
  403: Problem;
17564
+ /**
17565
+ * Not Found
17566
+ */
17567
+ 404: Problem;
17568
+ /**
17569
+ * Unprocessable Content
17570
+ */
17571
+ 422: Problem;
16624
17572
  };
16625
17573
  export type SyncServiceScheduleTemplateError = SyncServiceScheduleTemplateErrors[keyof SyncServiceScheduleTemplateErrors];
16626
17574
  export type SyncServiceScheduleTemplateResponses = {
@@ -16689,6 +17637,10 @@ export type CreateSiteData = {
16689
17637
  url: '/api/v1/assets/sites';
16690
17638
  };
16691
17639
  export type CreateSiteErrors = {
17640
+ /**
17641
+ * Bad Request
17642
+ */
17643
+ 400: Problem;
16692
17644
  /**
16693
17645
  * Forbidden
16694
17646
  */
@@ -16719,6 +17671,10 @@ export type DeleteSiteErrors = {
16719
17671
  * Forbidden
16720
17672
  */
16721
17673
  403: Problem;
17674
+ /**
17675
+ * Not Found
17676
+ */
17677
+ 404: Problem;
16722
17678
  /**
16723
17679
  * Unprocessable Content (site has inventory)
16724
17680
  */
@@ -16745,6 +17701,10 @@ export type GetAssetsSiteErrors = {
16745
17701
  * Forbidden
16746
17702
  */
16747
17703
  403: Problem;
17704
+ /**
17705
+ * Not Found
17706
+ */
17707
+ 404: Problem;
16748
17708
  };
16749
17709
  export type GetAssetsSiteError = GetAssetsSiteErrors[keyof GetAssetsSiteErrors];
16750
17710
  export type GetAssetsSiteResponses = {
@@ -16763,10 +17723,18 @@ export type UpdateSiteData = {
16763
17723
  url: '/api/v1/assets/sites/{id}';
16764
17724
  };
16765
17725
  export type UpdateSiteErrors = {
17726
+ /**
17727
+ * Bad Request
17728
+ */
17729
+ 400: Problem;
16766
17730
  /**
16767
17731
  * Forbidden
16768
17732
  */
16769
17733
  403: Problem;
17734
+ /**
17735
+ * Not Found
17736
+ */
17737
+ 404: Problem;
16770
17738
  /**
16771
17739
  * Unprocessable Content
16772
17740
  */
@@ -17012,7 +17980,7 @@ export type CreateTransferData = {
17012
17980
  };
17013
17981
  export type CreateTransferErrors = {
17014
17982
  /**
17015
- * Bad Request
17983
+ * Bad Request (missing performed_by_user_id)
17016
17984
  */
17017
17985
  400: Problem;
17018
17986
  /**
@@ -17053,6 +18021,10 @@ export type GetTransferErrors = {
17053
18021
  * Forbidden
17054
18022
  */
17055
18023
  403: Problem;
18024
+ /**
18025
+ * Not Found
18026
+ */
18027
+ 404: Problem;
17056
18028
  };
17057
18029
  export type GetTransferError = GetTransferErrors[keyof GetTransferErrors];
17058
18030
  export type GetTransferResponses = {
@@ -17110,6 +18082,10 @@ export type CreateVendorData = {
17110
18082
  url: '/api/v1/assets/vendors';
17111
18083
  };
17112
18084
  export type CreateVendorErrors = {
18085
+ /**
18086
+ * Bad Request
18087
+ */
18088
+ 400: Problem;
17113
18089
  /**
17114
18090
  * Forbidden
17115
18091
  */
@@ -17140,6 +18116,10 @@ export type DeleteVendorErrors = {
17140
18116
  * Forbidden
17141
18117
  */
17142
18118
  403: Problem;
18119
+ /**
18120
+ * Not Found
18121
+ */
18122
+ 404: Problem;
17143
18123
  };
17144
18124
  export type DeleteVendorError = DeleteVendorErrors[keyof DeleteVendorErrors];
17145
18125
  export type DeleteVendorResponses = {
@@ -17162,6 +18142,10 @@ export type GetVendorErrors = {
17162
18142
  * Forbidden
17163
18143
  */
17164
18144
  403: Problem;
18145
+ /**
18146
+ * Not Found
18147
+ */
18148
+ 404: Problem;
17165
18149
  };
17166
18150
  export type GetVendorError = GetVendorErrors[keyof GetVendorErrors];
17167
18151
  export type GetVendorResponses = {
@@ -17180,10 +18164,18 @@ export type UpdateVendorData = {
17180
18164
  url: '/api/v1/assets/vendors/{id}';
17181
18165
  };
17182
18166
  export type UpdateVendorErrors = {
18167
+ /**
18168
+ * Bad Request
18169
+ */
18170
+ 400: Problem;
17183
18171
  /**
17184
18172
  * Forbidden
17185
18173
  */
17186
18174
  403: Problem;
18175
+ /**
18176
+ * Not Found
18177
+ */
18178
+ 404: Problem;
17187
18179
  /**
17188
18180
  * Unprocessable Content (invalid logo replacement)
17189
18181
  */
@@ -17271,6 +18263,10 @@ export type GetFeatureErrors = {
17271
18263
  * Forbidden
17272
18264
  */
17273
18265
  403: Problem;
18266
+ /**
18267
+ * Not Found
18268
+ */
18269
+ 404: Problem;
17274
18270
  };
17275
18271
  export type GetFeatureError = GetFeatureErrors[keyof GetFeatureErrors];
17276
18272
  export type GetFeatureResponses = {
@@ -17350,6 +18346,10 @@ export type GetAtlasSiteErrors = {
17350
18346
  * Forbidden
17351
18347
  */
17352
18348
  403: Problem;
18349
+ /**
18350
+ * Not Found
18351
+ */
18352
+ 404: Problem;
17353
18353
  };
17354
18354
  export type GetAtlasSiteError = GetAtlasSiteErrors[keyof GetAtlasSiteErrors];
17355
18355
  export type GetAtlasSiteResponses = {
@@ -17445,7 +18445,7 @@ export type ListPackagesResponses = {
17445
18445
  };
17446
18446
  export type ListPackagesResponse = ListPackagesResponses[keyof ListPackagesResponses];
17447
18447
  export type CreatePackageData = {
17448
- body?: CertificationPackageParameters;
18448
+ body: CertificationPackageParameters;
17449
18449
  path?: never;
17450
18450
  query?: never;
17451
18451
  url: '/api/v1/certifications/packages';
@@ -17529,7 +18529,7 @@ export type GetPackageResponses = {
17529
18529
  };
17530
18530
  export type GetPackageResponse = GetPackageResponses[keyof GetPackageResponses];
17531
18531
  export type UpdatePackageData = {
17532
- body?: CertificationPackageUpdateParameters;
18532
+ body: CertificationPackageUpdateParameters;
17533
18533
  path: {
17534
18534
  id: string;
17535
18535
  };
@@ -17988,6 +18988,10 @@ export type CreateDepartmentData = {
17988
18988
  url: '/api/v1/companies/departments';
17989
18989
  };
17990
18990
  export type CreateDepartmentErrors = {
18991
+ /**
18992
+ * Bad Request
18993
+ */
18994
+ 400: Problem;
17991
18995
  /**
17992
18996
  * Forbidden
17993
18997
  */
@@ -18034,67 +19038,381 @@ export type DeleteDepartmentResponses = {
18034
19038
  */
18035
19039
  204: void;
18036
19040
  };
18037
- export type DeleteDepartmentResponse = DeleteDepartmentResponses[keyof DeleteDepartmentResponses];
18038
- export type GetDepartmentData = {
19041
+ export type DeleteDepartmentResponse = DeleteDepartmentResponses[keyof DeleteDepartmentResponses];
19042
+ export type GetDepartmentData = {
19043
+ body?: never;
19044
+ path: {
19045
+ id: string;
19046
+ };
19047
+ query?: never;
19048
+ url: '/api/v1/companies/departments/{id}';
19049
+ };
19050
+ export type GetDepartmentErrors = {
19051
+ /**
19052
+ * Forbidden
19053
+ */
19054
+ 403: Problem;
19055
+ /**
19056
+ * Not Found
19057
+ */
19058
+ 404: Problem;
19059
+ };
19060
+ export type GetDepartmentError = GetDepartmentErrors[keyof GetDepartmentErrors];
19061
+ export type GetDepartmentResponses = {
19062
+ /**
19063
+ * Success
19064
+ */
19065
+ 200: DepartmentResponseObject;
19066
+ };
19067
+ export type GetDepartmentResponse = GetDepartmentResponses[keyof GetDepartmentResponses];
19068
+ export type UpdateDepartmentData = {
19069
+ body: DepartmentUpdateParameters;
19070
+ path: {
19071
+ id: string;
19072
+ };
19073
+ query?: never;
19074
+ url: '/api/v1/companies/departments/{id}';
19075
+ };
19076
+ export type UpdateDepartmentErrors = {
19077
+ /**
19078
+ * Bad Request
19079
+ */
19080
+ 400: Problem;
19081
+ /**
19082
+ * Forbidden
19083
+ */
19084
+ 403: Problem;
19085
+ /**
19086
+ * Not Found
19087
+ */
19088
+ 404: Problem;
19089
+ /**
19090
+ * Unprocessable Content
19091
+ */
19092
+ 422: Problem;
19093
+ };
19094
+ export type UpdateDepartmentError = UpdateDepartmentErrors[keyof UpdateDepartmentErrors];
19095
+ export type UpdateDepartmentResponses = {
19096
+ /**
19097
+ * Success
19098
+ */
19099
+ 200: DepartmentResponseObject;
19100
+ };
19101
+ export type UpdateDepartmentResponse = UpdateDepartmentResponses[keyof UpdateDepartmentResponses];
19102
+ export type ListCompaniesData = {
19103
+ body?: never;
19104
+ path?: never;
19105
+ query?: {
19106
+ /**
19107
+ * Fuzzy-match by company name
19108
+ */
19109
+ 'filter[name]'?: string;
19110
+ /**
19111
+ * This pagination cursor corresponds to the cursor value found in the response in
19112
+ * `meta.page.next_cursor`.
19113
+ */
19114
+ 'page[cursor]'?: string;
19115
+ /**
19116
+ * 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`.
19117
+ */
19118
+ 'page[limit]'?: number;
19119
+ page?: string;
19120
+ filter?: string;
19121
+ 'filter[unexpected]'?: string;
19122
+ };
19123
+ url: '/api/v1/companies';
19124
+ };
19125
+ export type ListCompaniesErrors = {
19126
+ /**
19127
+ * Bad Request
19128
+ */
19129
+ 400: Problem;
19130
+ /**
19131
+ * Unauthorized
19132
+ */
19133
+ 401: Problem;
19134
+ /**
19135
+ * Forbidden
19136
+ */
19137
+ 403: Problem;
19138
+ };
19139
+ export type ListCompaniesError = ListCompaniesErrors[keyof ListCompaniesErrors];
19140
+ export type ListCompaniesResponses = {
19141
+ /**
19142
+ * Success
19143
+ */
19144
+ 200: {
19145
+ meta: Meta;
19146
+ links: Links;
19147
+ data: Array<CompanyResponseObject>;
19148
+ };
19149
+ };
19150
+ export type ListCompaniesResponse = ListCompaniesResponses[keyof ListCompaniesResponses];
19151
+ export type GetCompanyData = {
19152
+ body?: never;
19153
+ path: {
19154
+ id: string;
19155
+ };
19156
+ query?: never;
19157
+ url: '/api/v1/companies/{id}';
19158
+ };
19159
+ export type GetCompanyErrors = {
19160
+ /**
19161
+ * Forbidden
19162
+ */
19163
+ 403: Problem;
19164
+ /**
19165
+ * Not Found
19166
+ */
19167
+ 404: Problem;
19168
+ };
19169
+ export type GetCompanyError = GetCompanyErrors[keyof GetCompanyErrors];
19170
+ export type GetCompanyResponses = {
19171
+ /**
19172
+ * Success
19173
+ */
19174
+ 200: CompanyResponseObject;
19175
+ };
19176
+ export type GetCompanyResponse = GetCompanyResponses[keyof GetCompanyResponses];
19177
+ export type UpdateCompanyProfileData = {
19178
+ body: CompanyParameters;
19179
+ path: {
19180
+ id: string;
19181
+ };
19182
+ query?: never;
19183
+ url: '/api/v1/companies/{id}';
19184
+ };
19185
+ export type UpdateCompanyProfileErrors = {
19186
+ /**
19187
+ * Forbidden
19188
+ */
19189
+ 403: Problem;
19190
+ /**
19191
+ * Not Found
19192
+ */
19193
+ 404: Problem;
19194
+ /**
19195
+ * Unprocessable Content
19196
+ */
19197
+ 422: Problem;
19198
+ };
19199
+ export type UpdateCompanyProfileError = UpdateCompanyProfileErrors[keyof UpdateCompanyProfileErrors];
19200
+ export type UpdateCompanyProfileResponses = {
19201
+ /**
19202
+ * Success
19203
+ */
19204
+ 200: CompanyResponseObject;
19205
+ };
19206
+ export type UpdateCompanyProfileResponse = UpdateCompanyProfileResponses[keyof UpdateCompanyProfileResponses];
19207
+ export type ListAssessmentsData = {
19208
+ body?: never;
19209
+ path?: never;
19210
+ query?: {
19211
+ /**
19212
+ * Assessments of this candidate.
19213
+ */
19214
+ 'filter[candidate_user_id]'?: string;
19215
+ /**
19216
+ * Assessments pinned to this level.
19217
+ */
19218
+ 'filter[competencies_level_id]'?: string;
19219
+ /**
19220
+ * evidence_collection, submitted, in_review, or decided.
19221
+ */
19222
+ 'filter[status]'?: 'evidence_collection' | 'submitted' | 'in_review' | 'decided';
19223
+ /**
19224
+ * competent or not_yet_competent. Null until the assessment is decided.
19225
+ */
19226
+ 'filter[outcome]'?: 'competent' | 'not_yet_competent' | null;
19227
+ filter?: string;
19228
+ 'filter[unexpected]'?: string;
19229
+ };
19230
+ url: '/api/v1/competencies/assessments';
19231
+ };
19232
+ export type ListAssessmentsErrors = {
19233
+ /**
19234
+ * Bad Request
19235
+ */
19236
+ 400: Problem;
19237
+ /**
19238
+ * Forbidden
19239
+ */
19240
+ 403: Problem;
19241
+ };
19242
+ export type ListAssessmentsError = ListAssessmentsErrors[keyof ListAssessmentsErrors];
19243
+ export type ListAssessmentsResponses = {
19244
+ /**
19245
+ * Success
19246
+ */
19247
+ 200: {
19248
+ meta: Meta;
19249
+ links: Links;
19250
+ data: Array<CompetencyAssessmentResponseObject>;
19251
+ };
19252
+ };
19253
+ export type ListAssessmentsResponse = ListAssessmentsResponses[keyof ListAssessmentsResponses];
19254
+ export type GetAssessmentData = {
19255
+ body?: never;
19256
+ path: {
19257
+ id: string;
19258
+ };
19259
+ query?: never;
19260
+ url: '/api/v1/competencies/assessments/{id}';
19261
+ };
19262
+ export type GetAssessmentErrors = {
19263
+ /**
19264
+ * Forbidden
19265
+ */
19266
+ 403: Problem;
19267
+ /**
19268
+ * Not Found
19269
+ */
19270
+ 404: Problem;
19271
+ };
19272
+ export type GetAssessmentError = GetAssessmentErrors[keyof GetAssessmentErrors];
19273
+ export type GetAssessmentResponses = {
19274
+ /**
19275
+ * Success
19276
+ */
19277
+ 200: CompetencyAssessmentResponseObject;
19278
+ };
19279
+ export type GetAssessmentResponse = GetAssessmentResponses[keyof GetAssessmentResponses];
19280
+ export type ListAssessmentKeyActivitiesData = {
19281
+ body?: never;
19282
+ path: {
19283
+ assessment_id: string;
19284
+ };
19285
+ query?: {
19286
+ filter?: string;
19287
+ 'filter[unexpected]'?: string;
19288
+ };
19289
+ url: '/api/v1/competencies/assessments/{assessment_id}/key_activities';
19290
+ };
19291
+ export type ListAssessmentKeyActivitiesErrors = {
19292
+ /**
19293
+ * Bad Request
19294
+ */
19295
+ 400: Problem;
19296
+ /**
19297
+ * Forbidden
19298
+ */
19299
+ 403: Problem;
19300
+ };
19301
+ export type ListAssessmentKeyActivitiesError = ListAssessmentKeyActivitiesErrors[keyof ListAssessmentKeyActivitiesErrors];
19302
+ export type ListAssessmentKeyActivitiesResponses = {
19303
+ /**
19304
+ * Candidate sees a decided review
19305
+ */
19306
+ 200: {
19307
+ meta: Meta;
19308
+ links: Links;
19309
+ data: Array<CompetencyAssessmentKeyActivityResponseObject>;
19310
+ };
19311
+ };
19312
+ export type ListAssessmentKeyActivitiesResponse = ListAssessmentKeyActivitiesResponses[keyof ListAssessmentKeyActivitiesResponses];
19313
+ export type GetAssessmentKeyActivityData = {
18039
19314
  body?: never;
18040
19315
  path: {
19316
+ assessment_id: string;
18041
19317
  id: string;
18042
19318
  };
18043
19319
  query?: never;
18044
- url: '/api/v1/companies/departments/{id}';
19320
+ url: '/api/v1/competencies/assessments/{assessment_id}/key_activities/{id}';
18045
19321
  };
18046
- export type GetDepartmentErrors = {
19322
+ export type GetAssessmentKeyActivityErrors = {
18047
19323
  /**
18048
19324
  * Forbidden
18049
19325
  */
18050
19326
  403: Problem;
19327
+ };
19328
+ export type GetAssessmentKeyActivityError = GetAssessmentKeyActivityErrors[keyof GetAssessmentKeyActivityErrors];
19329
+ export type GetAssessmentKeyActivityResponses = {
18051
19330
  /**
18052
- * Not Found
19331
+ * Candidate sees a decided review
18053
19332
  */
18054
- 404: Problem;
19333
+ 200: CompetencyAssessmentKeyActivityResponseObject;
18055
19334
  };
18056
- export type GetDepartmentError = GetDepartmentErrors[keyof GetDepartmentErrors];
18057
- export type GetDepartmentResponses = {
19335
+ export type GetAssessmentKeyActivityResponse = GetAssessmentKeyActivityResponses[keyof GetAssessmentKeyActivityResponses];
19336
+ export type ListEvidenceItemsData = {
19337
+ body?: never;
19338
+ path: {
19339
+ assessment_id: string;
19340
+ key_activity_id: string;
19341
+ };
19342
+ query?: {
19343
+ /**
19344
+ * upload, form_submission, or certification.
19345
+ */
19346
+ 'filter[kind]'?: 'upload' | 'form_submission' | 'certification';
19347
+ filter?: string;
19348
+ 'filter[unexpected]'?: string;
19349
+ };
19350
+ url: '/api/v1/competencies/assessments/{assessment_id}/key_activities/{key_activity_id}/evidence_items';
19351
+ };
19352
+ export type ListEvidenceItemsErrors = {
19353
+ /**
19354
+ * Bad Request
19355
+ */
19356
+ 400: Problem;
19357
+ /**
19358
+ * Forbidden
19359
+ */
19360
+ 403: Problem;
19361
+ };
19362
+ export type ListEvidenceItemsError = ListEvidenceItemsErrors[keyof ListEvidenceItemsErrors];
19363
+ export type ListEvidenceItemsResponses = {
18058
19364
  /**
18059
19365
  * Success
18060
19366
  */
18061
- 200: DepartmentResponseObject;
19367
+ 200: {
19368
+ meta: Meta;
19369
+ links: Links;
19370
+ data: Array<CompetencyEvidenceItemResponseObject>;
19371
+ };
18062
19372
  };
18063
- export type GetDepartmentResponse = GetDepartmentResponses[keyof GetDepartmentResponses];
18064
- export type UpdateDepartmentData = {
18065
- body: DepartmentUpdateParameters;
19373
+ export type ListEvidenceItemsResponse = ListEvidenceItemsResponses[keyof ListEvidenceItemsResponses];
19374
+ export type GetEvidenceItemData = {
19375
+ body?: never;
18066
19376
  path: {
19377
+ assessment_id: string;
19378
+ key_activity_id: string;
18067
19379
  id: string;
18068
19380
  };
18069
19381
  query?: never;
18070
- url: '/api/v1/companies/departments/{id}';
19382
+ url: '/api/v1/competencies/assessments/{assessment_id}/key_activities/{key_activity_id}/evidence_items/{id}';
18071
19383
  };
18072
- export type UpdateDepartmentErrors = {
19384
+ export type GetEvidenceItemErrors = {
18073
19385
  /**
18074
19386
  * Forbidden
18075
19387
  */
18076
19388
  403: Problem;
18077
- /**
18078
- * Unprocessable Content
18079
- */
18080
- 422: Problem;
18081
19389
  };
18082
- export type UpdateDepartmentError = UpdateDepartmentErrors[keyof UpdateDepartmentErrors];
18083
- export type UpdateDepartmentResponses = {
19390
+ export type GetEvidenceItemError = GetEvidenceItemErrors[keyof GetEvidenceItemErrors];
19391
+ export type GetEvidenceItemResponses = {
18084
19392
  /**
18085
19393
  * Success
18086
19394
  */
18087
- 200: DepartmentResponseObject;
19395
+ 200: CompetencyEvidenceItemResponseObject;
18088
19396
  };
18089
- export type UpdateDepartmentResponse = UpdateDepartmentResponses[keyof UpdateDepartmentResponses];
18090
- export type ListCompaniesData = {
19397
+ export type GetEvidenceItemResponse = GetEvidenceItemResponses[keyof GetEvidenceItemResponses];
19398
+ export type ListQualificationsData = {
18091
19399
  body?: never;
18092
19400
  path?: never;
18093
19401
  query?: {
18094
19402
  /**
18095
- * Fuzzy-match by company name
19403
+ * Standings held by this candidate.
18096
19404
  */
18097
- 'filter[name]'?: string;
19405
+ 'filter[candidate_user_id]'?: string;
19406
+ /**
19407
+ * Standings against this standard.
19408
+ */
19409
+ 'filter[competencies_standard_id]'?: string;
19410
+ /**
19411
+ * Standings at this tier.
19412
+ */
19413
+ 'filter[level_sort_order]'?: number;
19414
+ filter?: string;
19415
+ 'filter[unexpected]'?: string;
18098
19416
  /**
18099
19417
  * This pagination cursor corresponds to the cursor value found in the response in
18100
19418
  * `meta.page.next_cursor`.
@@ -18105,72 +19423,40 @@ export type ListCompaniesData = {
18105
19423
  */
18106
19424
  'page[limit]'?: number;
18107
19425
  page?: string;
18108
- filter?: string;
18109
- 'filter[unexpected]'?: string;
18110
19426
  };
18111
- url: '/api/v1/companies';
19427
+ url: '/api/v1/competencies/qualifications';
18112
19428
  };
18113
- export type ListCompaniesErrors = {
19429
+ export type ListQualificationsErrors = {
18114
19430
  /**
18115
19431
  * Bad Request
18116
19432
  */
18117
19433
  400: Problem;
18118
- /**
18119
- * Unauthorized
18120
- */
18121
- 401: Problem;
18122
19434
  /**
18123
19435
  * Forbidden
18124
19436
  */
18125
19437
  403: Problem;
18126
19438
  };
18127
- export type ListCompaniesError = ListCompaniesErrors[keyof ListCompaniesErrors];
18128
- export type ListCompaniesResponses = {
19439
+ export type ListQualificationsError = ListQualificationsErrors[keyof ListQualificationsErrors];
19440
+ export type ListQualificationsResponses = {
18129
19441
  /**
18130
19442
  * Success
18131
19443
  */
18132
19444
  200: {
18133
19445
  meta: Meta;
18134
19446
  links: Links;
18135
- data: Array<CompanyResponseObject>;
19447
+ data: Array<CompetencyQualificationResponseObject>;
18136
19448
  };
18137
19449
  };
18138
- export type ListCompaniesResponse = ListCompaniesResponses[keyof ListCompaniesResponses];
18139
- export type GetCompanyData = {
19450
+ export type ListQualificationsResponse = ListQualificationsResponses[keyof ListQualificationsResponses];
19451
+ export type GetQualificationData = {
18140
19452
  body?: never;
18141
19453
  path: {
18142
19454
  id: string;
18143
19455
  };
18144
19456
  query?: never;
18145
- url: '/api/v1/companies/{id}';
18146
- };
18147
- export type GetCompanyErrors = {
18148
- /**
18149
- * Forbidden
18150
- */
18151
- 403: Problem;
18152
- /**
18153
- * Not Found
18154
- */
18155
- 404: Problem;
18156
- };
18157
- export type GetCompanyError = GetCompanyErrors[keyof GetCompanyErrors];
18158
- export type GetCompanyResponses = {
18159
- /**
18160
- * Success
18161
- */
18162
- 200: CompanyResponseObject;
18163
- };
18164
- export type GetCompanyResponse = GetCompanyResponses[keyof GetCompanyResponses];
18165
- export type UpdateCompanyProfileData = {
18166
- body: CompanyParameters;
18167
- path: {
18168
- id: string;
18169
- };
18170
- query?: never;
18171
- url: '/api/v1/companies/{id}';
19457
+ url: '/api/v1/competencies/qualifications/{id}';
18172
19458
  };
18173
- export type UpdateCompanyProfileErrors = {
19459
+ export type GetQualificationErrors = {
18174
19460
  /**
18175
19461
  * Forbidden
18176
19462
  */
@@ -18179,19 +19465,15 @@ export type UpdateCompanyProfileErrors = {
18179
19465
  * Not Found
18180
19466
  */
18181
19467
  404: Problem;
18182
- /**
18183
- * Unprocessable Content
18184
- */
18185
- 422: Problem;
18186
19468
  };
18187
- export type UpdateCompanyProfileError = UpdateCompanyProfileErrors[keyof UpdateCompanyProfileErrors];
18188
- export type UpdateCompanyProfileResponses = {
19469
+ export type GetQualificationError = GetQualificationErrors[keyof GetQualificationErrors];
19470
+ export type GetQualificationResponses = {
18189
19471
  /**
18190
19472
  * Success
18191
19473
  */
18192
- 200: CompanyResponseObject;
19474
+ 200: CompetencyQualificationResponseObject;
18193
19475
  };
18194
- export type UpdateCompanyProfileResponse = UpdateCompanyProfileResponses[keyof UpdateCompanyProfileResponses];
19476
+ export type GetQualificationResponse = GetQualificationResponses[keyof GetQualificationResponses];
18195
19477
  export type ListChecksData = {
18196
19478
  body?: never;
18197
19479
  path?: never;
@@ -18802,6 +20084,10 @@ export type ListGroupUsersErrors = {
18802
20084
  * Forbidden
18803
20085
  */
18804
20086
  403: Problem;
20087
+ /**
20088
+ * Not Found
20089
+ */
20090
+ 404: Problem;
18805
20091
  };
18806
20092
  export type ListGroupUsersError = ListGroupUsersErrors[keyof ListGroupUsersErrors];
18807
20093
  export type ListGroupUsersResponses = {
@@ -18832,6 +20118,14 @@ export type AddUsersToGroupErrors = {
18832
20118
  * Forbidden
18833
20119
  */
18834
20120
  403: Problem;
20121
+ /**
20122
+ * Not Found
20123
+ */
20124
+ 404: Problem;
20125
+ /**
20126
+ * Unprocessable Content (malformed user_ids)
20127
+ */
20128
+ 422: Problem;
18835
20129
  };
18836
20130
  export type AddUsersToGroupError = AddUsersToGroupErrors[keyof AddUsersToGroupErrors];
18837
20131
  export type AddUsersToGroupResponses = {
@@ -19229,6 +20523,150 @@ export type CreateJobScopePriceData = {
19229
20523
  url: '/api/v1/jobs/{job_id}/production/job_scope_prices';
19230
20524
  };
19231
20525
  export type CreateJobScopePriceErrors = {
20526
+ /**
20527
+ * Bad Request
20528
+ */
20529
+ 400: Problem;
20530
+ /**
20531
+ * Forbidden
20532
+ */
20533
+ 403: Problem;
20534
+ /**
20535
+ * Not Found
20536
+ */
20537
+ 404: Problem;
20538
+ /**
20539
+ * Unprocessable Content
20540
+ */
20541
+ 422: Problem;
20542
+ };
20543
+ export type CreateJobScopePriceError = CreateJobScopePriceErrors[keyof CreateJobScopePriceErrors];
20544
+ export type CreateJobScopePriceResponses = {
20545
+ /**
20546
+ * Created
20547
+ */
20548
+ 201: ProductionJobScopePriceResponseObject;
20549
+ };
20550
+ export type CreateJobScopePriceResponse = CreateJobScopePriceResponses[keyof CreateJobScopePriceResponses];
20551
+ export type DeleteJobScopePriceData = {
20552
+ body?: never;
20553
+ path: {
20554
+ job_id: string;
20555
+ id: string;
20556
+ };
20557
+ query?: never;
20558
+ url: '/api/v1/jobs/{job_id}/production/job_scope_prices/{id}';
20559
+ };
20560
+ export type DeleteJobScopePriceErrors = {
20561
+ /**
20562
+ * Forbidden
20563
+ */
20564
+ 403: Problem;
20565
+ /**
20566
+ * Not Found
20567
+ */
20568
+ 404: Problem;
20569
+ /**
20570
+ * Unprocessable Content
20571
+ */
20572
+ 422: Problem;
20573
+ };
20574
+ export type DeleteJobScopePriceError = DeleteJobScopePriceErrors[keyof DeleteJobScopePriceErrors];
20575
+ export type DeleteJobScopePriceResponses = {
20576
+ /**
20577
+ * Success
20578
+ */
20579
+ 200: ProductionJobScopePriceResponseObject;
20580
+ };
20581
+ export type DeleteJobScopePriceResponse = DeleteJobScopePriceResponses[keyof DeleteJobScopePriceResponses];
20582
+ export type GetJobScopePriceData = {
20583
+ body?: never;
20584
+ path: {
20585
+ job_id: string;
20586
+ id: string;
20587
+ };
20588
+ query?: never;
20589
+ url: '/api/v1/jobs/{job_id}/production/job_scope_prices/{id}';
20590
+ };
20591
+ export type GetJobScopePriceErrors = {
20592
+ /**
20593
+ * Forbidden
20594
+ */
20595
+ 403: Problem;
20596
+ /**
20597
+ * Not Found
20598
+ */
20599
+ 404: Problem;
20600
+ };
20601
+ export type GetJobScopePriceError = GetJobScopePriceErrors[keyof GetJobScopePriceErrors];
20602
+ export type GetJobScopePriceResponses = {
20603
+ /**
20604
+ * Success
20605
+ */
20606
+ 200: ProductionJobScopePriceResponseObject;
20607
+ };
20608
+ export type GetJobScopePriceResponse = GetJobScopePriceResponses[keyof GetJobScopePriceResponses];
20609
+ export type UpdateJobScopePriceData = {
20610
+ body?: ProductionJobScopePriceUpdateParameters;
20611
+ path: {
20612
+ job_id: string;
20613
+ id: string;
20614
+ };
20615
+ query?: never;
20616
+ url: '/api/v1/jobs/{job_id}/production/job_scope_prices/{id}';
20617
+ };
20618
+ export type UpdateJobScopePriceErrors = {
20619
+ /**
20620
+ * Bad Request
20621
+ */
20622
+ 400: Problem;
20623
+ /**
20624
+ * Forbidden
20625
+ */
20626
+ 403: Problem;
20627
+ /**
20628
+ * Not Found
20629
+ */
20630
+ 404: Problem;
20631
+ /**
20632
+ * Unprocessable Content
20633
+ */
20634
+ 422: Problem;
20635
+ };
20636
+ export type UpdateJobScopePriceError = UpdateJobScopePriceErrors[keyof UpdateJobScopePriceErrors];
20637
+ export type UpdateJobScopePriceResponses = {
20638
+ /**
20639
+ * Success
20640
+ */
20641
+ 200: ProductionJobScopePriceResponseObject;
20642
+ };
20643
+ export type UpdateJobScopePriceResponse = UpdateJobScopePriceResponses[keyof UpdateJobScopePriceResponses];
20644
+ export type ListGoodFaithEffortExceptionsData = {
20645
+ body?: never;
20646
+ path: {
20647
+ job_id: string;
20648
+ };
20649
+ query?: {
20650
+ filter?: string;
20651
+ 'filter[unexpected]'?: string;
20652
+ /**
20653
+ * This pagination cursor corresponds to the cursor value found in the response in
20654
+ * `meta.page.next_cursor`.
20655
+ */
20656
+ 'page[cursor]'?: string;
20657
+ /**
20658
+ * 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`.
20659
+ */
20660
+ 'page[limit]'?: number;
20661
+ page?: string;
20662
+ };
20663
+ url: '/api/v1/jobs/{job_id}/pwa/apprenticeship/good_faith_effort_exceptions';
20664
+ };
20665
+ export type ListGoodFaithEffortExceptionsErrors = {
20666
+ /**
20667
+ * Bad Request
20668
+ */
20669
+ 400: Problem;
19232
20670
  /**
19233
20671
  * Forbidden
19234
20672
  */
@@ -19237,29 +20675,25 @@ export type CreateJobScopePriceErrors = {
19237
20675
  * Not Found
19238
20676
  */
19239
20677
  404: Problem;
19240
- /**
19241
- * Unprocessable Content
19242
- */
19243
- 422: Problem;
19244
20678
  };
19245
- export type CreateJobScopePriceError = CreateJobScopePriceErrors[keyof CreateJobScopePriceErrors];
19246
- export type CreateJobScopePriceResponses = {
20679
+ export type ListGoodFaithEffortExceptionsError = ListGoodFaithEffortExceptionsErrors[keyof ListGoodFaithEffortExceptionsErrors];
20680
+ export type ListGoodFaithEffortExceptionsResponses = {
19247
20681
  /**
19248
- * Created
20682
+ * Success
19249
20683
  */
19250
- 201: ProductionJobScopePriceResponseObject;
20684
+ 200: JobGoodFaithEffortExceptionsResponseObject;
19251
20685
  };
19252
- export type CreateJobScopePriceResponse = CreateJobScopePriceResponses[keyof CreateJobScopePriceResponses];
19253
- export type DeleteJobScopePriceData = {
20686
+ export type ListGoodFaithEffortExceptionsResponse = ListGoodFaithEffortExceptionsResponses[keyof ListGoodFaithEffortExceptionsResponses];
20687
+ export type GetGoodFaithEffortExceptionData = {
19254
20688
  body?: never;
19255
20689
  path: {
19256
20690
  job_id: string;
19257
20691
  id: string;
19258
20692
  };
19259
20693
  query?: never;
19260
- url: '/api/v1/jobs/{job_id}/production/job_scope_prices/{id}';
20694
+ url: '/api/v1/jobs/{job_id}/pwa/apprenticeship/good_faith_effort_exceptions/{id}';
19261
20695
  };
19262
- export type DeleteJobScopePriceErrors = {
20696
+ export type GetGoodFaithEffortExceptionErrors = {
19263
20697
  /**
19264
20698
  * Forbidden
19265
20699
  */
@@ -19268,29 +20702,41 @@ export type DeleteJobScopePriceErrors = {
19268
20702
  * Not Found
19269
20703
  */
19270
20704
  404: Problem;
19271
- /**
19272
- * Unprocessable Content
19273
- */
19274
- 422: Problem;
19275
20705
  };
19276
- export type DeleteJobScopePriceError = DeleteJobScopePriceErrors[keyof DeleteJobScopePriceErrors];
19277
- export type DeleteJobScopePriceResponses = {
20706
+ export type GetGoodFaithEffortExceptionError = GetGoodFaithEffortExceptionErrors[keyof GetGoodFaithEffortExceptionErrors];
20707
+ export type GetGoodFaithEffortExceptionResponses = {
19278
20708
  /**
19279
20709
  * Success
19280
20710
  */
19281
- 200: ProductionJobScopePriceResponseObject;
20711
+ 200: JobGoodFaithEffortExceptionResponseObject;
19282
20712
  };
19283
- export type DeleteJobScopePriceResponse = DeleteJobScopePriceResponses[keyof DeleteJobScopePriceResponses];
19284
- export type GetJobScopePriceData = {
20713
+ export type GetGoodFaithEffortExceptionResponse = GetGoodFaithEffortExceptionResponses[keyof GetGoodFaithEffortExceptionResponses];
20714
+ export type ListCurePaymentsData = {
19285
20715
  body?: never;
19286
20716
  path: {
19287
20717
  job_id: string;
19288
- id: string;
19289
20718
  };
19290
- query?: never;
19291
- url: '/api/v1/jobs/{job_id}/production/job_scope_prices/{id}';
20719
+ query?: {
20720
+ filter?: string;
20721
+ 'filter[unexpected]'?: string;
20722
+ /**
20723
+ * This pagination cursor corresponds to the cursor value found in the response in
20724
+ * `meta.page.next_cursor`.
20725
+ */
20726
+ 'page[cursor]'?: string;
20727
+ /**
20728
+ * 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`.
20729
+ */
20730
+ 'page[limit]'?: number;
20731
+ page?: string;
20732
+ };
20733
+ url: '/api/v1/jobs/{job_id}/pwa/cure_payments';
19292
20734
  };
19293
- export type GetJobScopePriceErrors = {
20735
+ export type ListCurePaymentsErrors = {
20736
+ /**
20737
+ * Bad Request
20738
+ */
20739
+ 400: Problem;
19294
20740
  /**
19295
20741
  * Forbidden
19296
20742
  */
@@ -19300,24 +20746,24 @@ export type GetJobScopePriceErrors = {
19300
20746
  */
19301
20747
  404: Problem;
19302
20748
  };
19303
- export type GetJobScopePriceError = GetJobScopePriceErrors[keyof GetJobScopePriceErrors];
19304
- export type GetJobScopePriceResponses = {
20749
+ export type ListCurePaymentsError = ListCurePaymentsErrors[keyof ListCurePaymentsErrors];
20750
+ export type ListCurePaymentsResponses = {
19305
20751
  /**
19306
20752
  * Success
19307
20753
  */
19308
- 200: ProductionJobScopePriceResponseObject;
20754
+ 200: JobCurePaymentsResponseObject;
19309
20755
  };
19310
- export type GetJobScopePriceResponse = GetJobScopePriceResponses[keyof GetJobScopePriceResponses];
19311
- export type UpdateJobScopePriceData = {
19312
- body?: ProductionJobScopePriceUpdateParameters;
20756
+ export type ListCurePaymentsResponse = ListCurePaymentsResponses[keyof ListCurePaymentsResponses];
20757
+ export type GetCurePaymentData = {
20758
+ body?: never;
19313
20759
  path: {
19314
20760
  job_id: string;
19315
20761
  id: string;
19316
20762
  };
19317
20763
  query?: never;
19318
- url: '/api/v1/jobs/{job_id}/production/job_scope_prices/{id}';
20764
+ url: '/api/v1/jobs/{job_id}/pwa/cure_payments/{id}';
19319
20765
  };
19320
- export type UpdateJobScopePriceErrors = {
20766
+ export type GetCurePaymentErrors = {
19321
20767
  /**
19322
20768
  * Forbidden
19323
20769
  */
@@ -19326,19 +20772,15 @@ export type UpdateJobScopePriceErrors = {
19326
20772
  * Not Found
19327
20773
  */
19328
20774
  404: Problem;
19329
- /**
19330
- * Unprocessable Content
19331
- */
19332
- 422: Problem;
19333
20775
  };
19334
- export type UpdateJobScopePriceError = UpdateJobScopePriceErrors[keyof UpdateJobScopePriceErrors];
19335
- export type UpdateJobScopePriceResponses = {
20776
+ export type GetCurePaymentError = GetCurePaymentErrors[keyof GetCurePaymentErrors];
20777
+ export type GetCurePaymentResponses = {
19336
20778
  /**
19337
20779
  * Success
19338
20780
  */
19339
- 200: ProductionJobScopePriceResponseObject;
20781
+ 200: JobCurePaymentResponseObject;
19340
20782
  };
19341
- export type UpdateJobScopePriceResponse = UpdateJobScopePriceResponses[keyof UpdateJobScopePriceResponses];
20783
+ export type GetCurePaymentResponse = GetCurePaymentResponses[keyof GetCurePaymentResponses];
19342
20784
  export type CreateJobTradeData = {
19343
20785
  body: PwaTradeParameters;
19344
20786
  path: {
@@ -20227,6 +21669,10 @@ export type ListJobsData = {
20227
21669
  * Use true for jobs without a department or false for jobs with a department. Use this instead of the department ID filter.
20228
21670
  */
20229
21671
  'filter[companies_department_id][null]'?: boolean;
21672
+ /**
21673
+ * Returns jobs this key created that were requested by this customer company
21674
+ */
21675
+ 'filter[requested_by_company_id]'?: string;
20230
21676
  /**
20231
21677
  * Returns jobs whose status is any of the given values. Comma-separate to match multiple (e.g. `ready,completed`). Accepts each concrete status (pending_provider, pending_schedule, pending_workers, ready, disputed, completed, cancelled) plus the aggregates `pending` (any pending_* status) and `active` (ready or disputed).
20232
21678
  */
@@ -20243,6 +21689,14 @@ export type ListJobsData = {
20243
21689
  * Returns jobs whose purchase order number contains this substring (case-insensitive).
20244
21690
  */
20245
21691
  'filter[purchase_order_number]'?: string;
21692
+ /**
21693
+ * Returns jobs whose federal_pwa_mode is any of the given values. Comma-separate to match multiple (e.g. `all,pw_only`).
21694
+ */
21695
+ 'filter[federal_pwa_mode]'?: Array<'all' | 'pw_only' | 'ap_only' | 'none'>;
21696
+ /**
21697
+ * Returns jobs whose regional_pwa_mode is any of the given values. Comma-separate to match multiple (e.g. `all,pw_only`).
21698
+ */
21699
+ 'filter[regional_pwa_mode]'?: Array<'all' | 'pw_only' | 'ap_only' | 'none'>;
20246
21700
  /**
20247
21701
  * This pagination cursor corresponds to the cursor value found in the response in
20248
21702
  * `meta.page.next_cursor`.
@@ -20302,6 +21756,10 @@ export type CreateJobErrors = {
20302
21756
  * Forbidden
20303
21757
  */
20304
21758
  403: Problem;
21759
+ /**
21760
+ * Template not found
21761
+ */
21762
+ 404: Problem;
20305
21763
  /**
20306
21764
  * Unprocessable Content
20307
21765
  */
@@ -20451,6 +21909,10 @@ export type ListSiteCheckInsErrors = {
20451
21909
  * Forbidden
20452
21910
  */
20453
21911
  403: Problem;
21912
+ /**
21913
+ * Not Found
21914
+ */
21915
+ 404: Problem;
20454
21916
  /**
20455
21917
  * Unprocessable Content
20456
21918
  */
@@ -20627,6 +22089,10 @@ export type UpdateFeatureFormAssignmentTaskErrors = {
20627
22089
  * Not Found
20628
22090
  */
20629
22091
  404: Problem;
22092
+ /**
22093
+ * Unprocessable Content (malformed assignee IDs)
22094
+ */
22095
+ 422: Problem;
20630
22096
  };
20631
22097
  export type UpdateFeatureFormAssignmentTaskError = UpdateFeatureFormAssignmentTaskErrors[keyof UpdateFeatureFormAssignmentTaskErrors];
20632
22098
  export type UpdateFeatureFormAssignmentTaskResponses = {
@@ -20764,6 +22230,10 @@ export type UpdateSiteFormAssignmentTaskErrors = {
20764
22230
  * Not Found
20765
22231
  */
20766
22232
  404: Problem;
22233
+ /**
22234
+ * Unprocessable Content (malformed assignee IDs)
22235
+ */
22236
+ 422: Problem;
20767
22237
  };
20768
22238
  export type UpdateSiteFormAssignmentTaskError = UpdateSiteFormAssignmentTaskErrors[keyof UpdateSiteFormAssignmentTaskErrors];
20769
22239
  export type UpdateSiteFormAssignmentTaskResponses = {
@@ -23149,6 +24619,10 @@ export type ListPayrollRunsData = {
23149
24619
  */
23150
24620
  'filter[run_type]'?: string;
23151
24621
  'filter[timekeeping_pay_period_id]'?: string;
24622
+ /**
24623
+ * Returns only runs that have at least one paystub for this worker.
24624
+ */
24625
+ 'filter[user_id]'?: string;
23152
24626
  'filter[run_date][gte]'?: string;
23153
24627
  'filter[run_date][lte]'?: string;
23154
24628
  'filter[created_at][gte]'?: string;
@@ -24873,11 +26347,178 @@ export type UpdateCompletionData = {
24873
26347
  query?: never;
24874
26348
  url: '/api/v1/production/completions/{id}';
24875
26349
  };
24876
- export type UpdateCompletionErrors = {
24877
- /**
24878
- * Bad Request (create-only lookup)
24879
- */
24880
- 400: Problem;
26350
+ export type UpdateCompletionErrors = {
26351
+ /**
26352
+ * Bad Request (create-only lookup)
26353
+ */
26354
+ 400: Problem;
26355
+ /**
26356
+ * Forbidden
26357
+ */
26358
+ 403: Problem;
26359
+ /**
26360
+ * Not Found
26361
+ */
26362
+ 404: Problem;
26363
+ /**
26364
+ * Unprocessable Content
26365
+ */
26366
+ 422: Problem;
26367
+ };
26368
+ export type UpdateCompletionError = UpdateCompletionErrors[keyof UpdateCompletionErrors];
26369
+ export type UpdateCompletionResponses = {
26370
+ /**
26371
+ * Success
26372
+ */
26373
+ 200: ProductionCompletionResponseObject;
26374
+ };
26375
+ export type UpdateCompletionResponse = UpdateCompletionResponses[keyof UpdateCompletionResponses];
26376
+ export type CreateProjectTradeData = {
26377
+ body: PwaTradeParameters;
26378
+ path: {
26379
+ project_id: string;
26380
+ };
26381
+ query?: never;
26382
+ url: '/api/v1/projects/{project_id}/pwa/trades';
26383
+ };
26384
+ export type CreateProjectTradeErrors = {
26385
+ /**
26386
+ * Forbidden
26387
+ */
26388
+ 403: Problem;
26389
+ /**
26390
+ * Not Found
26391
+ */
26392
+ 404: Problem;
26393
+ /**
26394
+ * Unprocessable Content
26395
+ */
26396
+ 422: Problem;
26397
+ };
26398
+ export type CreateProjectTradeError = CreateProjectTradeErrors[keyof CreateProjectTradeErrors];
26399
+ export type CreateProjectTradeResponses = {
26400
+ /**
26401
+ * Created
26402
+ */
26403
+ 201: PwaTradeResponseObject;
26404
+ };
26405
+ export type CreateProjectTradeResponse = CreateProjectTradeResponses[keyof CreateProjectTradeResponses];
26406
+ export type ListProjectSitesData = {
26407
+ body?: never;
26408
+ path: {
26409
+ project_id: string;
26410
+ };
26411
+ query?: {
26412
+ /**
26413
+ * This pagination cursor corresponds to the cursor value found in the response in
26414
+ * `meta.page.next_cursor`.
26415
+ */
26416
+ 'page[cursor]'?: string;
26417
+ /**
26418
+ * Maximum number of records to return per page. Defaults to 20. A value above 100 is capped to 100 rather than rejected; a value that is zero, negative, or not an integer is rejected with a `400`.
26419
+ */
26420
+ 'page[limit]'?: number;
26421
+ page?: string;
26422
+ };
26423
+ url: '/api/v1/projects/{project_id}/sites';
26424
+ };
26425
+ export type ListProjectSitesErrors = {
26426
+ /**
26427
+ * Bad Request
26428
+ */
26429
+ 400: Problem;
26430
+ /**
26431
+ * Forbidden
26432
+ */
26433
+ 403: Problem;
26434
+ /**
26435
+ * Not Found
26436
+ */
26437
+ 404: Problem;
26438
+ };
26439
+ export type ListProjectSitesError = ListProjectSitesErrors[keyof ListProjectSitesErrors];
26440
+ export type ListProjectSitesResponses = {
26441
+ /**
26442
+ * Success
26443
+ */
26444
+ 200: {
26445
+ meta: Meta;
26446
+ links: Links;
26447
+ data: Array<ProjectSiteResponseObject>;
26448
+ };
26449
+ };
26450
+ export type ListProjectSitesResponse = ListProjectSitesResponses[keyof ListProjectSitesResponses];
26451
+ export type CreateProjectSiteData = {
26452
+ body: ProjectSiteParameters;
26453
+ path: {
26454
+ project_id: string;
26455
+ };
26456
+ query?: never;
26457
+ url: '/api/v1/projects/{project_id}/sites';
26458
+ };
26459
+ export type CreateProjectSiteErrors = {
26460
+ /**
26461
+ * Bad Request
26462
+ */
26463
+ 400: Problem;
26464
+ /**
26465
+ * Forbidden
26466
+ */
26467
+ 403: Problem;
26468
+ /**
26469
+ * Not Found
26470
+ */
26471
+ 404: Problem;
26472
+ /**
26473
+ * Unprocessable Content
26474
+ */
26475
+ 422: Problem;
26476
+ };
26477
+ export type CreateProjectSiteError = CreateProjectSiteErrors[keyof CreateProjectSiteErrors];
26478
+ export type CreateProjectSiteResponses = {
26479
+ /**
26480
+ * Created
26481
+ */
26482
+ 201: ProjectSiteResponseObject;
26483
+ };
26484
+ export type CreateProjectSiteResponse = CreateProjectSiteResponses[keyof CreateProjectSiteResponses];
26485
+ export type DeleteProjectSiteData = {
26486
+ body?: never;
26487
+ path: {
26488
+ project_id: string;
26489
+ id: string;
26490
+ };
26491
+ query?: never;
26492
+ url: '/api/v1/projects/{project_id}/sites/{id}';
26493
+ };
26494
+ export type DeleteProjectSiteErrors = {
26495
+ /**
26496
+ * Forbidden
26497
+ */
26498
+ 403: Problem;
26499
+ /**
26500
+ * Not Found
26501
+ */
26502
+ 404: Problem;
26503
+ };
26504
+ export type DeleteProjectSiteError = DeleteProjectSiteErrors[keyof DeleteProjectSiteErrors];
26505
+ export type DeleteProjectSiteResponses = {
26506
+ /**
26507
+ * No Content
26508
+ */
26509
+ 204: void;
26510
+ };
26511
+ export type DeleteProjectSiteResponse = DeleteProjectSiteResponses[keyof DeleteProjectSiteResponses];
26512
+ export type GetProjectSiteData = {
26513
+ body?: never;
26514
+ path: {
26515
+ project_id: string;
26516
+ id: string;
26517
+ };
26518
+ query?: never;
26519
+ url: '/api/v1/projects/{project_id}/sites/{id}';
26520
+ };
26521
+ export type GetProjectSiteErrors = {
24881
26522
  /**
24882
26523
  * Forbidden
24883
26524
  */
@@ -24886,28 +26527,29 @@ export type UpdateCompletionErrors = {
24886
26527
  * Not Found
24887
26528
  */
24888
26529
  404: Problem;
24889
- /**
24890
- * Unprocessable Content
24891
- */
24892
- 422: Problem;
24893
26530
  };
24894
- export type UpdateCompletionError = UpdateCompletionErrors[keyof UpdateCompletionErrors];
24895
- export type UpdateCompletionResponses = {
26531
+ export type GetProjectSiteError = GetProjectSiteErrors[keyof GetProjectSiteErrors];
26532
+ export type GetProjectSiteResponses = {
24896
26533
  /**
24897
26534
  * Success
24898
26535
  */
24899
- 200: ProductionCompletionResponseObject;
26536
+ 200: ProjectSiteResponseObject;
24900
26537
  };
24901
- export type UpdateCompletionResponse = UpdateCompletionResponses[keyof UpdateCompletionResponses];
24902
- export type CreateProjectTradeData = {
24903
- body: PwaTradeParameters;
26538
+ export type GetProjectSiteResponse = GetProjectSiteResponses[keyof GetProjectSiteResponses];
26539
+ export type UpdateProjectSiteData = {
26540
+ body: ProjectSiteUpdateParameters;
24904
26541
  path: {
24905
26542
  project_id: string;
26543
+ id: string;
24906
26544
  };
24907
26545
  query?: never;
24908
- url: '/api/v1/projects/{project_id}/pwa/trades';
26546
+ url: '/api/v1/projects/{project_id}/sites/{id}';
24909
26547
  };
24910
- export type CreateProjectTradeErrors = {
26548
+ export type UpdateProjectSiteErrors = {
26549
+ /**
26550
+ * Bad Request
26551
+ */
26552
+ 400: Problem;
24911
26553
  /**
24912
26554
  * Forbidden
24913
26555
  */
@@ -24921,34 +26563,32 @@ export type CreateProjectTradeErrors = {
24921
26563
  */
24922
26564
  422: Problem;
24923
26565
  };
24924
- export type CreateProjectTradeError = CreateProjectTradeErrors[keyof CreateProjectTradeErrors];
24925
- export type CreateProjectTradeResponses = {
26566
+ export type UpdateProjectSiteError = UpdateProjectSiteErrors[keyof UpdateProjectSiteErrors];
26567
+ export type UpdateProjectSiteResponses = {
24926
26568
  /**
24927
- * Created
26569
+ * Success
24928
26570
  */
24929
- 201: PwaTradeResponseObject;
26571
+ 200: ProjectSiteResponseObject;
24930
26572
  };
24931
- export type CreateProjectTradeResponse = CreateProjectTradeResponses[keyof CreateProjectTradeResponses];
24932
- export type ListProjectSitesData = {
26573
+ export type UpdateProjectSiteResponse = UpdateProjectSiteResponses[keyof UpdateProjectSiteResponses];
26574
+ export type ListProjectWageDeterminationsData = {
24933
26575
  body?: never;
24934
26576
  path: {
24935
26577
  project_id: string;
24936
26578
  };
24937
26579
  query?: {
24938
26580
  /**
24939
- * This pagination cursor corresponds to the cursor value found in the response in
24940
- * `meta.page.next_cursor`.
24941
- */
24942
- 'page[cursor]'?: string;
24943
- /**
24944
- * 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`.
26581
+ * Read the version valid at this point in time. Defaults to now.
24945
26582
  */
24946
- 'page[limit]'?: number;
24947
- page?: string;
26583
+ 'as_of[valid]'?: string;
26584
+ as_of?: string;
26585
+ 'as_of[bogus_axis]'?: string;
26586
+ 'as_of[valid][gte]'?: string;
26587
+ 'as_of[transaction]'?: string;
24948
26588
  };
24949
- url: '/api/v1/projects/{project_id}/sites';
26589
+ url: '/api/v1/projects/{project_id}/wage_determinations';
24950
26590
  };
24951
- export type ListProjectSitesErrors = {
26591
+ export type ListProjectWageDeterminationsErrors = {
24952
26592
  /**
24953
26593
  * Bad Request
24954
26594
  */
@@ -24958,31 +26598,31 @@ export type ListProjectSitesErrors = {
24958
26598
  */
24959
26599
  403: Problem;
24960
26600
  /**
24961
- * Not Found
26601
+ * Unprocessable Content
24962
26602
  */
24963
- 404: Problem;
26603
+ 422: Problem;
24964
26604
  };
24965
- export type ListProjectSitesError = ListProjectSitesErrors[keyof ListProjectSitesErrors];
24966
- export type ListProjectSitesResponses = {
26605
+ export type ListProjectWageDeterminationsError = ListProjectWageDeterminationsErrors[keyof ListProjectWageDeterminationsErrors];
26606
+ export type ListProjectWageDeterminationsResponses = {
24967
26607
  /**
24968
26608
  * Success
24969
26609
  */
24970
26610
  200: {
24971
26611
  meta: Meta;
24972
26612
  links: Links;
24973
- data: Array<ProjectSiteResponseObject>;
26613
+ data: Array<ProjectWageDeterminationResponseObject>;
24974
26614
  };
24975
26615
  };
24976
- export type ListProjectSitesResponse = ListProjectSitesResponses[keyof ListProjectSitesResponses];
24977
- export type CreateProjectSiteData = {
24978
- body: ProjectSiteParameters;
26616
+ export type ListProjectWageDeterminationsResponse = ListProjectWageDeterminationsResponses[keyof ListProjectWageDeterminationsResponses];
26617
+ export type CreateProjectWageDeterminationData = {
26618
+ body: ProjectWageDeterminationParameters;
24979
26619
  path: {
24980
26620
  project_id: string;
24981
26621
  };
24982
26622
  query?: never;
24983
- url: '/api/v1/projects/{project_id}/sites';
26623
+ url: '/api/v1/projects/{project_id}/wage_determinations';
24984
26624
  };
24985
- export type CreateProjectSiteErrors = {
26625
+ export type CreateProjectWageDeterminationErrors = {
24986
26626
  /**
24987
26627
  * Bad Request
24988
26628
  */
@@ -25000,24 +26640,30 @@ export type CreateProjectSiteErrors = {
25000
26640
  */
25001
26641
  422: Problem;
25002
26642
  };
25003
- export type CreateProjectSiteError = CreateProjectSiteErrors[keyof CreateProjectSiteErrors];
25004
- export type CreateProjectSiteResponses = {
26643
+ export type CreateProjectWageDeterminationError = CreateProjectWageDeterminationErrors[keyof CreateProjectWageDeterminationErrors];
26644
+ export type CreateProjectWageDeterminationResponses = {
25005
26645
  /**
25006
26646
  * Created
25007
26647
  */
25008
- 201: ProjectSiteResponseObject;
26648
+ 201: ProjectWageDeterminationResponseObject;
25009
26649
  };
25010
- export type CreateProjectSiteResponse = CreateProjectSiteResponses[keyof CreateProjectSiteResponses];
25011
- export type DeleteProjectSiteData = {
26650
+ export type CreateProjectWageDeterminationResponse = CreateProjectWageDeterminationResponses[keyof CreateProjectWageDeterminationResponses];
26651
+ export type DeleteProjectWageDeterminationData = {
25012
26652
  body?: never;
26653
+ headers: {
26654
+ /**
26655
+ * Version validator this write is composed against — the `ETag` from a read of this wage determination, or `*` to write against whatever exists. See "Version validators" in the API overview.
26656
+ */
26657
+ 'If-Match': string;
26658
+ };
25013
26659
  path: {
25014
26660
  project_id: string;
25015
26661
  id: string;
25016
26662
  };
25017
26663
  query?: never;
25018
- url: '/api/v1/projects/{project_id}/sites/{id}';
26664
+ url: '/api/v1/projects/{project_id}/wage_determinations/{id}';
25019
26665
  };
25020
- export type DeleteProjectSiteErrors = {
26666
+ export type DeleteProjectWageDeterminationErrors = {
25021
26667
  /**
25022
26668
  * Forbidden
25023
26669
  */
@@ -25026,25 +26672,42 @@ export type DeleteProjectSiteErrors = {
25026
26672
  * Not Found
25027
26673
  */
25028
26674
  404: Problem;
26675
+ /**
26676
+ * Precondition Failed
26677
+ */
26678
+ 412: Problem;
26679
+ /**
26680
+ * Unprocessable Content
26681
+ */
26682
+ 422: Problem;
26683
+ /**
26684
+ * Precondition Required
26685
+ */
26686
+ 428: Problem;
25029
26687
  };
25030
- export type DeleteProjectSiteError = DeleteProjectSiteErrors[keyof DeleteProjectSiteErrors];
25031
- export type DeleteProjectSiteResponses = {
26688
+ export type DeleteProjectWageDeterminationError = DeleteProjectWageDeterminationErrors[keyof DeleteProjectWageDeterminationErrors];
26689
+ export type DeleteProjectWageDeterminationResponses = {
25032
26690
  /**
25033
- * No Content
26691
+ * Success
25034
26692
  */
25035
- 204: void;
26693
+ 200: ProjectWageDeterminationResponseObject;
25036
26694
  };
25037
- export type DeleteProjectSiteResponse = DeleteProjectSiteResponses[keyof DeleteProjectSiteResponses];
25038
- export type GetProjectSiteData = {
26695
+ export type DeleteProjectWageDeterminationResponse = DeleteProjectWageDeterminationResponses[keyof DeleteProjectWageDeterminationResponses];
26696
+ export type GetProjectWageDeterminationData = {
25039
26697
  body?: never;
25040
26698
  path: {
25041
26699
  project_id: string;
25042
26700
  id: string;
25043
26701
  };
25044
- query?: never;
25045
- url: '/api/v1/projects/{project_id}/sites/{id}';
26702
+ query?: {
26703
+ /**
26704
+ * Read the version valid at this point in time. Defaults to now.
26705
+ */
26706
+ 'as_of[valid]'?: string;
26707
+ };
26708
+ url: '/api/v1/projects/{project_id}/wage_determinations/{id}';
25046
26709
  };
25047
- export type GetProjectSiteErrors = {
26710
+ export type GetProjectWageDeterminationErrors = {
25048
26711
  /**
25049
26712
  * Forbidden
25050
26713
  */
@@ -25054,24 +26717,30 @@ export type GetProjectSiteErrors = {
25054
26717
  */
25055
26718
  404: Problem;
25056
26719
  };
25057
- export type GetProjectSiteError = GetProjectSiteErrors[keyof GetProjectSiteErrors];
25058
- export type GetProjectSiteResponses = {
26720
+ export type GetProjectWageDeterminationError = GetProjectWageDeterminationErrors[keyof GetProjectWageDeterminationErrors];
26721
+ export type GetProjectWageDeterminationResponses = {
25059
26722
  /**
25060
26723
  * Success
25061
26724
  */
25062
- 200: ProjectSiteResponseObject;
26725
+ 200: ProjectWageDeterminationResponseObject;
25063
26726
  };
25064
- export type GetProjectSiteResponse = GetProjectSiteResponses[keyof GetProjectSiteResponses];
25065
- export type UpdateProjectSiteData = {
25066
- body: ProjectSiteUpdateParameters;
26727
+ export type GetProjectWageDeterminationResponse = GetProjectWageDeterminationResponses[keyof GetProjectWageDeterminationResponses];
26728
+ export type UpdateProjectWageDeterminationData = {
26729
+ body: ProjectWageDeterminationUpdateParameters;
26730
+ headers: {
26731
+ /**
26732
+ * Version validator this write is composed against — the `ETag` from a read of this wage determination, or `*` to write against whatever exists. See "Version validators" in the API overview.
26733
+ */
26734
+ 'If-Match': string;
26735
+ };
25067
26736
  path: {
25068
26737
  project_id: string;
25069
26738
  id: string;
25070
26739
  };
25071
26740
  query?: never;
25072
- url: '/api/v1/projects/{project_id}/sites/{id}';
26741
+ url: '/api/v1/projects/{project_id}/wage_determinations/{id}';
25073
26742
  };
25074
- export type UpdateProjectSiteErrors = {
26743
+ export type UpdateProjectWageDeterminationErrors = {
25075
26744
  /**
25076
26745
  * Bad Request
25077
26746
  */
@@ -25084,19 +26753,31 @@ export type UpdateProjectSiteErrors = {
25084
26753
  * Not Found
25085
26754
  */
25086
26755
  404: Problem;
26756
+ /**
26757
+ * Conflict
26758
+ */
26759
+ 409: Problem;
26760
+ /**
26761
+ * Precondition Failed
26762
+ */
26763
+ 412: Problem;
25087
26764
  /**
25088
26765
  * Unprocessable Content
25089
26766
  */
25090
26767
  422: Problem;
26768
+ /**
26769
+ * Precondition Required
26770
+ */
26771
+ 428: Problem;
25091
26772
  };
25092
- export type UpdateProjectSiteError = UpdateProjectSiteErrors[keyof UpdateProjectSiteErrors];
25093
- export type UpdateProjectSiteResponses = {
26773
+ export type UpdateProjectWageDeterminationError = UpdateProjectWageDeterminationErrors[keyof UpdateProjectWageDeterminationErrors];
26774
+ export type UpdateProjectWageDeterminationResponses = {
25094
26775
  /**
25095
26776
  * Success
25096
26777
  */
25097
- 200: ProjectSiteResponseObject;
26778
+ 200: ProjectWageDeterminationResponseObject;
25098
26779
  };
25099
- export type UpdateProjectSiteResponse = UpdateProjectSiteResponses[keyof UpdateProjectSiteResponses];
26780
+ export type UpdateProjectWageDeterminationResponse = UpdateProjectWageDeterminationResponses[keyof UpdateProjectWageDeterminationResponses];
25100
26781
  export type ListProjectsData = {
25101
26782
  body?: never;
25102
26783
  path?: never;
@@ -25169,6 +26850,10 @@ export type CreateProjectData = {
25169
26850
  url: '/api/v1/projects';
25170
26851
  };
25171
26852
  export type CreateProjectErrors = {
26853
+ /**
26854
+ * Bad Request
26855
+ */
26856
+ 400: Problem;
25172
26857
  /**
25173
26858
  * Forbidden
25174
26859
  */
@@ -25231,6 +26916,10 @@ export type UpdateProjectData = {
25231
26916
  url: '/api/v1/projects/{id}';
25232
26917
  };
25233
26918
  export type UpdateProjectErrors = {
26919
+ /**
26920
+ * Bad Request
26921
+ */
26922
+ 400: Problem;
25234
26923
  /**
25235
26924
  * Forbidden
25236
26925
  */
@@ -25323,6 +27012,10 @@ export type UpdateCompanyUserDetailErrors = {
25323
27012
  * Forbidden
25324
27013
  */
25325
27014
  403: Problem;
27015
+ /**
27016
+ * Not Found
27017
+ */
27018
+ 404: Problem;
25326
27019
  /**
25327
27020
  * Unprocessable Content
25328
27021
  */
@@ -26140,6 +27833,10 @@ export type CreateTimeCardPerDiemData = {
26140
27833
  url: '/api/v1/time_cards/{time_card_id}/per_diems';
26141
27834
  };
26142
27835
  export type CreateTimeCardPerDiemErrors = {
27836
+ /**
27837
+ * Bad Request
27838
+ */
27839
+ 400: Problem;
26143
27840
  /**
26144
27841
  * Forbidden
26145
27842
  */
@@ -26198,6 +27895,10 @@ export type UpdateTimeCardPerDiemData = {
26198
27895
  url: '/api/v1/time_cards/{time_card_id}/per_diems/{id}';
26199
27896
  };
26200
27897
  export type UpdateTimeCardPerDiemErrors = {
27898
+ /**
27899
+ * Bad Request
27900
+ */
27901
+ 400: Problem;
26201
27902
  /**
26202
27903
  * Forbidden
26203
27904
  */
@@ -26485,6 +28186,42 @@ export type ListTimeCardsData = {
26485
28186
  query?: {
26486
28187
  'filter[timekeeping_pay_period_id]'?: string;
26487
28188
  'filter[user_id]'?: string;
28189
+ /**
28190
+ * 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.
28191
+ */
28192
+ 'filter[job_id]'?: string;
28193
+ /**
28194
+ * `true` returns cards with federal PWA obligations; `false` returns cards without. Omitted leaves the list unchanged.
28195
+ */
28196
+ 'filter[federal_pwa]'?: boolean;
28197
+ /**
28198
+ * `true` returns cards with regional PWA obligations; `false` returns cards without. Omitted leaves the list unchanged.
28199
+ */
28200
+ 'filter[regional_pwa]'?: boolean;
28201
+ /**
28202
+ * `true` returns cards whose worker held an operative apprenticeship overlapping the card's pay period; `false` returns cards whose worker did not. Omitted leaves the list unchanged.
28203
+ */
28204
+ 'filter[apprentice]'?: boolean;
28205
+ /**
28206
+ * Returns cards whose overlapping employment at the pay schedule's company has any of the given types. Comma-separate to match multiple (e.g. `EMPLOYEE,CONTRACTOR`). Matches any employment version whose valid_time overlaps the card's pay period, so a mid-period type change can match both values. Omitted leaves the list unchanged.
28207
+ */
28208
+ 'filter[employment_type]'?: Array<'EMPLOYEE' | 'CONTRACTOR'>;
28209
+ /**
28210
+ * Returns cards whose overlapping employment at the pay schedule's company has any of the given compensation types. Comma-separate to match multiple (e.g. `hourly,salary`). Matches any employment version whose valid_time overlaps the card's pay period, so a mid-period type change can match both values. Omitted leaves the list unchanged.
28211
+ */
28212
+ 'filter[compensation_type]'?: Array<'hourly' | 'salary'>;
28213
+ /**
28214
+ * Returns cards whose overlapping employment at the pay schedule's company is in this department. An unknown id returns an empty list. Matches any employment version whose valid_time overlaps the card's pay period. Omitted leaves the list unchanged.
28215
+ */
28216
+ 'filter[department_id]'?: string;
28217
+ /**
28218
+ * Returns cards whose worker approval status is any of the given values. Comma-separate to match multiple (e.g. `PENDING,APPROVED`). `PENDING` includes cards with no worker approval row. Omitted leaves the list unchanged.
28219
+ */
28220
+ 'filter[worker_approval_status]'?: Array<'PENDING' | 'APPROVED' | 'DECLINED'>;
28221
+ /**
28222
+ * Returns cards whose manager approval status is any of the given values. Comma-separate to match multiple (e.g. `PENDING,APPROVED`). `PENDING` includes cards with no manager approval row. Omitted leaves the list unchanged.
28223
+ */
28224
+ 'filter[manager_approval_status]'?: Array<'PENDING' | 'APPROVED' | 'DECLINED'>;
26488
28225
  'filter[start_time][gte]'?: string;
26489
28226
  'filter[start_time][lte]'?: string;
26490
28227
  filter?: string;
@@ -26806,7 +28543,7 @@ export type ShiftTimecodeGenesisData = {
26806
28543
  };
26807
28544
  export type ShiftTimecodeGenesisErrors = {
26808
28545
  /**
26809
- * Bad Request (missing effective_date)
28546
+ * Bad Request
26810
28547
  */
26811
28548
  400: Problem;
26812
28549
  /**
@@ -26967,7 +28704,7 @@ export type ScheduleTimecodeChangeData = {
26967
28704
  };
26968
28705
  export type ScheduleTimecodeChangeErrors = {
26969
28706
  /**
26970
- * Bad Request (missing effective_date)
28707
+ * Bad Request
26971
28708
  */
26972
28709
  400: Problem;
26973
28710
  /**
@@ -27063,7 +28800,7 @@ export type ScheduleTimecodeTerminationData = {
27063
28800
  };
27064
28801
  export type ScheduleTimecodeTerminationErrors = {
27065
28802
  /**
27066
- * Bad Request (missing effective_date)
28803
+ * Bad Request
27067
28804
  */
27068
28805
  400: Problem;
27069
28806
  /**
@@ -27166,6 +28903,10 @@ export type CreateTimecodeData = {
27166
28903
  url: '/api/v1/timecodes';
27167
28904
  };
27168
28905
  export type CreateTimecodeErrors = {
28906
+ /**
28907
+ * Bad Request
28908
+ */
28909
+ 400: Problem;
27169
28910
  /**
27170
28911
  * Forbidden
27171
28912
  */
@@ -27239,6 +28980,10 @@ export type UpdateTimecodeData = {
27239
28980
  url: '/api/v1/timecodes/{id}';
27240
28981
  };
27241
28982
  export type UpdateTimecodeErrors = {
28983
+ /**
28984
+ * Bad Request
28985
+ */
28986
+ 400: Problem;
27242
28987
  /**
27243
28988
  * Forbidden
27244
28989
  */
@@ -27417,6 +29162,10 @@ export type CreateAttestationConfigData = {
27417
29162
  url: '/api/v1/timekeeping/pay_period_configs/{pay_period_config_id}/attestation_configs';
27418
29163
  };
27419
29164
  export type CreateAttestationConfigErrors = {
29165
+ /**
29166
+ * Bad Request
29167
+ */
29168
+ 400: Problem;
27420
29169
  /**
27421
29170
  * Forbidden
27422
29171
  */
@@ -27887,6 +29636,75 @@ export type GetTimeCardActualResponses = {
27887
29636
  200: TimeCardActualsResponseObject;
27888
29637
  };
27889
29638
  export type GetTimeCardActualResponse = GetTimeCardActualResponses[keyof GetTimeCardActualResponses];
29639
+ export type ListTimeOffRequestsData = {
29640
+ body?: never;
29641
+ path?: never;
29642
+ query?: {
29643
+ /**
29644
+ * Returns only requests for this worker.
29645
+ */
29646
+ 'filter[user_id]'?: string;
29647
+ /**
29648
+ * Returns only requests in this status.
29649
+ */
29650
+ 'filter[status]'?: 'pending' | 'approved' | 'denied' | 'cancelled' | 'expired';
29651
+ /**
29652
+ * This pagination cursor corresponds to the cursor value found in the response in
29653
+ * `meta.page.next_cursor`.
29654
+ */
29655
+ 'page[cursor]'?: string;
29656
+ /**
29657
+ * 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`.
29658
+ */
29659
+ 'page[limit]'?: number;
29660
+ page?: string;
29661
+ };
29662
+ url: '/api/v1/timekeeping/time_off_requests';
29663
+ };
29664
+ export type ListTimeOffRequestsErrors = {
29665
+ /**
29666
+ * Bad Request
29667
+ */
29668
+ 400: Problem;
29669
+ /**
29670
+ * Forbidden
29671
+ */
29672
+ 403: Problem;
29673
+ };
29674
+ export type ListTimeOffRequestsError = ListTimeOffRequestsErrors[keyof ListTimeOffRequestsErrors];
29675
+ export type ListTimeOffRequestsResponses = {
29676
+ /**
29677
+ * Success
29678
+ */
29679
+ 200: TimeOffRequestsResponseObject;
29680
+ };
29681
+ export type ListTimeOffRequestsResponse = ListTimeOffRequestsResponses[keyof ListTimeOffRequestsResponses];
29682
+ export type GetTimeOffRequestData = {
29683
+ body?: never;
29684
+ path: {
29685
+ id: string;
29686
+ };
29687
+ query?: never;
29688
+ url: '/api/v1/timekeeping/time_off_requests/{id}';
29689
+ };
29690
+ export type GetTimeOffRequestErrors = {
29691
+ /**
29692
+ * Forbidden
29693
+ */
29694
+ 403: Problem;
29695
+ /**
29696
+ * Not Found
29697
+ */
29698
+ 404: Problem;
29699
+ };
29700
+ export type GetTimeOffRequestError = GetTimeOffRequestErrors[keyof GetTimeOffRequestErrors];
29701
+ export type GetTimeOffRequestResponses = {
29702
+ /**
29703
+ * Success
29704
+ */
29705
+ 200: TimeOffRequestResponseObject;
29706
+ };
29707
+ export type GetTimeOffRequestResponse = GetTimeOffRequestResponses[keyof GetTimeOffRequestResponses];
27890
29708
  export type ListTimeSessionsData = {
27891
29709
  body?: never;
27892
29710
  path?: never;
@@ -28408,6 +30226,18 @@ export type ListUsersData = {
28408
30226
  * Fuzzy-matches the person name (trigram word-similarity). Matches the name column only — not email or phone.
28409
30227
  */
28410
30228
  'filter[name]'?: string;
30229
+ /**
30230
+ * 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.
30231
+ */
30232
+ 'filter[manager_user_id]'?: string;
30233
+ /**
30234
+ * Return people whose currently valid employment at the credential company is in this department. A department with no members returns an empty list.
30235
+ */
30236
+ 'filter[department_id]'?: string;
30237
+ /**
30238
+ * Returns people with at least one invite at this company whose status is any of the given values. Comma-separate to match multiple (e.g. `pending,declined`). An invite at another company never matches. Combines with other filters by AND, including `state` (default `active`).
30239
+ */
30240
+ 'filter[invite_status]'?: Array<'pending' | 'accepted' | 'declined' | 'revoked'>;
28411
30241
  /**
28412
30242
  * This pagination cursor corresponds to the cursor value found in the response in
28413
30243
  * `meta.page.next_cursor`.