@dsptch-work/api-client 0.25.0 → 0.26.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.
@@ -161,6 +161,12 @@ export type Problem = {
161
161
  *
162
162
  * The credential is valid, but this action on this record is refused by policy. The operation is not available to this principal.
163
163
  *
164
+ * ### forbidden_key
165
+ *
166
+ * **Field Not Writable By Key**
167
+ *
168
+ * The request body carries a field the operation accepts, but the user this user-scoped API key acts for may not write it, as their role could not in the DSPTCH app. Nothing was written. Remove the fields the detail names, or send the write with a key whose user may write them.
169
+ *
164
170
  * ### insufficient_api_key_scope
165
171
  *
166
172
  * **Insufficient API Key Scope**
@@ -370,7 +376,7 @@ export type Problem = {
370
376
  * Another write to the same resource held it for longer than this request was willing to wait, so nothing was applied. The request itself is fine — resend it unchanged after the `Retry-After` window.
371
377
  *
372
378
  */
373
- export type ProblemTypeCatalog = 'blank_axis' | 'invalid_cursor' | 'invalid_filter_key' | 'invalid_limit' | 'invalid_signature' | 'malformed_body' | 'non_range_filter_value' | 'non_scalar_axis' | 'non_scalar_filter_value' | 'parameter_missing' | 'parameter_not_object' | 'unknown_axis' | 'unknown_key' | 'unsupported_axis' | 'valid_axis_on_timeline' | 'unauthorized' | 'company_scoped_key_required' | 'forbidden' | 'insufficient_api_key_scope' | 'user_scoped_key_required' | 'not_found' | 'already_terminated' | 'import_in_progress' | 'product_archived' | 'recorded_since_termination' | 'span_beyond_timeline_end' | 'version_overlap' | 'precondition_failed' | 'attachment_not_image' | 'company_not_employer' | 'confirm_apprenticeship_conflict' | 'destroy_restricted' | 'interval_too_wide' | 'invalid_date' | 'invalid_filter_value' | 'invalid_iso8601_duration' | 'invalid_placement_move' | 'invalid_signed_id' | 'non_numeric_cents' | 'nothing_to_cancel' | 'pagination_failed' | 'subtype_foreign_keys' | 'synced_determination' | 'user_not_company_member' | 'validation_failed' | 'wage_schedule_outside_program' | 'precondition_required' | 'too_many_requests' | 'internal_error' | 'write_contended';
379
+ export type ProblemTypeCatalog = 'blank_axis' | 'invalid_cursor' | 'invalid_filter_key' | 'invalid_limit' | 'invalid_signature' | 'malformed_body' | 'non_range_filter_value' | 'non_scalar_axis' | 'non_scalar_filter_value' | 'parameter_missing' | 'parameter_not_object' | 'unknown_axis' | 'unknown_key' | 'unsupported_axis' | 'valid_axis_on_timeline' | 'unauthorized' | 'company_scoped_key_required' | 'forbidden' | 'forbidden_key' | 'insufficient_api_key_scope' | 'user_scoped_key_required' | 'not_found' | 'already_terminated' | 'import_in_progress' | 'product_archived' | 'recorded_since_termination' | 'span_beyond_timeline_end' | 'version_overlap' | 'precondition_failed' | 'attachment_not_image' | 'company_not_employer' | 'confirm_apprenticeship_conflict' | 'destroy_restricted' | 'interval_too_wide' | 'invalid_date' | 'invalid_filter_value' | 'invalid_iso8601_duration' | 'invalid_placement_move' | 'invalid_signed_id' | 'non_numeric_cents' | 'nothing_to_cancel' | 'pagination_failed' | 'subtype_foreign_keys' | 'synced_determination' | 'user_not_company_member' | 'validation_failed' | 'wage_schedule_outside_program' | 'precondition_required' | 'too_many_requests' | 'internal_error' | 'write_contended';
374
380
  export type ApiKeyScopeResponseObject = {
375
381
  resource: string;
376
382
  action: 'read' | 'create' | 'update' | 'delete';
@@ -1026,7 +1032,7 @@ export type ApprenticeshipOccupationUpdateParameters = {
1026
1032
  */
1027
1033
  export type ApprenticeshipProgramEmployerParameters = {
1028
1034
  /**
1029
- * ID of the company to authorize as an employer. An API key may name only its own company. Required.
1035
+ * 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.
1030
1036
  */
1031
1037
  company_id: string;
1032
1038
  /**
@@ -1035,11 +1041,11 @@ export type ApprenticeshipProgramEmployerParameters = {
1035
1041
  require_timecard_allocation?: boolean;
1036
1042
  };
1037
1043
  /**
1038
- * Update an employer authorization in a program. Send only the fields to change; only the program's sponsor may manage this roster, and an API key may change only the row naming its own company.
1044
+ * Update an employer authorization in a program. Send only the fields to change; only the program's sponsor may manage this roster, and a company-scoped key may change only the row naming its own company.
1039
1045
  */
1040
1046
  export type ApprenticeshipProgramEmployerUpdateParameters = {
1041
1047
  /**
1042
- * ID of the company authorized as an employer. An API key may name only its own company; omit to leave it unchanged.
1048
+ * 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.
1043
1049
  */
1044
1050
  company_id?: string;
1045
1051
  /**
@@ -1528,7 +1534,7 @@ export type PeopleEmploymentCreateParameters = {
1528
1534
  */
1529
1535
  user_id: string;
1530
1536
  /**
1531
- * First day of the stint, as a calendar date (`YYYY-MM-DD`). Required; interpreted at midnight in the credential company's time zone. A value carrying a time component is refused with `422` rather than truncated.
1537
+ * First day of the stint, as a calendar date (`YYYY-MM-DD`). Required; interpreted at midnight in the credential company's time zone.
1532
1538
  */
1533
1539
  hire_date: string;
1534
1540
  /**
@@ -1711,7 +1717,7 @@ export type PeopleEmploymentScheduledChangeUpdateParameters = {
1711
1717
  */
1712
1718
  export type PeopleEmploymentGenesisParameters = {
1713
1719
  /**
1714
- * The timeline's new start, as a calendar date (`YYYY-MM-DD`). Required; a value carrying a time component is refused with `422` rather than truncated. Moving it earlier extends the first version back to it. Moving it later drops every version whose coverage ended at or before it and truncates the one spanning it, so what those versions said stops being readable. Refused with `422` when the employment has no finite start or the new start would fall at or after a scheduled termination.
1720
+ * The timeline's new start, as a calendar date (`YYYY-MM-DD`). Required. Moving it earlier extends the first version back to it. Moving it later drops every version whose coverage ended at or before it and truncates the one spanning it, so what those versions said stops being readable. Refused with `422` when the employment has no finite start or the new start would fall at or after a scheduled termination.
1715
1721
  */
1716
1722
  effective_date?: string;
1717
1723
  };
@@ -1720,7 +1726,7 @@ export type PeopleEmploymentGenesisParameters = {
1720
1726
  */
1721
1727
  export type PeopleEmploymentScheduledTerminationParameters = {
1722
1728
  /**
1723
- * The exclusive end of the employment's valid-time timeline, as a calendar date (`YYYY-MM-DD`). Required; a value carrying a time component is refused with `422` rather than truncated. Must fall after the employment's genesis. Scheduling removes versions that start on or after the new end and truncates the version spanning it. An employment holds at most one scheduled termination; cancel the standing one before scheduling another. Cancellation reopens the last surviving version and does not restore removed versions.
1729
+ * The exclusive end of the employment's valid-time timeline, as a calendar date (`YYYY-MM-DD`). Required. Must fall after the employment's genesis. Scheduling removes versions that start on or after the new end and truncates the version spanning it. An employment holds at most one scheduled termination; cancel the standing one before scheduling another. Cancellation reopens the last surviving version and does not restore removed versions.
1724
1730
  */
1725
1731
  effective_date: string;
1726
1732
  };
@@ -1749,10 +1755,6 @@ export type PeopleEmploymentUpdateParameters = {
1749
1755
  */
1750
1756
  enrolled_in_t_and_a?: boolean;
1751
1757
  };
1752
- export type PeopleEmploymentCustomFieldResponseObject = {
1753
- custom_field_config_id: string;
1754
- value: string | null;
1755
- };
1756
1758
  /**
1757
1759
  * Update stored custom-field values for one employment family in a single batch. The batch must contain at least one row. Omitted configurations keep their values, and an explicit null is stored.
1758
1760
  */
@@ -2420,11 +2422,11 @@ export type PerDiemParameters = {
2420
2422
  */
2421
2423
  active?: boolean | null;
2422
2424
  /**
2423
- * IDs of the work types this per diem applies to.
2425
+ * IDs of the work types this per diem applies to. Each must be shared or the company's own.
2424
2426
  */
2425
2427
  work_type_ids?: Array<string>;
2426
2428
  /**
2427
- * IDs of the timecodes this per diem applies to.
2429
+ * IDs of the timecodes this per diem applies to. Each must belong to the company.
2428
2430
  */
2429
2431
  timekeeping_timecode_ids?: Array<string>;
2430
2432
  };
@@ -2461,11 +2463,11 @@ export type PerDiemUpdateParameters = {
2461
2463
  */
2462
2464
  active?: boolean | null;
2463
2465
  /**
2464
- * Complete set of work type IDs this per diem applies to. Omit to leave it unchanged.
2466
+ * Complete set of work type IDs this per diem applies to. Each must be shared or the company's own. Omit to leave it unchanged.
2465
2467
  */
2466
2468
  work_type_ids?: Array<string>;
2467
2469
  /**
2468
- * Complete set of timecode IDs this per diem applies to. Omit to leave it unchanged.
2470
+ * Complete set of timecode IDs this per diem applies to. Each must belong to the company. Omit to leave it unchanged.
2469
2471
  */
2470
2472
  timekeeping_timecode_ids?: Array<string>;
2471
2473
  };
@@ -3332,7 +3334,7 @@ export type PwaCompanyUserDetailsResponseObject = {
3332
3334
  or_boli_race: Array<'american_indian_or_alaska_native' | 'asian' | 'hispanic_or_latino' | 'black_or_african_american' | 'native_hawaiian_or_pacific_islander' | 'white' | 'portuguese_or_brazilian'> | null;
3333
3335
  };
3334
3336
  /**
3335
- * Create a worker's PWA compliance details at a company. The company is taken from the API key. user_id names the worker and is required; every other field is optional — send whichever your jurisdiction's certified-payroll export requires. Only the keys listed here are accepted — any other key is rejected with 400 unknown_key.
3337
+ * Create a worker's PWA compliance details at a company. The company is taken from the API key. user_id names the worker and is required; every other field is optional — send whichever your jurisdiction's certified-payroll export requires.
3336
3338
  */
3337
3339
  export type PwaCompanyUserDetailsParameters = {
3338
3340
  /**
@@ -3425,7 +3427,7 @@ export type PwaCompanyUserDetailsParameters = {
3425
3427
  or_boli_race?: Array<'american_indian_or_alaska_native' | 'asian' | 'hispanic_or_latino' | 'black_or_african_american' | 'native_hawaiian_or_pacific_islander' | 'white' | 'portuguese_or_brazilian'> | null;
3426
3428
  };
3427
3429
  /**
3428
- * Update a worker's PWA compliance details. The company is taken from the API key. Every field is optional — send only what changes, and omitted fields are left unchanged. user_id is absent by design — the company/user pair is fixed at creation, so sending the key is rejected with 400 unknown_key, as is any other key not listed here.
3430
+ * Update a worker's PWA compliance details. The company is taken from the API key. Every field is optional — send only what changes, and omitted fields are left unchanged. The company/user pair is fixed at creation.
3429
3431
  */
3430
3432
  export type PwaCompanyUserDetailsUpdateParameters = {
3431
3433
  /**
@@ -3819,7 +3821,10 @@ export type JobResponseObject = {
3819
3821
  * How this job records production completions: one of none (opts out), feature (per site feature, e.g. a turbine), or quantity (a unit count, e.g. modules). Locked once any completion exists.
3820
3822
  */
3821
3823
  production_tracking_kind: 'none' | 'feature' | 'quantity';
3822
- [key: string]: unknown;
3824
+ /**
3825
+ * Custom-field values stored on the job, one row per configuration, including hidden configurations; empty when none.
3826
+ */
3827
+ custom_fields: Array<CustomFieldResponseObject>;
3823
3828
  };
3824
3829
  /**
3825
3830
  * Prevailing-wage / apprenticeship (PWA) compliance details for a job, used in certified-payroll reporting. Common fields are always present when this object exists; regional fields appear only when applicable to the job's region and regional PWA mode. The property is null when no PWA details have been configured; PWA tracking modes alone do not materialize it.
@@ -3891,13 +3896,9 @@ export type PwaJobDetailsResponseObject = {
3891
3896
  ny_dol_prc_number?: string | null;
3892
3897
  } | null;
3893
3898
  /**
3894
- * Fields shared by job creation and updates. Updates may omit any field to preserve its current value. The resulting job must still satisfy its schedule and PWA validation rules. Extra keys are accepted, including custom fields.
3899
+ * Fields shared by job creation and updates. Updates may omit any field to preserve its current value. The resulting job must still satisfy its schedule and PWA validation rules.
3895
3900
  */
3896
3901
  export type JobParameters = {
3897
- /**
3898
- * ID of a job template to copy this job from; when set, the new job is created from that template. Null or omit to start from a blank job.
3899
- */
3900
- template_id?: string | null;
3901
3902
  /**
3902
3903
  * Human-readable job name, unique within the creating company; null when unset.
3903
3904
  */
@@ -4049,19 +4050,6 @@ export type JobParameters = {
4049
4050
  */
4050
4051
  label?: string | null;
4051
4052
  } | null;
4052
- /**
4053
- * Custom field values to add to the job, addressed by custom field config id; null when none. Each row creates a value, so a config that already carries one on this job is refused with a 422 — to overwrite, send the value under a top-level key named after the custom field instead. Supplying this key turns that by-name form off for the request.
4054
- */
4055
- custom_fields_attributes?: Array<{
4056
- /**
4057
- * ID of the custom field config the value belongs to; the config must belong to the company that owns the job.
4058
- */
4059
- custom_field_config_id: string;
4060
- /**
4061
- * Value to store for the custom field; null when unset.
4062
- */
4063
- value?: string | null;
4064
- }> | null;
4065
4053
  /**
4066
4054
  * Prevailing-wage / apprenticeship (PWA) compliance details to set on the job. Omit or send an empty object to make no PWA-details changes; null and non-object values are rejected. The accepted regional keys depend on the effective region and regional PWA mode.
4067
4055
  */
@@ -4131,22 +4119,50 @@ export type JobParameters = {
4131
4119
  */
4132
4120
  ny_dol_prc_number?: string | null;
4133
4121
  };
4134
- [key: string]: unknown;
4135
4122
  };
4136
4123
  /**
4137
- * Parameters for creating a job. `requested_by_company_id` and `created_by_user_id` are required. Sets the job's schedule, work types, address, and optional Prevailing Wage / Apprenticeship (PWA) compliance.
4124
+ * Parameters for creating a job. `requested_by_company_id` and `created_by_user_id` are required. Sets the job's schedule, work types, address, custom-field values, and optional Prevailing Wage / Apprenticeship (PWA) compliance.
4138
4125
  */
4139
4126
  export type JobCreateParameters = JobParameters & {
4140
- [key: string]: unknown;
4127
+ /**
4128
+ * ID of a job template to copy this job from; when set, the new job is created from that template. Null or omit to start from a blank job.
4129
+ */
4130
+ template_id?: string | null;
4131
+ /**
4132
+ * Values for the job'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.
4133
+ */
4134
+ custom_fields?: Array<{
4135
+ /**
4136
+ * ID of a visible custom-field configuration owned by the credential company and applicable to jobs.
4137
+ */
4138
+ custom_field_config_id: string;
4139
+ /**
4140
+ * Value as text or null.
4141
+ */
4142
+ value: string | null;
4143
+ }>;
4141
4144
  };
4142
4145
  /**
4143
- * Parameters for updating an existing job. Every field is optional; omit a field to preserve its current value. The resulting job must still satisfy schedule and PWA validation rules. Accepts every shared job field plus a directly settable status.
4146
+ * Parameters for updating an existing job. Every field is optional; omit a field to preserve its current value. The resulting job must still satisfy schedule and PWA validation rules. Accepts every shared job field plus a directly settable status and custom-field changes.
4144
4147
  */
4145
4148
  export type JobUpdateParameters = JobParameters & {
4146
4149
  /**
4147
4150
  * Settable status values. Other statuses are derived from job and position state and cannot be set directly.
4148
4151
  */
4149
4152
  status?: 'completed' | 'cancelled' | 'disputed';
4153
+ /**
4154
+ * Custom-field values to change, as a list of configurations and their replacement values. Each configuration may appear only once. Only the listed configurations change; every other configuration keeps its stored value, and an omitted or empty list changes none.
4155
+ */
4156
+ custom_fields?: Array<{
4157
+ /**
4158
+ * ID of a custom-field configuration owned by the credential company and applicable to jobs. A hidden configuration may be updated only when the job already stores its value.
4159
+ */
4160
+ custom_field_config_id: string;
4161
+ /**
4162
+ * Replacement value as text or null. Null stores a value rather than removing the row.
4163
+ */
4164
+ value: string | null;
4165
+ }>;
4150
4166
  };
4151
4167
  /**
4152
4168
  * A reusable job template — a saved job pattern for quickly creating new jobs with the same setup. Read-only through the API (listing only).
@@ -4205,7 +4221,7 @@ export type GroupUpdateParameters = {
4205
4221
  name?: string;
4206
4222
  };
4207
4223
  /**
4208
- * A worker as your company sees them: the cross-company person merged with their employment record at your company (title, pay, benefits, and accruals), their roles at your company, and optional prevailing-wage compliance details. Your company sees everyone it employs, everyone it has granted a role, and everyone it has invited, which is the same set the web app shows. A role holder or an invitee your company does not employ has no employment record to merge, so the employment fields (employment_id through employment_window, plus manager_user_id) are null for them, no employment custom fields are published for them, and employment_state reads none. There is no delete — removing a worker terminates their employment at the company (see the user-company endpoints), which sets termination_date and drops them from the default list.
4224
+ * A worker as your company sees them: the cross-company person merged with their employment record at your company (title, pay, benefits, and accruals), their roles at your company, and optional prevailing-wage compliance details. Your company sees everyone it employs, everyone it has granted a role, and everyone it has invited, which is the same set the web app shows. A role holder or an invitee your company does not employ has no employment record to merge, so the employment fields (employment_id through employment_window, plus manager_user_id and custom_fields) are null for them, and employment_state reads none. There is no delete — removing a worker terminates their employment at the company (see the user-company endpoints), which sets termination_date and drops them from the default list.
4209
4225
  */
4210
4226
  export type UserResponseObject = {
4211
4227
  /**
@@ -4285,7 +4301,7 @@ export type UserResponseObject = {
4285
4301
  */
4286
4302
  employment_state: 'active' | 'scheduled' | 'terminated' | 'none';
4287
4303
  /**
4288
- * Identity of the worker's employment at your company, stable across employment versions — a title change or a raise versions the employment without changing this id. It names the employment that this object's employment fields (type through employment_window, plus manager_user_id and any employment custom fields) describe: a worker rehired after an earlier stint holds a second employment with its own id, and exactly one of them is published here.
4304
+ * Identity of the worker's employment at your company, stable across employment versions — a title change or a raise versions the employment without changing this id. It names the employment that this object's employment fields (type through employment_window, plus manager_user_id and custom_fields) describe: a worker rehired after an earlier stint holds a second employment with its own id, and exactly one of them is published here.
4289
4305
  */
4290
4306
  employment_id: string | null;
4291
4307
  type: UserCompanyType;
@@ -4310,21 +4326,21 @@ export type UserResponseObject = {
4310
4326
  */
4311
4327
  compensation_type: string | null;
4312
4328
  /**
4313
- * Base pay rate, formatted as a currency string in the company's currency. Null when unset.
4329
+ * Base pay rate, formatted as a currency string in the company's currency. Present for company keys, company administrators, and the employed person, and omitted otherwise; null when authorized but unset.
4314
4330
  */
4315
- hourly_rate: string | null;
4331
+ hourly_rate?: string | null;
4316
4332
  /**
4317
- * Annual training-fund contribution for the worker, formatted as a currency string. Null when unset. Used in prevailing-wage fringe calculations.
4333
+ * Annual training-fund contribution for the worker, formatted as a currency string. Present for company keys, company administrators, and the employed person, and omitted otherwise; null when authorized but unset. Used in prevailing-wage fringe calculations.
4318
4334
  */
4319
- training_annual_amount: string | null;
4335
+ training_annual_amount?: string | null;
4320
4336
  /**
4321
- * Employer-paid annual combined health benefit, formatted as a currency string. Null when unset. Used in prevailing-wage fringe calculations.
4337
+ * Employer-paid annual combined health benefit, formatted as a currency string. Present for company keys, company administrators, and the employed person, and omitted otherwise; null when authorized but unset. Used in prevailing-wage fringe calculations.
4322
4338
  */
4323
- employer_combined_health_amount: string | null;
4339
+ employer_combined_health_amount?: string | null;
4324
4340
  /**
4325
- * Employer-paid annual combined savings and retirement benefit, formatted as a currency string. Null when unset. Used in prevailing-wage fringe calculations.
4341
+ * Employer-paid annual combined savings and retirement benefit, formatted as a currency string. Present for company keys, company administrators, and the employed person, and omitted otherwise; null when authorized but unset. Used in prevailing-wage fringe calculations.
4326
4342
  */
4327
- employer_combined_savings: string | null;
4343
+ employer_combined_savings?: string | null;
4328
4344
  /**
4329
4345
  * Annualized minutes the worker is expected to work, used to annualize fringe benefits. Null to fall back to the standard full-time year.
4330
4346
  */
@@ -4366,6 +4382,10 @@ export type UserResponseObject = {
4366
4382
  * Id of the worker's manager at your company (another user). Null when none.
4367
4383
  */
4368
4384
  manager_user_id: string | null;
4385
+ /**
4386
+ * Custom-field values stored on the employment, one row per configuration, including hidden configurations; empty when none. They belong to the whole employment rather than the version published here. Null for a role holder or an invitee your company does not employ.
4387
+ */
4388
+ custom_fields: Array<CustomFieldResponseObject> | null;
4369
4389
  /**
4370
4390
  * The worker's roles at your company, as an array of role strings such as TECHNICIAN, FIELD_LEAD, MANAGER, SAFETY_MANAGER, and ADMIN. Only roles at the company that owns the API key are listed.
4371
4391
  */
@@ -4463,7 +4483,6 @@ export type UserResponseObject = {
4463
4483
  */
4464
4484
  or_boli_race: Array<'american_indian_or_alaska_native' | 'asian' | 'hispanic_or_latino' | 'black_or_african_american' | 'native_hawaiian_or_pacific_islander' | 'white' | 'portuguese_or_brazilian'> | null;
4465
4485
  } | null;
4466
- [key: string]: unknown;
4467
4486
  };
4468
4487
  /**
4469
4488
  * Request body for updating a worker's profile. Limited to person-level identity fields; employment, roles, and compliance are managed through onboarding (create) and the user-company endpoints.
@@ -4534,10 +4553,6 @@ export type UserParameters = ({
4534
4553
  */
4535
4554
  skip_invite: true;
4536
4555
  }) & {
4537
- /**
4538
- * Id of the company to onboard the worker into. Must be the company that owns the API key.
4539
- */
4540
- company_id?: string;
4541
4556
  /**
4542
4557
  * Work email address; the worker signs in and receives their invite here. Null when the worker has none. Required to send an invite unless a phone number is given.
4543
4558
  */
@@ -4631,6 +4646,10 @@ export type UserParameters = ({
4631
4646
  * Base pay rate as a decimal string (for example "32.50"), in the company's currency.
4632
4647
  */
4633
4648
  hourly_rate?: string;
4649
+ /**
4650
+ * How the worker is paid: `hourly` or `salary`. Omit to use `hourly`; null is not accepted.
4651
+ */
4652
+ compensation_type?: 'hourly' | 'salary';
4634
4653
  /**
4635
4654
  * Whether the worker is eligible for overtime pay.
4636
4655
  */
@@ -4675,6 +4694,19 @@ export type UserParameters = ({
4675
4694
  * Ids of the groups to add the worker to at your company.
4676
4695
  */
4677
4696
  group_ids?: Array<number>;
4697
+ /**
4698
+ * 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.
4699
+ */
4700
+ custom_fields?: Array<{
4701
+ /**
4702
+ * ID of a visible custom-field configuration owned by the credential company and applicable to employments.
4703
+ */
4704
+ custom_field_config_id: string;
4705
+ /**
4706
+ * Value as text or null.
4707
+ */
4708
+ value: string | null;
4709
+ }>;
4678
4710
  /**
4679
4711
  * Prevailing-wage and apprenticeship compliance details to create for the worker (home address, demographics, and jurisdiction-specific reporting fields). Omit when the worker has no compliance record.
4680
4712
  */
@@ -4764,7 +4796,6 @@ export type UserParameters = ({
4764
4796
  */
4765
4797
  or_boli_race?: Array<'american_indian_or_alaska_native' | 'asian' | 'hispanic_or_latino' | 'black_or_african_american' | 'native_hawaiian_or_pacific_islander' | 'white' | 'portuguese_or_brazilian'> | null;
4766
4798
  } | null;
4767
- [key: string]: unknown;
4768
4799
  };
4769
4800
  /**
4770
4801
  * A page of time entries, with pagination metadata and navigation links.
@@ -4938,10 +4969,6 @@ export type ManagerTimeEntryApprovalParameters = {
4938
4969
  * The time-entry body fields shared by the create and update bodies; each of those declares its own requiredness.
4939
4970
  */
4940
4971
  export type TimeEntryParameters = {
4941
- /**
4942
- * Id of the time card to attach the entry to; user_id is derived server-side from it. Required on create.
4943
- */
4944
- timekeeping_time_card_id?: string;
4945
4972
  /**
4946
4973
  * these will be rounded to the nearest second
4947
4974
  */
@@ -4967,7 +4994,7 @@ export type TimeEntryParameters = {
4967
4994
  */
4968
4995
  description?: string | null;
4969
4996
  /**
4970
- * Base hourly rate in cents, sent as a string to preserve precision; omit it to let the system derive the rate from the position/user default. Only a company-scoped key or a key whose user is an admin in the entry's company may send it, and null from those keys also derives the default. Any other user-scoped key must omit it; sending it, null included, is refused with 403.
4997
+ * Base hourly rate in cents, sent as a string to preserve precision; omit it to let the system derive the rate from the position/user default, and null also derives the default. Admin only on user-scoped keys.
4971
4998
  */
4972
4999
  hourly_rate_cents?: string | null;
4973
5000
  /**
@@ -4976,9 +5003,13 @@ export type TimeEntryParameters = {
4976
5003
  feature_ids?: Array<string> | null;
4977
5004
  };
4978
5005
  /**
4979
- * Request body for creating a time entry — the time_entry_parameters fields, of which timekeeping_time_card_id, start_time, and end_time are required, plus the explicit "no feature" acknowledgement.
5006
+ * Request body for creating a time entry — the time_entry_parameters fields plus the time card and the explicit "no feature" acknowledgement. timekeeping_time_card_id, start_time, and end_time are required.
4980
5007
  */
4981
5008
  export type TimeEntryCreateParameters = TimeEntryParameters & {
5009
+ /**
5010
+ * Id of the time card to attach the entry to; user_id is derived server-side from it. Set at creation.
5011
+ */
5012
+ timekeeping_time_card_id: string;
4982
5013
  /**
4983
5014
  * Set true to record an explicit "no feature" answer when the job requires a feature allocation and you're not supplying one.
4984
5015
  */
@@ -4993,6 +5024,69 @@ export type TimeEntryUpdateParameters = TimeEntryParameters & {
4993
5024
  */
4994
5025
  confirm_allocation_conflict?: boolean | null;
4995
5026
  };
5027
+ /**
5028
+ * A form definition — a SurveyJS form template built and versioned in the web app's form builder. The same object the list door serializes. Read-only.
5029
+ */
5030
+ export type FormDefinitionObject = {
5031
+ /**
5032
+ * Unique identifier.
5033
+ */
5034
+ id: string;
5035
+ /**
5036
+ * Human-readable name of the form.
5037
+ */
5038
+ name: string;
5039
+ /**
5040
+ * Free-text description of the form.
5041
+ */
5042
+ description: string;
5043
+ /**
5044
+ * ID of the company that owns this form.
5045
+ */
5046
+ company_id: string;
5047
+ /**
5048
+ * ID of the user who last modified the form; null when unknown.
5049
+ */
5050
+ modified_by_user_id: string | null;
5051
+ /**
5052
+ * Lowercase tags on the form; null when none are set.
5053
+ */
5054
+ tags: Array<string> | null;
5055
+ /**
5056
+ * Names of the questions whose answers make up a submission's title; null when none are set.
5057
+ */
5058
+ title_keys: Array<string> | null;
5059
+ /**
5060
+ * Whether the form can be edited.
5061
+ */
5062
+ editable: boolean;
5063
+ /**
5064
+ * Whether the form is always shown to users.
5065
+ */
5066
+ always_visible: boolean;
5067
+ /**
5068
+ * Whether the form collects sensitive data.
5069
+ */
5070
+ sensitive_form: boolean;
5071
+ /**
5072
+ * Whether a user's prior answers can be carried forward into a new submission.
5073
+ */
5074
+ allow_carry_forward: boolean;
5075
+ /**
5076
+ * Revision number of the form's active version; null when it has no active version.
5077
+ */
5078
+ current_revision: number | null;
5079
+ /**
5080
+ * The SurveyJS form schema (questions, pages, and logic).
5081
+ */
5082
+ json: {
5083
+ [key: string]: unknown;
5084
+ };
5085
+ /**
5086
+ * When the record was created (ISO 8601).
5087
+ */
5088
+ created_at: string;
5089
+ };
4996
5090
  /**
4997
5091
  * A page of form definitions. A form definition is a SurveyJS form template built and versioned in the web app's form builder, so this API is read-only.
4998
5092
  */
@@ -5002,66 +5096,7 @@ export type FormDefinitionResponseObject = {
5002
5096
  /**
5003
5097
  * The page of form definitions.
5004
5098
  */
5005
- data: Array<{
5006
- /**
5007
- * Unique identifier.
5008
- */
5009
- id: string;
5010
- /**
5011
- * Human-readable name of the form.
5012
- */
5013
- name: string;
5014
- /**
5015
- * Free-text description of the form.
5016
- */
5017
- description: string;
5018
- /**
5019
- * ID of the company that owns this form.
5020
- */
5021
- company_id: string;
5022
- /**
5023
- * ID of the user who last modified the form; null when unknown.
5024
- */
5025
- modified_by_user_id: string | null;
5026
- /**
5027
- * Lowercase tags on the form; null when none are set.
5028
- */
5029
- tags: Array<string> | null;
5030
- /**
5031
- * Names of the questions whose answers make up a submission's title; null when none are set.
5032
- */
5033
- title_keys: Array<string> | null;
5034
- /**
5035
- * Whether the form can be edited.
5036
- */
5037
- editable: boolean;
5038
- /**
5039
- * Whether the form is always shown to users.
5040
- */
5041
- always_visible: boolean;
5042
- /**
5043
- * Whether the form collects sensitive data.
5044
- */
5045
- sensitive_form: boolean;
5046
- /**
5047
- * Whether a user's prior answers can be carried forward into a new submission.
5048
- */
5049
- allow_carry_forward: boolean;
5050
- /**
5051
- * Revision number of the form's active version; null when it has no active version.
5052
- */
5053
- current_revision: number | null;
5054
- /**
5055
- * The SurveyJS form schema (questions, pages, and logic).
5056
- */
5057
- json: {
5058
- [key: string]: unknown;
5059
- };
5060
- /**
5061
- * When the record was created (ISO 8601).
5062
- */
5063
- created_at: string;
5064
- }>;
5099
+ data: Array<FormDefinitionObject>;
5065
5100
  };
5066
5101
  /**
5067
5102
  * A page of form submissions — the lighter list representation. A submission is a user's completed form; submissions are created in the app, so this API is read-only.
@@ -5148,7 +5183,7 @@ export type FormSubmissionResponseObject = {
5148
5183
  updated_at: string;
5149
5184
  };
5150
5185
  /**
5151
- * Request body for updating a worker's employment at your company. Corrects administrative fields (employment type, title, manager, payroll id, hire date, and time-and-attendance enrollment) across the whole employment history. For time-effective pay changes, use the scheduled-changes endpoints instead.
5186
+ * Request body for updating a worker's employment at your company. Corrects administrative fields (employment type, title, manager, payroll id, hire date, and time-and-attendance enrollment) across the whole employment history, and changes the custom-field values it lists. For time-effective pay changes, use the scheduled-changes endpoints instead.
5152
5187
  */
5153
5188
  export type UserCompanyParameters = {
5154
5189
  type?: UserCompanyType;
@@ -5172,10 +5207,22 @@ export type UserCompanyParameters = {
5172
5207
  * Whether the worker is enrolled in Time and Attendance (time tracking).
5173
5208
  */
5174
5209
  enrolled_in_t_and_a?: boolean;
5175
- [key: string]: unknown;
5210
+ /**
5211
+ * Custom-field values to change, as a list of configurations and their replacement values. Each configuration may appear only once. Only the listed configurations change; every other configuration keeps its stored value, and an omitted or empty list changes none.
5212
+ */
5213
+ custom_fields?: Array<{
5214
+ /**
5215
+ * ID of a custom-field configuration owned by the credential company and applicable to employments. A hidden configuration may be updated only when the employment already stores its value.
5216
+ */
5217
+ custom_field_config_id: string;
5218
+ /**
5219
+ * Replacement value as text or null. Null stores a value rather than removing the row.
5220
+ */
5221
+ value: string | null;
5222
+ }>;
5176
5223
  };
5177
5224
  /**
5178
- * Request body for adding a worker to your company, creating their employment record. hire_date is required and sets when employment begins; the remaining fields seed the initial title, pay, benefits, and accruals. Returns the worker with the new employment flattened onto it.
5225
+ * Request body for adding a worker to your company, creating their employment record and its custom-field values. hire_date is required and sets when employment begins; the remaining fields seed the initial title, pay, benefits, and accruals. Returns the worker with the new employment flattened onto it.
5179
5226
  */
5180
5227
  export type UserCompanyCreateParameters = {
5181
5228
  /**
@@ -5239,7 +5286,19 @@ export type UserCompanyCreateParameters = {
5239
5286
  * Paid training time for the year, in minutes.
5240
5287
  */
5241
5288
  training_annual_minutes?: number | null;
5242
- [key: string]: unknown;
5289
+ /**
5290
+ * 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.
5291
+ */
5292
+ custom_fields?: Array<{
5293
+ /**
5294
+ * ID of a visible custom-field configuration owned by the credential company and applicable to employments.
5295
+ */
5296
+ custom_field_config_id: string;
5297
+ /**
5298
+ * Value as text or null.
5299
+ */
5300
+ value: string | null;
5301
+ }>;
5243
5302
  };
5244
5303
  /**
5245
5304
  * A worker's scheduled compensation timeline at your company — the version currently in effect plus any future-dated versions.
@@ -5485,6 +5544,19 @@ export type CompanyParameters = ({
5485
5544
  naics_code?: string | null;
5486
5545
  linkedin_url?: string | null;
5487
5546
  };
5547
+ /**
5548
+ * A custom-field value stored on a record, addressed by the configuration it belongs to.
5549
+ */
5550
+ export type CustomFieldResponseObject = {
5551
+ /**
5552
+ * ID of the custom-field configuration the value belongs to. Join it to `GET /api/v1/custom_field_configs` for the field's name and definition.
5553
+ */
5554
+ custom_field_config_id: string;
5555
+ /**
5556
+ * The stored value as text; null when a null is stored.
5557
+ */
5558
+ value: string | null;
5559
+ };
5488
5560
  /**
5489
5561
  * A custom field definition — a company-defined attribute attached to one kind of record (jobs, workers, apprentices, or the company itself). Deleting one is blocked while any record still holds a value for it.
5490
5562
  */
@@ -6687,7 +6759,7 @@ export type PayrollFringeBenefitPlanResponseObject = {
6687
6759
  */
6688
6760
  export type PayrollFringeBenefitPlanParameters = {
6689
6761
  /**
6690
- * ID of the pay schedule that owns the plan, stable across all of its versions. Required.
6762
+ * ID of the pay schedule that owns the plan, stable across all of its versions. Required. Set at creation.
6691
6763
  */
6692
6764
  timekeeping_pay_period_config_id: string;
6693
6765
  /**
@@ -6747,10 +6819,6 @@ export type PayrollFringeBenefitPlanParameters = {
6747
6819
  * Request body for updating a fringe-benefit plan. Send only the fields to change.
6748
6820
  */
6749
6821
  export type PayrollFringeBenefitPlanUpdateParameters = {
6750
- /**
6751
- * ID of the pay schedule that owns the plan, stable across all of its versions. Omit to leave it unchanged.
6752
- */
6753
- timekeeping_pay_period_config_id?: string;
6754
6822
  /**
6755
6823
  * Human-readable name of the plan. Omit to leave it unchanged.
6756
6824
  */
@@ -6965,7 +7033,7 @@ export type PayrollRunResponseObject = {
6965
7033
  updated_at: string;
6966
7034
  };
6967
7035
  /**
6968
- * Create a payroll run. company_id, run_type, and run_date are required; an on-cycle run additionally requires timekeeping_pay_period_id. Only the keys listed here are accepted — any other key is rejected with 400 unknown_key.
7036
+ * Create a payroll run. company_id, run_type, and run_date are required; an on-cycle run additionally requires timekeeping_pay_period_id.
6969
7037
  */
6970
7038
  export type PayrollRunParameters = {
6971
7039
  /**
@@ -6973,11 +7041,11 @@ export type PayrollRunParameters = {
6973
7041
  */
6974
7042
  company_id: string;
6975
7043
  /**
6976
- * ID of the pay period the run is for; required for an on-cycle run, omitted for an off-cycle run.
7044
+ * ID of the pay period the run is for; required for an on-cycle run, omitted for an off-cycle run. Must belong to the run's company.
6977
7045
  */
6978
7046
  timekeeping_pay_period_id?: string | null;
6979
7047
  /**
6980
- * ID of the payroll-system credential that sourced the run.
7048
+ * ID of the payroll-system credential that sourced the run. Must belong to the run's company.
6981
7049
  */
6982
7050
  payrolls_credential_id?: string | null;
6983
7051
  /**
@@ -6994,15 +7062,15 @@ export type PayrollRunParameters = {
6994
7062
  external_id?: string | null;
6995
7063
  };
6996
7064
  /**
6997
- * Update a payroll run. Every field is optional — send only what changes. company_id is absent by design — the run's company is fixed at creation, so sending the key is rejected with 400 unknown_key, as is any other key not listed here.
7065
+ * Update a payroll run. Every field is optional — send only what changes. The run's company is fixed at creation.
6998
7066
  */
6999
7067
  export type PayrollRunUpdateParameters = {
7000
7068
  /**
7001
- * ID of the pay period the run is for; required for an on-cycle run, omitted for an off-cycle run.
7069
+ * ID of the pay period the run is for; required for an on-cycle run, omitted for an off-cycle run. Must belong to the run's company.
7002
7070
  */
7003
7071
  timekeeping_pay_period_id?: string | null;
7004
7072
  /**
7005
- * ID of the payroll-system credential that sourced the run.
7073
+ * ID of the payroll-system credential that sourced the run. Must belong to the run's company.
7006
7074
  */
7007
7075
  payrolls_credential_id?: string | null;
7008
7076
  /**
@@ -7148,7 +7216,7 @@ export type ProjectParameters = {
7148
7216
  */
7149
7217
  created_by_user_id: string;
7150
7218
  /**
7151
- * ID of a project visible to the API key's policy. Send null to make the project a root; the child schedule must fit within the parent's schedule.
7219
+ * ID of a project visible to the API key's policy. The parent must be owned by this project's owner or list that owner in its participating_company_ids. Send null to make the project a root; the child schedule must fit within the parent's schedule.
7152
7220
  */
7153
7221
  parent_id?: string | null;
7154
7222
  /**
@@ -7233,11 +7301,7 @@ export type ProjectUpdateParameters = {
7233
7301
  */
7234
7302
  description?: string | null;
7235
7303
  /**
7236
- * 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.
7237
- */
7238
- created_by_user_id?: string | null;
7239
- /**
7240
- * ID of a project visible to the API key's policy. Send null to make the project a root; the child schedule must fit within the parent's schedule.
7304
+ * ID of a project visible to the API key's policy. The parent must be owned by this project's owner or list that owner in its participating_company_ids. Send null to make the project a root; the child schedule must fit within the parent's schedule.
7241
7305
  */
7242
7306
  parent_id?: string | null;
7243
7307
  /**
@@ -7305,6 +7369,45 @@ export type ProjectUpdateParameters = {
7305
7369
  */
7306
7370
  placed_in_service_date?: string | null;
7307
7371
  };
7372
+ /**
7373
+ * A project–site assignment: the join linking a project to a site, optionally scoping which of that site's features apply. Path `{id}` is this join's id, not the Site's. Not included on project GET.
7374
+ */
7375
+ export type ProjectSiteResponseObject = {
7376
+ /**
7377
+ * Unique identifier.
7378
+ */
7379
+ id: string;
7380
+ /**
7381
+ * ID of the linked site.
7382
+ */
7383
+ site_id: string;
7384
+ /**
7385
+ * IDs of the site's features that apply to this project. Empty when none are scoped.
7386
+ */
7387
+ feature_ids: Array<string>;
7388
+ };
7389
+ /**
7390
+ * Request body for attaching a site to a project. `site_id` is required; `feature_ids` is optional. The project is taken from the path and is not part of the body.
7391
+ */
7392
+ export type ProjectSiteParameters = {
7393
+ /**
7394
+ * ID of a site visible to the API key. The site must be public or private to the project's owning company. Duplicate (project, site) pairs are rejected.
7395
+ */
7396
+ site_id: string;
7397
+ /**
7398
+ * Optional complete set of feature IDs on that site to scope to this project. Omit to attach the site with no features. Each feature must belong to the site.
7399
+ */
7400
+ feature_ids?: Array<string>;
7401
+ };
7402
+ /**
7403
+ * Request body for replacing which of the site's features apply to this project. Every field is optional; omit a field to preserve its current value. `site_id` is create-only and an update that names it is rejected.
7404
+ */
7405
+ export type ProjectSiteUpdateParameters = {
7406
+ /**
7407
+ * Complete desired set of feature IDs on the linked site. Send an empty array to clear the set. Omit to leave the current set unchanged. Each feature must belong to the site.
7408
+ */
7409
+ feature_ids?: Array<string>;
7410
+ };
7308
7411
  export type SiteCheckInResponseObject = {
7309
7412
  id: string;
7310
7413
  site_id: string;
@@ -7924,15 +8027,15 @@ export type PaystubResponseObject = {
7924
8027
  */
7925
8028
  export type PaystubParameters = {
7926
8029
  /**
7927
- * ID of the payroll run this paystub belongs to. Required.
8030
+ * ID of the worker who received the payment. Required. Set at creation.
7928
8031
  */
7929
- payrolls_payroll_run_id: string;
8032
+ user_id: string;
7930
8033
  /**
7931
- * ID of the worker who received the payment. Required.
8034
+ * ID of the payroll run this paystub belongs to. Required.
7932
8035
  */
7933
- user_id: string;
8036
+ payrolls_payroll_run_id: string;
7934
8037
  /**
7935
- * ID of the time card this paystub is for; required for an on-cycle run, not allowed for an off-cycle run.
8038
+ * ID of the time card this paystub is for; required for an on-cycle run, not allowed for an off-cycle run. Must be the worker's own card in the run's company.
7936
8039
  */
7937
8040
  timekeeping_time_card_id?: string | null;
7938
8041
  /**
@@ -7953,11 +8056,7 @@ export type PaystubUpdateParameters = {
7953
8056
  */
7954
8057
  payrolls_payroll_run_id?: string;
7955
8058
  /**
7956
- * ID of the worker who received the payment. Omit to leave it unchanged.
7957
- */
7958
- user_id?: string;
7959
- /**
7960
- * ID of the time card this paystub is for. Omit to leave it unchanged; the resulting paystub must have one for an on-cycle run and must not have one for an off-cycle run.
8059
+ * ID of the time card this paystub is for. Omit to leave it unchanged; the resulting paystub must have one for an on-cycle run and must not have one for an off-cycle run, and it must be the worker's own card in the run's company.
7961
8060
  */
7962
8061
  timekeeping_time_card_id?: string | null;
7963
8062
  /**
@@ -8070,6 +8169,31 @@ export type PriorPeriodAdjustmentParameters = {
8070
8169
  */
8071
8170
  pwa_compliance_eligible?: boolean;
8072
8171
  };
8172
+ /**
8173
+ * Request body for updating a prior period adjustment. Send only the fields to change. The time card is the path parent; payrolls_paystub_line_item_id, created_by_user_id, time_card_id, and adjustment_type are rejected.
8174
+ */
8175
+ export type PriorPeriodAdjustmentUpdateParameters = {
8176
+ /**
8177
+ * Adjustment amount, in cents as a decimal string (e.g. "20000.0" is $200.00). Must be positive and may not exceed the line item's remaining adjustable_amount_cents. Omit to leave it unchanged.
8178
+ */
8179
+ amount_cents?: string;
8180
+ /**
8181
+ * Why the adjustment is being made: one of hours_correction, rate_correction, pwa_compliance, or other. Omit to leave it unchanged.
8182
+ */
8183
+ rationale?: 'hours_correction' | 'other' | 'pwa_compliance' | 'rate_correction';
8184
+ /**
8185
+ * ID of the job on the time card whose obligation this adjustment credits. Required whenever pwa_compliance_eligible is true, since compliance matches adjustments to obligations per job. Omit to leave it unchanged; send null to clear it on a non-PWA adjustment.
8186
+ */
8187
+ job_id?: string | null;
8188
+ /**
8189
+ * Free-text notes on the adjustment. Omit to leave it unchanged; send null to clear it.
8190
+ */
8191
+ notes?: string | null;
8192
+ /**
8193
+ * Whether the adjustment counts toward prevailing-wage / apprenticeship (PWA) compliance. Omit to leave it unchanged.
8194
+ */
8195
+ pwa_compliance_eligible?: boolean;
8196
+ };
8073
8197
  /**
8074
8198
  * What one PWA-tracked job on a time card still owes the worker, from the materialized prevailing-wage compliance view. Read-only.
8075
8199
  */
@@ -8487,21 +8611,71 @@ export type PaystubLineItemUpdateParameters = {
8487
8611
  payrolls_external_map_id?: string;
8488
8612
  };
8489
8613
  /**
8490
- * A spot to be filled on a job — one worker's assignment and the unit against which they track time, carrying the schedule window, assigned worker, function, and the planned pay and fringe rates (including PWA prevailing-wage compliance rates). Always accessed nested under a job.
8614
+ * A job-site join — the Site attached to a Job, plus the subset of that site's features the job is working on. `{id}` is the join row, not the Site.
8491
8615
  */
8492
- export type PositionResponseObject = {
8616
+ export type JobSiteResponseObject = {
8493
8617
  /**
8494
- * Unique identifier.
8618
+ * Id of the job-site join row.
8495
8619
  */
8496
8620
  id: string;
8497
8621
  /**
8498
- * ID of the job this position belongs to; always matches the job in the URL path.
8622
+ * Id of the Site attached to the job.
8499
8623
  */
8500
- job_id: string;
8624
+ site_id: string;
8501
8625
  /**
8502
- * ID of the worker assigned to fill this position; null when the position is unfilled.
8626
+ * Ids of features on this join; empty when the job is attached to the site with no features selected. Always a subset of the site's features.
8503
8627
  */
8504
- fulfilled_by_user_id: string | null;
8628
+ feature_ids: Array<string>;
8629
+ };
8630
+ /**
8631
+ * A page of a job's site joins, with pagination metadata and navigation links.
8632
+ */
8633
+ export type JobSitesResponseObject = {
8634
+ meta: Meta;
8635
+ links: Links;
8636
+ /**
8637
+ * The page of job-site joins.
8638
+ */
8639
+ data: Array<JobSiteResponseObject>;
8640
+ };
8641
+ /**
8642
+ * Request body for attaching a site to a job. `site_id` is required; `feature_ids` is optional and defaults to none.
8643
+ */
8644
+ export type JobSiteParameters = {
8645
+ /**
8646
+ * Id of the Site to attach. Must be visible to the key and belong to the job's provider company (or be public). Duplicate (job, site) pairs are rejected.
8647
+ */
8648
+ site_id: string;
8649
+ /**
8650
+ * Ids of features to select on this join. Each feature must belong to the named site. Omit to attach the site with no features.
8651
+ */
8652
+ feature_ids?: Array<string>;
8653
+ };
8654
+ /**
8655
+ * Request body for replacing the features on an existing job-site join. `site_id` cannot be changed; send a new join to attach a different site.
8656
+ */
8657
+ export type JobSiteUpdateParameters = {
8658
+ /**
8659
+ * Replacement set of feature ids on this join. An empty array clears every feature. Omit the field to leave the current set unchanged.
8660
+ */
8661
+ feature_ids?: Array<string>;
8662
+ };
8663
+ /**
8664
+ * A spot to be filled on a job — one worker's assignment and the unit against which they track time, carrying the schedule window, assigned worker, function, and the planned pay and fringe rates (including PWA prevailing-wage compliance rates). Always accessed nested under a job.
8665
+ */
8666
+ export type PositionResponseObject = {
8667
+ /**
8668
+ * Unique identifier.
8669
+ */
8670
+ id: string;
8671
+ /**
8672
+ * ID of the job this position belongs to; always matches the job in the URL path.
8673
+ */
8674
+ job_id: string;
8675
+ /**
8676
+ * ID of the worker assigned to fill this position; null when the position is unfilled.
8677
+ */
8678
+ fulfilled_by_user_id: string | null;
8505
8679
  /**
8506
8680
  * ID of the pay-rate rule package applied to this position, or null when none is set.
8507
8681
  */
@@ -8696,19 +8870,19 @@ export type PositionParameters = {
8696
8870
  */
8697
8871
  pwa?: boolean;
8698
8872
  /**
8699
- * Desired hourly cash-fringe rate in cents.
8873
+ * Desired hourly cash-fringe rate in cents. Admin only on user-scoped keys.
8700
8874
  */
8701
8875
  cash_fringe_rate_cents?: number | null;
8702
8876
  /**
8703
- * Desired base hourly rate in cents.
8877
+ * Desired base hourly rate in cents. Admin only on user-scoped keys.
8704
8878
  */
8705
8879
  hourly_rate_cents?: number | null;
8706
8880
  /**
8707
- * Desired PWA wage-pay rate in cents (PWA positions only).
8881
+ * Desired PWA wage-pay rate in cents (PWA positions only). Admin only on user-scoped keys.
8708
8882
  */
8709
8883
  pwa_wage_pay_rate_cents?: number | null;
8710
8884
  /**
8711
- * Desired hourly wage-adder rate in cents.
8885
+ * Desired hourly wage-adder rate in cents. Admin only on user-scoped keys.
8712
8886
  */
8713
8887
  wage_adder_rate_cents?: number | null;
8714
8888
  /**
@@ -8788,13 +8962,13 @@ export type ProductionJobScopePriceResponseObject = {
8788
8962
  */
8789
8963
  unit_of_measure: string;
8790
8964
  /**
8791
- * Billing rate per unit, as a decimal string in the company's currency.
8965
+ * Billing rate per unit, as a decimal string in the company's currency. Present for company keys and for administrators, managers, safety managers, and field leads of the company that owns the job; omitted for other user keys.
8792
8966
  */
8793
- unit_price: string;
8967
+ unit_price?: string;
8794
8968
  /**
8795
- * Contracted number of units expected for this scope on the job; null when no target is set.
8969
+ * Contracted number of units expected for this scope on the job; null when no target is set. Present for company keys and for administrators, managers, safety managers, and field leads of the company that owns the job; omitted for other user keys.
8796
8970
  */
8797
- contracted_count: number | null;
8971
+ contracted_count?: number | null;
8798
8972
  /**
8799
8973
  * When the record was created (ISO 8601).
8800
8974
  */
@@ -9040,7 +9214,7 @@ export type FormAssignmentTaskResponseObject = Array<{
9040
9214
  }>;
9041
9215
  }>;
9042
9216
  /**
9043
- * Request body for creating a certification — a named qualification a worker can hold. You can only manage your own company's certifications; global (platform) certifications are read-only. Only the keys listed here are accepted — any other key is rejected with 400 unknown_key.
9217
+ * Request body for creating a certification — a named qualification a worker can hold. You can only manage your own company's certifications; global (platform) certifications are read-only.
9044
9218
  */
9045
9219
  export type CertificationParameters = {
9046
9220
  /**
@@ -9065,7 +9239,7 @@ export type CertificationParameters = {
9065
9239
  duration?: string | null;
9066
9240
  };
9067
9241
  /**
9068
- * Request body for updating a certification — a named qualification a worker can hold. Include only the fields to change. You can only manage your own company's certifications; global (platform) certifications are read-only. company_id is absent by design — the certification's company is fixed at creation, so sending the key is rejected with 400 unknown_key, as is any other key not listed here.
9242
+ * Request body for updating a certification — a named qualification a worker can hold. Include only the fields to change. You can only manage your own company's certifications; global (platform) certifications are read-only. The certification's company is fixed at creation.
9069
9243
  */
9070
9244
  export type CertificationUpdateParameters = {
9071
9245
  /**
@@ -9138,7 +9312,7 @@ export type CertificationPackageResponseObject = {
9138
9312
  updated_at: string;
9139
9313
  };
9140
9314
  /**
9141
- * 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. Only the keys listed here are accepted — any other key is rejected with 400 unknown_key.
9315
+ * 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.
9142
9316
  */
9143
9317
  export type CertificationPackageParameters = {
9144
9318
  /**
@@ -9159,7 +9333,7 @@ export type CertificationPackageParameters = {
9159
9333
  performed_by_user_id: string;
9160
9334
  };
9161
9335
  /**
9162
- * Request body for updating a certification package — a named set of certifications a company requires together. Include only the fields to change. Any key not listed here is rejected with 400 unknown_key.
9336
+ * Request body for updating a certification package — a named set of certifications a company requires together. Include only the fields to change.
9163
9337
  */
9164
9338
  export type CertificationPackageUpdateParameters = {
9165
9339
  /**
@@ -9257,21 +9431,13 @@ export type UserCertificationParameters = {
9257
9431
  * The credential or document number for the held certification, as issued by the issuer (for example a WINDA number or a license number). Free text; null when none.
9258
9432
  */
9259
9433
  credential_id?: string | null;
9260
- /**
9261
- * Id of the user recorded as approving this held certification; null when unset.
9262
- */
9263
- approved_by_user_id?: string | null;
9264
9434
  /**
9265
9435
  * When the held certification was archived (ISO 8601); null while active. Archiving is a soft flag, separate from deleting the record.
9266
9436
  */
9267
9437
  archived_at?: string | null;
9268
- /**
9269
- * When this held certification was approved (ISO 8601); null when unset.
9270
- */
9271
- approved_at?: string | null;
9272
9438
  };
9273
9439
  /**
9274
- * Request body for updating a certification held by a worker. Every field is optional; omit a field to preserve its current value. The resulting certification must still have a receipt date and verification state, and any expiry date must remain after its receipt date.
9440
+ * Request body for updating a certification held by a worker. Every field is optional; omit a field to preserve its current value. The resulting certification must still have a receipt date and verification state, and any expiry date must remain after its receipt date. Changing anything but verified revokes an approval; approve through the approval endpoint.
9275
9441
  */
9276
9442
  export type UserCertificationUpdateParameters = {
9277
9443
  /**
@@ -9311,18 +9477,19 @@ export type UserCertificationUpdateParameters = {
9311
9477
  * The credential or document number for the held certification, as issued by the issuer (for example a WINDA number or a license number). Free text; null when none.
9312
9478
  */
9313
9479
  credential_id?: string | null;
9314
- /**
9315
- * Id of the user recorded as approving this held certification; null when unset.
9316
- */
9317
- approved_by_user_id?: string | null;
9318
9480
  /**
9319
9481
  * When the held certification was archived (ISO 8601); null while active. Archiving is a soft flag, separate from deleting the record.
9320
9482
  */
9321
9483
  archived_at?: string | null;
9484
+ };
9485
+ /**
9486
+ * Request body for approving a certification held by a worker. A user key approves in its own user's name and sends no body.
9487
+ */
9488
+ export type UserCertificationApprovalParameters = {
9322
9489
  /**
9323
- * When this held certification was approved (ISO 8601); null when unset.
9490
+ * Company keys only: the approver to record. Required with a company key.
9324
9491
  */
9325
- approved_at?: string | null;
9492
+ approved_by_user_id?: string;
9326
9493
  };
9327
9494
  /**
9328
9495
  * A page of certifications held by your company's workers.
@@ -9372,7 +9539,7 @@ export type UserCertificationResponseObject = {
9372
9539
  */
9373
9540
  credential_id: string | null;
9374
9541
  /**
9375
- * Id of the user recorded as approving this held certification; null when unset.
9542
+ * Id of the user who approved this held certification; null when unapproved. Set through the approval endpoint.
9376
9543
  */
9377
9544
  approved_by_user_id: string | null;
9378
9545
  /**
@@ -9388,7 +9555,7 @@ export type UserCertificationResponseObject = {
9388
9555
  */
9389
9556
  archived_at: string | null;
9390
9557
  /**
9391
- * When this held certification was approved (ISO 8601); null when unset.
9558
+ * When the current approval was recorded (ISO 8601); null when unapproved.
9392
9559
  */
9393
9560
  approved_at: string | null;
9394
9561
  /**
@@ -10268,7 +10435,7 @@ export type RegionalJobWageDeterminationParameters = {
10268
10435
  */
10269
10436
  export type JobWageDeterminationUpdateParameters = {
10270
10437
  /**
10271
- * Where the edit starts applying, as a calendar date (`YYYY-MM-DD`); a value carrying a time component is refused with `422` rather than truncated. 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.
10438
+ * 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.
10272
10439
  */
10273
10440
  effective_from?: string;
10274
10441
  /**
@@ -10314,7 +10481,7 @@ export type JobWageDeterminationUpdateParameters = {
10314
10481
  */
10315
10482
  export type JobWageDeterminationScheduledChangeParameters = {
10316
10483
  /**
10317
- * Where the change starts applying, as a calendar date (`YYYY-MM-DD`); a value carrying a time component is refused with `422` rather than truncated. A boundary is created at that date when needed, and the new values apply from there forward, carrying through every later version already scheduled. Past, current, and future dates are all accepted, so long as the date falls on or after the determination's timeline begins and before any scheduled termination. A date already reached reconciles derived pay data immediately; a date still ahead reconciles at that date.
10484
+ * Where the change starts applying, as a calendar date (`YYYY-MM-DD`). A boundary is created at that date when needed, and the new values apply from there forward, carrying through every later version already scheduled. Past, current, and future dates are all accepted, so long as the date falls on or after the determination's timeline begins and before any scheduled termination. A date already reached reconciles derived pay data immediately; a date still ahead reconciles at that date.
10318
10485
  */
10319
10486
  effective_date: string;
10320
10487
  /**
@@ -10348,7 +10515,7 @@ export type JobWageDeterminationScheduledChangeParameters = {
10348
10515
  */
10349
10516
  export type JobWageDeterminationGenesisParameters = {
10350
10517
  /**
10351
- * The timeline's new start, as a calendar date (`YYYY-MM-DD`); a value carrying a time component is refused with `422` rather than truncated. Moving it earlier extends the first version back to it. Moving it later drops every version whose coverage ended at or before it and truncates the one spanning it, so what those versions said stops being readable. Refused with `422` when the new start would fall at or after a scheduled termination.
10518
+ * The timeline's new start, as a calendar date (`YYYY-MM-DD`). Moving it earlier extends the first version back to it. Moving it later drops every version whose coverage ended at or before it and truncates the one spanning it, so what those versions said stops being readable. Refused with `422` when the new start would fall at or after a scheduled termination.
10352
10519
  */
10353
10520
  effective_date: string;
10354
10521
  };
@@ -10357,7 +10524,7 @@ export type JobWageDeterminationGenesisParameters = {
10357
10524
  */
10358
10525
  export type JobWageDeterminationScheduledTerminationParameters = {
10359
10526
  /**
10360
- * When the determination stops being valid, as a calendar date (`YYYY-MM-DD`); a value carrying a time component is refused with `422` rather than truncated. Segments beyond it are dropped and one spanning it is truncated. Must fall after the determination's genesis and on or before its current end. A determination holds at most one scheduled termination; cancel the standing one before scheduling another.
10527
+ * When the determination stops being valid, as a calendar date (`YYYY-MM-DD`). Segments beyond it are dropped and one spanning it is truncated. Must fall after the determination's genesis and on or before its current end. A determination holds at most one scheduled termination; cancel the standing one before scheduling another.
10361
10528
  */
10362
10529
  effective_date: string;
10363
10530
  };
@@ -10615,7 +10782,7 @@ export type PayRatesRuleUpdateParameters = {
10615
10782
  */
10616
10783
  export type PayRatesRuleGenesisParameters = {
10617
10784
  /**
10618
- * The timeline's new start as a calendar date (`YYYY-MM-DD`); a value carrying a time component is refused with `422` rather than truncated. Moving it earlier extends the first version back to it. Moving it later removes coverage before it. Refused with `422` when the new start would fall at or after a standing termination.
10785
+ * The timeline's new start as a calendar date (`YYYY-MM-DD`). Moving it earlier extends the first version back to it. Moving it later removes coverage before it. Refused with `422` when the new start would fall at or after a standing termination.
10619
10786
  */
10620
10787
  effective_date: string;
10621
10788
  };
@@ -10624,7 +10791,7 @@ export type PayRatesRuleGenesisParameters = {
10624
10791
  */
10625
10792
  export type PayRatesRuleScheduledTerminationParameters = {
10626
10793
  /**
10627
- * The exclusive end of the family's valid-time timeline as a calendar date (`YYYY-MM-DD`); a value carrying a time component is refused with `422` rather than truncated. Must fall after genesis. Scheduling removes versions that start after the new end and truncates the version spanning it. A family holds at most one standing termination; cancel it before scheduling another. Cancellation reopens the last surviving version with its existing recipe and does not restore removed versions.
10794
+ * The exclusive end of the family's valid-time timeline as a calendar date (`YYYY-MM-DD`). Must fall after genesis. Scheduling removes versions that start after the new end and truncates the version spanning it. A family holds at most one standing termination; cancel it before scheduling another. Cancellation reopens the last surviving version with its existing recipe and does not restore removed versions.
10628
10795
  */
10629
10796
  effective_date: string;
10630
10797
  };
@@ -10766,7 +10933,7 @@ export type OvertimeRuleHistoryVersionObject = {
10766
10933
  */
10767
10934
  export type OvertimeRuleParameters = {
10768
10935
  /**
10769
- * Date the rule takes effect, as a calendar date (`YYYY-MM-DD`); a value carrying a time component is refused with `422` rather than truncated. Optional; defaults to today.
10936
+ * Date the rule takes effect, as a calendar date (`YYYY-MM-DD`). Optional; defaults to today.
10770
10937
  */
10771
10938
  effective_date?: string;
10772
10939
  /**
@@ -10799,7 +10966,7 @@ export type OvertimeRuleParameters = {
10799
10966
  */
10800
10967
  export type OvertimeRuleUpdateParameters = {
10801
10968
  /**
10802
- * Where the edit starts applying, as a calendar date (`YYYY-MM-DD`); a value carrying a time component is refused with `422` rather than truncated. 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.
10969
+ * 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.
10803
10970
  */
10804
10971
  effective_from?: string;
10805
10972
  /**
@@ -10832,7 +10999,7 @@ export type OvertimeRuleUpdateParameters = {
10832
10999
  */
10833
11000
  export type OvertimeRuleScheduledChangeParameters = {
10834
11001
  /**
10835
- * Where the change starts applying, as a calendar date (`YYYY-MM-DD`); a value carrying a time component is refused with `422` rather than truncated. A boundary is created at that date when needed, and the new values apply from there forward. A date already reached reconciles derived overtime immediately; a date still ahead reconciles at that date.
11002
+ * Where the change starts applying, as a calendar date (`YYYY-MM-DD`). A boundary is created at that date when needed, and the new values apply from there forward. A date already reached reconciles derived overtime immediately; a date still ahead reconciles at that date.
10836
11003
  */
10837
11004
  effective_date: string;
10838
11005
  /**
@@ -10865,7 +11032,7 @@ export type OvertimeRuleScheduledChangeParameters = {
10865
11032
  */
10866
11033
  export type OvertimeRuleGenesisParameters = {
10867
11034
  /**
10868
- * The timeline's new start, as a calendar date (`YYYY-MM-DD`); a value carrying a time component is refused with `422` rather than truncated. Moving it earlier extends the first version back to it. Moving it later drops every version whose coverage ended at or before it and truncates the one spanning it, so what those versions said stops being readable. Refused with `422` when the new start would fall at or after a scheduled termination.
11035
+ * The timeline's new start, as a calendar date (`YYYY-MM-DD`). Moving it earlier extends the first version back to it. Moving it later drops every version whose coverage ended at or before it and truncates the one spanning it, so what those versions said stops being readable. Refused with `422` when the new start would fall at or after a scheduled termination.
10869
11036
  */
10870
11037
  effective_date: string;
10871
11038
  };
@@ -10874,7 +11041,7 @@ export type OvertimeRuleGenesisParameters = {
10874
11041
  */
10875
11042
  export type OvertimeRuleScheduledTerminationParameters = {
10876
11043
  /**
10877
- * When the rule stops being valid, as a calendar date (`YYYY-MM-DD`); a value carrying a time component is refused with `422` rather than truncated. Must fall after the rule's genesis — removing the rule from every window it ever covered is the rule delete instead. A rule holds at most one scheduled termination; cancel the standing one before scheduling another.
11044
+ * When the rule stops being valid, as a calendar date (`YYYY-MM-DD`). Must fall after the rule's genesis — removing the rule from every window it ever covered is the rule delete instead. A rule holds at most one scheduled termination; cancel the standing one before scheduling another.
10878
11045
  */
10879
11046
  effective_date: string;
10880
11047
  };
@@ -11061,7 +11228,7 @@ export type AssetsItemParameters = {
11061
11228
  performed_by_user_id: string;
11062
11229
  };
11063
11230
  /**
11064
- * Update an asset item. All item fields are optional — send only what changes — but performed_by_user_id is required to record the updater and any placement. Omitted attributes retain their existing values.
11231
+ * Update an asset item. All item fields are optional — send only what changes — but performed_by_user_id is required to record the updater. Omitted attributes retain their existing values.
11065
11232
  */
11066
11233
  export type AssetsItemUpdateParameters = {
11067
11234
  /**
@@ -11105,23 +11272,7 @@ export type AssetsItemUpdateParameters = {
11105
11272
  */
11106
11273
  images_attributes?: Array<AssetsAttachmentParameters>;
11107
11274
  /**
11108
- * Optional. Move the item to this site; mutually exclusive with user_id and container_item_id.
11109
- */
11110
- assets_site_id?: string;
11111
- /**
11112
- * Optional. Assign the item to this user; mutually exclusive with assets_site_id and container_item_id.
11113
- */
11114
- user_id?: string;
11115
- /**
11116
- * Optional. Place the item inside this container item; mutually exclusive with assets_site_id and user_id.
11117
- */
11118
- container_item_id?: string;
11119
- /**
11120
- * Optional. The storage location within the placement site or container; omit for an unbinned placement. Ignored for a user assignment.
11121
- */
11122
- assets_sub_location_id?: string;
11123
- /**
11124
- * ID of the user this update is performed on behalf of, recorded as updater and attributed to any placement. Required; must belong to your company.
11275
+ * ID of the user this update is performed on behalf of, recorded as updater. Required; must belong to your company.
11125
11276
  */
11126
11277
  performed_by_user_id: string;
11127
11278
  };
@@ -11668,7 +11819,7 @@ export type AssetsItemFormAssignmentResponseObject = {
11668
11819
  }>;
11669
11820
  };
11670
11821
  /**
11671
- * Create or update an item form assignment. form_definition_id and task_attributes are required, and task_attributes.created_by_user_id is required (a missing value returns 400). recurring gates the recurrence fields.
11822
+ * Create an item form assignment. form_definition_id and task_attributes are required, and task_attributes.created_by_user_id is required (a missing value returns 400). recurring gates the recurrence fields. An assignee outside the credential company returns 422, and a creator outside it returns 403.
11672
11823
  */
11673
11824
  export type AssetsItemFormAssignmentParameters = {
11674
11825
  /**
@@ -11695,10 +11846,6 @@ export type AssetsItemFormAssignmentParameters = {
11695
11846
  * ID of the user creating the task, recorded as its creator. Required; a missing value returns 400.
11696
11847
  */
11697
11848
  created_by_user_id: string;
11698
- /**
11699
- * ID of the user updating the task. Ignored on create (forced to created_by_user_id); recorded on update.
11700
- */
11701
- updated_by_user_id?: string | null;
11702
11849
  /**
11703
11850
  * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
11704
11851
  */
@@ -11731,7 +11878,7 @@ export type AssetsItemFormAssignmentParameters = {
11731
11878
  };
11732
11879
  };
11733
11880
  /**
11734
- * Update an item form assignment. All fields are optional — send only what changes. recurring gates the recurrence fields, and task_attributes.reminders_attributes replaces the existing reminder set when supplied.
11881
+ * Update an item form assignment. All fields are optional — send only what changes. recurring gates the recurrence fields, and task_attributes.reminders_attributes replaces the existing reminder set when supplied. A newly added assignee outside the credential company returns 422. The creator is set at creation and cannot be sent.
11735
11882
  */
11736
11883
  export type AssetsItemFormAssignmentUpdateParameters = {
11737
11884
  /**
@@ -11754,14 +11901,6 @@ export type AssetsItemFormAssignmentUpdateParameters = {
11754
11901
  * Free-text description of the task.
11755
11902
  */
11756
11903
  description?: string | null;
11757
- /**
11758
- * ID of the user who created the task. Existing assignments retain their creator when this is omitted.
11759
- */
11760
- created_by_user_id?: string;
11761
- /**
11762
- * ID of the user updating the task. The API derives the stored updater from the task creator.
11763
- */
11764
- updated_by_user_id?: string | null;
11765
11904
  /**
11766
11905
  * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
11767
11906
  */
@@ -13142,7 +13281,7 @@ export type CreateEmployerErrors = {
13142
13281
  */
13143
13282
  400: Problem;
13144
13283
  /**
13145
- * Forbidden. Also returned when `company_id` names a company other than the API key's own.
13284
+ * Forbidden. Also returned when `company_id` names a company the key's user neither administers nor manages, or, on a company-scoped key, any company other than the key's own.
13146
13285
  */
13147
13286
  403: Problem;
13148
13287
  /**
@@ -13185,6 +13324,33 @@ export type DeleteEmployerResponses = {
13185
13324
  200: ApprenticeshipProgramEmployerResponseObject;
13186
13325
  };
13187
13326
  export type DeleteEmployerResponse = DeleteEmployerResponses[keyof DeleteEmployerResponses];
13327
+ export type GetEmployerData = {
13328
+ body?: never;
13329
+ path: {
13330
+ program_id: string;
13331
+ id: string;
13332
+ };
13333
+ query?: never;
13334
+ url: '/api/v1/apprenticeship/programs/{program_id}/employers/{id}';
13335
+ };
13336
+ export type GetEmployerErrors = {
13337
+ /**
13338
+ * Forbidden
13339
+ */
13340
+ 403: Problem;
13341
+ /**
13342
+ * Not Found
13343
+ */
13344
+ 404: Problem;
13345
+ };
13346
+ export type GetEmployerError = GetEmployerErrors[keyof GetEmployerErrors];
13347
+ export type GetEmployerResponses = {
13348
+ /**
13349
+ * Success
13350
+ */
13351
+ 200: ApprenticeshipProgramEmployerResponseObject;
13352
+ };
13353
+ export type GetEmployerResponse = GetEmployerResponses[keyof GetEmployerResponses];
13188
13354
  export type UpdateEmployerData = {
13189
13355
  body?: ApprenticeshipProgramEmployerUpdateParameters;
13190
13356
  path: {
@@ -13200,7 +13366,7 @@ export type UpdateEmployerErrors = {
13200
13366
  */
13201
13367
  400: Problem;
13202
13368
  /**
13203
- * Forbidden. Also returned when `company_id`, sent or stored, names a company other than the API key's own.
13369
+ * Forbidden. Also returned when `company_id`, sent or stored, names a company the key's user neither administers nor manages, or, on a company-scoped key, any company other than the key's own.
13204
13370
  */
13205
13371
  403: Problem;
13206
13372
  /**
@@ -13456,6 +13622,64 @@ export type CreatePeriodResponses = {
13456
13622
  201: ApprenticeshipWageSchedulePeriodResponseObject;
13457
13623
  };
13458
13624
  export type CreatePeriodResponse = CreatePeriodResponses[keyof CreatePeriodResponses];
13625
+ export type DeletePeriodData = {
13626
+ body?: never;
13627
+ path: {
13628
+ wage_schedule_id: string;
13629
+ id: string;
13630
+ };
13631
+ query?: never;
13632
+ url: '/api/v1/apprenticeship/wage_schedules/{wage_schedule_id}/periods/{id}';
13633
+ };
13634
+ export type DeletePeriodErrors = {
13635
+ /**
13636
+ * Forbidden
13637
+ */
13638
+ 403: Problem;
13639
+ /**
13640
+ * Not Found
13641
+ */
13642
+ 404: Problem;
13643
+ /**
13644
+ * Unprocessable Content
13645
+ */
13646
+ 422: Problem;
13647
+ };
13648
+ export type DeletePeriodError = DeletePeriodErrors[keyof DeletePeriodErrors];
13649
+ export type DeletePeriodResponses = {
13650
+ /**
13651
+ * No Content
13652
+ */
13653
+ 204: void;
13654
+ };
13655
+ export type DeletePeriodResponse = DeletePeriodResponses[keyof DeletePeriodResponses];
13656
+ export type GetPeriodData = {
13657
+ body?: never;
13658
+ path: {
13659
+ wage_schedule_id: string;
13660
+ id: string;
13661
+ };
13662
+ query?: never;
13663
+ url: '/api/v1/apprenticeship/wage_schedules/{wage_schedule_id}/periods/{id}';
13664
+ };
13665
+ export type GetPeriodErrors = {
13666
+ /**
13667
+ * Forbidden
13668
+ */
13669
+ 403: Problem;
13670
+ /**
13671
+ * Not Found
13672
+ */
13673
+ 404: Problem;
13674
+ };
13675
+ export type GetPeriodError = GetPeriodErrors[keyof GetPeriodErrors];
13676
+ export type GetPeriodResponses = {
13677
+ /**
13678
+ * Success
13679
+ */
13680
+ 200: ApprenticeshipWageSchedulePeriodResponseObject;
13681
+ };
13682
+ export type GetPeriodResponse = GetPeriodResponses[keyof GetPeriodResponses];
13459
13683
  export type UpdatePeriodData = {
13460
13684
  body?: ApprenticeshipWageSchedulePeriodUpdateParameters;
13461
13685
  path: {
@@ -14901,13 +15125,17 @@ export type CreateItemFormAssignmentTaskData = {
14901
15125
  };
14902
15126
  export type CreateItemFormAssignmentTaskErrors = {
14903
15127
  /**
14904
- * Bad Request (missing created_by_user_id)
15128
+ * Bad Request
14905
15129
  */
14906
15130
  400: Problem;
14907
15131
  /**
14908
15132
  * Forbidden
14909
15133
  */
14910
15134
  403: Problem;
15135
+ /**
15136
+ * Not Found
15137
+ */
15138
+ 404: Problem;
14911
15139
  /**
14912
15140
  * Unprocessable Content
14913
15141
  */
@@ -14958,10 +15186,22 @@ export type UpdateFormAssignmentTaskData = {
14958
15186
  url: '/api/v1/assets/items/{item_id}/form_assignment_tasks/{id}';
14959
15187
  };
14960
15188
  export type UpdateFormAssignmentTaskErrors = {
15189
+ /**
15190
+ * Bad Request
15191
+ */
15192
+ 400: Problem;
14961
15193
  /**
14962
15194
  * Forbidden
14963
15195
  */
14964
15196
  403: Problem;
15197
+ /**
15198
+ * Not Found
15199
+ */
15200
+ 404: Problem;
15201
+ /**
15202
+ * Unprocessable Content
15203
+ */
15204
+ 422: Problem;
14965
15205
  };
14966
15206
  export type UpdateFormAssignmentTaskError = UpdateFormAssignmentTaskErrors[keyof UpdateFormAssignmentTaskErrors];
14967
15207
  export type UpdateFormAssignmentTaskResponses = {
@@ -16553,6 +16793,66 @@ export type UpdatePackageResponses = {
16553
16793
  200: CertificationPackageResponseObject;
16554
16794
  };
16555
16795
  export type UpdatePackageResponse = UpdatePackageResponses[keyof UpdatePackageResponses];
16796
+ export type RevokeUserCertificationApprovalData = {
16797
+ body?: never;
16798
+ path: {
16799
+ user_certification_id: string;
16800
+ };
16801
+ query?: never;
16802
+ url: '/api/v1/certifications/user_certifications/{user_certification_id}/approval';
16803
+ };
16804
+ export type RevokeUserCertificationApprovalErrors = {
16805
+ /**
16806
+ * Forbidden
16807
+ */
16808
+ 403: Problem;
16809
+ /**
16810
+ * Not Found
16811
+ */
16812
+ 404: Problem;
16813
+ };
16814
+ export type RevokeUserCertificationApprovalError = RevokeUserCertificationApprovalErrors[keyof RevokeUserCertificationApprovalErrors];
16815
+ export type RevokeUserCertificationApprovalResponses = {
16816
+ /**
16817
+ * Success
16818
+ */
16819
+ 200: UserCertificationResponseObject;
16820
+ };
16821
+ export type RevokeUserCertificationApprovalResponse = RevokeUserCertificationApprovalResponses[keyof RevokeUserCertificationApprovalResponses];
16822
+ export type ApproveUserCertificationData = {
16823
+ body?: UserCertificationApprovalParameters;
16824
+ path: {
16825
+ user_certification_id: string;
16826
+ };
16827
+ query?: never;
16828
+ url: '/api/v1/certifications/user_certifications/{user_certification_id}/approval';
16829
+ };
16830
+ export type ApproveUserCertificationErrors = {
16831
+ /**
16832
+ * Bad Request
16833
+ */
16834
+ 400: Problem;
16835
+ /**
16836
+ * Forbidden
16837
+ */
16838
+ 403: Problem;
16839
+ /**
16840
+ * Not Found
16841
+ */
16842
+ 404: Problem;
16843
+ /**
16844
+ * Unprocessable Content
16845
+ */
16846
+ 422: Problem;
16847
+ };
16848
+ export type ApproveUserCertificationError = ApproveUserCertificationErrors[keyof ApproveUserCertificationErrors];
16849
+ export type ApproveUserCertificationResponses = {
16850
+ /**
16851
+ * Success
16852
+ */
16853
+ 200: UserCertificationResponseObject;
16854
+ };
16855
+ export type ApproveUserCertificationResponse = ApproveUserCertificationResponses[keyof ApproveUserCertificationResponses];
16556
16856
  export type ListUserCertificationsData = {
16557
16857
  body?: never;
16558
16858
  path?: never;
@@ -16687,6 +16987,10 @@ export type UpdateUserCertificationData = {
16687
16987
  url: '/api/v1/certifications/user_certifications/{id}';
16688
16988
  };
16689
16989
  export type UpdateUserCertificationErrors = {
16990
+ /**
16991
+ * Bad Request
16992
+ */
16993
+ 400: Problem;
16690
16994
  /**
16691
16995
  * Forbidden
16692
16996
  */
@@ -17541,6 +17845,32 @@ export type ListFormDefinitionsResponses = {
17541
17845
  200: FormDefinitionResponseObject;
17542
17846
  };
17543
17847
  export type ListFormDefinitionsResponse = ListFormDefinitionsResponses[keyof ListFormDefinitionsResponses];
17848
+ export type GetFormDefinitionData = {
17849
+ body?: never;
17850
+ path: {
17851
+ id: string;
17852
+ };
17853
+ query?: never;
17854
+ url: '/api/v1/form_definitions/{id}';
17855
+ };
17856
+ export type GetFormDefinitionErrors = {
17857
+ /**
17858
+ * Forbidden
17859
+ */
17860
+ 403: Problem;
17861
+ /**
17862
+ * Not Found
17863
+ */
17864
+ 404: Problem;
17865
+ };
17866
+ export type GetFormDefinitionError = GetFormDefinitionErrors[keyof GetFormDefinitionErrors];
17867
+ export type GetFormDefinitionResponses = {
17868
+ /**
17869
+ * Success
17870
+ */
17871
+ 200: FormDefinitionObject;
17872
+ };
17873
+ export type GetFormDefinitionResponse = GetFormDefinitionResponses[keyof GetFormDefinitionResponses];
17544
17874
  export type ListFormSubmissionDeltasData = {
17545
17875
  body?: never;
17546
17876
  path?: never;
@@ -18250,24 +18580,30 @@ export type GetRateRuleResponses = {
18250
18580
  200: RateRuleResponseObject;
18251
18581
  };
18252
18582
  export type GetRateRuleResponse = GetRateRuleResponses[keyof GetRateRuleResponses];
18253
- export type ShiftJobWageDeterminationGenesisData = {
18254
- body: JobWageDeterminationGenesisParameters;
18255
- headers: {
18256
- /**
18257
- * Version validator this write is composed against — the `ETag` from a read of this determination, or `*` to write against whatever exists. See "Version validators" in the API overview.
18258
- */
18259
- 'If-Match': string;
18260
- };
18583
+ export type ListJobSitesData = {
18584
+ body?: never;
18261
18585
  path: {
18262
18586
  job_id: string;
18263
- wage_determination_id: string;
18264
18587
  };
18265
- query?: never;
18266
- url: '/api/v1/jobs/{job_id}/wage_determinations/{wage_determination_id}/genesis';
18588
+ query?: {
18589
+ filter?: string;
18590
+ 'filter[unexpected]'?: string;
18591
+ /**
18592
+ * This pagination cursor corresponds to the cursor value found in the response in
18593
+ * `meta.page.next_cursor`.
18594
+ */
18595
+ 'page[cursor]'?: string;
18596
+ /**
18597
+ * 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`.
18598
+ */
18599
+ 'page[limit]'?: number;
18600
+ page?: string;
18601
+ };
18602
+ url: '/api/v1/jobs/{job_id}/sites';
18267
18603
  };
18268
- export type ShiftJobWageDeterminationGenesisErrors = {
18604
+ export type ListJobSitesErrors = {
18269
18605
  /**
18270
- * Bad Request (missing effective_date)
18606
+ * Bad Request
18271
18607
  */
18272
18608
  400: Problem;
18273
18609
  /**
@@ -18278,14 +18614,174 @@ export type ShiftJobWageDeterminationGenesisErrors = {
18278
18614
  * Not Found
18279
18615
  */
18280
18616
  404: Problem;
18617
+ };
18618
+ export type ListJobSitesError = ListJobSitesErrors[keyof ListJobSitesErrors];
18619
+ export type ListJobSitesResponses = {
18281
18620
  /**
18282
- * Conflict
18283
- */
18284
- 409: Problem;
18285
- /**
18286
- * Precondition Failed
18621
+ * Success
18287
18622
  */
18288
- 412: Problem;
18623
+ 200: JobSitesResponseObject;
18624
+ };
18625
+ export type ListJobSitesResponse = ListJobSitesResponses[keyof ListJobSitesResponses];
18626
+ export type CreateJobSiteData = {
18627
+ body: JobSiteParameters;
18628
+ path: {
18629
+ job_id: string;
18630
+ };
18631
+ query?: never;
18632
+ url: '/api/v1/jobs/{job_id}/sites';
18633
+ };
18634
+ export type CreateJobSiteErrors = {
18635
+ /**
18636
+ * Bad Request
18637
+ */
18638
+ 400: Problem;
18639
+ /**
18640
+ * Forbidden
18641
+ */
18642
+ 403: Problem;
18643
+ /**
18644
+ * Not Found
18645
+ */
18646
+ 404: Problem;
18647
+ /**
18648
+ * Unprocessable Content
18649
+ */
18650
+ 422: Problem;
18651
+ };
18652
+ export type CreateJobSiteError = CreateJobSiteErrors[keyof CreateJobSiteErrors];
18653
+ export type CreateJobSiteResponses = {
18654
+ /**
18655
+ * Created
18656
+ */
18657
+ 201: JobSiteResponseObject;
18658
+ };
18659
+ export type CreateJobSiteResponse = CreateJobSiteResponses[keyof CreateJobSiteResponses];
18660
+ export type DeleteJobSiteData = {
18661
+ body?: never;
18662
+ path: {
18663
+ job_id: string;
18664
+ id: string;
18665
+ };
18666
+ query?: never;
18667
+ url: '/api/v1/jobs/{job_id}/sites/{id}';
18668
+ };
18669
+ export type DeleteJobSiteErrors = {
18670
+ /**
18671
+ * Forbidden
18672
+ */
18673
+ 403: Problem;
18674
+ /**
18675
+ * Not Found
18676
+ */
18677
+ 404: Problem;
18678
+ };
18679
+ export type DeleteJobSiteError = DeleteJobSiteErrors[keyof DeleteJobSiteErrors];
18680
+ export type DeleteJobSiteResponses = {
18681
+ /**
18682
+ * No Content
18683
+ */
18684
+ 204: void;
18685
+ };
18686
+ export type DeleteJobSiteResponse = DeleteJobSiteResponses[keyof DeleteJobSiteResponses];
18687
+ export type GetJobSiteData = {
18688
+ body?: never;
18689
+ path: {
18690
+ job_id: string;
18691
+ id: string;
18692
+ };
18693
+ query?: never;
18694
+ url: '/api/v1/jobs/{job_id}/sites/{id}';
18695
+ };
18696
+ export type GetJobSiteErrors = {
18697
+ /**
18698
+ * Forbidden
18699
+ */
18700
+ 403: Problem;
18701
+ /**
18702
+ * Not Found
18703
+ */
18704
+ 404: Problem;
18705
+ };
18706
+ export type GetJobSiteError = GetJobSiteErrors[keyof GetJobSiteErrors];
18707
+ export type GetJobSiteResponses = {
18708
+ /**
18709
+ * Success
18710
+ */
18711
+ 200: JobSiteResponseObject;
18712
+ };
18713
+ export type GetJobSiteResponse = GetJobSiteResponses[keyof GetJobSiteResponses];
18714
+ export type UpdateJobSiteData = {
18715
+ body: JobSiteUpdateParameters;
18716
+ path: {
18717
+ job_id: string;
18718
+ id: string;
18719
+ };
18720
+ query?: never;
18721
+ url: '/api/v1/jobs/{job_id}/sites/{id}';
18722
+ };
18723
+ export type UpdateJobSiteErrors = {
18724
+ /**
18725
+ * Bad Request
18726
+ */
18727
+ 400: Problem;
18728
+ /**
18729
+ * Forbidden
18730
+ */
18731
+ 403: Problem;
18732
+ /**
18733
+ * Not Found
18734
+ */
18735
+ 404: Problem;
18736
+ /**
18737
+ * Unprocessable Content
18738
+ */
18739
+ 422: Problem;
18740
+ };
18741
+ export type UpdateJobSiteError = UpdateJobSiteErrors[keyof UpdateJobSiteErrors];
18742
+ export type UpdateJobSiteResponses = {
18743
+ /**
18744
+ * Success
18745
+ */
18746
+ 200: JobSiteResponseObject;
18747
+ };
18748
+ export type UpdateJobSiteResponse = UpdateJobSiteResponses[keyof UpdateJobSiteResponses];
18749
+ export type ShiftJobWageDeterminationGenesisData = {
18750
+ body: JobWageDeterminationGenesisParameters;
18751
+ headers: {
18752
+ /**
18753
+ * Version validator this write is composed against — the `ETag` from a read of this determination, or `*` to write against whatever exists. See "Version validators" in the API overview.
18754
+ */
18755
+ 'If-Match': string;
18756
+ };
18757
+ path: {
18758
+ job_id: string;
18759
+ wage_determination_id: string;
18760
+ };
18761
+ query?: never;
18762
+ url: '/api/v1/jobs/{job_id}/wage_determinations/{wage_determination_id}/genesis';
18763
+ };
18764
+ export type ShiftJobWageDeterminationGenesisErrors = {
18765
+ /**
18766
+ * Bad Request (missing effective_date)
18767
+ */
18768
+ 400: Problem;
18769
+ /**
18770
+ * Forbidden
18771
+ */
18772
+ 403: Problem;
18773
+ /**
18774
+ * Not Found
18775
+ */
18776
+ 404: Problem;
18777
+ /**
18778
+ * Conflict
18779
+ */
18780
+ 409: Problem;
18781
+ /**
18782
+ * Precondition Failed
18783
+ */
18784
+ 412: Problem;
18289
18785
  /**
18290
18786
  * Unprocessable Content
18291
18787
  */
@@ -21042,6 +21538,10 @@ export type CreateFringeBenefitPlanData = {
21042
21538
  url: '/api/v1/payrolls/fringe_benefit_plans';
21043
21539
  };
21044
21540
  export type CreateFringeBenefitPlanErrors = {
21541
+ /**
21542
+ * Bad Request
21543
+ */
21544
+ 400: Problem;
21045
21545
  /**
21046
21546
  * Forbidden
21047
21547
  */
@@ -21120,6 +21620,10 @@ export type UpdateFringeBenefitPlanData = {
21120
21620
  url: '/api/v1/payrolls/fringe_benefit_plans/{id}';
21121
21621
  };
21122
21622
  export type UpdateFringeBenefitPlanErrors = {
21623
+ /**
21624
+ * Bad Request
21625
+ */
21626
+ 400: Problem;
21123
21627
  /**
21124
21628
  * Forbidden
21125
21629
  */
@@ -21660,10 +22164,18 @@ export type CreatePaystubData = {
21660
22164
  url: '/api/v1/paystubs';
21661
22165
  };
21662
22166
  export type CreatePaystubErrors = {
22167
+ /**
22168
+ * Bad Request
22169
+ */
22170
+ 400: Problem;
21663
22171
  /**
21664
22172
  * Forbidden
21665
22173
  */
21666
22174
  403: Problem;
22175
+ /**
22176
+ * Not Found
22177
+ */
22178
+ 404: Problem;
21667
22179
  /**
21668
22180
  * Unprocessable Entity
21669
22181
  */
@@ -21751,6 +22263,10 @@ export type UpdatePaystubData = {
21751
22263
  url: '/api/v1/paystubs/{id}';
21752
22264
  };
21753
22265
  export type UpdatePaystubErrors = {
22266
+ /**
22267
+ * Bad Request
22268
+ */
22269
+ 400: Problem;
21754
22270
  /**
21755
22271
  * Forbidden
21756
22272
  */
@@ -21796,7 +22312,7 @@ export type ListCustomFieldsResponses = {
21796
22312
  * Success
21797
22313
  */
21798
22314
  200: {
21799
- data: Array<PeopleEmploymentCustomFieldResponseObject>;
22315
+ data: Array<CustomFieldResponseObject>;
21800
22316
  };
21801
22317
  };
21802
22318
  export type ListCustomFieldsResponse = ListCustomFieldsResponses[keyof ListCustomFieldsResponses];
@@ -21846,7 +22362,7 @@ export type UpdateCustomFieldResponses = {
21846
22362
  * Success
21847
22363
  */
21848
22364
  200: {
21849
- data: Array<PeopleEmploymentCustomFieldResponseObject>;
22365
+ data: Array<CustomFieldResponseObject>;
21850
22366
  };
21851
22367
  };
21852
22368
  export type UpdateCustomFieldResponse = UpdateCustomFieldResponses[keyof UpdateCustomFieldResponses];
@@ -22551,6 +23067,10 @@ export type CreatePerDiemErrors = {
22551
23067
  * Forbidden
22552
23068
  */
22553
23069
  403: Problem;
23070
+ /**
23071
+ * Not Found
23072
+ */
23073
+ 404: Problem;
22554
23074
  /**
22555
23075
  * Unprocessable Content
22556
23076
  */
@@ -23015,6 +23535,174 @@ export type CreateProjectTradeResponses = {
23015
23535
  201: PwaTradeResponseObject;
23016
23536
  };
23017
23537
  export type CreateProjectTradeResponse = CreateProjectTradeResponses[keyof CreateProjectTradeResponses];
23538
+ export type ListProjectSitesData = {
23539
+ body?: never;
23540
+ path: {
23541
+ project_id: string;
23542
+ };
23543
+ query?: {
23544
+ /**
23545
+ * This pagination cursor corresponds to the cursor value found in the response in
23546
+ * `meta.page.next_cursor`.
23547
+ */
23548
+ 'page[cursor]'?: string;
23549
+ /**
23550
+ * 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`.
23551
+ */
23552
+ 'page[limit]'?: number;
23553
+ page?: string;
23554
+ };
23555
+ url: '/api/v1/projects/{project_id}/sites';
23556
+ };
23557
+ export type ListProjectSitesErrors = {
23558
+ /**
23559
+ * Bad Request
23560
+ */
23561
+ 400: Problem;
23562
+ /**
23563
+ * Forbidden
23564
+ */
23565
+ 403: Problem;
23566
+ /**
23567
+ * Not Found
23568
+ */
23569
+ 404: Problem;
23570
+ };
23571
+ export type ListProjectSitesError = ListProjectSitesErrors[keyof ListProjectSitesErrors];
23572
+ export type ListProjectSitesResponses = {
23573
+ /**
23574
+ * Success
23575
+ */
23576
+ 200: {
23577
+ meta: Meta;
23578
+ links: Links;
23579
+ data: Array<ProjectSiteResponseObject>;
23580
+ };
23581
+ };
23582
+ export type ListProjectSitesResponse = ListProjectSitesResponses[keyof ListProjectSitesResponses];
23583
+ export type CreateProjectSiteData = {
23584
+ body: ProjectSiteParameters;
23585
+ path: {
23586
+ project_id: string;
23587
+ };
23588
+ query?: never;
23589
+ url: '/api/v1/projects/{project_id}/sites';
23590
+ };
23591
+ export type CreateProjectSiteErrors = {
23592
+ /**
23593
+ * Bad Request
23594
+ */
23595
+ 400: Problem;
23596
+ /**
23597
+ * Forbidden
23598
+ */
23599
+ 403: Problem;
23600
+ /**
23601
+ * Not Found
23602
+ */
23603
+ 404: Problem;
23604
+ /**
23605
+ * Unprocessable Content
23606
+ */
23607
+ 422: Problem;
23608
+ };
23609
+ export type CreateProjectSiteError = CreateProjectSiteErrors[keyof CreateProjectSiteErrors];
23610
+ export type CreateProjectSiteResponses = {
23611
+ /**
23612
+ * Created
23613
+ */
23614
+ 201: ProjectSiteResponseObject;
23615
+ };
23616
+ export type CreateProjectSiteResponse = CreateProjectSiteResponses[keyof CreateProjectSiteResponses];
23617
+ export type DeleteProjectSiteData = {
23618
+ body?: never;
23619
+ path: {
23620
+ project_id: string;
23621
+ id: string;
23622
+ };
23623
+ query?: never;
23624
+ url: '/api/v1/projects/{project_id}/sites/{id}';
23625
+ };
23626
+ export type DeleteProjectSiteErrors = {
23627
+ /**
23628
+ * Forbidden
23629
+ */
23630
+ 403: Problem;
23631
+ /**
23632
+ * Not Found
23633
+ */
23634
+ 404: Problem;
23635
+ };
23636
+ export type DeleteProjectSiteError = DeleteProjectSiteErrors[keyof DeleteProjectSiteErrors];
23637
+ export type DeleteProjectSiteResponses = {
23638
+ /**
23639
+ * No Content
23640
+ */
23641
+ 204: void;
23642
+ };
23643
+ export type DeleteProjectSiteResponse = DeleteProjectSiteResponses[keyof DeleteProjectSiteResponses];
23644
+ export type GetProjectSiteData = {
23645
+ body?: never;
23646
+ path: {
23647
+ project_id: string;
23648
+ id: string;
23649
+ };
23650
+ query?: never;
23651
+ url: '/api/v1/projects/{project_id}/sites/{id}';
23652
+ };
23653
+ export type GetProjectSiteErrors = {
23654
+ /**
23655
+ * Forbidden
23656
+ */
23657
+ 403: Problem;
23658
+ /**
23659
+ * Not Found
23660
+ */
23661
+ 404: Problem;
23662
+ };
23663
+ export type GetProjectSiteError = GetProjectSiteErrors[keyof GetProjectSiteErrors];
23664
+ export type GetProjectSiteResponses = {
23665
+ /**
23666
+ * Success
23667
+ */
23668
+ 200: ProjectSiteResponseObject;
23669
+ };
23670
+ export type GetProjectSiteResponse = GetProjectSiteResponses[keyof GetProjectSiteResponses];
23671
+ export type UpdateProjectSiteData = {
23672
+ body: ProjectSiteUpdateParameters;
23673
+ path: {
23674
+ project_id: string;
23675
+ id: string;
23676
+ };
23677
+ query?: never;
23678
+ url: '/api/v1/projects/{project_id}/sites/{id}';
23679
+ };
23680
+ export type UpdateProjectSiteErrors = {
23681
+ /**
23682
+ * Bad Request
23683
+ */
23684
+ 400: Problem;
23685
+ /**
23686
+ * Forbidden
23687
+ */
23688
+ 403: Problem;
23689
+ /**
23690
+ * Not Found
23691
+ */
23692
+ 404: Problem;
23693
+ /**
23694
+ * Unprocessable Content
23695
+ */
23696
+ 422: Problem;
23697
+ };
23698
+ export type UpdateProjectSiteError = UpdateProjectSiteErrors[keyof UpdateProjectSiteErrors];
23699
+ export type UpdateProjectSiteResponses = {
23700
+ /**
23701
+ * Success
23702
+ */
23703
+ 200: ProjectSiteResponseObject;
23704
+ };
23705
+ export type UpdateProjectSiteResponse = UpdateProjectSiteResponses[keyof UpdateProjectSiteResponses];
23018
23706
  export type ListProjectsData = {
23019
23707
  body?: never;
23020
23708
  path?: never;
@@ -23372,6 +24060,33 @@ export type DeleteApprenticeshipOccupationResponses = {
23372
24060
  200: PwaTradeApprenticeshipOccupationResponseObject;
23373
24061
  };
23374
24062
  export type DeleteApprenticeshipOccupationResponse = DeleteApprenticeshipOccupationResponses[keyof DeleteApprenticeshipOccupationResponses];
24063
+ export type GetApprenticeshipOccupationData = {
24064
+ body?: never;
24065
+ path: {
24066
+ trade_id: string;
24067
+ id: string;
24068
+ };
24069
+ query?: never;
24070
+ url: '/api/v1/pwa/trades/{trade_id}/apprenticeship_occupations/{id}';
24071
+ };
24072
+ export type GetApprenticeshipOccupationErrors = {
24073
+ /**
24074
+ * Forbidden
24075
+ */
24076
+ 403: Problem;
24077
+ /**
24078
+ * Not Found
24079
+ */
24080
+ 404: Problem;
24081
+ };
24082
+ export type GetApprenticeshipOccupationError = GetApprenticeshipOccupationErrors[keyof GetApprenticeshipOccupationErrors];
24083
+ export type GetApprenticeshipOccupationResponses = {
24084
+ /**
24085
+ * Success
24086
+ */
24087
+ 200: PwaTradeApprenticeshipOccupationResponseObject;
24088
+ };
24089
+ export type GetApprenticeshipOccupationResponse = GetApprenticeshipOccupationResponses[keyof GetApprenticeshipOccupationResponses];
23375
24090
  export type UpdateApprenticeshipOccupationData = {
23376
24091
  body: PwaTradeApprenticeshipOccupationUpdateParameters;
23377
24092
  path: {
@@ -24238,6 +24953,41 @@ export type GetPriorPeriodAdjustmentResponses = {
24238
24953
  200: PriorPeriodAdjustmentResponseObject;
24239
24954
  };
24240
24955
  export type GetPriorPeriodAdjustmentResponse = GetPriorPeriodAdjustmentResponses[keyof GetPriorPeriodAdjustmentResponses];
24956
+ export type UpdatePriorPeriodAdjustmentData = {
24957
+ body: PriorPeriodAdjustmentUpdateParameters;
24958
+ path: {
24959
+ time_card_id: string;
24960
+ id: string;
24961
+ };
24962
+ query?: never;
24963
+ url: '/api/v1/time_cards/{time_card_id}/prior_period_adjustments/{id}';
24964
+ };
24965
+ export type UpdatePriorPeriodAdjustmentErrors = {
24966
+ /**
24967
+ * Bad Request
24968
+ */
24969
+ 400: Problem;
24970
+ /**
24971
+ * Forbidden
24972
+ */
24973
+ 403: Problem;
24974
+ /**
24975
+ * Not Found
24976
+ */
24977
+ 404: Problem;
24978
+ /**
24979
+ * Unprocessable Content
24980
+ */
24981
+ 422: Problem;
24982
+ };
24983
+ export type UpdatePriorPeriodAdjustmentError = UpdatePriorPeriodAdjustmentErrors[keyof UpdatePriorPeriodAdjustmentErrors];
24984
+ export type UpdatePriorPeriodAdjustmentResponses = {
24985
+ /**
24986
+ * Success
24987
+ */
24988
+ 200: PriorPeriodAdjustmentResponseObject;
24989
+ };
24990
+ export type UpdatePriorPeriodAdjustmentResponse = UpdatePriorPeriodAdjustmentResponses[keyof UpdatePriorPeriodAdjustmentResponses];
24241
24991
  export type ListPwaCompliancesData = {
24242
24992
  body?: never;
24243
24993
  path: {
@@ -24518,6 +25268,10 @@ export type CreateTimeEntryErrors = {
24518
25268
  * Forbidden
24519
25269
  */
24520
25270
  403: Problem;
25271
+ /**
25272
+ * Not Found
25273
+ */
25274
+ 404: Problem;
24521
25275
  /**
24522
25276
  * Unprocessable Content
24523
25277
  */
@@ -26179,6 +26933,10 @@ export type UpdateCompanyData = {
26179
26933
  url: '/api/v1/users/{user_id}/companies/{company_id}';
26180
26934
  };
26181
26935
  export type UpdateCompanyErrors = {
26936
+ /**
26937
+ * Bad Request
26938
+ */
26939
+ 400: Problem;
26182
26940
  /**
26183
26941
  * Forbidden
26184
26942
  */
@@ -26208,6 +26966,10 @@ export type ListUsersData = {
26208
26966
  * Filter users by their employment lifecycle in the company, the same vocabulary `employment_state` publishes on each user. Defaults to `active` (an employment in effect now); `scheduled` returns employments that have not begun; `terminated` returns employments that have ended, with nothing current and nothing upcoming; `none` returns people your company sees without employing, which is its role holders and its invitees; `all` returns everyone your company sees.
26209
26967
  */
26210
26968
  'filter[state]'?: 'active' | 'scheduled' | 'terminated' | 'none' | 'all';
26969
+ /**
26970
+ * Fuzzy-matches the person name (trigram word-similarity). Matches the name column only — not email or phone.
26971
+ */
26972
+ 'filter[name]'?: string;
26211
26973
  /**
26212
26974
  * This pagination cursor corresponds to the cursor value found in the response in
26213
26975
  * `meta.page.next_cursor`.
@@ -26319,6 +27081,10 @@ export type UpdateUserData = {
26319
27081
  url: '/api/v1/users/{id}';
26320
27082
  };
26321
27083
  export type UpdateUserErrors = {
27084
+ /**
27085
+ * Bad Request
27086
+ */
27087
+ 400: Problem;
26322
27088
  /**
26323
27089
  * Forbidden
26324
27090
  */