@dsptch-work/api-client 0.26.0 → 0.27.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.
@@ -201,6 +201,12 @@ export type Problem = {
201
201
  *
202
202
  * The parent already has an import that has not reported yet. Acceptance is synchronous but the write happens in the background, so a second file would be validated against records the queued import has not written to yet and both would apply. Poll the earlier import until it reports, then submit again.
203
203
  *
204
+ * ### pay_schedule_already_exists
205
+ *
206
+ * **Pay Schedule Already Exists**
207
+ *
208
+ * The company already has a pay schedule, including one starting in the future or ending in the past. Use the existing schedule instead of creating another.
209
+ *
204
210
  * ### product_archived
205
211
  *
206
212
  * **Product Archived**
@@ -376,7 +382,7 @@ export type Problem = {
376
382
  * 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.
377
383
  *
378
384
  */
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';
385
+ 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' | 'pay_schedule_already_exists' | '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';
380
386
  export type ApiKeyScopeResponseObject = {
381
387
  resource: string;
382
388
  action: 'read' | 'create' | 'update' | 'delete';
@@ -2472,7 +2478,7 @@ export type PerDiemUpdateParameters = {
2472
2478
  timekeeping_timecode_ids?: Array<string>;
2473
2479
  };
2474
2480
  /**
2475
- * The product's filled attribute values — one entry per attribute assigned to its category.
2481
+ * The filled attribute values of a product or item — one entry per attribute its category makes fillable on that record.
2476
2482
  */
2477
2483
  export type AssetsAttributeValueObjects = Array<{
2478
2484
  /**
@@ -3002,7 +3008,68 @@ export type AttestationConfigParameters = {
3002
3008
  us_state_id?: string | null;
3003
3009
  };
3004
3010
  /**
3005
- * A pay schedule (PayPeriodConfig) — the top-level timekeeping unit that sets a company's payroll cadence and tracking modes and generates its stream of pay periods. Read-only; only the currently-valid version is returned, keyed by its stable id.
3011
+ * Create the company's first pay schedule. Time and payroll modes inherit company defaults.
3012
+ */
3013
+ export type PayPeriodConfigParameters = {
3014
+ /**
3015
+ * First effective date (YYYY-MM-DD), at midnight in tz_name; its weekday must match start_day_of_week.
3016
+ */
3017
+ effective_date: string;
3018
+ /**
3019
+ * Pay frequency: weekly (7 days) or biweekly (14 days).
3020
+ */
3021
+ frequency: 'weekly' | 'biweekly';
3022
+ /**
3023
+ * Day the pay period begins, 0 (Sunday) through 6 (Saturday).
3024
+ */
3025
+ start_day_of_week: 0 | 1 | 2 | 3 | 4 | 5 | 6;
3026
+ /**
3027
+ * Supported IANA time zone for schedule dates and deadlines (e.g. US/Central).
3028
+ */
3029
+ tz_name: string;
3030
+ /**
3031
+ * ISO 4217 currency code; defaults to USD.
3032
+ */
3033
+ currency?: string;
3034
+ /**
3035
+ * Time rounding in minutes, 1 or 15; defaults to 1.
3036
+ */
3037
+ rounding_interval?: 1 | 15;
3038
+ /**
3039
+ * Payroll provider; omit or send null when none.
3040
+ */
3041
+ payroll_system?: 'rippling' | 'quickbooks_online' | 'paychex' | 'gusto' | null;
3042
+ /**
3043
+ * Move pay dates after banking holidays rather than before; defaults to true.
3044
+ */
3045
+ paid_after_holiday?: boolean;
3046
+ /**
3047
+ * Whole days from the pay period's end to payday; must cover both deadline intervals.
3048
+ */
3049
+ arrear_days: number;
3050
+ /**
3051
+ * Calendar-day lead for the pay-run deadline; 1 with a clock time of 17:00 means seven hours before payday.
3052
+ */
3053
+ pay_run_deadline_days: number;
3054
+ /**
3055
+ * Pay-run deadline's local clock time (HH:MM).
3056
+ */
3057
+ pay_run_deadline_clock_time: string;
3058
+ /**
3059
+ * Whole calendar days before the pay-run deadline's date when approvals are due.
3060
+ */
3061
+ approvals_deadline_days: number;
3062
+ /**
3063
+ * Approvals deadline's local clock time (HH:MM).
3064
+ */
3065
+ approvals_deadline_clock_time: string;
3066
+ /**
3067
+ * Signed days from the pay-run deadline until time cards lock; negative values lock earlier, 0 locks at the deadline, null disables locking.
3068
+ */
3069
+ time_card_auto_lock_days?: number | null;
3070
+ };
3071
+ /**
3072
+ * A pay schedule (PayPeriodConfig) — the top-level timekeeping unit that sets a company's payroll cadence and tracking modes and generates its stream of pay periods. Reads return the version valid at the requested time; create returns the new schedule, keyed by its stable id.
3006
3073
  */
3007
3074
  export type PayPeriodConfigResponseObject = {
3008
3075
  /**
@@ -3719,6 +3786,10 @@ export type JobResponseObject = {
3719
3786
  * ID of the project this job belongs to; null when the job is not part of a project.
3720
3787
  */
3721
3788
  project_id: string | null;
3789
+ /**
3790
+ * ID of the provider company's department assigned to this job; null when unassigned. Retrieve department IDs from GET /api/v1/companies/departments.
3791
+ */
3792
+ companies_department_id: string | null;
3722
3793
  /**
3723
3794
  * The job's managers, each as a minimal object; empty when the job has no managers.
3724
3795
  */
@@ -3911,10 +3982,6 @@ export type JobParameters = {
3911
3982
  * ID of the company that requested the job (for example a general contractor). Required on create; omit on update to preserve the existing requester.
3912
3983
  */
3913
3984
  requested_by_company_id?: string;
3914
- /**
3915
- * ID of the user creating the job. Required on create and immutable thereafter — an update that sets, changes, or clears it is rejected.
3916
- */
3917
- created_by_user_id?: string;
3918
3985
  /**
3919
3986
  * IDs of the users who manage the job; null when the job has no managers.
3920
3987
  */
@@ -3927,6 +3994,10 @@ export type JobParameters = {
3927
3994
  * ID of the project this job belongs to; null when the job is not part of a project.
3928
3995
  */
3929
3996
  project_id?: string | null;
3997
+ /**
3998
+ * ID of a department belonging to the job's provider company. Retrieve department IDs from GET /api/v1/companies/departments. Send null to clear the assignment; omit on update to preserve it, or on create to preserve a copied template's assignment. A new job without a template starts unassigned.
3999
+ */
4000
+ companies_department_id?: string | null;
3930
4001
  /**
3931
4002
  * Federal prevailing-wage / apprenticeship (PWA) tracking mode: one of all (both prevailing wage and apprenticeship), pw_only, ap_only, or none.
3932
4003
  */
@@ -4124,6 +4195,10 @@ export type JobParameters = {
4124
4195
  * 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.
4125
4196
  */
4126
4197
  export type JobCreateParameters = JobParameters & {
4198
+ /**
4199
+ * ID of the user creating the job. Required on create; the creator cannot be changed afterward.
4200
+ */
4201
+ created_by_user_id: string;
4127
4202
  /**
4128
4203
  * 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
4204
  */
@@ -4143,7 +4218,7 @@ export type JobCreateParameters = JobParameters & {
4143
4218
  }>;
4144
4219
  };
4145
4220
  /**
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.
4221
+ * 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. Sending `created_by_user_id` returns 400 unknown_key, including when it matches the existing creator or is null.
4147
4222
  */
4148
4223
  export type JobUpdateParameters = JobParameters & {
4149
4224
  /**
@@ -7033,7 +7108,7 @@ export type PayrollRunResponseObject = {
7033
7108
  updated_at: string;
7034
7109
  };
7035
7110
  /**
7036
- * Create a payroll run. company_id, run_type, and run_date are required; an on-cycle run additionally requires timekeeping_pay_period_id.
7111
+ * Create a payroll run. Company-scoped keys and company-admin user-scoped keys accept the same fields. Manager and technician user keys cannot create runs. company_id, run_type, and run_date are required; an on-cycle run additionally requires timekeeping_pay_period_id.
7037
7112
  */
7038
7113
  export type PayrollRunParameters = {
7039
7114
  /**
@@ -7062,7 +7137,7 @@ export type PayrollRunParameters = {
7062
7137
  external_id?: string | null;
7063
7138
  };
7064
7139
  /**
7065
- * Update a payroll run. Every field is optional — send only what changes. The run's company is fixed at creation.
7140
+ * Update a payroll run. Company-scoped keys and company-admin user-scoped keys accept the same fields. Manager and technician user keys cannot update runs. Every field is optional — send only what changes. The run's company is fixed at creation.
7066
7141
  */
7067
7142
  export type PayrollRunUpdateParameters = {
7068
7143
  /**
@@ -8661,164 +8736,680 @@ export type JobSiteUpdateParameters = {
8661
8736
  feature_ids?: Array<string>;
8662
8737
  };
8663
8738
  /**
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.
8739
+ * A form-completion task attached to a job — a SurveyJS form assigned to users with a due time, optional recurrence, and reminders. Path `{id}` is the `Tasks::JobFormAssignmentTask` id, not the web show `Task#uid`.
8665
8740
  */
8666
- export type PositionResponseObject = {
8741
+ export type JobFormAssignmentResponseObject = {
8667
8742
  /**
8668
8743
  * Unique identifier.
8669
8744
  */
8670
8745
  id: string;
8671
8746
  /**
8672
- * ID of the job this position belongs to; always matches the job in the URL path.
8747
+ * ID of the job this form task belongs to; always matches the job in the URL path.
8673
8748
  */
8674
8749
  job_id: string;
8675
8750
  /**
8676
- * ID of the worker assigned to fill this position; null when the position is unfilled.
8751
+ * ID of the form definition (a SurveyJS form template) this assignment is for.
8677
8752
  */
8678
- fulfilled_by_user_id: string | null;
8753
+ form_definition_id: string;
8679
8754
  /**
8680
- * ID of the pay-rate rule package applied to this position, or null when none is set.
8755
+ * Name of the form task; defaults to the form definition's name.
8681
8756
  */
8682
- pay_rates_rule_package_id: string | null;
8683
- position_function: PositionFunction;
8757
+ name: string;
8684
8758
  /**
8685
- * Name of the per diem applied to this position; null when none is set.
8759
+ * Free-text description of the task.
8686
8760
  */
8687
- per_diem_name: string | null;
8761
+ description: string | null;
8688
8762
  /**
8689
- * ISO 4217 currency code for the per-diem rate; null when no per diem is set.
8763
+ * IANA time zone in which time_due is interpreted; always set, defaulting to US/Central.
8690
8764
  */
8691
- per_diem_currency: string | null;
8765
+ tz_name: string;
8692
8766
  /**
8693
- * Per-diem amount in cents, as a string; null when no per diem is set.
8767
+ * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
8694
8768
  */
8695
- per_diem_rate_cents: string | null;
8769
+ time_due: string | null;
8696
8770
  /**
8697
- * Planned base hourly pay rate in cents, as a string; null when no rate is set.
8771
+ * How often this form task recurs: one of DAILY, WORKDAILY, WORKDAILYSIX, WEEKLY, BIWEEKLY, MONTHLY, or QUARTERLY. Null for a one-time assignment; on write, applied only when recurring is true.
8698
8772
  */
8699
- hourly_rate_cents: string | null;
8773
+ frequency: 'DAILY' | 'WORKDAILY' | 'WORKDAILYSIX' | 'WEEKLY' | 'BIWEEKLY' | 'MONTHLY' | 'QUARTERLY' | null;
8700
8774
  /**
8701
- * Where the hourly rate came from: one of user_default, prevailing_wage, or custom; null when no rate is set.
8775
+ * When recurrence stops (ISO 8601); null for a non-recurring or open-ended task.
8702
8776
  */
8703
- hourly_rate_src_type: string | null;
8777
+ recurrence_end_time: string | null;
8704
8778
  /**
8705
- * Planned hourly cash-fringe rate in cents, as a string; null when unset.
8779
+ * IDs of the users this form task is assigned to.
8706
8780
  */
8707
- cash_fringe_rate_cents: string | null;
8781
+ task_assignee_user_ids: Array<string>;
8708
8782
  /**
8709
- * Where the cash-fringe rate came from: one of prevailing_wage or custom; null when unset.
8783
+ * Reminder notifications for this task, each scheduled at an offset from the due time.
8710
8784
  */
8711
- cash_fringe_rate_src_type: string | null;
8785
+ reminders: Array<{
8786
+ /**
8787
+ * ISO 8601 duration offset from the due time for the reminder (e.g. -PT1H for one hour before); must be one of the preset reminder times.
8788
+ */
8789
+ offset: string;
8790
+ /**
8791
+ * When the reminder fires (ISO 8601), computed as the due time plus the offset.
8792
+ */
8793
+ remind_at: string;
8794
+ }>;
8795
+ };
8796
+ /**
8797
+ * A form-completion task attached to a site — a SurveyJS form assigned to users with a due time, optional recurrence, and reminders. Path `{id}` is the `Tasks::SiteFormAssignmentTask` id, not the web show `Task#uid`. Sites are shared across companies; another company's assignment on the same site is not found. An empty assignee list is valid.
8798
+ */
8799
+ export type SiteFormAssignmentResponseObject = {
8712
8800
  /**
8713
- * Hourly wage-pay rate in cents applied to PWA (prevailing-wage / apprenticeship) eligible time on this position, as a string; null for non-PWA positions.
8801
+ * Unique identifier.
8714
8802
  */
8715
- pwa_wage_pay_rate_cents: string | null;
8803
+ id: string;
8716
8804
  /**
8717
- * Where the PWA wage-pay rate came from: one of user_default, prevailing_wage, or custom; null for non-PWA positions.
8805
+ * ID of the site this form task belongs to; always matches the site in the URL path.
8718
8806
  */
8719
- pwa_wage_pay_rate_src_type: string | null;
8807
+ site_id: string;
8720
8808
  /**
8721
- * Hourly wage-adder rate in cents, as a string; null when unset. Excluded from cash-in-lieu-of-fringe calculations.
8809
+ * ID of the form definition (a SurveyJS form template) this assignment is for.
8722
8810
  */
8723
- wage_adder_rate_cents: string | null;
8811
+ form_definition_id: string;
8724
8812
  /**
8725
- * Whether this position tracks Prevailing Wage / Apprenticeship (PWA) compliance; when true, the PWA rate fields and wage-determination associations apply.
8813
+ * Name of the form task; defaults to the form definition's name.
8726
8814
  */
8727
- pwa: boolean;
8815
+ name: string;
8728
8816
  /**
8729
- * IDs of the federal (Davis-Bacon) wage determinations applied to this position; empty when none.
8817
+ * Free-text description of the task.
8730
8818
  */
8731
- federal_wage_determination_ids: Array<string>;
8819
+ description: string | null;
8732
8820
  /**
8733
- * IDs of the regional (state) wage determinations applied to this position; empty when none.
8821
+ * IANA time zone in which time_due is interpreted; always set, defaulting to US/Central.
8734
8822
  */
8735
- regional_wage_determination_ids: Array<string>;
8823
+ tz_name: string;
8736
8824
  /**
8737
- * PWA classification detail for this position; carries skill_level, the apprenticeship or skill classification, which is null when unset.
8825
+ * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
8738
8826
  */
8739
- pwa_details: {
8740
- /**
8741
- * The apprenticeship or skill classification; null when unset.
8742
- */
8743
- skill_level: string | null;
8744
- };
8827
+ time_due: string | null;
8745
8828
  /**
8746
- * Start of the position's scheduled window (ISO 8601); null when unscheduled.
8829
+ * How often this form task recurs: one of DAILY, WORKDAILY, WORKDAILYSIX, WEEKLY, BIWEEKLY, MONTHLY, or QUARTERLY. Null for a one-time assignment; on write, applied only when recurring is true.
8747
8830
  */
8748
- start_time: string | null;
8831
+ frequency: 'DAILY' | 'WORKDAILY' | 'WORKDAILYSIX' | 'WEEKLY' | 'BIWEEKLY' | 'MONTHLY' | 'QUARTERLY' | null;
8749
8832
  /**
8750
- * End of the position's scheduled window (ISO 8601); null when unscheduled.
8833
+ * When recurrence stops (ISO 8601); null for a non-recurring or open-ended task.
8751
8834
  */
8752
- end_time: string | null;
8835
+ recurrence_end_time: string | null;
8753
8836
  /**
8754
- * When the record was created (ISO 8601).
8837
+ * IDs of the users this form task is assigned to.
8755
8838
  */
8756
- created_at: string;
8839
+ task_assignee_user_ids: Array<string>;
8757
8840
  /**
8758
- * When the record was last updated (ISO 8601).
8841
+ * Reminder notifications for this task, each scheduled at an offset from the due time.
8759
8842
  */
8760
- updated_at: string;
8843
+ reminders: Array<{
8844
+ /**
8845
+ * ISO 8601 duration offset from the due time for the reminder (e.g. -PT1H for one hour before); must be one of the preset reminder times.
8846
+ */
8847
+ offset: string;
8848
+ /**
8849
+ * When the reminder fires (ISO 8601), computed as the due time plus the offset.
8850
+ */
8851
+ remind_at: string;
8852
+ }>;
8761
8853
  };
8762
8854
  /**
8763
- * A company-owned collection of conditional wage and fringe adjustments, optionally scoped to a job.
8855
+ * Create a site form assignment. form_definition_id and task_attributes are required, and task_attributes.created_by_user_id is required (a missing value returns 400). site_id comes from the path and is not part of the body. recurring gates the recurrence fields. An empty task_assignee_user_ids list is valid. The company must hold a SiteClaim on the site with site_forms enabled.
8764
8856
  */
8765
- export type PayRatesRulePackageResponseObject = {
8766
- /**
8767
- * Unique identifier of the rule package.
8768
- */
8769
- id: string;
8770
- /**
8771
- * Human-readable package name.
8772
- */
8773
- name: string;
8774
- /**
8775
- * Free-form package description, or null.
8776
- */
8777
- description: string | null;
8778
- /**
8779
- * ID of the job this package is scoped to, or null for a company-wide package.
8780
- */
8781
- scoped_to_job_id: string | null;
8782
- /**
8783
- * Whether this is the default package within its company-wide or job scope.
8784
- */
8785
- default: boolean;
8857
+ export type SiteFormAssignmentParameters = {
8786
8858
  /**
8787
- * Whether users may select this package directly in configuration workflows.
8859
+ * ID of the form definition (a SurveyJS form template) this assignment is for.
8788
8860
  */
8789
- selectable: boolean;
8861
+ form_definition_id: string;
8790
8862
  /**
8791
- * When the record was created (ISO 8601).
8863
+ * When true, frequency and recurrence_end_time apply; when false or omitted, the task is one-time and those fields are cleared.
8792
8864
  */
8793
- created_at: string;
8865
+ recurring?: boolean;
8794
8866
  /**
8795
- * When the record was last updated (ISO 8601).
8867
+ * The underlying task's name, schedule, assignees, and reminders.
8796
8868
  */
8797
- updated_at: string;
8869
+ task_attributes: {
8870
+ /**
8871
+ * Name of the form task; defaults to the form definition's name.
8872
+ */
8873
+ name?: string | null;
8874
+ /**
8875
+ * Free-text description of the task.
8876
+ */
8877
+ description?: string | null;
8878
+ /**
8879
+ * ID of the user creating the task, recorded as its creator. Required; a missing value returns 400.
8880
+ */
8881
+ created_by_user_id: string;
8882
+ /**
8883
+ * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
8884
+ */
8885
+ time_due?: string | null;
8886
+ /**
8887
+ * IANA time zone in which time_due is interpreted; null for an unscheduled task.
8888
+ */
8889
+ tz_name?: string | null;
8890
+ /**
8891
+ * How often this form task recurs: one of DAILY, WORKDAILY, WORKDAILYSIX, WEEKLY, BIWEEKLY, MONTHLY, or QUARTERLY. Null for a one-time assignment; on write, applied only when recurring is true.
8892
+ */
8893
+ frequency?: 'DAILY' | 'WORKDAILY' | 'WORKDAILYSIX' | 'WEEKLY' | 'BIWEEKLY' | 'MONTHLY' | 'QUARTERLY' | null;
8894
+ /**
8895
+ * When recurrence stops (ISO 8601); null for a non-recurring or open-ended task.
8896
+ */
8897
+ recurrence_end_time?: string | null;
8898
+ /**
8899
+ * IDs of the users this form task is assigned to.
8900
+ */
8901
+ task_assignee_user_ids?: Array<string>;
8902
+ /**
8903
+ * Reminders to attach, each an offset from the due time. On update, replaces the existing set.
8904
+ */
8905
+ reminders_attributes?: Array<{
8906
+ /**
8907
+ * ISO 8601 duration offset from the due time for the reminder (e.g. -PT1H for one hour before); must be one of the preset reminder times.
8908
+ */
8909
+ offset: 'PT0S' | 'PT-1M' | 'PT-5M' | 'PT-10M' | 'PT-15M' | 'PT-30M' | 'PT-1H' | 'PT-2H' | 'P-1D' | 'P-2D' | 'P-3D' | 'P-4D' | 'P-5D' | 'P-6D' | 'P-1W' | 'P-2W' | 'P-1M' | 'P-2M' | 'P-3M' | 'P-6M' | 'P-1Y' | 'PT5M' | 'PT15M' | 'PT30M' | 'PT1H' | 'PT6H' | 'PT12H' | 'P1D' | 'P2D' | 'P3D' | 'P4D' | 'P5D' | 'P6D' | 'P1W' | 'P2W' | 'P3W';
8910
+ }>;
8911
+ };
8798
8912
  };
8799
8913
  /**
8800
- * Parameters for creating a company-wide pay-rate rule package.
8914
+ * Update a site form assignment. All fields are optional — send only what changes. site_id comes from the path and cannot be sent. recurring gates the recurrence fields, and task_attributes.reminders_attributes replaces the existing reminder set when supplied. An empty task_assignee_user_ids list is valid. The creator is set at creation and cannot be sent.
8801
8915
  */
8802
- export type PayRatesRulePackageParameters = {
8803
- /**
8804
- * Human-readable package name.
8805
- */
8806
- name: string;
8916
+ export type SiteFormAssignmentUpdateParameters = {
8807
8917
  /**
8808
- * Free-form package description; send null or omit it when no description is needed.
8918
+ * ID of the form definition (a SurveyJS form template) this assignment is for.
8809
8919
  */
8810
- description?: string | null;
8811
- };
8812
- /**
8813
- * Request body for updating a pay-rate rule package. Send only the fields to change. `default`, `selectable`, and `scoped_to_job_id` are not writable on this operation.
8814
- */
8815
- export type PayRatesRulePackageUpdateParameters = {
8920
+ form_definition_id?: string;
8816
8921
  /**
8817
- * Human-readable package name. Omit to leave it unchanged.
8922
+ * When true, frequency and recurrence_end_time apply; when false or omitted, the task is one-time and those fields are cleared.
8818
8923
  */
8819
- name?: string;
8924
+ recurring?: boolean;
8820
8925
  /**
8821
- * Free-form package description; omit to leave it unchanged, or send null to clear it.
8926
+ * The underlying task's name, schedule, assignees, and reminders.
8927
+ */
8928
+ task_attributes?: {
8929
+ /**
8930
+ * Name of the form task; defaults to the form definition's name.
8931
+ */
8932
+ name?: string | null;
8933
+ /**
8934
+ * Free-text description of the task.
8935
+ */
8936
+ description?: string | null;
8937
+ /**
8938
+ * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
8939
+ */
8940
+ time_due?: string | null;
8941
+ /**
8942
+ * IANA time zone in which time_due is interpreted; null for an unscheduled task.
8943
+ */
8944
+ tz_name?: string | null;
8945
+ /**
8946
+ * How often this form task recurs: one of DAILY, WORKDAILY, WORKDAILYSIX, WEEKLY, BIWEEKLY, MONTHLY, or QUARTERLY. Null for a one-time assignment; on write, applied only when recurring is true.
8947
+ */
8948
+ frequency?: 'DAILY' | 'WORKDAILY' | 'WORKDAILYSIX' | 'WEEKLY' | 'BIWEEKLY' | 'MONTHLY' | 'QUARTERLY' | null;
8949
+ /**
8950
+ * When recurrence stops (ISO 8601); null for a non-recurring or open-ended task.
8951
+ */
8952
+ recurrence_end_time?: string | null;
8953
+ /**
8954
+ * IDs of the users this form task is assigned to.
8955
+ */
8956
+ task_assignee_user_ids?: Array<string>;
8957
+ /**
8958
+ * Reminders to attach, each an offset from the due time. On update, replaces the existing set.
8959
+ */
8960
+ reminders_attributes?: Array<{
8961
+ /**
8962
+ * ISO 8601 duration offset from the due time for the reminder (e.g. -PT1H for one hour before); must be one of the preset reminder times.
8963
+ */
8964
+ offset: 'PT0S' | 'PT-1M' | 'PT-5M' | 'PT-10M' | 'PT-15M' | 'PT-30M' | 'PT-1H' | 'PT-2H' | 'P-1D' | 'P-2D' | 'P-3D' | 'P-4D' | 'P-5D' | 'P-6D' | 'P-1W' | 'P-2W' | 'P-1M' | 'P-2M' | 'P-3M' | 'P-6M' | 'P-1Y' | 'PT5M' | 'PT15M' | 'PT30M' | 'PT1H' | 'PT6H' | 'PT12H' | 'P1D' | 'P2D' | 'P3D' | 'P4D' | 'P5D' | 'P6D' | 'P1W' | 'P2W' | 'P3W';
8965
+ }>;
8966
+ };
8967
+ };
8968
+ /**
8969
+ * A form-completion task attached to a site feature — a SurveyJS form assigned to users with a due time, optional recurrence, and reminders. Path `{id}` is the `Tasks::FeatureFormAssignmentTask` id, not the web show `Task#uid`. Sites and features are shared across companies; another company's assignment on the same feature is not found. An empty assignee list is valid. The assignment does not include site_id.
8970
+ */
8971
+ export type FeatureFormAssignmentResponseObject = {
8972
+ /**
8973
+ * Unique identifier.
8974
+ */
8975
+ id: string;
8976
+ /**
8977
+ * ID of the feature this form task belongs to; always matches the feature in the URL path.
8978
+ */
8979
+ feature_id: string;
8980
+ /**
8981
+ * ID of the form definition (a SurveyJS form template) this assignment is for.
8982
+ */
8983
+ form_definition_id: string;
8984
+ /**
8985
+ * Name of the form task; defaults to the form definition's name.
8986
+ */
8987
+ name: string;
8988
+ /**
8989
+ * Free-text description of the task.
8990
+ */
8991
+ description: string | null;
8992
+ /**
8993
+ * IANA time zone in which time_due is interpreted; always set, defaulting to US/Central.
8994
+ */
8995
+ tz_name: string;
8996
+ /**
8997
+ * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
8998
+ */
8999
+ time_due: string | null;
9000
+ /**
9001
+ * How often this form task recurs: one of DAILY, WORKDAILY, WORKDAILYSIX, WEEKLY, BIWEEKLY, MONTHLY, or QUARTERLY. Null for a one-time assignment; on write, applied only when recurring is true.
9002
+ */
9003
+ frequency: 'DAILY' | 'WORKDAILY' | 'WORKDAILYSIX' | 'WEEKLY' | 'BIWEEKLY' | 'MONTHLY' | 'QUARTERLY' | null;
9004
+ /**
9005
+ * When recurrence stops (ISO 8601); null for a non-recurring or open-ended task.
9006
+ */
9007
+ recurrence_end_time: string | null;
9008
+ /**
9009
+ * IDs of the users this form task is assigned to.
9010
+ */
9011
+ task_assignee_user_ids: Array<string>;
9012
+ /**
9013
+ * Reminder notifications for this task, each scheduled at an offset from the due time.
9014
+ */
9015
+ reminders: Array<{
9016
+ /**
9017
+ * ISO 8601 duration offset from the due time for the reminder (e.g. -PT1H for one hour before); must be one of the preset reminder times.
9018
+ */
9019
+ offset: string;
9020
+ /**
9021
+ * When the reminder fires (ISO 8601), computed as the due time plus the offset.
9022
+ */
9023
+ remind_at: string;
9024
+ }>;
9025
+ };
9026
+ /**
9027
+ * Create a feature form assignment. form_definition_id and task_attributes are required, and task_attributes.created_by_user_id is required (a missing value returns 400). site_id and feature_id come from the path and are not part of the body. recurring gates the recurrence fields. An empty task_assignee_user_ids list is valid. The company must hold a SiteClaim on the path's site with site_forms enabled, and the feature must belong to that site.
9028
+ */
9029
+ export type FeatureFormAssignmentParameters = {
9030
+ /**
9031
+ * ID of the form definition (a SurveyJS form template) this assignment is for.
9032
+ */
9033
+ form_definition_id: string;
9034
+ /**
9035
+ * When true, frequency and recurrence_end_time apply; when false or omitted, the task is one-time and those fields are cleared.
9036
+ */
9037
+ recurring?: boolean;
9038
+ /**
9039
+ * The underlying task's name, schedule, assignees, and reminders.
9040
+ */
9041
+ task_attributes: {
9042
+ /**
9043
+ * Name of the form task; defaults to the form definition's name.
9044
+ */
9045
+ name?: string | null;
9046
+ /**
9047
+ * Free-text description of the task.
9048
+ */
9049
+ description?: string | null;
9050
+ /**
9051
+ * ID of the user creating the task, recorded as its creator. Required; a missing value returns 400.
9052
+ */
9053
+ created_by_user_id: string;
9054
+ /**
9055
+ * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
9056
+ */
9057
+ time_due?: string | null;
9058
+ /**
9059
+ * IANA time zone in which time_due is interpreted; null for an unscheduled task.
9060
+ */
9061
+ tz_name?: string | null;
9062
+ /**
9063
+ * How often this form task recurs: one of DAILY, WORKDAILY, WORKDAILYSIX, WEEKLY, BIWEEKLY, MONTHLY, or QUARTERLY. Null for a one-time assignment; on write, applied only when recurring is true.
9064
+ */
9065
+ frequency?: 'DAILY' | 'WORKDAILY' | 'WORKDAILYSIX' | 'WEEKLY' | 'BIWEEKLY' | 'MONTHLY' | 'QUARTERLY' | null;
9066
+ /**
9067
+ * When recurrence stops (ISO 8601); null for a non-recurring or open-ended task.
9068
+ */
9069
+ recurrence_end_time?: string | null;
9070
+ /**
9071
+ * IDs of the users this form task is assigned to.
9072
+ */
9073
+ task_assignee_user_ids?: Array<string>;
9074
+ /**
9075
+ * Reminders to attach, each an offset from the due time. On update, replaces the existing set.
9076
+ */
9077
+ reminders_attributes?: Array<{
9078
+ /**
9079
+ * ISO 8601 duration offset from the due time for the reminder (e.g. -PT1H for one hour before); must be one of the preset reminder times.
9080
+ */
9081
+ offset: 'PT0S' | 'PT-1M' | 'PT-5M' | 'PT-10M' | 'PT-15M' | 'PT-30M' | 'PT-1H' | 'PT-2H' | 'P-1D' | 'P-2D' | 'P-3D' | 'P-4D' | 'P-5D' | 'P-6D' | 'P-1W' | 'P-2W' | 'P-1M' | 'P-2M' | 'P-3M' | 'P-6M' | 'P-1Y' | 'PT5M' | 'PT15M' | 'PT30M' | 'PT1H' | 'PT6H' | 'PT12H' | 'P1D' | 'P2D' | 'P3D' | 'P4D' | 'P5D' | 'P6D' | 'P1W' | 'P2W' | 'P3W';
9082
+ }>;
9083
+ };
9084
+ };
9085
+ /**
9086
+ * Update a feature form assignment. All fields are optional — send only what changes. site_id and feature_id come from the path and cannot be sent. recurring gates the recurrence fields, and task_attributes.reminders_attributes replaces the existing reminder set when supplied. An empty task_assignee_user_ids list is valid. The creator is set at creation and cannot be sent.
9087
+ */
9088
+ export type FeatureFormAssignmentUpdateParameters = {
9089
+ /**
9090
+ * ID of the form definition (a SurveyJS form template) this assignment is for.
9091
+ */
9092
+ form_definition_id?: string;
9093
+ /**
9094
+ * When true, frequency and recurrence_end_time apply; when false or omitted, the task is one-time and those fields are cleared.
9095
+ */
9096
+ recurring?: boolean;
9097
+ /**
9098
+ * The underlying task's name, schedule, assignees, and reminders.
9099
+ */
9100
+ task_attributes?: {
9101
+ /**
9102
+ * Name of the form task; defaults to the form definition's name.
9103
+ */
9104
+ name?: string | null;
9105
+ /**
9106
+ * Free-text description of the task.
9107
+ */
9108
+ description?: string | null;
9109
+ /**
9110
+ * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
9111
+ */
9112
+ time_due?: string | null;
9113
+ /**
9114
+ * IANA time zone in which time_due is interpreted; null for an unscheduled task.
9115
+ */
9116
+ tz_name?: string | null;
9117
+ /**
9118
+ * How often this form task recurs: one of DAILY, WORKDAILY, WORKDAILYSIX, WEEKLY, BIWEEKLY, MONTHLY, or QUARTERLY. Null for a one-time assignment; on write, applied only when recurring is true.
9119
+ */
9120
+ frequency?: 'DAILY' | 'WORKDAILY' | 'WORKDAILYSIX' | 'WEEKLY' | 'BIWEEKLY' | 'MONTHLY' | 'QUARTERLY' | null;
9121
+ /**
9122
+ * When recurrence stops (ISO 8601); null for a non-recurring or open-ended task.
9123
+ */
9124
+ recurrence_end_time?: string | null;
9125
+ /**
9126
+ * IDs of the users this form task is assigned to.
9127
+ */
9128
+ task_assignee_user_ids?: Array<string>;
9129
+ /**
9130
+ * Reminders to attach, each an offset from the due time. On update, replaces the existing set.
9131
+ */
9132
+ reminders_attributes?: Array<{
9133
+ /**
9134
+ * ISO 8601 duration offset from the due time for the reminder (e.g. -PT1H for one hour before); must be one of the preset reminder times.
9135
+ */
9136
+ offset: 'PT0S' | 'PT-1M' | 'PT-5M' | 'PT-10M' | 'PT-15M' | 'PT-30M' | 'PT-1H' | 'PT-2H' | 'P-1D' | 'P-2D' | 'P-3D' | 'P-4D' | 'P-5D' | 'P-6D' | 'P-1W' | 'P-2W' | 'P-1M' | 'P-2M' | 'P-3M' | 'P-6M' | 'P-1Y' | 'PT5M' | 'PT15M' | 'PT30M' | 'PT1H' | 'PT6H' | 'PT12H' | 'P1D' | 'P2D' | 'P3D' | 'P4D' | 'P5D' | 'P6D' | 'P1W' | 'P2W' | 'P3W';
9137
+ }>;
9138
+ };
9139
+ };
9140
+ /**
9141
+ * Create a job form assignment. form_definition_id and task_attributes are required, and task_attributes.created_by_user_id is required (a missing value returns 400). job_id comes from the path and is not part of the body. recurring gates the recurrence fields. An assignee outside the credential company returns 422, and a creator outside it returns 403.
9142
+ */
9143
+ export type JobFormAssignmentParameters = {
9144
+ /**
9145
+ * ID of the form definition (a SurveyJS form template) this assignment is for.
9146
+ */
9147
+ form_definition_id: string;
9148
+ /**
9149
+ * When true, frequency and recurrence_end_time apply; when false or omitted, the task is one-time and those fields are cleared.
9150
+ */
9151
+ recurring?: boolean;
9152
+ /**
9153
+ * The underlying task's name, schedule, assignees, and reminders.
9154
+ */
9155
+ task_attributes: {
9156
+ /**
9157
+ * Name of the form task; defaults to the form definition's name.
9158
+ */
9159
+ name?: string | null;
9160
+ /**
9161
+ * Free-text description of the task.
9162
+ */
9163
+ description?: string | null;
9164
+ /**
9165
+ * ID of the user creating the task, recorded as its creator. Required; a missing value returns 400.
9166
+ */
9167
+ created_by_user_id: string;
9168
+ /**
9169
+ * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
9170
+ */
9171
+ time_due?: string | null;
9172
+ /**
9173
+ * IANA time zone in which time_due is interpreted; null for an unscheduled task.
9174
+ */
9175
+ tz_name?: string | null;
9176
+ /**
9177
+ * How often this form task recurs: one of DAILY, WORKDAILY, WORKDAILYSIX, WEEKLY, BIWEEKLY, MONTHLY, or QUARTERLY. Null for a one-time assignment; on write, applied only when recurring is true.
9178
+ */
9179
+ frequency?: 'DAILY' | 'WORKDAILY' | 'WORKDAILYSIX' | 'WEEKLY' | 'BIWEEKLY' | 'MONTHLY' | 'QUARTERLY' | null;
9180
+ /**
9181
+ * When recurrence stops (ISO 8601); null for a non-recurring or open-ended task.
9182
+ */
9183
+ recurrence_end_time?: string | null;
9184
+ /**
9185
+ * IDs of the users this form task is assigned to.
9186
+ */
9187
+ task_assignee_user_ids?: Array<string>;
9188
+ /**
9189
+ * Reminders to attach, each an offset from the due time. On update, replaces the existing set.
9190
+ */
9191
+ reminders_attributes?: Array<{
9192
+ /**
9193
+ * ISO 8601 duration offset from the due time for the reminder (e.g. -PT1H for one hour before); must be one of the preset reminder times.
9194
+ */
9195
+ offset: 'PT0S' | 'PT-1M' | 'PT-5M' | 'PT-10M' | 'PT-15M' | 'PT-30M' | 'PT-1H' | 'PT-2H' | 'P-1D' | 'P-2D' | 'P-3D' | 'P-4D' | 'P-5D' | 'P-6D' | 'P-1W' | 'P-2W' | 'P-1M' | 'P-2M' | 'P-3M' | 'P-6M' | 'P-1Y' | 'PT5M' | 'PT15M' | 'PT30M' | 'PT1H' | 'PT6H' | 'PT12H' | 'P1D' | 'P2D' | 'P3D' | 'P4D' | 'P5D' | 'P6D' | 'P1W' | 'P2W' | 'P3W';
9196
+ }>;
9197
+ };
9198
+ };
9199
+ /**
9200
+ * Update a job form assignment. All fields are optional — send only what changes. job_id comes from the path and cannot be sent. 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.
9201
+ */
9202
+ export type JobFormAssignmentUpdateParameters = {
9203
+ /**
9204
+ * ID of the form definition (a SurveyJS form template) this assignment is for.
9205
+ */
9206
+ form_definition_id?: string;
9207
+ /**
9208
+ * When true, frequency and recurrence_end_time apply; when false or omitted, the task is one-time and those fields are cleared.
9209
+ */
9210
+ recurring?: boolean;
9211
+ /**
9212
+ * The underlying task's name, schedule, assignees, and reminders.
9213
+ */
9214
+ task_attributes?: {
9215
+ /**
9216
+ * Name of the form task; defaults to the form definition's name.
9217
+ */
9218
+ name?: string | null;
9219
+ /**
9220
+ * Free-text description of the task.
9221
+ */
9222
+ description?: string | null;
9223
+ /**
9224
+ * When the form task is due (ISO 8601), interpreted in tz_name; null for an unscheduled task.
9225
+ */
9226
+ time_due?: string | null;
9227
+ /**
9228
+ * IANA time zone in which time_due is interpreted; null for an unscheduled task.
9229
+ */
9230
+ tz_name?: string | null;
9231
+ /**
9232
+ * How often this form task recurs: one of DAILY, WORKDAILY, WORKDAILYSIX, WEEKLY, BIWEEKLY, MONTHLY, or QUARTERLY. Null for a one-time assignment; on write, applied only when recurring is true.
9233
+ */
9234
+ frequency?: 'DAILY' | 'WORKDAILY' | 'WORKDAILYSIX' | 'WEEKLY' | 'BIWEEKLY' | 'MONTHLY' | 'QUARTERLY' | null;
9235
+ /**
9236
+ * When recurrence stops (ISO 8601); null for a non-recurring or open-ended task.
9237
+ */
9238
+ recurrence_end_time?: string | null;
9239
+ /**
9240
+ * IDs of the users this form task is assigned to.
9241
+ */
9242
+ task_assignee_user_ids?: Array<string>;
9243
+ /**
9244
+ * Reminders to attach, each an offset from the due time. On update, replaces the existing set.
9245
+ */
9246
+ reminders_attributes?: Array<{
9247
+ /**
9248
+ * ISO 8601 duration offset from the due time for the reminder (e.g. -PT1H for one hour before); must be one of the preset reminder times.
9249
+ */
9250
+ offset: 'PT0S' | 'PT-1M' | 'PT-5M' | 'PT-10M' | 'PT-15M' | 'PT-30M' | 'PT-1H' | 'PT-2H' | 'P-1D' | 'P-2D' | 'P-3D' | 'P-4D' | 'P-5D' | 'P-6D' | 'P-1W' | 'P-2W' | 'P-1M' | 'P-2M' | 'P-3M' | 'P-6M' | 'P-1Y' | 'PT5M' | 'PT15M' | 'PT30M' | 'PT1H' | 'PT6H' | 'PT12H' | 'P1D' | 'P2D' | 'P3D' | 'P4D' | 'P5D' | 'P6D' | 'P1W' | 'P2W' | 'P3W';
9251
+ }>;
9252
+ };
9253
+ };
9254
+ /**
9255
+ * 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.
9256
+ */
9257
+ export type PositionResponseObject = {
9258
+ /**
9259
+ * Unique identifier.
9260
+ */
9261
+ id: string;
9262
+ /**
9263
+ * ID of the job this position belongs to; always matches the job in the URL path.
9264
+ */
9265
+ job_id: string;
9266
+ /**
9267
+ * ID of the worker assigned to fill this position; null when the position is unfilled.
9268
+ */
9269
+ fulfilled_by_user_id: string | null;
9270
+ /**
9271
+ * ID of the pay-rate rule package applied to this position, or null when none is set.
9272
+ */
9273
+ pay_rates_rule_package_id: string | null;
9274
+ position_function: PositionFunction;
9275
+ /**
9276
+ * Name of the per diem applied to this position; null when none is set.
9277
+ */
9278
+ per_diem_name: string | null;
9279
+ /**
9280
+ * ISO 4217 currency code for the per-diem rate; null when no per diem is set.
9281
+ */
9282
+ per_diem_currency: string | null;
9283
+ /**
9284
+ * Per-diem amount in cents, as a string; null when no per diem is set.
9285
+ */
9286
+ per_diem_rate_cents: string | null;
9287
+ /**
9288
+ * Planned base hourly pay rate in cents, as a string; null when no rate is set.
9289
+ */
9290
+ hourly_rate_cents: string | null;
9291
+ /**
9292
+ * Where the hourly rate came from: one of user_default, prevailing_wage, or custom; null when no rate is set.
9293
+ */
9294
+ hourly_rate_src_type: string | null;
9295
+ /**
9296
+ * Planned hourly cash-fringe rate in cents, as a string; null when unset.
9297
+ */
9298
+ cash_fringe_rate_cents: string | null;
9299
+ /**
9300
+ * Where the cash-fringe rate came from: one of prevailing_wage or custom; null when unset.
9301
+ */
9302
+ cash_fringe_rate_src_type: string | null;
9303
+ /**
9304
+ * Hourly wage-pay rate in cents applied to PWA (prevailing-wage / apprenticeship) eligible time on this position, as a string; null for non-PWA positions.
9305
+ */
9306
+ pwa_wage_pay_rate_cents: string | null;
9307
+ /**
9308
+ * Where the PWA wage-pay rate came from: one of user_default, prevailing_wage, or custom; null for non-PWA positions.
9309
+ */
9310
+ pwa_wage_pay_rate_src_type: string | null;
9311
+ /**
9312
+ * Hourly wage-adder rate in cents, as a string; null when unset. Excluded from cash-in-lieu-of-fringe calculations.
9313
+ */
9314
+ wage_adder_rate_cents: string | null;
9315
+ /**
9316
+ * Whether this position tracks Prevailing Wage / Apprenticeship (PWA) compliance; when true, the PWA rate fields and wage-determination associations apply.
9317
+ */
9318
+ pwa: boolean;
9319
+ /**
9320
+ * IDs of the federal (Davis-Bacon) wage determinations applied to this position; empty when none.
9321
+ */
9322
+ federal_wage_determination_ids: Array<string>;
9323
+ /**
9324
+ * IDs of the regional (state) wage determinations applied to this position; empty when none.
9325
+ */
9326
+ regional_wage_determination_ids: Array<string>;
9327
+ /**
9328
+ * PWA classification detail for this position; carries skill_level, the apprenticeship or skill classification, which is null when unset.
9329
+ */
9330
+ pwa_details: {
9331
+ /**
9332
+ * The apprenticeship or skill classification; null when unset.
9333
+ */
9334
+ skill_level: string | null;
9335
+ };
9336
+ /**
9337
+ * Start of the position's scheduled window (ISO 8601); null when unscheduled.
9338
+ */
9339
+ start_time: string | null;
9340
+ /**
9341
+ * End of the position's scheduled window (ISO 8601); null when unscheduled.
9342
+ */
9343
+ end_time: string | null;
9344
+ /**
9345
+ * When the record was created (ISO 8601).
9346
+ */
9347
+ created_at: string;
9348
+ /**
9349
+ * When the record was last updated (ISO 8601).
9350
+ */
9351
+ updated_at: string;
9352
+ };
9353
+ /**
9354
+ * A company-owned collection of conditional wage and fringe adjustments, optionally scoped to a job.
9355
+ */
9356
+ export type PayRatesRulePackageResponseObject = {
9357
+ /**
9358
+ * Unique identifier of the rule package.
9359
+ */
9360
+ id: string;
9361
+ /**
9362
+ * Human-readable package name.
9363
+ */
9364
+ name: string;
9365
+ /**
9366
+ * Free-form package description, or null.
9367
+ */
9368
+ description: string | null;
9369
+ /**
9370
+ * ID of the job this package is scoped to, or null for a company-wide package.
9371
+ */
9372
+ scoped_to_job_id: string | null;
9373
+ /**
9374
+ * Whether this is the default package within its company-wide or job scope.
9375
+ */
9376
+ default: boolean;
9377
+ /**
9378
+ * Whether users may select this package directly in configuration workflows.
9379
+ */
9380
+ selectable: boolean;
9381
+ /**
9382
+ * When the record was created (ISO 8601).
9383
+ */
9384
+ created_at: string;
9385
+ /**
9386
+ * When the record was last updated (ISO 8601).
9387
+ */
9388
+ updated_at: string;
9389
+ };
9390
+ /**
9391
+ * Parameters for creating a company-wide pay-rate rule package.
9392
+ */
9393
+ export type PayRatesRulePackageParameters = {
9394
+ /**
9395
+ * Human-readable package name.
9396
+ */
9397
+ name: string;
9398
+ /**
9399
+ * Free-form package description; send null or omit it when no description is needed.
9400
+ */
9401
+ description?: string | null;
9402
+ };
9403
+ /**
9404
+ * Request body for updating a pay-rate rule package. Send only the fields to change. `default`, `selectable`, and `scoped_to_job_id` are not writable on this operation.
9405
+ */
9406
+ export type PayRatesRulePackageUpdateParameters = {
9407
+ /**
9408
+ * Human-readable package name. Omit to leave it unchanged.
9409
+ */
9410
+ name?: string;
9411
+ /**
9412
+ * Free-form package description; omit to leave it unchanged, or send null to clear it.
8822
9413
  */
8823
9414
  description?: string | null;
8824
9415
  };
@@ -8837,10 +9428,6 @@ export type PositionsResponseObject = {
8837
9428
  * Request body for creating or updating a position on a job. The job is taken from the URL path.
8838
9429
  */
8839
9430
  export type PositionParameters = {
8840
- /**
8841
- * ID of the job the position belongs to; taken from the URL path, not the request body.
8842
- */
8843
- job_id?: string;
8844
9431
  /**
8845
9432
  * ID of the worker to assign; cannot be changed once the position has tracked time.
8846
9433
  */
@@ -8982,6 +9569,29 @@ export type ProductionJobScopePriceResponseObject = {
8982
9569
  * A completion's payload shape follows the production tracking kind of the scope price's job — the server derives the completable subtype from the job, never from the request. Feature-tracked jobs record which feature was completed (feature payload); quantity-tracked jobs record how many units were completed (quantity payload). The two payloads are mutually exclusive: sending the other kind's completable key returns 422.
8983
9570
  */
8984
9571
  export type ProductionCompletionParameters = ProductionFeatureCompletionParameters | ProductionQuantityCompletionParameters;
9572
+ /**
9573
+ * Update a completion. Send only the fields to change. The scope price, filer, and feature reference are fixed at creation. Sending production_job_scope_price_id or performed_by_user_id on update returns 400 unknown_key. Feature completions accept no completable changes; quantity completions accept quantity_completed. A key for the other subtype returns 422.
9574
+ */
9575
+ export type ProductionCompletionUpdateParameters = {
9576
+ /**
9577
+ * Free-text notes; omit to preserve them, or send null to clear them.
9578
+ */
9579
+ notes?: string | null;
9580
+ /**
9581
+ * Date the work was performed (YYYY-MM-DD); omit to preserve it.
9582
+ */
9583
+ work_date?: string;
9584
+ /**
9585
+ * Job positions that performed the work. Omit to preserve the crew; a supplied list replaces it and must retain at least one position.
9586
+ */
9587
+ position_ids?: Array<string>;
9588
+ completable_attributes?: {
9589
+ /**
9590
+ * Number of units completed, for quantity completions only. Omit to preserve it.
9591
+ */
9592
+ quantity_completed?: number;
9593
+ };
9594
+ };
8985
9595
  /**
8986
9596
  * Fields shared by both completion payload kinds.
8987
9597
  */
@@ -9391,7 +10001,7 @@ export type CertificationResponseObject = {
9391
10001
  updated_at: string;
9392
10002
  };
9393
10003
  /**
9394
- * Request body for recording a certification held by a worker — who holds it, which certification, when it was received, and optional proof, expiry, and verification details.
10004
+ * Request body for recording a certification held by a worker — who holds it, which certification, when it was received, and optional proof and expiry. Verification is read-only for all API keys; employer approval is a separate action.
9395
10005
  */
9396
10006
  export type UserCertificationParameters = {
9397
10007
  /**
@@ -9399,7 +10009,7 @@ export type UserCertificationParameters = {
9399
10009
  */
9400
10010
  user_id: string;
9401
10011
  /**
9402
- * Id of the certification held. Required. A worker can hold each certification at most once.
10012
+ * Id of a certification visible to the key in its company, or a global certification. Required. A worker can hold each certification at most once.
9403
10013
  */
9404
10014
  certification_id: string;
9405
10015
  /**
@@ -9417,14 +10027,10 @@ export type UserCertificationParameters = {
9417
10027
  /**
9418
10028
  * Base64-encoded contents of the proof document.
9419
10029
  */
9420
- content: string;
9421
- } | null;
9422
- /**
9423
- * Whether DSPTCH has verified this held certification. Distinct from the verified flag on the certification definition itself.
9424
- */
9425
- verified?: boolean;
10030
+ content: string;
10031
+ } | null;
9426
10032
  /**
9427
- * When the held certification expires (YYYY-MM-DD). Must be after received_at; null when it does not expire.
10033
+ * Company keys only: when the held certification expires (YYYY-MM-DD). On creation, must be after received_at; null when it does not expire. User keys must omit this field; supplying it returns 403. Creation and receipt or certification changes currently recalculate expiry from the catalog duration.
9428
10034
  */
9429
10035
  expiration_date?: string | null;
9430
10036
  /**
@@ -9437,7 +10043,7 @@ export type UserCertificationParameters = {
9437
10043
  archived_at?: string | null;
9438
10044
  };
9439
10045
  /**
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.
10046
+ * 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. Verification is read-only for all API keys. Changes to the worker, certification, receipt date, credential number, proof document, or explicit expiration revoke DSPTCH/provider verification. Unchanged evidence, archiving, and employer approval preserve verification. Changing approved content revokes employer approval; approve through the approval endpoint.
9441
10047
  */
9442
10048
  export type UserCertificationUpdateParameters = {
9443
10049
  /**
@@ -9445,7 +10051,7 @@ export type UserCertificationUpdateParameters = {
9445
10051
  */
9446
10052
  user_id?: string;
9447
10053
  /**
9448
- * Id of the certification held. Omit to preserve the current certification; a worker can hold each certification at most once.
10054
+ * Id of a certification visible to the key in its company, or a global certification. Omit or repeat the stored id to preserve the current certification; a worker can hold each certification at most once.
9449
10055
  */
9450
10056
  certification_id?: string;
9451
10057
  /**
@@ -9466,11 +10072,7 @@ export type UserCertificationUpdateParameters = {
9466
10072
  content: string;
9467
10073
  } | null;
9468
10074
  /**
9469
- * Whether DSPTCH has verified this held certification. Distinct from the verified flag on the certification definition itself.
9470
- */
9471
- verified?: boolean;
9472
- /**
9473
- * When the held certification expires (YYYY-MM-DD). Must be after received_at; null when it does not expire.
10075
+ * Company keys only: when the held certification expires (YYYY-MM-DD). On creation, must be after received_at; null when it does not expire. User keys must omit this field; supplying it returns 403. Creation and receipt or certification changes currently recalculate expiry from the catalog duration.
9474
10076
  */
9475
10077
  expiration_date?: string | null;
9476
10078
  /**
@@ -9487,7 +10089,7 @@ export type UserCertificationUpdateParameters = {
9487
10089
  */
9488
10090
  export type UserCertificationApprovalParameters = {
9489
10091
  /**
9490
- * Company keys only: the approver to record. Required with a company key.
10092
+ * Company keys only: a visible admin, manager, or safety manager at the key's company to record as approver. Required with a company key.
9491
10093
  */
9492
10094
  approved_by_user_id?: string;
9493
10095
  };
@@ -9523,9 +10125,9 @@ export type UserCertificationResponseObject = {
9523
10125
  */
9524
10126
  received_at: string;
9525
10127
  /**
9526
- * Whether DSPTCH has verified this held certification.
10128
+ * Whether DSPTCH or a trusted provider has verified the current evidence. Read-only for every API key and independent of employer approval. Ordinary changes to the worker, certification, issuer, receipt date, credential number, proof document, or explicit expiration revoke verification. Unchanged evidence, archiving, employer approval, and automatic expiration recalculation preserve it. A trusted provider can verify replacement evidence.
9527
10129
  */
9528
- verified: boolean;
10130
+ readonly verified: boolean;
9529
10131
  /**
9530
10132
  * Id of the company or organization that granted the certification to the worker. Set to your company for records created through the API; null when unknown.
9531
10133
  */
@@ -11145,6 +11747,7 @@ export type AssetsItemResponseObject = {
11145
11747
  */
11146
11748
  quantity: number;
11147
11749
  }>;
11750
+ attributes: AssetsAttributeValueObjects;
11148
11751
  /**
11149
11752
  * Images attached to the item; each carries a download url for its file.
11150
11753
  */
@@ -11163,7 +11766,7 @@ export type AssetsItemResponseObject = {
11163
11766
  updated_at: string;
11164
11767
  };
11165
11768
  /**
11166
- * Create an asset item. The write API creates serial items only; assets_product_id and serial_number identify the product and serial number. On create you may also place the item — assets_site_id to stock it at a site, or user_id to assign it to a user (the two are mutually exclusive). performed_by_user_id is required.
11769
+ * Create an asset item. The write API creates serial items only; assets_product_id and serial_number identify the product and serial number. `attribute_values` fills the item-level attributes of the product's category. On create you may also place the item — assets_site_id to stock it at a site, or user_id to assign it to a user (the two are mutually exclusive). performed_by_user_id is required.
11167
11770
  */
11168
11771
  export type AssetsItemParameters = {
11169
11772
  /**
@@ -11202,6 +11805,23 @@ export type AssetsItemParameters = {
11202
11805
  * URL to this item in an external system.
11203
11806
  */
11204
11807
  external_system_url?: string;
11808
+ /**
11809
+ * Upserts the values of the item-level attributes of the product's category, one entry per attribute. Send a blank value and null assets_attribute_option_id to clear one.
11810
+ */
11811
+ attribute_values?: Array<{
11812
+ /**
11813
+ * ID of the attribute definition.
11814
+ */
11815
+ assets_attribute_id: string;
11816
+ /**
11817
+ * The entered value for a non-select attribute (text, number, date, or boolean as a string); null for a select attribute or when unfilled.
11818
+ */
11819
+ value?: string | null;
11820
+ /**
11821
+ * ID of the chosen option for a select attribute; null otherwise.
11822
+ */
11823
+ assets_attribute_option_id?: string | null;
11824
+ }>;
11205
11825
  /**
11206
11826
  * Image attachments. Send file with a signed_id to add one; include id with _destroy to remove an existing one.
11207
11827
  */
@@ -11228,7 +11848,7 @@ export type AssetsItemParameters = {
11228
11848
  performed_by_user_id: string;
11229
11849
  };
11230
11850
  /**
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.
11851
+ * 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. `attribute_values` upserts the item-level attributes of the product's category.
11232
11852
  */
11233
11853
  export type AssetsItemUpdateParameters = {
11234
11854
  /**
@@ -11267,6 +11887,23 @@ export type AssetsItemUpdateParameters = {
11267
11887
  * URL to this item in an external system.
11268
11888
  */
11269
11889
  external_system_url?: string;
11890
+ /**
11891
+ * Upserts the values of the item-level attributes of the product's category, one entry per attribute. Send a blank value and null assets_attribute_option_id to clear one.
11892
+ */
11893
+ attribute_values?: Array<{
11894
+ /**
11895
+ * ID of the attribute definition.
11896
+ */
11897
+ assets_attribute_id: string;
11898
+ /**
11899
+ * The entered value for a non-select attribute (text, number, date, or boolean as a string); null for a select attribute or when unfilled.
11900
+ */
11901
+ value?: string | null;
11902
+ /**
11903
+ * ID of the chosen option for a select attribute; null otherwise.
11904
+ */
11905
+ assets_attribute_option_id?: string | null;
11906
+ }>;
11270
11907
  /**
11271
11908
  * Image attachments. Send file with a signed_id to add one; include id with _destroy to remove an existing one.
11272
11909
  */
@@ -12534,17 +13171,9 @@ export type AssetsSubLocationParameters = {
12534
13171
  code: string;
12535
13172
  };
12536
13173
  /**
12537
- * Update a storage location. All fields are optional — send only what changes. The holder fields cannot change after creation; renaming code cascades new path codes through the node's subtree.
13174
+ * Update a storage location. All fields are optional — send only what changes. Sending assets_site_id or container_item_id on update returns 400 unknown_key. Holder fields are accepted only on create; renaming code cascades new path codes through the node's subtree.
12538
13175
  */
12539
13176
  export type AssetsSubLocationUpdateParameters = {
12540
- /**
12541
- * ID of the site the location belongs to. Top-level nodes only — exactly one of assets_site_id or container_item_id; nested nodes inherit the parent's holder.
12542
- */
12543
- assets_site_id?: string;
12544
- /**
12545
- * ID of the container item the location belongs to. Top-level nodes only — exactly one of assets_site_id or container_item_id; the container's product must be flagged as a container.
12546
- */
12547
- container_item_id?: string;
12548
13177
  /**
12549
13178
  * ID of the enclosing location for a nested node; omit for a top-level node.
12550
13179
  */
@@ -12749,6 +13378,78 @@ export type AssetsArchiveParameters = {
12749
13378
  */
12750
13379
  performed_by_user_id: string;
12751
13380
  };
13381
+ /**
13382
+ * A page of certifications held by your company's workers.
13383
+ */
13384
+ export type UserCertificationsResponseObjWritable = {
13385
+ meta: Meta;
13386
+ links: Links;
13387
+ /**
13388
+ * The page of held certifications.
13389
+ */
13390
+ data: Array<UserCertificationResponseObjectWritable>;
13391
+ };
13392
+ /**
13393
+ * A certification held by a worker — the record that a worker earned a certification, with its receipt date, optional expiry, and verification state.
13394
+ */
13395
+ export type UserCertificationResponseObjectWritable = {
13396
+ /**
13397
+ * Unique identifier of the held certification.
13398
+ */
13399
+ id: string;
13400
+ /**
13401
+ * Id of the worker who holds the certification.
13402
+ */
13403
+ user_id: string;
13404
+ /**
13405
+ * Id of the certification held.
13406
+ */
13407
+ certification_id: string;
13408
+ /**
13409
+ * When the worker earned the certification (ISO 8601).
13410
+ */
13411
+ received_at: string;
13412
+ /**
13413
+ * Id of the company or organization that granted the certification to the worker. Set to your company for records created through the API; null when unknown.
13414
+ */
13415
+ issuer_company_id: string | null;
13416
+ /**
13417
+ * When the held certification expires (YYYY-MM-DD); null when it does not expire.
13418
+ */
13419
+ expiration_date: string | null;
13420
+ /**
13421
+ * The credential or document number for the held certification, as issued by the issuer; null when none.
13422
+ */
13423
+ credential_id: string | null;
13424
+ /**
13425
+ * Id of the user who approved this held certification; null when unapproved. Set through the approval endpoint.
13426
+ */
13427
+ approved_by_user_id: string | null;
13428
+ /**
13429
+ * Id of the user who created the record; null when unrecorded (records created through the API do not set it).
13430
+ */
13431
+ created_by_user_id: string | null;
13432
+ /**
13433
+ * Id of the user who last updated the record; null when unrecorded.
13434
+ */
13435
+ updated_by_user_id: string | null;
13436
+ /**
13437
+ * When the held certification was archived (ISO 8601); null while active.
13438
+ */
13439
+ archived_at: string | null;
13440
+ /**
13441
+ * When the current approval was recorded (ISO 8601); null when unapproved.
13442
+ */
13443
+ approved_at: string | null;
13444
+ /**
13445
+ * When the record was created (ISO 8601).
13446
+ */
13447
+ created_at: string;
13448
+ /**
13449
+ * When the record was last updated (ISO 8601).
13450
+ */
13451
+ updated_at: string;
13452
+ };
12752
13453
  export type ListApiKeyScopesData = {
12753
13454
  body?: never;
12754
13455
  path?: never;
@@ -14615,7 +15316,7 @@ export type CreateItemErrors = {
14615
15316
  */
14616
15317
  404: Problem;
14617
15318
  /**
14618
- * Unprocessable Content (conflicting placement)
15319
+ * Unprocessable Content (missing required attribute)
14619
15320
  */
14620
15321
  422: Problem;
14621
15322
  };
@@ -16088,6 +16789,10 @@ export type CreateSubLocationData = {
16088
16789
  url: '/api/v1/assets/sub_locations';
16089
16790
  };
16090
16791
  export type CreateSubLocationErrors = {
16792
+ /**
16793
+ * Bad Request
16794
+ */
16795
+ 400: Problem;
16091
16796
  /**
16092
16797
  * Forbidden
16093
16798
  */
@@ -16100,7 +16805,7 @@ export type CreateSubLocationErrors = {
16100
16805
  export type CreateSubLocationError = CreateSubLocationErrors[keyof CreateSubLocationErrors];
16101
16806
  export type CreateSubLocationResponses = {
16102
16807
  /**
16103
- * Created
16808
+ * Created with an explicit holder
16104
16809
  */
16105
16810
  201: AssetsSubLocationResponseObject;
16106
16811
  };
@@ -16170,6 +16875,10 @@ export type UpdateSubLocationData = {
16170
16875
  url: '/api/v1/assets/sub_locations/{id}';
16171
16876
  };
16172
16877
  export type UpdateSubLocationErrors = {
16878
+ /**
16879
+ * Bad Request (create-only holder)
16880
+ */
16881
+ 400: Problem;
16173
16882
  /**
16174
16883
  * Forbidden
16175
16884
  */
@@ -17012,6 +17721,12 @@ export type ListCertificationsData = {
17012
17721
  body?: never;
17013
17722
  path?: never;
17014
17723
  query?: {
17724
+ /**
17725
+ * Fuzzy-matches the certification name (trigram word-similarity). Matches the name column only.
17726
+ */
17727
+ 'filter[name]'?: string;
17728
+ filter?: string;
17729
+ 'filter[unexpected]'?: string;
17015
17730
  /**
17016
17731
  * This pagination cursor corresponds to the cursor value found in the response in
17017
17732
  * `meta.page.next_cursor`.
@@ -17157,6 +17872,10 @@ export type ListDepartmentsData = {
17157
17872
  body?: never;
17158
17873
  path?: never;
17159
17874
  query?: {
17875
+ /**
17876
+ * Fuzzy-matches the department name (trigram word-similarity). Matches the name column only.
17877
+ */
17878
+ 'filter[name]'?: string;
17160
17879
  'filter[created_at][gte]'?: string;
17161
17880
  'filter[created_at][lte]'?: string;
17162
17881
  'filter[updated_at][gte]'?: string;
@@ -17800,6 +18519,10 @@ export type ListFormDefinitionsData = {
17800
18519
  body?: never;
17801
18520
  path?: never;
17802
18521
  query?: {
18522
+ /**
18523
+ * Fuzzy-matches the form definition name (trigram word-similarity). Matches the name column only — not tags.
18524
+ */
18525
+ 'filter[name]'?: string;
17803
18526
  'filter[created_at][gte]'?: string;
17804
18527
  'filter[created_at][lte]'?: string;
17805
18528
  'filter[updated_at][gte]'?: string;
@@ -18085,6 +18808,12 @@ export type ListGroupsData = {
18085
18808
  body?: never;
18086
18809
  path?: never;
18087
18810
  query?: {
18811
+ /**
18812
+ * Fuzzy-matches the group name (trigram word-similarity). Matches the name column only.
18813
+ */
18814
+ 'filter[name]'?: string;
18815
+ filter?: string;
18816
+ 'filter[unexpected]'?: string;
18088
18817
  /**
18089
18818
  * This pagination cursor corresponds to the cursor value found in the response in
18090
18819
  * `meta.page.next_cursor`.
@@ -18206,9 +18935,150 @@ export type UpdateGroupData = {
18206
18935
  id: string;
18207
18936
  };
18208
18937
  query?: never;
18209
- url: '/api/v1/groups/{id}';
18938
+ url: '/api/v1/groups/{id}';
18939
+ };
18940
+ export type UpdateGroupErrors = {
18941
+ /**
18942
+ * Bad Request
18943
+ */
18944
+ 400: Problem;
18945
+ /**
18946
+ * Forbidden
18947
+ */
18948
+ 403: Problem;
18949
+ /**
18950
+ * Not Found
18951
+ */
18952
+ 404: Problem;
18953
+ /**
18954
+ * Unprocessable Content
18955
+ */
18956
+ 422: Problem;
18957
+ };
18958
+ export type UpdateGroupError = UpdateGroupErrors[keyof UpdateGroupErrors];
18959
+ export type UpdateGroupResponses = {
18960
+ /**
18961
+ * Success
18962
+ */
18963
+ 200: GroupResponseObject;
18964
+ };
18965
+ export type UpdateGroupResponse = UpdateGroupResponses[keyof UpdateGroupResponses];
18966
+ export type ListJobFormAssignmentTasksData = {
18967
+ body?: never;
18968
+ path: {
18969
+ job_id: string;
18970
+ };
18971
+ query?: {
18972
+ /**
18973
+ * This pagination cursor corresponds to the cursor value found in the response in
18974
+ * `meta.page.next_cursor`.
18975
+ */
18976
+ 'page[cursor]'?: string;
18977
+ /**
18978
+ * 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`.
18979
+ */
18980
+ 'page[limit]'?: number;
18981
+ page?: string;
18982
+ };
18983
+ url: '/api/v1/jobs/{job_id}/form_assignment_tasks';
18984
+ };
18985
+ export type ListJobFormAssignmentTasksErrors = {
18986
+ /**
18987
+ * Bad Request
18988
+ */
18989
+ 400: Problem;
18990
+ /**
18991
+ * Forbidden
18992
+ */
18993
+ 403: Problem;
18994
+ /**
18995
+ * Not Found
18996
+ */
18997
+ 404: Problem;
18998
+ };
18999
+ export type ListJobFormAssignmentTasksError = ListJobFormAssignmentTasksErrors[keyof ListJobFormAssignmentTasksErrors];
19000
+ export type ListJobFormAssignmentTasksResponses = {
19001
+ /**
19002
+ * Success
19003
+ */
19004
+ 200: {
19005
+ meta: Meta;
19006
+ links: Links;
19007
+ data: Array<JobFormAssignmentResponseObject>;
19008
+ };
19009
+ };
19010
+ export type ListJobFormAssignmentTasksResponse = ListJobFormAssignmentTasksResponses[keyof ListJobFormAssignmentTasksResponses];
19011
+ export type CreateJobFormAssignmentTaskData = {
19012
+ body: JobFormAssignmentParameters;
19013
+ path: {
19014
+ job_id: string;
19015
+ };
19016
+ query?: never;
19017
+ url: '/api/v1/jobs/{job_id}/form_assignment_tasks';
19018
+ };
19019
+ export type CreateJobFormAssignmentTaskErrors = {
19020
+ /**
19021
+ * Bad Request
19022
+ */
19023
+ 400: Problem;
19024
+ /**
19025
+ * Forbidden
19026
+ */
19027
+ 403: Problem;
19028
+ /**
19029
+ * Not Found
19030
+ */
19031
+ 404: Problem;
19032
+ /**
19033
+ * Unprocessable Content
19034
+ */
19035
+ 422: Problem;
19036
+ };
19037
+ export type CreateJobFormAssignmentTaskError = CreateJobFormAssignmentTaskErrors[keyof CreateJobFormAssignmentTaskErrors];
19038
+ export type CreateJobFormAssignmentTaskResponses = {
19039
+ /**
19040
+ * Created (recurring, with assignees and reminders)
19041
+ */
19042
+ 201: JobFormAssignmentResponseObject;
19043
+ };
19044
+ export type CreateJobFormAssignmentTaskResponse = CreateJobFormAssignmentTaskResponses[keyof CreateJobFormAssignmentTaskResponses];
19045
+ export type GetJobFormAssignmentTaskData = {
19046
+ body?: never;
19047
+ path: {
19048
+ job_id: string;
19049
+ id: string;
19050
+ };
19051
+ query?: never;
19052
+ url: '/api/v1/jobs/{job_id}/form_assignment_tasks/{id}';
19053
+ };
19054
+ export type GetJobFormAssignmentTaskErrors = {
19055
+ /**
19056
+ * Forbidden
19057
+ */
19058
+ 403: Problem;
19059
+ /**
19060
+ * Not Found
19061
+ */
19062
+ 404: Problem;
19063
+ };
19064
+ export type GetJobFormAssignmentTaskError = GetJobFormAssignmentTaskErrors[keyof GetJobFormAssignmentTaskErrors];
19065
+ export type GetJobFormAssignmentTaskResponses = {
19066
+ /**
19067
+ * Success
19068
+ */
19069
+ 200: JobFormAssignmentResponseObject;
19070
+ };
19071
+ export type GetJobFormAssignmentTaskResponse = GetJobFormAssignmentTaskResponses[keyof GetJobFormAssignmentTaskResponses];
19072
+ export type UpdateJobFormAssignmentTaskData = {
19073
+ body: JobFormAssignmentUpdateParameters;
19074
+ path: {
19075
+ job_id: string;
19076
+ id: string;
19077
+ };
19078
+ query?: never;
19079
+ url: '/api/v1/jobs/{job_id}/form_assignment_tasks/{id}';
18210
19080
  };
18211
- export type UpdateGroupErrors = {
19081
+ export type UpdateJobFormAssignmentTaskErrors = {
18212
19082
  /**
18213
19083
  * Bad Request
18214
19084
  */
@@ -18226,14 +19096,14 @@ export type UpdateGroupErrors = {
18226
19096
  */
18227
19097
  422: Problem;
18228
19098
  };
18229
- export type UpdateGroupError = UpdateGroupErrors[keyof UpdateGroupErrors];
18230
- export type UpdateGroupResponses = {
19099
+ export type UpdateJobFormAssignmentTaskError = UpdateJobFormAssignmentTaskErrors[keyof UpdateJobFormAssignmentTaskErrors];
19100
+ export type UpdateJobFormAssignmentTaskResponses = {
18231
19101
  /**
18232
19102
  * Success
18233
19103
  */
18234
- 200: GroupResponseObject;
19104
+ 200: JobFormAssignmentResponseObject;
18235
19105
  };
18236
- export type UpdateGroupResponse = UpdateGroupResponses[keyof UpdateGroupResponses];
19106
+ export type UpdateJobFormAssignmentTaskResponse = UpdateJobFormAssignmentTaskResponses[keyof UpdateJobFormAssignmentTaskResponses];
18237
19107
  export type ListJobScopePricesData = {
18238
19108
  body?: never;
18239
19109
  path: {
@@ -19285,6 +20155,14 @@ export type ListJobsData = {
19285
20155
  * Returns jobs in the given project and all of its descendant projects
19286
20156
  */
19287
20157
  'filter[project_id]'?: string;
20158
+ /**
20159
+ * Returns jobs assigned to this provider-company department. Retrieve department IDs from GET /api/v1/companies/departments.
20160
+ */
20161
+ 'filter[companies_department_id]'?: string;
20162
+ /**
20163
+ * Use true for jobs without a department or false for jobs with a department. Use this instead of the department ID filter.
20164
+ */
20165
+ 'filter[companies_department_id][null]'?: boolean;
19288
20166
  /**
19289
20167
  * Returns jobs whose status is any of the given values. Comma-separate to match multiple (e.g. `ready,completed`). Accepts each concrete status (pending_provider, pending_schedule, pending_workers, ready, disputed, completed, cancelled) plus the aggregates `pending` (any pending_* status) and `active` (ready or disputed).
19290
20168
  */
@@ -19553,6 +20431,284 @@ export type GetSiteCheckInResponses = {
19553
20431
  200: SiteCheckInResponseObject;
19554
20432
  };
19555
20433
  export type GetSiteCheckInResponse = GetSiteCheckInResponses[keyof GetSiteCheckInResponses];
20434
+ export type ListFeatureFormAssignmentTasksData = {
20435
+ body?: never;
20436
+ path: {
20437
+ site_id: string;
20438
+ feature_id: string;
20439
+ };
20440
+ query?: {
20441
+ /**
20442
+ * This pagination cursor corresponds to the cursor value found in the response in
20443
+ * `meta.page.next_cursor`.
20444
+ */
20445
+ 'page[cursor]'?: string;
20446
+ /**
20447
+ * 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`.
20448
+ */
20449
+ 'page[limit]'?: number;
20450
+ page?: string;
20451
+ };
20452
+ url: '/api/v1/oversite/sites/{site_id}/features/{feature_id}/form_assignment_tasks';
20453
+ };
20454
+ export type ListFeatureFormAssignmentTasksErrors = {
20455
+ /**
20456
+ * Bad Request
20457
+ */
20458
+ 400: Problem;
20459
+ /**
20460
+ * Forbidden
20461
+ */
20462
+ 403: Problem;
20463
+ /**
20464
+ * Not Found
20465
+ */
20466
+ 404: Problem;
20467
+ };
20468
+ export type ListFeatureFormAssignmentTasksError = ListFeatureFormAssignmentTasksErrors[keyof ListFeatureFormAssignmentTasksErrors];
20469
+ export type ListFeatureFormAssignmentTasksResponses = {
20470
+ /**
20471
+ * Success
20472
+ */
20473
+ 200: {
20474
+ meta: Meta;
20475
+ links: Links;
20476
+ data: Array<FeatureFormAssignmentResponseObject>;
20477
+ };
20478
+ };
20479
+ export type ListFeatureFormAssignmentTasksResponse = ListFeatureFormAssignmentTasksResponses[keyof ListFeatureFormAssignmentTasksResponses];
20480
+ export type CreateFeatureFormAssignmentTaskData = {
20481
+ body: FeatureFormAssignmentParameters;
20482
+ path: {
20483
+ site_id: string;
20484
+ feature_id: string;
20485
+ };
20486
+ query?: never;
20487
+ url: '/api/v1/oversite/sites/{site_id}/features/{feature_id}/form_assignment_tasks';
20488
+ };
20489
+ export type CreateFeatureFormAssignmentTaskErrors = {
20490
+ /**
20491
+ * Bad Request
20492
+ */
20493
+ 400: Problem;
20494
+ /**
20495
+ * Forbidden
20496
+ */
20497
+ 403: Problem;
20498
+ /**
20499
+ * Not Found
20500
+ */
20501
+ 404: Problem;
20502
+ /**
20503
+ * Unprocessable Content
20504
+ */
20505
+ 422: Problem;
20506
+ };
20507
+ export type CreateFeatureFormAssignmentTaskError = CreateFeatureFormAssignmentTaskErrors[keyof CreateFeatureFormAssignmentTaskErrors];
20508
+ export type CreateFeatureFormAssignmentTaskResponses = {
20509
+ /**
20510
+ * Created
20511
+ */
20512
+ 201: FeatureFormAssignmentResponseObject;
20513
+ };
20514
+ export type CreateFeatureFormAssignmentTaskResponse = CreateFeatureFormAssignmentTaskResponses[keyof CreateFeatureFormAssignmentTaskResponses];
20515
+ export type GetFeatureFormAssignmentTaskData = {
20516
+ body?: never;
20517
+ path: {
20518
+ site_id: string;
20519
+ feature_id: string;
20520
+ id: string;
20521
+ };
20522
+ query?: never;
20523
+ url: '/api/v1/oversite/sites/{site_id}/features/{feature_id}/form_assignment_tasks/{id}';
20524
+ };
20525
+ export type GetFeatureFormAssignmentTaskErrors = {
20526
+ /**
20527
+ * Forbidden
20528
+ */
20529
+ 403: Problem;
20530
+ /**
20531
+ * Not Found
20532
+ */
20533
+ 404: Problem;
20534
+ };
20535
+ export type GetFeatureFormAssignmentTaskError = GetFeatureFormAssignmentTaskErrors[keyof GetFeatureFormAssignmentTaskErrors];
20536
+ export type GetFeatureFormAssignmentTaskResponses = {
20537
+ /**
20538
+ * Success
20539
+ */
20540
+ 200: FeatureFormAssignmentResponseObject;
20541
+ };
20542
+ export type GetFeatureFormAssignmentTaskResponse = GetFeatureFormAssignmentTaskResponses[keyof GetFeatureFormAssignmentTaskResponses];
20543
+ export type UpdateFeatureFormAssignmentTaskData = {
20544
+ body: FeatureFormAssignmentUpdateParameters;
20545
+ path: {
20546
+ site_id: string;
20547
+ feature_id: string;
20548
+ id: string;
20549
+ };
20550
+ query?: never;
20551
+ url: '/api/v1/oversite/sites/{site_id}/features/{feature_id}/form_assignment_tasks/{id}';
20552
+ };
20553
+ export type UpdateFeatureFormAssignmentTaskErrors = {
20554
+ /**
20555
+ * Bad Request
20556
+ */
20557
+ 400: Problem;
20558
+ /**
20559
+ * Forbidden
20560
+ */
20561
+ 403: Problem;
20562
+ /**
20563
+ * Not Found
20564
+ */
20565
+ 404: Problem;
20566
+ };
20567
+ export type UpdateFeatureFormAssignmentTaskError = UpdateFeatureFormAssignmentTaskErrors[keyof UpdateFeatureFormAssignmentTaskErrors];
20568
+ export type UpdateFeatureFormAssignmentTaskResponses = {
20569
+ /**
20570
+ * Success
20571
+ */
20572
+ 200: FeatureFormAssignmentResponseObject;
20573
+ };
20574
+ export type UpdateFeatureFormAssignmentTaskResponse = UpdateFeatureFormAssignmentTaskResponses[keyof UpdateFeatureFormAssignmentTaskResponses];
20575
+ export type ListSiteFormAssignmentTasksData = {
20576
+ body?: never;
20577
+ path: {
20578
+ site_id: string;
20579
+ };
20580
+ query?: {
20581
+ /**
20582
+ * This pagination cursor corresponds to the cursor value found in the response in
20583
+ * `meta.page.next_cursor`.
20584
+ */
20585
+ 'page[cursor]'?: string;
20586
+ /**
20587
+ * 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`.
20588
+ */
20589
+ 'page[limit]'?: number;
20590
+ page?: string;
20591
+ };
20592
+ url: '/api/v1/oversite/sites/{site_id}/form_assignment_tasks';
20593
+ };
20594
+ export type ListSiteFormAssignmentTasksErrors = {
20595
+ /**
20596
+ * Bad Request
20597
+ */
20598
+ 400: Problem;
20599
+ /**
20600
+ * Forbidden
20601
+ */
20602
+ 403: Problem;
20603
+ /**
20604
+ * Not Found
20605
+ */
20606
+ 404: Problem;
20607
+ };
20608
+ export type ListSiteFormAssignmentTasksError = ListSiteFormAssignmentTasksErrors[keyof ListSiteFormAssignmentTasksErrors];
20609
+ export type ListSiteFormAssignmentTasksResponses = {
20610
+ /**
20611
+ * Success
20612
+ */
20613
+ 200: {
20614
+ meta: Meta;
20615
+ links: Links;
20616
+ data: Array<SiteFormAssignmentResponseObject>;
20617
+ };
20618
+ };
20619
+ export type ListSiteFormAssignmentTasksResponse = ListSiteFormAssignmentTasksResponses[keyof ListSiteFormAssignmentTasksResponses];
20620
+ export type CreateSiteFormAssignmentTaskData = {
20621
+ body: SiteFormAssignmentParameters;
20622
+ path: {
20623
+ site_id: string;
20624
+ };
20625
+ query?: never;
20626
+ url: '/api/v1/oversite/sites/{site_id}/form_assignment_tasks';
20627
+ };
20628
+ export type CreateSiteFormAssignmentTaskErrors = {
20629
+ /**
20630
+ * Bad Request
20631
+ */
20632
+ 400: Problem;
20633
+ /**
20634
+ * Forbidden
20635
+ */
20636
+ 403: Problem;
20637
+ /**
20638
+ * Not Found
20639
+ */
20640
+ 404: Problem;
20641
+ /**
20642
+ * Unprocessable Content
20643
+ */
20644
+ 422: Problem;
20645
+ };
20646
+ export type CreateSiteFormAssignmentTaskError = CreateSiteFormAssignmentTaskErrors[keyof CreateSiteFormAssignmentTaskErrors];
20647
+ export type CreateSiteFormAssignmentTaskResponses = {
20648
+ /**
20649
+ * Created
20650
+ */
20651
+ 201: SiteFormAssignmentResponseObject;
20652
+ };
20653
+ export type CreateSiteFormAssignmentTaskResponse = CreateSiteFormAssignmentTaskResponses[keyof CreateSiteFormAssignmentTaskResponses];
20654
+ export type GetSiteFormAssignmentTaskData = {
20655
+ body?: never;
20656
+ path: {
20657
+ site_id: string;
20658
+ id: string;
20659
+ };
20660
+ query?: never;
20661
+ url: '/api/v1/oversite/sites/{site_id}/form_assignment_tasks/{id}';
20662
+ };
20663
+ export type GetSiteFormAssignmentTaskErrors = {
20664
+ /**
20665
+ * Forbidden
20666
+ */
20667
+ 403: Problem;
20668
+ /**
20669
+ * Not Found
20670
+ */
20671
+ 404: Problem;
20672
+ };
20673
+ export type GetSiteFormAssignmentTaskError = GetSiteFormAssignmentTaskErrors[keyof GetSiteFormAssignmentTaskErrors];
20674
+ export type GetSiteFormAssignmentTaskResponses = {
20675
+ /**
20676
+ * Success
20677
+ */
20678
+ 200: SiteFormAssignmentResponseObject;
20679
+ };
20680
+ export type GetSiteFormAssignmentTaskResponse = GetSiteFormAssignmentTaskResponses[keyof GetSiteFormAssignmentTaskResponses];
20681
+ export type UpdateSiteFormAssignmentTaskData = {
20682
+ body: SiteFormAssignmentUpdateParameters;
20683
+ path: {
20684
+ site_id: string;
20685
+ id: string;
20686
+ };
20687
+ query?: never;
20688
+ url: '/api/v1/oversite/sites/{site_id}/form_assignment_tasks/{id}';
20689
+ };
20690
+ export type UpdateSiteFormAssignmentTaskErrors = {
20691
+ /**
20692
+ * Bad Request
20693
+ */
20694
+ 400: Problem;
20695
+ /**
20696
+ * Forbidden
20697
+ */
20698
+ 403: Problem;
20699
+ /**
20700
+ * Not Found
20701
+ */
20702
+ 404: Problem;
20703
+ };
20704
+ export type UpdateSiteFormAssignmentTaskError = UpdateSiteFormAssignmentTaskErrors[keyof UpdateSiteFormAssignmentTaskErrors];
20705
+ export type UpdateSiteFormAssignmentTaskResponses = {
20706
+ /**
20707
+ * Success
20708
+ */
20709
+ 200: SiteFormAssignmentResponseObject;
20710
+ };
20711
+ export type UpdateSiteFormAssignmentTaskResponse = UpdateSiteFormAssignmentTaskResponses[keyof UpdateSiteFormAssignmentTaskResponses];
19556
20712
  export type ShiftOvertimeRuleGenesisData = {
19557
20713
  body: OvertimeRuleGenesisParameters;
19558
20714
  headers: {
@@ -20690,6 +21846,10 @@ export type ListPayRateRulePackagesData = {
20690
21846
  * Filter by whether users can select the package.
20691
21847
  */
20692
21848
  'filter[selectable]'?: boolean;
21849
+ /**
21850
+ * Fuzzy-matches the rule package name (trigram word-similarity). Matches the name column only.
21851
+ */
21852
+ 'filter[name]'?: string;
20693
21853
  'filter[created_at][gte]'?: string;
20694
21854
  'filter[created_at][lte]'?: string;
20695
21855
  'filter[updated_at][gte]'?: string;
@@ -23476,7 +24636,7 @@ export type GetCompletionResponses = {
23476
24636
  };
23477
24637
  export type GetCompletionResponse = GetCompletionResponses[keyof GetCompletionResponses];
23478
24638
  export type UpdateCompletionData = {
23479
- body?: ProductionCompletionParameters;
24639
+ body?: ProductionCompletionUpdateParameters;
23480
24640
  path: {
23481
24641
  id: string;
23482
24642
  };
@@ -23484,6 +24644,10 @@ export type UpdateCompletionData = {
23484
24644
  url: '/api/v1/production/completions/{id}';
23485
24645
  };
23486
24646
  export type UpdateCompletionErrors = {
24647
+ /**
24648
+ * Bad Request (create-only lookup)
24649
+ */
24650
+ 400: Problem;
23487
24651
  /**
23488
24652
  * Forbidden
23489
24653
  */
@@ -26339,6 +27503,38 @@ export type ListPayPeriodConfigsResponses = {
26339
27503
  };
26340
27504
  };
26341
27505
  export type ListPayPeriodConfigsResponse = ListPayPeriodConfigsResponses[keyof ListPayPeriodConfigsResponses];
27506
+ export type CreatePayPeriodConfigData = {
27507
+ body: PayPeriodConfigParameters;
27508
+ path?: never;
27509
+ query?: never;
27510
+ url: '/api/v1/timekeeping/pay_period_configs';
27511
+ };
27512
+ export type CreatePayPeriodConfigErrors = {
27513
+ /**
27514
+ * Bad Request
27515
+ */
27516
+ 400: Problem;
27517
+ /**
27518
+ * Forbidden
27519
+ */
27520
+ 403: Problem;
27521
+ /**
27522
+ * Pay schedule already exists
27523
+ */
27524
+ 409: Problem;
27525
+ /**
27526
+ * Invalid configuration
27527
+ */
27528
+ 422: Problem;
27529
+ };
27530
+ export type CreatePayPeriodConfigError = CreatePayPeriodConfigErrors[keyof CreatePayPeriodConfigErrors];
27531
+ export type CreatePayPeriodConfigResponses = {
27532
+ /**
27533
+ * Created
27534
+ */
27535
+ 201: PayPeriodConfigResponseObject;
27536
+ };
27537
+ export type CreatePayPeriodConfigResponse = CreatePayPeriodConfigResponses[keyof CreatePayPeriodConfigResponses];
26342
27538
  export type GetPayPeriodConfigData = {
26343
27539
  body?: never;
26344
27540
  path: {