@dsptch-work/api-client 0.39.0 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3669,6 +3669,23 @@ export class Forms {
3669
3669
  * SurveyJS required-answer rules, visibility, defaults, or expressions.
3670
3670
  * Returns the same representation as show.
3671
3671
  *
3672
+ * File and signature answers take signed IDs, never file contents.
3673
+ * Upload each file first: call POST /api/v1/direct_uploads with
3674
+ * resource form_submissions, PUT the bytes to the returned
3675
+ * direct_upload.url with its headers, then send the returned
3676
+ * signed_id here within a week.
3677
+ *
3678
+ * - A file answer is an array holding one signed ID per file. Each
3679
+ * file is attached to the submission, and the response returns a
3680
+ * download URL in its place. An image file may hold at most 10 MiB.
3681
+ * - A signature answer is one signed ID, and its image is stored in
3682
+ * the answer as a data URL. It must be a PNG or JPEG image, declared
3683
+ * as image/png or image/jpeg to match its bytes or as
3684
+ * application/octet-stream, hold at most 256 KiB, and span at most
3685
+ * 2,000 pixels on either side. A submission's signature answers may
3686
+ * hold at most 2 MiB together, and an upload counts once for each
3687
+ * answer naming it.
3688
+ *
3672
3689
  *
3673
3690
  * **Required scope:**
3674
3691
  *
@@ -3686,6 +3703,27 @@ export class Forms {
3686
3703
  }
3687
3704
  });
3688
3705
  }
3706
+ /**
3707
+ * Delete form submission
3708
+ *
3709
+ * Deletes a submission that is not used as competency evidence.
3710
+ * Competency-evidence restriction is refused with `422`
3711
+ * `destroy_restricted`. Form-assignment rows that pointed at the
3712
+ * submission are nullified. Attachments are kept. Returns `204`.
3713
+ *
3714
+ *
3715
+ * **Required scope:**
3716
+ *
3717
+ * `form_submissions:delete`
3718
+ *
3719
+ */
3720
+ static deleteFormSubmission(options) {
3721
+ return (options.client ?? client).delete({
3722
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
3723
+ url: '/api/v1/form_submissions/{id}',
3724
+ ...options
3725
+ });
3726
+ }
3689
3727
  /**
3690
3728
  * Show form submission
3691
3729
  *
@@ -3701,6 +3739,31 @@ export class Forms {
3701
3739
  ...options
3702
3740
  });
3703
3741
  }
3742
+ /**
3743
+ * Update form submission
3744
+ *
3745
+ * Updates timezone and json on an existing submission. json is the
3746
+ * stored SurveyJS tree, including file-answer objects; file content
3747
+ * is rewritten through the same writer the web uses. form_definition_id
3748
+ * and user_id cannot change. Returns the same representation as show.
3749
+ *
3750
+ *
3751
+ * **Required scope:**
3752
+ *
3753
+ * `form_submissions:update`
3754
+ *
3755
+ */
3756
+ static updateFormSubmission(options) {
3757
+ return (options.client ?? client).patch({
3758
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
3759
+ url: '/api/v1/form_submissions/{id}',
3760
+ ...options,
3761
+ headers: {
3762
+ 'Content-Type': 'application/json',
3763
+ ...options.headers
3764
+ }
3765
+ });
3766
+ }
3704
3767
  }
3705
3768
  export class Groups {
3706
3769
  /**
@@ -4039,7 +4102,8 @@ export class Jobs {
4039
4102
  * Returns the good-faith-effort exceptions nested on the named job. A missing
4040
4103
  * or out-of-scope job reads as not found. A visible job with no exceptions,
4041
4104
  * including one that does not track apprenticeship, returns an empty list.
4042
- * Ordered by request_start_date descending then id. Read-only.
4105
+ * Ordered by request_start_date descending then id. Proof document slots are
4106
+ * always present as `null` or a document object.
4043
4107
  *
4044
4108
  *
4045
4109
  * **Required scope:**
@@ -4054,11 +4118,61 @@ export class Jobs {
4054
4118
  ...options
4055
4119
  });
4056
4120
  }
4121
+ /**
4122
+ * Create good-faith effort exception
4123
+ *
4124
+ * Creates a good-faith-effort exception on the named job. `job_id` is the path
4125
+ * only. Scalar fields match GET; send minutes, not the web form's
4126
+ * `hours_per_apprentice`. Proof files attach through
4127
+ * `request_letter_signed_id`, `submission_proof_signed_id`,
4128
+ * `response_letter_signed_id`, and `no_availability_proof_signed_id` minted by
4129
+ * `POST /api/v1/direct_uploads` naming
4130
+ * `jobs.pwa.apprenticeship.good_faith_effort_exceptions`; when any of those
4131
+ * keys is present, `performed_by_user_id` is required. Model validations are
4132
+ * the 422 source. A missing or out-of-scope job reads as not found.
4133
+ *
4134
+ *
4135
+ * **Required scope:**
4136
+ *
4137
+ * `jobs.pwa.apprenticeship.good_faith_effort_exceptions:create`
4138
+ *
4139
+ */
4140
+ static createGoodFaithEffortException(options) {
4141
+ return (options.client ?? client).post({
4142
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
4143
+ url: '/api/v1/jobs/{job_id}/pwa/apprenticeship/good_faith_effort_exceptions',
4144
+ ...options,
4145
+ headers: {
4146
+ 'Content-Type': 'application/json',
4147
+ ...options.headers
4148
+ }
4149
+ });
4150
+ }
4151
+ /**
4152
+ * Delete good-faith effort exception
4153
+ *
4154
+ * Removes the good-faith-effort exception nested on the named job. A missing,
4155
+ * misnested, or out-of-scope id reads as not found.
4156
+ *
4157
+ *
4158
+ * **Required scope:**
4159
+ *
4160
+ * `jobs.pwa.apprenticeship.good_faith_effort_exceptions:delete`
4161
+ *
4162
+ */
4163
+ static deleteGoodFaithEffortException(options) {
4164
+ return (options.client ?? client).delete({
4165
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
4166
+ url: '/api/v1/jobs/{job_id}/pwa/apprenticeship/good_faith_effort_exceptions/{id}',
4167
+ ...options
4168
+ });
4169
+ }
4057
4170
  /**
4058
4171
  * Get good-faith effort exception
4059
4172
  *
4060
4173
  * Returns one good-faith-effort exception nested on the named job. A missing,
4061
- * misnested, or out-of-scope id reads as not found. Read-only.
4174
+ * misnested, or out-of-scope id reads as not found. Proof document slots are
4175
+ * always present as `null` or a document object.
4062
4176
  *
4063
4177
  *
4064
4178
  * **Required scope:**
@@ -4073,6 +4187,31 @@ export class Jobs {
4073
4187
  ...options
4074
4188
  });
4075
4189
  }
4190
+ /**
4191
+ * Update good-faith effort exception
4192
+ *
4193
+ * Updates a good-faith-effort exception nested on the named job. Omit a field
4194
+ * to preserve it. Omit a proof signed-id key to keep the stored file; replacing
4195
+ * a populated slot keeps the original creator. A missing, misnested, or
4196
+ * out-of-scope id reads as not found.
4197
+ *
4198
+ *
4199
+ * **Required scope:**
4200
+ *
4201
+ * `jobs.pwa.apprenticeship.good_faith_effort_exceptions:update`
4202
+ *
4203
+ */
4204
+ static updateGoodFaithEffortException(options) {
4205
+ return (options.client ?? client).patch({
4206
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
4207
+ url: '/api/v1/jobs/{job_id}/pwa/apprenticeship/good_faith_effort_exceptions/{id}',
4208
+ ...options,
4209
+ headers: {
4210
+ 'Content-Type': 'application/json',
4211
+ ...options.headers
4212
+ }
4213
+ });
4214
+ }
4076
4215
  /**
4077
4216
  * List cure payments
4078
4217
  *
@@ -4080,7 +4219,7 @@ export class Jobs {
4080
4219
  * or out-of-scope job reads as not found. A visible job with no
4081
4220
  * payments, including one that does not track federal PWA, returns
4082
4221
  * an empty list. Ordered by paid_on_date descending, then
4083
- * created_at descending, then id. Read-only.
4222
+ * created_at descending, then id.
4084
4223
  *
4085
4224
  *
4086
4225
  * **Required scope:**
@@ -4095,11 +4234,58 @@ export class Jobs {
4095
4234
  ...options
4096
4235
  });
4097
4236
  }
4237
+ /**
4238
+ * Create a cure payment
4239
+ *
4240
+ * Creates a PWA cure payment on the named job. `job_id` comes from the
4241
+ * path. `type`, `amount_cents`, the three dates, and `performed_by_user_id`
4242
+ * are required. `type` is the stored STI class name and is create-only.
4243
+ * The attestation file attaches through `attestation_signed_id` minted by
4244
+ * `POST /api/v1/direct_uploads` naming `jobs.pwa.cure_payments`. A missing
4245
+ * or out-of-scope job or filer reads as not found. Model validations
4246
+ * return 422. Undeclared body keys return 400.
4247
+ *
4248
+ *
4249
+ * **Required scope:**
4250
+ *
4251
+ * `jobs.pwa.cure_payments:create`
4252
+ *
4253
+ */
4254
+ static createCurePayment(options) {
4255
+ return (options.client ?? client).post({
4256
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
4257
+ url: '/api/v1/jobs/{job_id}/pwa/cure_payments',
4258
+ ...options,
4259
+ headers: {
4260
+ 'Content-Type': 'application/json',
4261
+ ...options.headers
4262
+ }
4263
+ });
4264
+ }
4265
+ /**
4266
+ * Delete a cure payment
4267
+ *
4268
+ * Removes the PWA cure payment nested on the named job. A missing or
4269
+ * misnested id reads as not found.
4270
+ *
4271
+ *
4272
+ * **Required scope:**
4273
+ *
4274
+ * `jobs.pwa.cure_payments:delete`
4275
+ *
4276
+ */
4277
+ static deleteCurePayment(options) {
4278
+ return (options.client ?? client).delete({
4279
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
4280
+ url: '/api/v1/jobs/{job_id}/pwa/cure_payments/{id}',
4281
+ ...options
4282
+ });
4283
+ }
4098
4284
  /**
4099
4285
  * Get cure payment
4100
4286
  *
4101
4287
  * Returns one PWA cure payment nested on the named job. A missing,
4102
- * misnested, or out-of-scope id reads as not found. Read-only.
4288
+ * misnested, or out-of-scope id reads as not found.
4103
4289
  *
4104
4290
  *
4105
4291
  * **Required scope:**
@@ -4114,6 +4300,33 @@ export class Jobs {
4114
4300
  ...options
4115
4301
  });
4116
4302
  }
4303
+ /**
4304
+ * Update a cure payment
4305
+ *
4306
+ * Updates a PWA cure payment nested on the named job. Omit a field to
4307
+ * preserve it. `type` is create-only; sending it returns 400. Omit
4308
+ * `attestation_signed_id` to keep the stored file; send it with
4309
+ * `performed_by_user_id` to create or replace the attestation. Replacing
4310
+ * a populated slot keeps the original document id and creator. A missing
4311
+ * or misnested id reads as not found.
4312
+ *
4313
+ *
4314
+ * **Required scope:**
4315
+ *
4316
+ * `jobs.pwa.cure_payments:update`
4317
+ *
4318
+ */
4319
+ static updateCurePayment(options) {
4320
+ return (options.client ?? client).patch({
4321
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
4322
+ url: '/api/v1/jobs/{job_id}/pwa/cure_payments/{id}',
4323
+ ...options,
4324
+ headers: {
4325
+ 'Content-Type': 'application/json',
4326
+ ...options.headers
4327
+ }
4328
+ });
4329
+ }
4117
4330
  /**
4118
4331
  * List sites for job
4119
4332
  *
@@ -4679,6 +4892,31 @@ export class PwaTrades {
4679
4892
  }
4680
4893
  }
4681
4894
  export class JobWageDeterminationRateRules {
4895
+ /**
4896
+ * Shift job wage determination rule genesis
4897
+ *
4898
+ * Move the valid-time family's lower bound to the required effective_date, a calendar
4899
+ * day in the package timezone. An earlier bound extends its first version; a later
4900
+ * bound can remove earlier versions. The new bound must precede any standing ending.
4901
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
4902
+ *
4903
+ *
4904
+ * **Required scope:**
4905
+ *
4906
+ * `jobs.pwa.wage_determinations.rate_rules.genesis:update`
4907
+ *
4908
+ */
4909
+ static shiftJobWageDeterminationRateRuleGenesis(options) {
4910
+ return (options.client ?? client).patch({
4911
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
4912
+ url: '/api/v1/jobs/{job_id}/wage_determinations/{wage_determination_id}/rate_rules/{rate_rule_id}/genesis',
4913
+ ...options,
4914
+ headers: {
4915
+ 'Content-Type': 'application/json',
4916
+ ...options.headers
4917
+ }
4918
+ });
4919
+ }
4682
4920
  /**
4683
4921
  * List rate rule version history
4684
4922
  *
@@ -4709,6 +4947,118 @@ export class JobWageDeterminationRateRules {
4709
4947
  ...options
4710
4948
  });
4711
4949
  }
4950
+ /**
4951
+ * Cancel job wage determination rule scheduled changes
4952
+ *
4953
+ * Cancel every version after the baseline selected now, preserving and extending
4954
+ * that baseline through the removed coverage. A wholly future family's first version
4955
+ * remains its baseline. Returns nothing_to_cancel when there is no later version.
4956
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
4957
+ *
4958
+ *
4959
+ * **Required scope:**
4960
+ *
4961
+ * `jobs.pwa.wage_determinations.rate_rules.scheduled_changes:delete`
4962
+ *
4963
+ */
4964
+ static cancelJobWageDeterminationRateRuleScheduledChanges(options) {
4965
+ return (options.client ?? client).delete({
4966
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
4967
+ url: '/api/v1/jobs/{job_id}/wage_determinations/{wage_determination_id}/rate_rules/{rate_rule_id}/scheduled_changes',
4968
+ ...options
4969
+ });
4970
+ }
4971
+ /**
4972
+ * List job wage determination rule scheduled changes
4973
+ *
4974
+ * List every version after the baseline selected now, oldest boundary first. This
4975
+ * paginated timeline is the exact cancellation set. A wholly future family's first
4976
+ * version remains its baseline. Entries carry pay_rates_rule_id and empty corrections.
4977
+ * The operation rejects as_of coordinates because it ranges over the valid-time axis.
4978
+ *
4979
+ *
4980
+ * **Required scope:**
4981
+ *
4982
+ * `jobs.pwa.wage_determinations.rate_rules.scheduled_changes:read`
4983
+ *
4984
+ */
4985
+ static listJobWageDeterminationRateRuleScheduledChanges(options) {
4986
+ return (options.client ?? client).get({
4987
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
4988
+ url: '/api/v1/jobs/{job_id}/wage_determinations/{wage_determination_id}/rate_rules/{rate_rule_id}/scheduled_changes',
4989
+ ...options
4990
+ });
4991
+ }
4992
+ /**
4993
+ * Schedule job wage determination rule change
4994
+ *
4995
+ * Apply a recipe from the required effective_date forward, at midnight in the
4996
+ * package timezone. Each omitted recipe half carries from the version containing that
4997
+ * date. Returns 201 for a newly added segment or 200 when editing an existing segment.
4998
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
4999
+ *
5000
+ *
5001
+ * **Required scope:**
5002
+ *
5003
+ * `jobs.pwa.wage_determinations.rate_rules.scheduled_changes:create`
5004
+ *
5005
+ */
5006
+ static scheduleJobWageDeterminationRateRuleChange(options) {
5007
+ return (options.client ?? client).post({
5008
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
5009
+ url: '/api/v1/jobs/{job_id}/wage_determinations/{wage_determination_id}/rate_rules/{rate_rule_id}/scheduled_changes',
5010
+ ...options,
5011
+ headers: {
5012
+ 'Content-Type': 'application/json',
5013
+ ...options.headers
5014
+ }
5015
+ });
5016
+ }
5017
+ /**
5018
+ * Cancel job wage determination rule termination
5019
+ *
5020
+ * Remove the family's standing finite upper bound and restore open-ended coverage.
5021
+ * Returns nothing_to_cancel when the family has no ending.
5022
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
5023
+ *
5024
+ *
5025
+ * **Required scope:**
5026
+ *
5027
+ * `jobs.pwa.wage_determinations.rate_rules.scheduled_terminations:delete`
5028
+ *
5029
+ */
5030
+ static cancelJobWageDeterminationRateRuleScheduledTermination(options) {
5031
+ return (options.client ?? client).delete({
5032
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
5033
+ url: '/api/v1/jobs/{job_id}/wage_determinations/{wage_determination_id}/rate_rules/{rate_rule_id}/scheduled_termination',
5034
+ ...options
5035
+ });
5036
+ }
5037
+ /**
5038
+ * Schedule job wage determination rule termination
5039
+ *
5040
+ * End the family's valid-time coverage at the required effective_date, a calendar
5041
+ * day in the package timezone. The date must follow genesis; an existing ending must
5042
+ * be canceled first. Earlier versions remain in history.
5043
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
5044
+ *
5045
+ *
5046
+ * **Required scope:**
5047
+ *
5048
+ * `jobs.pwa.wage_determinations.rate_rules.scheduled_terminations:create`
5049
+ *
5050
+ */
5051
+ static scheduleJobWageDeterminationRateRuleTermination(options) {
5052
+ return (options.client ?? client).post({
5053
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
5054
+ url: '/api/v1/jobs/{job_id}/wage_determinations/{wage_determination_id}/rate_rules/{rate_rule_id}/scheduled_termination',
5055
+ ...options,
5056
+ headers: {
5057
+ 'Content-Type': 'application/json',
5058
+ ...options.headers
5059
+ }
5060
+ });
5061
+ }
4712
5062
  /**
4713
5063
  * List rate rules
4714
5064
  *
@@ -4760,6 +5110,27 @@ export class JobWageDeterminationRateRules {
4760
5110
  }
4761
5111
  });
4762
5112
  }
5113
+ /**
5114
+ * Delete job wage determination rate rule family
5115
+ *
5116
+ * Erase the rule's entire valid-time family, including historical and scheduled
5117
+ * versions. Use a scheduled termination to end coverage while preserving history.
5118
+ * This response has no family validator because the family no longer exists.
5119
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
5120
+ *
5121
+ *
5122
+ * **Required scope:**
5123
+ *
5124
+ * `jobs.pwa.wage_determinations.rate_rules:delete`
5125
+ *
5126
+ */
5127
+ static deleteJobWageDeterminationRateRule(options) {
5128
+ return (options.client ?? client).delete({
5129
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
5130
+ url: '/api/v1/jobs/{job_id}/wage_determinations/{wage_determination_id}/rate_rules/{id}',
5131
+ ...options
5132
+ });
5133
+ }
4763
5134
  /**
4764
5135
  * Show rate rule
4765
5136
  *
@@ -4775,6 +5146,31 @@ export class JobWageDeterminationRateRules {
4775
5146
  ...options
4776
5147
  });
4777
5148
  }
5149
+ /**
5150
+ * Update job wage determination rate rule
5151
+ *
5152
+ * Update the recipe from effective_from forward, defaulting to the selected
5153
+ * version's start. Omitted halves carry from the version containing that date.
5154
+ * A beginless version requires effective_from. Dates use the package timezone.
5155
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
5156
+ *
5157
+ *
5158
+ * **Required scope:**
5159
+ *
5160
+ * `jobs.pwa.wage_determinations.rate_rules:update`
5161
+ *
5162
+ */
5163
+ static updateJobWageDeterminationRateRule(options) {
5164
+ return (options.client ?? client).patch({
5165
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
5166
+ url: '/api/v1/jobs/{job_id}/wage_determinations/{wage_determination_id}/rate_rules/{id}',
5167
+ ...options,
5168
+ headers: {
5169
+ 'Content-Type': 'application/json',
5170
+ ...options.headers
5171
+ }
5172
+ });
5173
+ }
4778
5174
  }
4779
5175
  export class JobWageDeterminations {
4780
5176
  /**
@@ -5037,6 +5433,7 @@ export class JobWageDeterminations {
5037
5433
  * at once, so it moves every version rather than applying from
5038
5434
  * `effective_from`. A determination cascaded from a project mirrors that
5039
5435
  * project's determination and cannot be edited here — change it on the project.
5436
+ * Re-pointing a journeyworker-basis determination also moves the apprentice determinations that follow it.
5040
5437
  *
5041
5438
  * Conditional: send the determination's `ETag` as `If-Match`.
5042
5439
  *
@@ -7511,6 +7908,31 @@ export class ProjectDocuments {
7511
7908
  }
7512
7909
  }
7513
7910
  export class ProjectWageDeterminationRateRules {
7911
+ /**
7912
+ * Shift project wage determination rule genesis
7913
+ *
7914
+ * Move the valid-time family's lower bound to the required effective_date, a calendar
7915
+ * day in the package timezone. An earlier bound extends its first version; a later
7916
+ * bound can remove earlier versions. The new bound must precede any standing ending.
7917
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
7918
+ *
7919
+ *
7920
+ * **Required scope:**
7921
+ *
7922
+ * `projects.pwa.wage_determinations.rate_rules.genesis:update`
7923
+ *
7924
+ */
7925
+ static shiftProjectWageDeterminationRateRuleGenesis(options) {
7926
+ return (options.client ?? client).patch({
7927
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
7928
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/rate_rules/{rate_rule_id}/genesis',
7929
+ ...options,
7930
+ headers: {
7931
+ 'Content-Type': 'application/json',
7932
+ ...options.headers
7933
+ }
7934
+ });
7935
+ }
7514
7936
  /**
7515
7937
  * List project wage determination rate rule history
7516
7938
  *
@@ -7541,6 +7963,118 @@ export class ProjectWageDeterminationRateRules {
7541
7963
  ...options
7542
7964
  });
7543
7965
  }
7966
+ /**
7967
+ * Cancel project wage determination rule scheduled changes
7968
+ *
7969
+ * Cancel every version after the baseline selected now, preserving and extending
7970
+ * that baseline through the removed coverage. A wholly future family's first version
7971
+ * remains its baseline. Returns nothing_to_cancel when there is no later version.
7972
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
7973
+ *
7974
+ *
7975
+ * **Required scope:**
7976
+ *
7977
+ * `projects.pwa.wage_determinations.rate_rules.scheduled_changes:delete`
7978
+ *
7979
+ */
7980
+ static cancelProjectWageDeterminationRateRuleScheduledChanges(options) {
7981
+ return (options.client ?? client).delete({
7982
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
7983
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/rate_rules/{rate_rule_id}/scheduled_changes',
7984
+ ...options
7985
+ });
7986
+ }
7987
+ /**
7988
+ * List project wage determination rule scheduled changes
7989
+ *
7990
+ * List every version after the baseline selected now, oldest boundary first. This
7991
+ * paginated timeline is the exact cancellation set. A wholly future family's first
7992
+ * version remains its baseline. Entries carry pay_rates_rule_id and empty corrections.
7993
+ * The operation rejects as_of coordinates because it ranges over the valid-time axis.
7994
+ *
7995
+ *
7996
+ * **Required scope:**
7997
+ *
7998
+ * `projects.pwa.wage_determinations.rate_rules.scheduled_changes:read`
7999
+ *
8000
+ */
8001
+ static listProjectWageDeterminationRateRuleScheduledChanges(options) {
8002
+ return (options.client ?? client).get({
8003
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
8004
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/rate_rules/{rate_rule_id}/scheduled_changes',
8005
+ ...options
8006
+ });
8007
+ }
8008
+ /**
8009
+ * Schedule project wage determination rule change
8010
+ *
8011
+ * Apply a recipe from the required effective_date forward, at midnight in the
8012
+ * package timezone. Each omitted recipe half carries from the version containing that
8013
+ * date. Returns 201 for a newly added segment or 200 when editing an existing segment.
8014
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
8015
+ *
8016
+ *
8017
+ * **Required scope:**
8018
+ *
8019
+ * `projects.pwa.wage_determinations.rate_rules.scheduled_changes:create`
8020
+ *
8021
+ */
8022
+ static scheduleProjectWageDeterminationRateRuleChange(options) {
8023
+ return (options.client ?? client).post({
8024
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
8025
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/rate_rules/{rate_rule_id}/scheduled_changes',
8026
+ ...options,
8027
+ headers: {
8028
+ 'Content-Type': 'application/json',
8029
+ ...options.headers
8030
+ }
8031
+ });
8032
+ }
8033
+ /**
8034
+ * Cancel project wage determination rule termination
8035
+ *
8036
+ * Remove the family's standing finite upper bound and restore open-ended coverage.
8037
+ * Returns nothing_to_cancel when the family has no ending.
8038
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
8039
+ *
8040
+ *
8041
+ * **Required scope:**
8042
+ *
8043
+ * `projects.pwa.wage_determinations.rate_rules.scheduled_terminations:delete`
8044
+ *
8045
+ */
8046
+ static cancelProjectWageDeterminationRateRuleScheduledTermination(options) {
8047
+ return (options.client ?? client).delete({
8048
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
8049
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/rate_rules/{rate_rule_id}/scheduled_termination',
8050
+ ...options
8051
+ });
8052
+ }
8053
+ /**
8054
+ * Schedule project wage determination rule termination
8055
+ *
8056
+ * End the family's valid-time coverage at the required effective_date, a calendar
8057
+ * day in the package timezone. The date must follow genesis; an existing ending must
8058
+ * be canceled first. Earlier versions remain in history.
8059
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
8060
+ *
8061
+ *
8062
+ * **Required scope:**
8063
+ *
8064
+ * `projects.pwa.wage_determinations.rate_rules.scheduled_terminations:create`
8065
+ *
8066
+ */
8067
+ static scheduleProjectWageDeterminationRateRuleTermination(options) {
8068
+ return (options.client ?? client).post({
8069
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
8070
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/rate_rules/{rate_rule_id}/scheduled_termination',
8071
+ ...options,
8072
+ headers: {
8073
+ 'Content-Type': 'application/json',
8074
+ ...options.headers
8075
+ }
8076
+ });
8077
+ }
7544
8078
  /**
7545
8079
  * List project wage determination rate rules
7546
8080
  *
@@ -7582,6 +8116,27 @@ export class ProjectWageDeterminationRateRules {
7582
8116
  }
7583
8117
  });
7584
8118
  }
8119
+ /**
8120
+ * Delete project wage determination rate rule family
8121
+ *
8122
+ * Erase the rule's entire valid-time family, including historical and scheduled
8123
+ * versions. Use a scheduled termination to end coverage while preserving history.
8124
+ * This response has no family validator because the family no longer exists.
8125
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
8126
+ *
8127
+ *
8128
+ * **Required scope:**
8129
+ *
8130
+ * `projects.pwa.wage_determinations.rate_rules:delete`
8131
+ *
8132
+ */
8133
+ static deleteProjectWageDeterminationRateRule(options) {
8134
+ return (options.client ?? client).delete({
8135
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
8136
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/rate_rules/{id}',
8137
+ ...options
8138
+ });
8139
+ }
7585
8140
  /**
7586
8141
  * Show project wage determination rate rule
7587
8142
  *
@@ -7597,6 +8152,31 @@ export class ProjectWageDeterminationRateRules {
7597
8152
  ...options
7598
8153
  });
7599
8154
  }
8155
+ /**
8156
+ * Update project wage determination rate rule
8157
+ *
8158
+ * Update the recipe from effective_from forward, defaulting to the selected
8159
+ * version's start. Omitted halves carry from the version containing that date.
8160
+ * A beginless version requires effective_from. Dates use the package timezone.
8161
+ * Conditional: send the rule family's ETag as If-Match. Changes affect PWA obligations.
8162
+ *
8163
+ *
8164
+ * **Required scope:**
8165
+ *
8166
+ * `projects.pwa.wage_determinations.rate_rules:update`
8167
+ *
8168
+ */
8169
+ static updateProjectWageDeterminationRateRule(options) {
8170
+ return (options.client ?? client).patch({
8171
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
8172
+ url: '/api/v1/projects/{project_id}/wage_determinations/{wage_determination_id}/rate_rules/{id}',
8173
+ ...options,
8174
+ headers: {
8175
+ 'Content-Type': 'application/json',
8176
+ ...options.headers
8177
+ }
8178
+ });
8179
+ }
7600
8180
  }
7601
8181
  export class ProjectSites {
7602
8182
  /**
@@ -8050,6 +8630,7 @@ export class ProjectWageDeterminations {
8050
8630
  * `pwa_trade_id` is the exception: a trade regroups the whole determination
8051
8631
  * at once, so it moves every version rather than applying from
8052
8632
  * `effective_from`. Changes synchronize to linked job wage determinations.
8633
+ * Re-pointing a journeyworker-basis determination also moves the apprentice determinations that follow it.
8053
8634
  *
8054
8635
  * Conditional: send the determination's `ETag` as `If-Match`.
8055
8636
  *
@@ -8106,12 +8687,17 @@ export class Projects {
8106
8687
  * prevailing-wage lock-in / beginning-of-construction / placed-in-service dates)
8107
8688
  * and `asset_owner` apply only while `federal_pwa_mode` is not `none`, so sending
8108
8689
  * one of them on a project that tracks no federal PWA — even as null — returns
8109
- * 422. `parent_id` may name a project visible to the API key's policy, and
8110
- * `participating_company_ids` is the complete set of participating companies.
8111
- * Remove a participant's jobs before removing it from this set. Returns 201
8112
- * with the project; unknown or inaccessible parent or
8113
- * company IDs return 404, and invalid attributes or relationships return 422.
8114
- * Undeclared body keys return 400 before any project or relationship is saved.
8690
+ * 422. IRA evidence files attach through `lock_in_date_doc_signed_id`,
8691
+ * `beginning_of_construction_doc_signed_id`, and `placed_in_service_doc_signed_id`
8692
+ * minted by `POST /api/v1/direct_uploads` naming `projects`; when any of those
8693
+ * keys is present, `performed_by_user_id` is required. `parent_id` may name a
8694
+ * project visible to the API key's policy, `participating_company_ids` is the
8695
+ * complete set of participating companies, and `manager_user_ids` is the complete
8696
+ * set of project managers (each a manager of the owning company). Remove a
8697
+ * participant's jobs before removing it from this set. Returns 201 with the
8698
+ * project; unknown or inaccessible parent, company, manager, or filer user IDs
8699
+ * return 404, and invalid attributes or relationships return 422. Undeclared
8700
+ * body keys return 400 before any project or relationship is saved.
8115
8701
  *
8116
8702
  *
8117
8703
  * **Required scope:**
@@ -8160,10 +8746,17 @@ export class Projects {
8160
8746
  * dates) and `asset_owner` apply only while `federal_pwa_mode` is not `none`:
8161
8747
  * switching it to `none` clears the stored values and forces `asset_owner`
8162
8748
  * false, and sending one of them while federal tracking is off — even as null —
8163
- * returns 422. `budget_currency` defaults to USD when blank. `parent_id` moves
8749
+ * returns 422. IRA evidence files attach through `lock_in_date_doc_signed_id`,
8750
+ * `beginning_of_construction_doc_signed_id`, and `placed_in_service_doc_signed_id`
8751
+ * minted by `POST /api/v1/direct_uploads` naming `projects`; omit a key to keep
8752
+ * the stored file, and send `performed_by_user_id` when any signed id is present.
8753
+ * Replacing a populated slot keeps the original `created_by_user_id`.
8754
+ * `budget_currency` defaults to USD when blank. `parent_id` moves
8164
8755
  * or detaches the project; a project whose parent no longer lists its owner
8165
8756
  * still accepts updates that keep that parent. `participating_company_ids`
8166
- * replaces the complete set of participating companies. Remove a participant's
8757
+ * replaces the complete set of participating companies. `manager_user_ids`
8758
+ * replaces the complete set of project managers; omit the key to keep the
8759
+ * stored set, or send an empty array to clear it. Remove a participant's
8167
8760
  * jobs before removing it from this set. Only the owning company may update the
8168
8761
  * project. Undeclared body keys return 400 before any project or relationship changes.
8169
8762
  *
@@ -8185,6 +8778,113 @@ export class Projects {
8185
8778
  });
8186
8779
  }
8187
8780
  }
8781
+ export class PwaCompanyDetails {
8782
+ /**
8783
+ * List PWA company details
8784
+ *
8785
+ * Lists PWA contractor details for the key's company. A company has at most
8786
+ * one row; an empty list means none exists yet, not that the company is
8787
+ * missing. Ordered by `created_at`, `id` and keyset-paginated.
8788
+ *
8789
+ *
8790
+ * **Required scope:**
8791
+ *
8792
+ * `pwa.company_details:read`
8793
+ *
8794
+ */
8795
+ static listCompanyDetails(options) {
8796
+ return (options?.client ?? client).get({
8797
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
8798
+ url: '/api/v1/pwa/company_details',
8799
+ ...options
8800
+ });
8801
+ }
8802
+ /**
8803
+ * Create PWA company details
8804
+ *
8805
+ * Creates PWA contractor details for the key's company. The company is
8806
+ * taken from the API key; `company_id` in the body is refused. A second
8807
+ * create for the same company is `422` `taken`.
8808
+ *
8809
+ *
8810
+ * **Required scope:**
8811
+ *
8812
+ * `pwa.company_details:create`
8813
+ *
8814
+ */
8815
+ static createCompanyDetail(options) {
8816
+ return (options.client ?? client).post({
8817
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
8818
+ url: '/api/v1/pwa/company_details',
8819
+ ...options,
8820
+ headers: {
8821
+ 'Content-Type': 'application/json',
8822
+ ...options.headers
8823
+ }
8824
+ });
8825
+ }
8826
+ /**
8827
+ * Delete PWA company details
8828
+ *
8829
+ * Deletes the PWA contractor-details row. A missing or out-of-scope id
8830
+ * reads as not found. Delete removes the row; it does not archive.
8831
+ *
8832
+ *
8833
+ * **Required scope:**
8834
+ *
8835
+ * `pwa.company_details:delete`
8836
+ *
8837
+ */
8838
+ static deleteCompanyDetail(options) {
8839
+ return (options.client ?? client).delete({
8840
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
8841
+ url: '/api/v1/pwa/company_details/{id}',
8842
+ ...options
8843
+ });
8844
+ }
8845
+ /**
8846
+ * Get PWA company details
8847
+ *
8848
+ * Returns one PWA contractor-details row owned by the key's company. A
8849
+ * missing or out-of-scope id reads as not found.
8850
+ *
8851
+ *
8852
+ * **Required scope:**
8853
+ *
8854
+ * `pwa.company_details:read`
8855
+ *
8856
+ */
8857
+ static getCompanyDetail(options) {
8858
+ return (options.client ?? client).get({
8859
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
8860
+ url: '/api/v1/pwa/company_details/{id}',
8861
+ ...options
8862
+ });
8863
+ }
8864
+ /**
8865
+ * Update PWA company details
8866
+ *
8867
+ * Updates PWA contractor details owned by the key's company. `company_id`
8868
+ * is create-only and refused on PATCH.
8869
+ *
8870
+ *
8871
+ * **Required scope:**
8872
+ *
8873
+ * `pwa.company_details:update`
8874
+ *
8875
+ */
8876
+ static updateCompanyDetail(options) {
8877
+ return (options.client ?? client).patch({
8878
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
8879
+ url: '/api/v1/pwa/company_details/{id}',
8880
+ ...options,
8881
+ headers: {
8882
+ 'Content-Type': 'application/json',
8883
+ ...options.headers
8884
+ }
8885
+ });
8886
+ }
8887
+ }
8188
8888
  export class Users {
8189
8889
  /**
8190
8890
  * Create PWA company user details
@@ -8246,10 +8946,16 @@ export class Users {
8246
8946
  /**
8247
8947
  * List scheduled compensation changes for user's employment
8248
8948
  *
8949
+ * Deprecated: use `GET /api/v1/people/employments/{employment_id}/history` instead.
8950
+ * The successor is keyed by the employment's `id` and lists every version, newest first.
8951
+ *
8952
+ *
8249
8953
  * **Required scope:**
8250
8954
  *
8251
8955
  * `users.companies.scheduled_changes:read`
8252
8956
  *
8957
+ *
8958
+ * @deprecated
8253
8959
  */
8254
8960
  static listUserCompanyScheduledChanges(options) {
8255
8961
  return (options.client ?? client).get({
@@ -8261,10 +8967,16 @@ export class Users {
8261
8967
  /**
8262
8968
  * Create scheduled change to user's employment information
8263
8969
  *
8970
+ * Deprecated: use `POST /api/v1/people/employments/{employment_id}/scheduled_changes` instead.
8971
+ * The successor is keyed by the employment's `id` and needs `If-Match`.
8972
+ *
8973
+ *
8264
8974
  * **Required scope:**
8265
8975
  *
8266
8976
  * `users.companies.scheduled_changes:create`
8267
8977
  *
8978
+ *
8979
+ * @deprecated
8268
8980
  */
8269
8981
  static createUserCompanyScheduledChange(options) {
8270
8982
  return (options.client ?? client).post({
@@ -8280,10 +8992,16 @@ export class Users {
8280
8992
  /**
8281
8993
  * Cancel scheduled compensation change (removes the future version from the timeline)
8282
8994
  *
8995
+ * Deprecated: use `DELETE /api/v1/people/employments/{employment_id}/scheduled_changes/{effective_date}` instead.
8996
+ * The successor is keyed by the employment's `id` and the change's effective date, and needs `If-Match`.
8997
+ *
8998
+ *
8283
8999
  * **Required scope:**
8284
9000
  *
8285
9001
  * `users.companies.scheduled_changes:delete`
8286
9002
  *
9003
+ *
9004
+ * @deprecated
8287
9005
  */
8288
9006
  static cancelUserCompanyScheduledChange(options) {
8289
9007
  return (options.client ?? client).delete({
@@ -8295,10 +9013,16 @@ export class Users {
8295
9013
  /**
8296
9014
  * Update scheduled compensation change
8297
9015
  *
9016
+ * Deprecated: use `PATCH /api/v1/people/employments/{employment_id}/scheduled_changes/{effective_date}` instead.
9017
+ * The successor is keyed by the employment's `id` and the change's effective date, and needs `If-Match`.
9018
+ *
9019
+ *
8298
9020
  * **Required scope:**
8299
9021
  *
8300
9022
  * `users.companies.scheduled_changes:update`
8301
9023
  *
9024
+ *
9025
+ * @deprecated
8302
9026
  */
8303
9027
  static updateScheduledChange(options) {
8304
9028
  return (options.client ?? client).patch({
@@ -9496,7 +10220,7 @@ export class AttestationConfigs {
9496
10220
  /**
9497
10221
  * Delete attestation config
9498
10222
  *
9499
- * Retires a question on the addressed pay schedule at its current pay period end. Repeated retirement preserves the earliest cutoff. A question from another pay schedule returns 404.
10223
+ * Retires a question on the addressed pay schedule at its current pay period end, or immediately when no pay period is in progress. Repeated retirement preserves the earliest cutoff. A question from another pay schedule returns 404.
9500
10224
  *
9501
10225
  * **Required scope:**
9502
10226
  *
@@ -9732,6 +10456,32 @@ export class TimeOffRequests {
9732
10456
  ...options
9733
10457
  });
9734
10458
  }
10459
+ /**
10460
+ * Create time off request
10461
+ *
10462
+ * Create a time-off request for a worker. Name the worker and the filer.
10463
+ * When they are the same person the request is born pending; otherwise it
10464
+ * is born approved with the filer stamped as reviewer and an Absence is
10465
+ * built in the background. Instants are the beginning of the first day and
10466
+ * the end of the last day in the pay-schedule timezone.
10467
+ *
10468
+ *
10469
+ * **Required scope:**
10470
+ *
10471
+ * `timekeeping.time_off_requests:create`
10472
+ *
10473
+ */
10474
+ static createTimeOffRequest(options) {
10475
+ return (options.client ?? client).post({
10476
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
10477
+ url: '/api/v1/timekeeping/time_off_requests',
10478
+ ...options,
10479
+ headers: {
10480
+ 'Content-Type': 'application/json',
10481
+ ...options.headers
10482
+ }
10483
+ });
10484
+ }
9735
10485
  /**
9736
10486
  * Show time off request
9737
10487
  *
@@ -9751,6 +10501,30 @@ export class TimeOffRequests {
9751
10501
  ...options
9752
10502
  });
9753
10503
  }
10504
+ /**
10505
+ * Review time off request
10506
+ *
10507
+ * Approve, deny, or cancel a pending time-off request. The named filer is
10508
+ * the reviewer: only the worker may cancel, and nobody may approve or deny
10509
+ * their own row. Approving enqueues the Absence build.
10510
+ *
10511
+ *
10512
+ * **Required scope:**
10513
+ *
10514
+ * `timekeeping.time_off_requests.reviews:create`
10515
+ *
10516
+ */
10517
+ static createReview(options) {
10518
+ return (options.client ?? client).post({
10519
+ security: [{ name: 'X-Api-Key', type: 'apiKey' }],
10520
+ url: '/api/v1/timekeeping/time_off_requests/{time_off_request_id}/reviews',
10521
+ ...options,
10522
+ headers: {
10523
+ 'Content-Type': 'application/json',
10524
+ ...options.headers
10525
+ }
10526
+ });
10527
+ }
9754
10528
  }
9755
10529
  export class TimeSessions {
9756
10530
  /**