@dsptch-work/api-client 0.37.0 → 0.39.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.
@@ -287,7 +287,7 @@ export type Problem = {
287
287
  *
288
288
  * **Unparseable Date Value**
289
289
  *
290
- * A date-time value cannot be parsed, or falls outside the storable range. Format values as ISO 8601 (for example `2026-08-05` or `2026-08-05T14:30`).
290
+ * A date or date-time value cannot be parsed, names a day that does not exist, falls outside the storable range, or has no UTC offset where one is required. Send a day as `2026-08-05` and an instant with its offset (`2026-08-05T14:30:00-04:00` or `2026-08-05T18:30:00Z`). The times of time entries and apprenticeship allocations, a compliance check's due time, a timecode correction's bounds, timestamp filter bounds, and `as_of[]` coordinates need the offset; a time sent without one is refused with the value to send.
291
291
  *
292
292
  * ### invalid_filter_value
293
293
  *
@@ -1479,7 +1479,7 @@ export type ApprenticeshipAllocationCreateParameters = {
1479
1479
  */
1480
1480
  description?: string | null;
1481
1481
  /**
1482
- * Effective timestamp for the credited hours, as ISO 8601 with an explicit UTC offset or Z. Optional for a standalone allocation, defaulting to now, and null is rejected; must equal the linked time card's pay-period start when one is supplied. The employer-local date must be today or earlier.
1482
+ * Effective timestamp for the credited hours, as a date-time with a UTC offset (`Z` or `-04:00`). Optional for a standalone allocation, defaulting to now; must equal the linked time card's pay-period start when one is supplied. The employer-local date must be today or earlier. A time without an offset answers 422 invalid_date at its pointer, showing the time fixed with the offset of the employer's time zone and in UTC. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
1483
1483
  */
1484
1484
  allocated_at?: string;
1485
1485
  };
@@ -1500,7 +1500,7 @@ export type ApprenticeshipAllocationUpdateParameters = {
1500
1500
  */
1501
1501
  description?: string | null;
1502
1502
  /**
1503
- * Effective timestamp for the credited hours, as ISO 8601 with an explicit UTC offset or Z. Optional; omission leaves the timestamp unchanged, and null is rejected. The employer-local date must be today or earlier and may predate enrollment. Time-card-linked allocations cannot be date-corrected. An unchanged timestamp does not request repricing.
1503
+ * Effective timestamp for the credited hours, as a date-time with a UTC offset (`Z` or `-04:00`). Optional; omission leaves the timestamp unchanged. The employer-local date must be today or earlier and may predate enrollment. Time-card-linked allocations cannot be date-corrected. An unchanged timestamp does not request repricing. A time without an offset answers 422 invalid_date at its pointer, showing the time fixed with the offset of the employer's time zone and in UTC. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
1504
1504
  */
1505
1505
  allocated_at?: string;
1506
1506
  };
@@ -1862,7 +1862,7 @@ export type ApprenticeshipWageScheduleParameters = {
1862
1862
  */
1863
1863
  fringe_cents?: string | null;
1864
1864
  /**
1865
- * Set to true, together with the period's id, to remove that period from the schedule.
1865
+ * Set to true, together with the period's id, to remove that period from the schedule. A row that sets it without an id answers 422 at that row's id.
1866
1866
  */
1867
1867
  _destroy?: boolean;
1868
1868
  }>;
@@ -1948,7 +1948,7 @@ export type ApprenticeshipWageScheduleUpdateParameters = {
1948
1948
  */
1949
1949
  fringe_cents?: string | null;
1950
1950
  /**
1951
- * Set to true, together with the period's id, to remove that period from the schedule.
1951
+ * Set to true, together with the period's id, to remove that period from the schedule. A row that sets it without an id answers 422 at that row's id.
1952
1952
  */
1953
1953
  _destroy?: boolean;
1954
1954
  }>;
@@ -2540,7 +2540,7 @@ export type TimecodeHistoryVersionObject = {
2540
2540
  */
2541
2541
  export type TimecodeParameters = {
2542
2542
  /**
2543
- * When the new timecode becomes effective, as a calendar date (`YYYY-MM-DD`) stored as midnight UTC. A time sent with it is kept, not dropped, and is read as UTC unless it carries an offset (`Z` or `-05:00`). Defaults to the time of the request. Accepted on create only.
2543
+ * The day the new timecode becomes effective, as a calendar date (`YYYY-MM-DD`). It applies from 00:00 UTC on that day, the same as the web. A value with a time of day is refused with `422`. Defaults to the time of the request. Accepted on create only.
2544
2544
  */
2545
2545
  effective_date?: string;
2546
2546
  /**
@@ -2609,11 +2609,11 @@ export type TimecodeParameters = {
2609
2609
  */
2610
2610
  export type TimecodeCorrectionParameters = {
2611
2611
  /**
2612
- * Where the correction starts applying. Defaults to the addressed version's own start.
2612
+ * Where the correction starts applying, as a date-time with a UTC offset (`Z` or `-04:00`). Defaults to the addressed version's own start. A time without an offset answers 422 invalid_date at its pointer, showing the time fixed in UTC. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
2613
2613
  */
2614
2614
  effective_from?: string;
2615
2615
  /**
2616
- * Where the correction stops applying; it must be later than `effective_from`. Omit to correct through the end of the segment containing `effective_from`, preserving later scheduled changes.
2616
+ * Where the correction stops applying, as a date-time with a UTC offset (`Z` or `-04:00`); it must be later than `effective_from`. Omit to correct through the end of the segment containing `effective_from`, preserving later scheduled changes. A time without an offset answers 422 invalid_date at its pointer, showing the time fixed in UTC. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
2617
2617
  */
2618
2618
  effective_to?: string;
2619
2619
  /**
@@ -2682,7 +2682,7 @@ export type TimecodeCorrectionParameters = {
2682
2682
  */
2683
2683
  export type TimecodeGenesisParameters = {
2684
2684
  /**
2685
- * The new beginning of the timecode's valid-time timeline. Required; the shift is refused if it would orphan recorded time or leave no coverage.
2685
+ * The new first day of the timecode's valid-time timeline, as a calendar date (`YYYY-MM-DD`). The timeline begins at 00:00 UTC on that day, the same as the web. A value with a time of day is refused with `422`. Required; the shift is refused if it would orphan recorded time or leave no coverage.
2686
2686
  */
2687
2687
  effective_date: string;
2688
2688
  };
@@ -2700,7 +2700,7 @@ export type TimecodeScheduledTerminationParameters = {
2700
2700
  */
2701
2701
  export type TimecodeScheduledChangeParameters = {
2702
2702
  /**
2703
- * When the scheduled change takes effect. Must be on or after the timecode's valid_from.
2703
+ * The day the change takes effect, as a calendar date (`YYYY-MM-DD`). It applies from 00:00 UTC on that day, the same as the web; on the day the timecode began, it applies from that beginning instead. A value with a time of day is refused with `422`. Must be on or after the day the timecode began.
2704
2704
  */
2705
2705
  effective_date: string;
2706
2706
  /**
@@ -2908,7 +2908,7 @@ export type AssetsProductParameters = {
2908
2908
  */
2909
2909
  file?: string;
2910
2910
  /**
2911
- * Set true to remove the attachment named by id.
2911
+ * Set true to remove the attachment named by id. A row that sets it without an id answers 422 at that row's id.
2912
2912
  */
2913
2913
  _destroy?: boolean;
2914
2914
  }>;
@@ -2995,7 +2995,7 @@ export type AssetsProductUpdateParameters = {
2995
2995
  */
2996
2996
  file?: string;
2997
2997
  /**
2998
- * Set true to remove the attachment named by id.
2998
+ * Set true to remove the attachment named by id. A row that sets it without an id answers 422 at that row's id.
2999
2999
  */
3000
3000
  _destroy?: boolean;
3001
3001
  }>;
@@ -3227,7 +3227,7 @@ export type AssetsAttributeParameters = {
3227
3227
  */
3228
3228
  position?: number;
3229
3229
  /**
3230
- * Set true to remove this entry.
3230
+ * Set true to remove this entry. A row that sets it without an id answers 422 at that row's id.
3231
3231
  */
3232
3232
  _destroy?: boolean;
3233
3233
  }>;
@@ -3261,7 +3261,7 @@ export type AssetsAttributeUpdateParameters = {
3261
3261
  */
3262
3262
  position?: number;
3263
3263
  /**
3264
- * Set true to remove this entry.
3264
+ * Set true to remove this entry. A row that sets it without an id answers 422 at that row's id.
3265
3265
  */
3266
3266
  _destroy?: boolean;
3267
3267
  }>;
@@ -3361,7 +3361,7 @@ export type AssetsCategoryParameters = {
3361
3361
  */
3362
3362
  position?: number;
3363
3363
  /**
3364
- * Set true to remove this entry.
3364
+ * Set true to remove this entry. A row that sets it without an id answers 422 at that row's id.
3365
3365
  */
3366
3366
  _destroy?: boolean;
3367
3367
  }>;
@@ -3403,7 +3403,7 @@ export type AssetsCategoryUpdateParameters = {
3403
3403
  */
3404
3404
  position?: number;
3405
3405
  /**
3406
- * Set true to remove this entry.
3406
+ * Set true to remove this entry. A row that sets it without an id answers 422 at that row's id.
3407
3407
  */
3408
3408
  _destroy?: boolean;
3409
3409
  }>;
@@ -3488,13 +3488,13 @@ export type TimeCardPerDiemResponseObject = {
3488
3488
  */
3489
3489
  per_diem_id: string | null;
3490
3490
  /**
3491
- * Allowance amount in integer cents, as a string; snapshotted from the catalog per diem when saved (0 when none). Null when unset.
3491
+ * Allowance amount in integer cents, as a string; snapshotted from the catalog per diem when saved (0 when none). Null when unset. Omitted when the caller may see the time card but not its money.
3492
3492
  */
3493
- per_diem_rate_cents: string | null;
3493
+ per_diem_rate_cents?: string | null;
3494
3494
  /**
3495
- * ISO 4217 currency code for the rate; snapshotted from the catalog per diem. Null when unset.
3495
+ * ISO 4217 currency code for the rate; snapshotted from the catalog per diem. Null when unset. Omitted when the caller may see the time card but not its money.
3496
3496
  */
3497
- per_diem_currency: string | null;
3497
+ per_diem_currency?: string | null;
3498
3498
  /**
3499
3499
  * Whether the allowance is treated as taxable income; snapshotted from the catalog per diem.
3500
3500
  */
@@ -4368,7 +4368,7 @@ export type JobResponseObject = {
4368
4368
  */
4369
4369
  description: string;
4370
4370
  /**
4371
- * The job's scheduled time window as a timestamp range; null when unscheduled. Its bounds are also exposed individually as start_time and end_time.
4371
+ * The job's scheduled time window as a timestamp range; null when unscheduled. start_time and end_time name the days it spans in tz_name.
4372
4372
  */
4373
4373
  scheduled_time: string | null;
4374
4374
  /**
@@ -4384,11 +4384,11 @@ export type JobResponseObject = {
4384
4384
  */
4385
4385
  status: string;
4386
4386
  /**
4387
- * Start of the job's scheduled window (ISO 8601), the lower bound of scheduled_time; null when unscheduled.
4387
+ * The job's first day, as a calendar date (`YYYY-MM-DD`) in tz_name; the schedule starts at the start of that day there, the same as the web. Null when unscheduled.
4388
4388
  */
4389
4389
  start_time: string | null;
4390
4390
  /**
4391
- * End of the job's scheduled window (ISO 8601), the upper bound of scheduled_time; null when unscheduled.
4391
+ * The job's last day, as a calendar date (`YYYY-MM-DD`) in tz_name; the schedule ends at the end of that day there, the same as the web. Null when unscheduled.
4392
4392
  */
4393
4393
  end_time: string | null;
4394
4394
  /**
@@ -4673,11 +4673,11 @@ export type JobCreateParameters = {
4673
4673
  */
4674
4674
  region?: string | null;
4675
4675
  /**
4676
- * Start of the job's scheduled window (ISO 8601); the date is anchored to the start of that day in tz_name. Null to leave the job unscheduled; any other non-string, false included, answers 422.
4676
+ * The job's first day, as a calendar date (`YYYY-MM-DD`) in tz_name, stored as the start of that day there, the same as the web. Null to leave the job unscheduled. A date-time answers 422 naming the day to send; a blank, any other non-date, or a non-string answers 422.
4677
4677
  */
4678
4678
  start_time?: string | null;
4679
4679
  /**
4680
- * End of the job's scheduled window (ISO 8601); the date is anchored to the start of that day in tz_name. Null to leave the job unscheduled; any other non-string, false included, answers 422.
4680
+ * The job's last day, as a calendar date (`YYYY-MM-DD`) in tz_name, stored as the end of that day there, the same as the web. Null to leave the job unscheduled. A date-time answers 422 naming the day to send; a blank, any other non-date, or a non-string answers 422.
4681
4681
  */
4682
4682
  end_time?: string | null;
4683
4683
  /**
@@ -4914,11 +4914,11 @@ export type JobUpdateParameters = {
4914
4914
  */
4915
4915
  region?: string | null;
4916
4916
  /**
4917
- * Start of the job's scheduled window (ISO 8601); the date is anchored to the start of that day in tz_name. Null to leave the job unscheduled; any other non-string, false included, answers 422.
4917
+ * The job's first day, as a calendar date (`YYYY-MM-DD`) in tz_name, stored as the start of that day there, the same as the web. Null to leave the job unscheduled. A date-time answers 422 naming the day to send; a blank, any other non-date, or a non-string answers 422.
4918
4918
  */
4919
4919
  start_time?: string | null;
4920
4920
  /**
4921
- * End of the job's scheduled window (ISO 8601); the date is anchored to the start of that day in tz_name. Null to leave the job unscheduled; any other non-string, false included, answers 422.
4921
+ * The job's last day, as a calendar date (`YYYY-MM-DD`) in tz_name, stored as the end of that day there, the same as the web. Null to leave the job unscheduled. A date-time answers 422 naming the day to send; a blank, any other non-date, or a non-string answers 422.
4922
4922
  */
4923
4923
  end_time?: string | null;
4924
4924
  /**
@@ -5443,15 +5443,15 @@ export type UserResponseObject = {
5443
5443
  */
5444
5444
  export type UserUpdateParameters = {
5445
5445
  /**
5446
- * Work email address.
5446
+ * Work email address. Once verified, changes only through the user's confirmation; sending the current value is accepted.
5447
5447
  */
5448
5448
  email?: string | null;
5449
5449
  /**
5450
- * Personal (non-work) email address.
5450
+ * Personal (non-work) email address. Once verified, changes only through the user's confirmation; sending the current value is accepted.
5451
5451
  */
5452
5452
  personal_email?: string | null;
5453
5453
  /**
5454
- * Contact phone number.
5454
+ * Contact phone number. Once verified, changes only through the user's confirmation; sending the current value is accepted.
5455
5455
  */
5456
5456
  phone_number?: string | null;
5457
5457
  /**
@@ -5919,11 +5919,11 @@ export type TimeEntryCreateParameters = {
5919
5919
  */
5920
5920
  timekeeping_time_card_id: string;
5921
5921
  /**
5922
- * Start of the work as a timestamp string, rounded to the nearest second. A time with an offset (`Z` or `-05:00`) is read at that instant. A time without one is read in the time card's pay schedule zone (`tz_name`); a time the clocks skip when they spring forward is read an hour later, and a time they repeat when they fall back is read as its first occurrence. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
5922
+ * Start of the work as a date-time with a UTC offset (`Z` or `-04:00`), rounded to the nearest second. The offset decides the instant, daylight saving included, so either occurrence of a time the clocks repeat when they fall back can be sent (`01:30:00-04:00` or `01:30:00-05:00`). A time without an offset answers 422 invalid_date at its pointer, showing the time fixed with the offset of the time card's pay schedule zone (`tz_name`) and in UTC. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
5923
5923
  */
5924
5924
  start_time: string;
5925
5925
  /**
5926
- * End of the work as a timestamp string, rounded to the nearest second. A time with an offset (`Z` or `-05:00`) is read at that instant. A time without one is read in the time card's pay schedule zone (`tz_name`); a time the clocks skip when they spring forward is read an hour later, and a time they repeat when they fall back is read as its first occurrence. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
5926
+ * End of the work as a date-time with a UTC offset (`Z` or `-04:00`), rounded to the nearest second. The offset decides the instant, daylight saving included, so either occurrence of a time the clocks repeat when they fall back can be sent (`01:30:00-04:00` or `01:30:00-05:00`). A time without an offset answers 422 invalid_date at its pointer, showing the time fixed with the offset of the time card's pay schedule zone (`tz_name`) and in UTC. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
5927
5927
  */
5928
5928
  end_time: string;
5929
5929
  /**
@@ -5960,11 +5960,11 @@ export type TimeEntryCreateParameters = {
5960
5960
  */
5961
5961
  export type TimeEntryUpdateParameters = {
5962
5962
  /**
5963
- * Start of the work as a timestamp string, rounded to the nearest second. A time with an offset (`Z` or `-05:00`) is read at that instant. A time without one is read in the time card's pay schedule zone (`tz_name`); a time the clocks skip when they spring forward is read an hour later, and a time they repeat when they fall back is read as its first occurrence. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
5963
+ * Start of the work as a date-time with a UTC offset (`Z` or `-04:00`), rounded to the nearest second. The offset decides the instant, daylight saving included, so either occurrence of a time the clocks repeat when they fall back can be sent (`01:30:00-04:00` or `01:30:00-05:00`). A time without an offset answers 422 invalid_date at its pointer, showing the time fixed with the offset of the time card's pay schedule zone (`tz_name`) and in UTC. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
5964
5964
  */
5965
5965
  start_time?: string;
5966
5966
  /**
5967
- * End of the work as a timestamp string, rounded to the nearest second. A time with an offset (`Z` or `-05:00`) is read at that instant. A time without one is read in the time card's pay schedule zone (`tz_name`); a time the clocks skip when they spring forward is read an hour later, and a time they repeat when they fall back is read as its first occurrence. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
5967
+ * End of the work as a date-time with a UTC offset (`Z` or `-04:00`), rounded to the nearest second. The offset decides the instant, daylight saving included, so either occurrence of a time the clocks repeat when they fall back can be sent (`01:30:00-04:00` or `01:30:00-05:00`). A time without an offset answers 422 invalid_date at its pointer, showing the time fixed with the offset of the time card's pay schedule zone (`tz_name`) and in UTC. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
5968
5968
  */
5969
5969
  end_time?: string;
5970
5970
  /**
@@ -6058,6 +6058,12 @@ export type FormDefinitionObject = {
6058
6058
  json: {
6059
6059
  [key: string]: unknown;
6060
6060
  };
6061
+ /**
6062
+ * OpenAPI 3.0 schema for the submission json. Object properties name the answers, and array items describe each row or value. Descriptions document choice values. Unanswered fields may be omitted or set to null.
6063
+ */
6064
+ submission_shape: {
6065
+ [key: string]: unknown;
6066
+ };
6061
6067
  /**
6062
6068
  * When the record was created (ISO 8601).
6063
6069
  */
@@ -6075,7 +6081,7 @@ export type FormDefinitionResponseObject = {
6075
6081
  data: Array<FormDefinitionObject>;
6076
6082
  };
6077
6083
  /**
6078
- * 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.
6084
+ * A page of form submissions — the lighter list representation. A submission is a user's completed form, created in the app or through the API.
6079
6085
  */
6080
6086
  export type FormSubmissionIndexObject = {
6081
6087
  meta: Meta;
@@ -6107,9 +6113,13 @@ export type FormSubmissionIndexObject = {
6107
6113
  }>;
6108
6114
  };
6109
6115
  /**
6110
- * A single form submission — a user's completed SurveyJS form with the resolved answers (the fuller show representation). Read-only; submissions are created in the app.
6116
+ * A single form submission with resolved answers, returned by both show and create.
6111
6117
  */
6112
6118
  export type FormSubmissionResponseObject = {
6119
+ /**
6120
+ * Unique identifier.
6121
+ */
6122
+ id: string;
6113
6123
  /**
6114
6124
  * The submitting user.
6115
6125
  */
@@ -6158,6 +6168,29 @@ export type FormSubmissionResponseObject = {
6158
6168
  */
6159
6169
  updated_at: string;
6160
6170
  };
6171
+ /**
6172
+ * Create a submission using supported keys from the form definition's submission_shape. Requires a user-scoped API key.
6173
+ */
6174
+ export type FormSubmissionCreateParameters = {
6175
+ /**
6176
+ * ID of an active, non-archived form definition. Read its detail endpoint before building answers.
6177
+ */
6178
+ form_definition_id: string;
6179
+ /**
6180
+ * UUID of the key's own user, who must be a current member of the key's company. Missing or unauthorized users return 403.
6181
+ */
6182
+ user_id: string;
6183
+ /**
6184
+ * Answer object keyed by SurveyJS valueName when set, otherwise name. Use question choice values and GlobalIDs for DSPTCH reference questions. Missing or null returns 422. The API validates recursive structure and primitive types. Choice fields accept strings, which are stored unchanged. Choice membership, required answers, dates, and SurveyJS logic are not validated.
6185
+ */
6186
+ json: {
6187
+ [key: string]: unknown;
6188
+ };
6189
+ /**
6190
+ * Optional IANA timezone such as America/Chicago; defaults to UTC.
6191
+ */
6192
+ timezone?: string;
6193
+ };
6161
6194
  /**
6162
6195
  * 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. A value of the wrong JSON type, a null for a field that is not nullable, or a value outside a listed set answers 422 at its pointer, and nothing is written.
6163
6196
  */
@@ -7196,21 +7229,21 @@ export type TimeCardResponseObject = {
7196
7229
  2: number;
7197
7230
  };
7198
7231
  /**
7199
- * Total pay for the period in integer cents, as a decimal string.
7232
+ * Total pay for the period in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7200
7233
  */
7201
- pay_cents: string;
7234
+ pay_cents?: string;
7202
7235
  /**
7203
- * Base-wage portion of pay in integer cents, as a decimal string.
7236
+ * Base-wage portion of pay in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7204
7237
  */
7205
- base_wage_pay_cents: string;
7238
+ base_wage_pay_cents?: string;
7206
7239
  /**
7207
- * Additional pay from the 1.5x overtime multiplier in integer cents, as a decimal string.
7240
+ * Additional pay from the 1.5x overtime multiplier in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7208
7241
  */
7209
- one_five_x_adder_cents: string;
7242
+ one_five_x_adder_cents?: string;
7210
7243
  /**
7211
- * Additional pay from the 2.0x overtime multiplier in integer cents, as a decimal string.
7244
+ * Additional pay from the 2.0x overtime multiplier in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7212
7245
  */
7213
- two_x_adder_cents: string;
7246
+ two_x_adder_cents?: string;
7214
7247
  /**
7215
7248
  * IDs of the wage-determination regions (boundaries) that contributed to this rollup.
7216
7249
  */
@@ -7319,21 +7352,21 @@ export type JobTimeCardDayResponseObject = {
7319
7352
  2: number;
7320
7353
  };
7321
7354
  /**
7322
- * Total pay for this date in integer cents, as a decimal string.
7355
+ * Total pay for this date in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7323
7356
  */
7324
- pay_cents: string;
7357
+ pay_cents?: string;
7325
7358
  /**
7326
- * Base-wage portion of this date's pay in integer cents, as a decimal string.
7359
+ * Base-wage portion of this date's pay in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7327
7360
  */
7328
- base_wage_pay_cents: string;
7361
+ base_wage_pay_cents?: string;
7329
7362
  /**
7330
- * Additional pay from the 1.5x overtime multiplier on this date, in integer cents, as a decimal string.
7363
+ * Additional pay from the 1.5x overtime multiplier on this date, in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7331
7364
  */
7332
- one_five_x_adder_cents: string;
7365
+ one_five_x_adder_cents?: string;
7333
7366
  /**
7334
- * Additional pay from the 2.0x overtime multiplier on this date, in integer cents, as a decimal string.
7367
+ * Additional pay from the 2.0x overtime multiplier on this date, in integer cents, as a decimal string. Omitted when the caller may see the time card but not its money.
7335
7368
  */
7336
- two_x_adder_cents: string;
7369
+ two_x_adder_cents?: string;
7337
7370
  /**
7338
7371
  * IDs of the wage-determination regions (boundaries) that contributed to this rollup.
7339
7372
  */
@@ -7487,37 +7520,37 @@ export type JobTimeCardDayResponseObject = {
7487
7520
  2: number;
7488
7521
  };
7489
7522
  /**
7490
- * Pay-period-to-date running total of total pay in integer cents, as a decimal string, through this date.
7523
+ * Pay-period-to-date running total of total pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7491
7524
  */
7492
- cumulative_pay_cents: string;
7525
+ cumulative_pay_cents?: string;
7493
7526
  /**
7494
- * Week-to-date running total of total pay in integer cents, as a decimal string, through this date.
7527
+ * Week-to-date running total of total pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7495
7528
  */
7496
- weekly_cumulative_pay_cents: string;
7529
+ weekly_cumulative_pay_cents?: string;
7497
7530
  /**
7498
- * Pay-period-to-date running total of base-wage pay in integer cents, as a decimal string, through this date.
7531
+ * Pay-period-to-date running total of base-wage pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7499
7532
  */
7500
- cumulative_base_wage_pay_cents: string;
7533
+ cumulative_base_wage_pay_cents?: string;
7501
7534
  /**
7502
- * Week-to-date running total of base-wage pay in integer cents, as a decimal string, through this date.
7535
+ * Week-to-date running total of base-wage pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7503
7536
  */
7504
- weekly_cumulative_base_wage_pay_cents: string;
7537
+ weekly_cumulative_base_wage_pay_cents?: string;
7505
7538
  /**
7506
- * Pay-period-to-date running total of 1.5x overtime adder pay in integer cents, as a decimal string, through this date.
7539
+ * Pay-period-to-date running total of 1.5x overtime adder pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7507
7540
  */
7508
- cumulative_one_five_x_adder_cents: string;
7541
+ cumulative_one_five_x_adder_cents?: string;
7509
7542
  /**
7510
- * Week-to-date running total of 1.5x overtime adder pay in integer cents, as a decimal string, through this date.
7543
+ * Week-to-date running total of 1.5x overtime adder pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7511
7544
  */
7512
- weekly_cumulative_one_five_x_adder_cents: string;
7545
+ weekly_cumulative_one_five_x_adder_cents?: string;
7513
7546
  /**
7514
- * Pay-period-to-date running total of 2.0x overtime adder pay in integer cents, as a decimal string, through this date.
7547
+ * Pay-period-to-date running total of 2.0x overtime adder pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7515
7548
  */
7516
- cumulative_two_x_adder_cents: string;
7549
+ cumulative_two_x_adder_cents?: string;
7517
7550
  /**
7518
- * Week-to-date running total of 2.0x overtime adder pay in integer cents, as a decimal string, through this date.
7551
+ * Week-to-date running total of 2.0x overtime adder pay in integer cents, as a decimal string, through this date. Omitted when the caller may see the time card but not its money.
7519
7552
  */
7520
- weekly_cumulative_two_x_adder_cents: string;
7553
+ weekly_cumulative_two_x_adder_cents?: string;
7521
7554
  /**
7522
7555
  * Pay-period-to-date running total of contributing wage-determination region IDs, through this date.
7523
7556
  */
@@ -8500,6 +8533,40 @@ export type ProjectSiteUpdateParameters = {
8500
8533
  */
8501
8534
  feature_ids?: Array<string>;
8502
8535
  };
8536
+ /**
8537
+ * A project–user visibility join: names one person on one project. Path `{id}` is this join's id. Not included on project GET.
8538
+ */
8539
+ export type ProjectUserVisibilityResponseObject = {
8540
+ /**
8541
+ * Unique identifier.
8542
+ */
8543
+ id: string;
8544
+ /**
8545
+ * ID of the project this row names a person on. Taken from the path.
8546
+ */
8547
+ project_id: string;
8548
+ /**
8549
+ * ID of the named user. Must hold a manager, safety manager, or field lead role at the project's owner.
8550
+ */
8551
+ user_id: string;
8552
+ /**
8553
+ * When the record was created (ISO 8601).
8554
+ */
8555
+ created_at: string;
8556
+ /**
8557
+ * When the record was last updated (ISO 8601).
8558
+ */
8559
+ updated_at: string;
8560
+ };
8561
+ /**
8562
+ * Request body for naming a person on a project. `user_id` is required. The project is taken from the path and is not part of the body. There is no update body — `user_id` and `project_id` are readonly after create.
8563
+ */
8564
+ export type ProjectUserVisibilityParameters = {
8565
+ /**
8566
+ * ID of a user visible to the API key who holds a manager, safety manager, or field lead role at the project's owner. Duplicate (project, user) pairs are rejected. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user the key cannot see answers 404.
8567
+ */
8568
+ user_id: string;
8569
+ };
8503
8570
  /**
8504
8571
  * A file attached to a project. Uploaded through the direct-upload flow. `name` is always "document" and is not client-writable.
8505
8572
  */
@@ -9078,7 +9145,7 @@ export type ComplianceCheckParameters = {
9078
9145
  */
9079
9146
  status?: 'dismissed' | 'pending';
9080
9147
  /**
9081
- * When the check is due, as a calendar date (`YYYY-MM-DD`) stored as midnight UTC. A time sent with it is kept, not dropped, and is read as UTC unless it carries an offset (`Z` or `-05:00`). Send null to clear it, or omit to leave it unchanged. A value that is not a string answers 422.
9148
+ * When the check is due, as a date-time with a UTC offset (`Z` or `-05:00`). A time without an offset, a bare day included, answers 422 invalid_date at its pointer, showing the time fixed with the offset of the check's zone (its job's, else its project's, else its company's) and in UTC; a check on a person shows it only in UTC. A non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date. Send null to clear it, or omit to leave it unchanged.
9082
9149
  */
9083
9150
  time_due?: string | null;
9084
9151
  /**
@@ -10902,7 +10969,7 @@ export type PositionParameters = {
10902
10969
  };
10903
10970
  };
10904
10971
  /**
10905
- * Parameters for creating a per-unit scope price on a job. `scope_kind` and `unit_price` are required; omitting either answers 400, and a null or wrong-typed value answers 422.
10972
+ * Parameters for creating a per-unit scope price on a job. `scope_kind` and `unit_price_cents` are required; omitting either answers 400, and a null or wrong-typed value answers 422.
10906
10973
  */
10907
10974
  export type ProductionJobScopePriceParameters = {
10908
10975
  /**
@@ -10910,9 +10977,9 @@ export type ProductionJobScopePriceParameters = {
10910
10977
  */
10911
10978
  scope_kind: string;
10912
10979
  /**
10913
- * Billing rate per unit, as a decimal string in the company's currency. A JSON number answers 422.
10980
+ * Billing rate per unit in cents, as a decimal string (e.g. "120000" or the read form "120000.0" for $1,200.00, or "3.5" for $0.035); a fraction of a cent is kept exactly and bills exactly. A negative value or a JSON number answers 422.
10914
10981
  */
10915
- unit_price: string;
10982
+ unit_price_cents: string;
10916
10983
  /**
10917
10984
  * Contracted number of units expected for this scope on the job, as an integer; null when no target is set.
10918
10985
  */
@@ -10931,9 +10998,9 @@ export type ProductionJobScopePriceUpdateParameters = {
10931
10998
  */
10932
10999
  scope_kind?: string;
10933
11000
  /**
10934
- * Billing rate per unit, as a decimal string in the company's currency. A JSON number answers 422.
11001
+ * Billing rate per unit in cents, as a decimal string (e.g. "120000" or the read form "120000.0" for $1,200.00, or "3.5" for $0.035); a fraction of a cent is kept exactly and bills exactly. A negative value or a JSON number answers 422.
10935
11002
  */
10936
- unit_price?: string;
11003
+ unit_price_cents?: string;
10937
11004
  /**
10938
11005
  * Contracted number of units expected for this scope on the job, as an integer; null when no target is set.
10939
11006
  */
@@ -10964,9 +11031,9 @@ export type ProductionJobScopePriceResponseObject = {
10964
11031
  */
10965
11032
  unit_of_measure: string;
10966
11033
  /**
10967
- * 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.
11034
+ * Billing rate per unit in cents, as a decimal string (e.g. "120000.0" is $1,200.00 and "3.5" is $0.035); a fraction of a cent is kept exactly. 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.
10968
11035
  */
10969
- unit_price?: string;
11036
+ unit_price_cents?: string;
10970
11037
  /**
10971
11038
  * 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.
10972
11039
  */
@@ -13827,7 +13894,7 @@ export type AssetsItemResponseObject = {
13827
13894
  */
13828
13895
  status: 'available' | 'assigned' | null;
13829
13896
  /**
13830
- * When the item was purchased, as a calendar date (`YYYY-MM-DD`) stored as midnight UTC. A time sent with it is kept, not dropped, and is read as UTC unless it carries an offset (`Z` or `-05:00`).
13897
+ * The day the item was purchased, as a calendar date (`YYYY-MM-DD`), the UTC day it is stored on, the same day the web shows. Null when not recorded.
13831
13898
  */
13832
13899
  purchase_date: string | null;
13833
13900
  /**
@@ -13919,7 +13986,7 @@ export type AssetsItemParameters = {
13919
13986
  */
13920
13987
  status?: 'available' | 'assigned';
13921
13988
  /**
13922
- * When the item was purchased, as a calendar date (`YYYY-MM-DD`) stored as midnight UTC. A time sent with it is kept, not dropped, and is read as UTC unless it carries an offset (`Z` or `-05:00`).
13989
+ * The day the item was purchased, as a calendar date (`YYYY-MM-DD`). It is stored as 00:00 UTC on that day, the same as the web. A value with a time of day is refused with `422`. Send null to clear it.
13923
13990
  */
13924
13991
  purchase_date?: string | null;
13925
13992
  /**
@@ -13964,7 +14031,7 @@ export type AssetsItemParameters = {
13964
14031
  */
13965
14032
  file?: string;
13966
14033
  /**
13967
- * Set true to remove the attachment named by id.
14034
+ * Set true to remove the attachment named by id. A row that sets it without an id answers 422 at that row's id.
13968
14035
  */
13969
14036
  _destroy?: boolean;
13970
14037
  }>;
@@ -14014,7 +14081,7 @@ export type AssetsItemUpdateParameters = {
14014
14081
  */
14015
14082
  status?: 'available' | 'assigned';
14016
14083
  /**
14017
- * When the item was purchased, as a calendar date (`YYYY-MM-DD`) stored as midnight UTC. A time sent with it is kept, not dropped, and is read as UTC unless it carries an offset (`Z` or `-05:00`).
14084
+ * The day the item was purchased, as a calendar date (`YYYY-MM-DD`). It is stored as 00:00 UTC on that day, the same as the web. A value with a time of day is refused with `422`. Send null to clear it.
14018
14085
  */
14019
14086
  purchase_date?: string | null;
14020
14087
  /**
@@ -14059,7 +14126,7 @@ export type AssetsItemUpdateParameters = {
14059
14126
  */
14060
14127
  file?: string;
14061
14128
  /**
14062
- * Set true to remove the attachment named by id.
14129
+ * Set true to remove the attachment named by id. A row that sets it without an id answers 422 at that row's id.
14063
14130
  */
14064
14131
  _destroy?: boolean;
14065
14132
  }>;
@@ -14247,7 +14314,7 @@ export type AssetsFormAssignmentTriggerResponseObject = {
14247
14314
  */
14248
14315
  time_of_day_due: string;
14249
14316
  /**
14250
- * IDs of the users the generated form is assigned to. Used only when assign_to is custom; cleared for the other modes.
14317
+ * IDs of the users the generated form is assigned to. Used only when assign_to is custom; any other mode stores none.
14251
14318
  */
14252
14319
  assigned_user_ids: Array<string>;
14253
14320
  /**
@@ -14308,7 +14375,7 @@ export type AssetsFormAssignmentTriggerParameters = {
14308
14375
  */
14309
14376
  time_of_day_due: string;
14310
14377
  /**
14311
- * IDs of the users the generated form is assigned to. Used only when assign_to is custom; cleared for the other modes.
14378
+ * IDs of the users the generated form is assigned to. Used only when assign_to is custom; any other mode stores none.
14312
14379
  */
14313
14380
  assigned_user_ids?: Array<string>;
14314
14381
  /**
@@ -14361,7 +14428,7 @@ export type AssetsFormAssignmentTriggerUpdateParameters = {
14361
14428
  */
14362
14429
  time_of_day_due?: string;
14363
14430
  /**
14364
- * IDs of the users the generated form is assigned to. Used only when assign_to is custom; cleared for the other modes.
14431
+ * IDs of the users the generated form is assigned to. Used only when assign_to is custom; any other mode stores none.
14365
14432
  */
14366
14433
  assigned_user_ids?: Array<string>;
14367
14434
  /**
@@ -15111,7 +15178,7 @@ export type AssetsServiceEventParameters = {
15111
15178
  */
15112
15179
  file?: string;
15113
15180
  /**
15114
- * Set true to remove the attachment named by id.
15181
+ * Set true to remove the attachment named by id. A row that sets it without an id answers 422 at that row's id.
15115
15182
  */
15116
15183
  _destroy?: boolean;
15117
15184
  }>;
@@ -15153,7 +15220,7 @@ export type AssetsServiceEventUpdateParameters = {
15153
15220
  */
15154
15221
  file?: string;
15155
15222
  /**
15156
- * Set true to remove the attachment named by id.
15223
+ * Set true to remove the attachment named by id. A row that sets it without an id answers 422 at that row's id.
15157
15224
  */
15158
15225
  _destroy?: boolean;
15159
15226
  }>;
@@ -22633,6 +22700,38 @@ export type ListFormSubmissionsResponses = {
22633
22700
  200: FormSubmissionIndexObject;
22634
22701
  };
22635
22702
  export type ListFormSubmissionsResponse = ListFormSubmissionsResponses[keyof ListFormSubmissionsResponses];
22703
+ export type CreateFormSubmissionData = {
22704
+ body: FormSubmissionCreateParameters;
22705
+ path?: never;
22706
+ query?: never;
22707
+ url: '/api/v1/form_submissions';
22708
+ };
22709
+ export type CreateFormSubmissionErrors = {
22710
+ /**
22711
+ * Bad Request
22712
+ */
22713
+ 400: Problem;
22714
+ /**
22715
+ * Forbidden
22716
+ */
22717
+ 403: Problem;
22718
+ /**
22719
+ * Not Found
22720
+ */
22721
+ 404: Problem;
22722
+ /**
22723
+ * Unprocessable Content
22724
+ */
22725
+ 422: Problem;
22726
+ };
22727
+ export type CreateFormSubmissionError = CreateFormSubmissionErrors[keyof CreateFormSubmissionErrors];
22728
+ export type CreateFormSubmissionResponses = {
22729
+ /**
22730
+ * Created
22731
+ */
22732
+ 201: FormSubmissionResponseObject;
22733
+ };
22734
+ export type CreateFormSubmissionResponse = CreateFormSubmissionResponses[keyof CreateFormSubmissionResponses];
22636
22735
  export type GetFormSubmissionData = {
22637
22736
  body?: never;
22638
22737
  path: {
@@ -23601,7 +23700,7 @@ export type ListRateRulesData = {
23601
23700
  };
23602
23701
  query?: {
23603
23702
  /**
23604
- * Read the version valid at this point in time. Defaults to now.
23703
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
23605
23704
  */
23606
23705
  'as_of[valid]'?: string;
23607
23706
  as_of?: string;
@@ -23681,7 +23780,7 @@ export type GetRateRuleData = {
23681
23780
  };
23682
23781
  query?: {
23683
23782
  /**
23684
- * Read the version valid at this point in time. Defaults to now.
23783
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
23685
23784
  */
23686
23785
  'as_of[valid]'?: string;
23687
23786
  };
@@ -24194,7 +24293,7 @@ export type ListJobWageDeterminationsData = {
24194
24293
  };
24195
24294
  query?: {
24196
24295
  /**
24197
- * Read the version valid at this point in time. Defaults to now.
24296
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
24198
24297
  */
24199
24298
  'as_of[valid]'?: string;
24200
24299
  as_of?: string;
@@ -24317,7 +24416,7 @@ export type GetJobWageDeterminationData = {
24317
24416
  };
24318
24417
  query?: {
24319
24418
  /**
24320
- * Read the version valid at this point in time. Defaults to now.
24419
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
24321
24420
  */
24322
24421
  'as_of[valid]'?: string;
24323
24422
  };
@@ -25319,7 +25418,7 @@ export type ListOvertimeRulesData = {
25319
25418
  };
25320
25419
  query?: {
25321
25420
  /**
25322
- * Read the version valid at this point in time. Defaults to now.
25421
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
25323
25422
  */
25324
25423
  'as_of[valid]'?: string;
25325
25424
  as_of?: string;
@@ -25450,7 +25549,7 @@ export type GetOvertimeRuleData = {
25450
25549
  };
25451
25550
  query?: {
25452
25551
  /**
25453
- * Read the version valid at this point in time. Defaults to now.
25552
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
25454
25553
  */
25455
25554
  'as_of[valid]'?: string;
25456
25555
  };
@@ -25888,7 +25987,7 @@ export type ListPayRateRulesData = {
25888
25987
  };
25889
25988
  query?: {
25890
25989
  /**
25891
- * Read the version valid at this point in time. Defaults to now.
25990
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
25892
25991
  */
25893
25992
  'as_of[valid]'?: string;
25894
25993
  as_of?: string;
@@ -26025,7 +26124,7 @@ export type GetPayRateRuleData = {
26025
26124
  };
26026
26125
  query?: {
26027
26126
  /**
26028
- * Read the version valid at this point in time. Defaults to now.
26127
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
26029
26128
  */
26030
26129
  'as_of[valid]'?: string;
26031
26130
  };
@@ -26819,7 +26918,7 @@ export type ListExternalMapHistoryData = {
26819
26918
  };
26820
26919
  query?: {
26821
26920
  /**
26822
- * Read the timeline as it was recorded at this moment — the corrections nested under each version stop at the same point, and each version publishes the `transaction_to` it had then, so one corrected since still reads as open. `version_status` is always relative to now. Defaults to now.
26921
+ * Read the timeline as it was recorded at this moment — the corrections nested under each version stop at the same point, and each version publishes the `transaction_to` it had then, so one corrected since still reads as open. `version_status` is always relative to now. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
26823
26922
  */
26824
26923
  'as_of[transaction]'?: string;
26825
26924
  'as_of[valid]'?: string;
@@ -26881,11 +26980,11 @@ export type ListExternalMapsData = {
26881
26980
  'page[limit]'?: number;
26882
26981
  page?: string;
26883
26982
  /**
26884
- * Read the version valid at this point in time. Defaults to now.
26983
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
26885
26984
  */
26886
26985
  'as_of[valid]'?: string;
26887
26986
  /**
26888
- * Read the version as it was recorded at this point in transaction time. Its `transaction_to` is published as of that point, so a version corrected since still reads as open. Defaults to now.
26987
+ * Read the version as it was recorded at this point in transaction time. Its `transaction_to` is published as of that point, so a version corrected since still reads as open. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
26889
26988
  */
26890
26989
  'as_of[transaction]'?: string;
26891
26990
  as_of?: string;
@@ -26927,11 +27026,11 @@ export type GetExternalMapData = {
26927
27026
  };
26928
27027
  query?: {
26929
27028
  /**
26930
- * Read the version valid at this point in time. Defaults to now.
27029
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
26931
27030
  */
26932
27031
  'as_of[valid]'?: string;
26933
27032
  /**
26934
- * Read the version as it was recorded at this point in transaction time. Its `transaction_to` is published as of that point, so a version corrected since still reads as open. Defaults to now.
27033
+ * Read the version as it was recorded at this point in transaction time. Its `transaction_to` is published as of that point, so a version corrected since still reads as open. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
26935
27034
  */
26936
27035
  'as_of[transaction]'?: string;
26937
27036
  };
@@ -28416,7 +28515,7 @@ export type ListEmploymentsData = {
28416
28515
  filter?: string;
28417
28516
  'filter[unexpected]'?: string;
28418
28517
  /**
28419
- * Read the version valid at this point in time. Defaults to now.
28518
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
28420
28519
  */
28421
28520
  'as_of[valid]'?: string;
28422
28521
  as_of?: string;
@@ -28551,7 +28650,7 @@ export type GetEmploymentData = {
28551
28650
  };
28552
28651
  query?: {
28553
28652
  /**
28554
- * Read the version valid at this point.
28653
+ * Read the version valid at this point. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
28555
28654
  */
28556
28655
  'as_of[valid]'?: string;
28557
28656
  };
@@ -29467,7 +29566,7 @@ export type ListProjectWageDeterminationRateRulesData = {
29467
29566
  };
29468
29567
  query?: {
29469
29568
  /**
29470
- * Read the version valid at this point in time. Defaults to now.
29569
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
29471
29570
  */
29472
29571
  'as_of[valid]'?: string;
29473
29572
  as_of?: string;
@@ -29543,7 +29642,7 @@ export type GetProjectWageDeterminationRateRuleData = {
29543
29642
  };
29544
29643
  query?: {
29545
29644
  /**
29546
- * Read the version valid at this point in time. Defaults to now.
29645
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
29547
29646
  */
29548
29647
  'as_of[valid]'?: string;
29549
29648
  };
@@ -29735,6 +29834,141 @@ export type UpdateProjectSiteResponses = {
29735
29834
  200: ProjectSiteResponseObject;
29736
29835
  };
29737
29836
  export type UpdateProjectSiteResponse = UpdateProjectSiteResponses[keyof UpdateProjectSiteResponses];
29837
+ export type ListUserVisibilitiesData = {
29838
+ body?: never;
29839
+ path: {
29840
+ project_id: string;
29841
+ };
29842
+ query?: {
29843
+ /**
29844
+ * This pagination cursor corresponds to the cursor value found in the response in
29845
+ * `meta.page.next_cursor`.
29846
+ */
29847
+ 'page[cursor]'?: string;
29848
+ /**
29849
+ * 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`.
29850
+ */
29851
+ 'page[limit]'?: number;
29852
+ page?: string;
29853
+ filter?: string;
29854
+ 'filter[unexpected]'?: string;
29855
+ };
29856
+ url: '/api/v1/projects/{project_id}/user_visibilities';
29857
+ };
29858
+ export type ListUserVisibilitiesErrors = {
29859
+ /**
29860
+ * Bad Request
29861
+ */
29862
+ 400: Problem;
29863
+ /**
29864
+ * Forbidden
29865
+ */
29866
+ 403: Problem;
29867
+ /**
29868
+ * Not Found
29869
+ */
29870
+ 404: Problem;
29871
+ };
29872
+ export type ListUserVisibilitiesError = ListUserVisibilitiesErrors[keyof ListUserVisibilitiesErrors];
29873
+ export type ListUserVisibilitiesResponses = {
29874
+ /**
29875
+ * Success
29876
+ */
29877
+ 200: {
29878
+ meta: Meta;
29879
+ links: Links;
29880
+ data: Array<ProjectUserVisibilityResponseObject>;
29881
+ };
29882
+ };
29883
+ export type ListUserVisibilitiesResponse = ListUserVisibilitiesResponses[keyof ListUserVisibilitiesResponses];
29884
+ export type CreateUserVisibilityData = {
29885
+ body: ProjectUserVisibilityParameters;
29886
+ path: {
29887
+ project_id: string;
29888
+ };
29889
+ query?: never;
29890
+ url: '/api/v1/projects/{project_id}/user_visibilities';
29891
+ };
29892
+ export type CreateUserVisibilityErrors = {
29893
+ /**
29894
+ * Bad Request
29895
+ */
29896
+ 400: Problem;
29897
+ /**
29898
+ * Forbidden
29899
+ */
29900
+ 403: Problem;
29901
+ /**
29902
+ * Not Found
29903
+ */
29904
+ 404: Problem;
29905
+ /**
29906
+ * Unprocessable Content
29907
+ */
29908
+ 422: Problem;
29909
+ };
29910
+ export type CreateUserVisibilityError = CreateUserVisibilityErrors[keyof CreateUserVisibilityErrors];
29911
+ export type CreateUserVisibilityResponses = {
29912
+ /**
29913
+ * Created
29914
+ */
29915
+ 201: ProjectUserVisibilityResponseObject;
29916
+ };
29917
+ export type CreateUserVisibilityResponse = CreateUserVisibilityResponses[keyof CreateUserVisibilityResponses];
29918
+ export type DeleteUserVisibilityData = {
29919
+ body?: never;
29920
+ path: {
29921
+ project_id: string;
29922
+ id: string;
29923
+ };
29924
+ query?: never;
29925
+ url: '/api/v1/projects/{project_id}/user_visibilities/{id}';
29926
+ };
29927
+ export type DeleteUserVisibilityErrors = {
29928
+ /**
29929
+ * Forbidden
29930
+ */
29931
+ 403: Problem;
29932
+ /**
29933
+ * Not Found
29934
+ */
29935
+ 404: Problem;
29936
+ };
29937
+ export type DeleteUserVisibilityError = DeleteUserVisibilityErrors[keyof DeleteUserVisibilityErrors];
29938
+ export type DeleteUserVisibilityResponses = {
29939
+ /**
29940
+ * No Content
29941
+ */
29942
+ 204: void;
29943
+ };
29944
+ export type DeleteUserVisibilityResponse = DeleteUserVisibilityResponses[keyof DeleteUserVisibilityResponses];
29945
+ export type GetUserVisibilityData = {
29946
+ body?: never;
29947
+ path: {
29948
+ project_id: string;
29949
+ id: string;
29950
+ };
29951
+ query?: never;
29952
+ url: '/api/v1/projects/{project_id}/user_visibilities/{id}';
29953
+ };
29954
+ export type GetUserVisibilityErrors = {
29955
+ /**
29956
+ * Forbidden
29957
+ */
29958
+ 403: Problem;
29959
+ /**
29960
+ * Not Found
29961
+ */
29962
+ 404: Problem;
29963
+ };
29964
+ export type GetUserVisibilityError = GetUserVisibilityErrors[keyof GetUserVisibilityErrors];
29965
+ export type GetUserVisibilityResponses = {
29966
+ /**
29967
+ * Success
29968
+ */
29969
+ 200: ProjectUserVisibilityResponseObject;
29970
+ };
29971
+ export type GetUserVisibilityResponse = GetUserVisibilityResponses[keyof GetUserVisibilityResponses];
29738
29972
  export type ShiftProjectWageDeterminationGenesisData = {
29739
29973
  body: ProjectWageDeterminationGenesisParameters;
29740
29974
  headers: {
@@ -30058,7 +30292,7 @@ export type ListProjectWageDeterminationsData = {
30058
30292
  };
30059
30293
  query?: {
30060
30294
  /**
30061
- * Read the version valid at this point in time. Defaults to now.
30295
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
30062
30296
  */
30063
30297
  'as_of[valid]'?: string;
30064
30298
  as_of?: string;
@@ -30181,7 +30415,7 @@ export type GetProjectWageDeterminationData = {
30181
30415
  };
30182
30416
  query?: {
30183
30417
  /**
30184
- * Read the version valid at this point in time. Defaults to now.
30418
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
30185
30419
  */
30186
30420
  'as_of[valid]'?: string;
30187
30421
  };
@@ -32081,7 +32315,7 @@ export type ListTimecodeHistoryData = {
32081
32315
  };
32082
32316
  query?: {
32083
32317
  /**
32084
- * Read the timeline as it was recorded at this moment — the corrections nested under each version stop at the same point, and each version publishes the `transaction_to` it had then, so one corrected since still reads as open. `version_status` is always relative to now. Defaults to now.
32318
+ * Read the timeline as it was recorded at this moment — the corrections nested under each version stop at the same point, and each version publishes the `transaction_to` it had then, so one corrected since still reads as open. `version_status` is always relative to now. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
32085
32319
  */
32086
32320
  'as_of[transaction]'?: string;
32087
32321
  'as_of[valid]'?: string;
@@ -32353,11 +32587,11 @@ export type ListTimecodesData = {
32353
32587
  'page[limit]'?: number;
32354
32588
  page?: string;
32355
32589
  /**
32356
- * Read the version valid at this point in time. Defaults to now.
32590
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
32357
32591
  */
32358
32592
  'as_of[valid]'?: string;
32359
32593
  /**
32360
- * Read the version as it was recorded at this point in transaction time. Its `transaction_to` is published as of that point, so a version corrected since still reads as open. Defaults to now.
32594
+ * Read the version as it was recorded at this point in transaction time. Its `transaction_to` is published as of that point, so a version corrected since still reads as open. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
32361
32595
  */
32362
32596
  'as_of[transaction]'?: string;
32363
32597
  as_of?: string;
@@ -32430,11 +32664,11 @@ export type GetTimecodeData = {
32430
32664
  };
32431
32665
  query?: {
32432
32666
  /**
32433
- * Read the version valid at this point in time. Defaults to now.
32667
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
32434
32668
  */
32435
32669
  'as_of[valid]'?: string;
32436
32670
  /**
32437
- * Read the version as it was recorded at this point in transaction time. Its `transaction_to` is published as of that point, so a version corrected since still reads as open. Defaults to now.
32671
+ * Read the version as it was recorded at this point in transaction time. Its `transaction_to` is published as of that point, so a version corrected since still reads as open. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
32438
32672
  */
32439
32673
  'as_of[transaction]'?: string;
32440
32674
  };
@@ -32958,7 +33192,7 @@ export type ListPayPeriodConfigsData = {
32958
33192
  'page[limit]'?: number;
32959
33193
  page?: string;
32960
33194
  /**
32961
- * Read the version valid at this point in time. Defaults to now.
33195
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
32962
33196
  */
32963
33197
  'as_of[valid]'?: string;
32964
33198
  as_of?: string;
@@ -33033,7 +33267,7 @@ export type GetPayPeriodConfigData = {
33033
33267
  };
33034
33268
  query?: {
33035
33269
  /**
33036
- * Read the version valid at this point in time. Defaults to now.
33270
+ * Read the version valid at this point in time. Defaults to now. Needs a UTC offset (`2026-03-01T00:00:00Z`); a value without one is a `422`.
33037
33271
  */
33038
33272
  'as_of[valid]'?: string;
33039
33273
  };