@dsptch-work/api-client 0.34.0 → 0.36.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.
@@ -26,11 +26,11 @@ export type Problem = {
26
26
  */
27
27
  instance: string;
28
28
  /**
29
- * Optional nonempty validation entries. Each item gives a readable detail and, when the server can prove a public body location, a pointer to it. Clients must accept entries without a pointer.
29
+ * Optional nonempty entries, one per refused field or value: validation failures, and other request-body refusals such as `subtype_foreign_keys`. Each item gives a readable detail and, when the server can prove a public body location, a pointer to it. Clients must accept entries without a pointer.
30
30
  */
31
31
  errors?: Array<{
32
32
  /**
33
- * The validation message for this entry.
33
+ * The message for this entry.
34
34
  */
35
35
  detail: string;
36
36
  /**
@@ -335,7 +335,7 @@ export type Problem = {
335
335
  *
336
336
  * **Foreign Subtype Attributes**
337
337
  *
338
- * A nested-attributes write carries keys the record's resolved subtype does not accept. Send only the keys valid for that subtype; the message names the offending ones.
338
+ * A write carries keys the record's resolved subtype does not accept, whether nested or beside the record's own fields (a serial item's fields sent for a bulk item). Send only the keys valid for that subtype; the message names the offending ones, and each one's entry in `errors` points at it. Nothing is written.
339
339
  *
340
340
  * ### synced_determination
341
341
  *
@@ -413,7 +413,7 @@ export type DirectUploadParameters = {
413
413
  /**
414
414
  * What the file is for, named as the endpoint that will attach it (for example `assets.vendors`). Required. It decides where the file is stored, and the signed ID this call returns is issued for that resource alone — it will not resolve at any other endpoint, so a vendor logo cannot be attached as an avatar, or an avatar as a logo.
415
415
  */
416
- resource: 'assets.items' | 'assets.items.documents' | 'assets.items.service_events' | 'assets.products' | 'assets.vendors' | 'compliance.checks' | 'internal.companies' | 'internal.company_todos' | 'internal.job_todos' | 'internal.project_todos' | 'pay_periods.imports.aggregate_times' | 'pay_periods.imports.dsptch_cprs' | 'pay_periods.imports.time_entries' | 'payrolls.payroll_runs.imports.paystubs' | 'payrolls.payroll_runs.imports.wide_paystubs' | 'users';
416
+ resource: 'assets.items' | 'assets.items.documents' | 'assets.items.service_events' | 'assets.products' | 'assets.vendors' | 'compliance.checks' | 'internal.companies' | 'internal.company_todos' | 'internal.job_todos' | 'internal.project_todos' | 'pay_periods.imports.aggregate_times' | 'pay_periods.imports.dsptch_cprs' | 'pay_periods.imports.time_entries' | 'payrolls.payroll_runs.imports.paystubs' | 'payrolls.payroll_runs.imports.wide_paystubs' | 'projects.documents' | 'users';
417
417
  /**
418
418
  * Metadata describing the file being registered, before its bytes are uploaded.
419
419
  */
@@ -768,6 +768,10 @@ export type CompetencyCriterionResponseObject = {
768
768
  * Guidance on what evidence satisfies the criterion; null when unset.
769
769
  */
770
770
  evidence_note: string | null;
771
+ /**
772
+ * Suggested assessment method for this criterion; null when unset. An assessment does not have to use it.
773
+ */
774
+ assessment_method: 'direct_observation' | 'simulation' | 'oral_questioning' | 'written_questioning' | 'products_of_work' | 'recognized_prior_learning' | 'witness_testimony' | 'other' | null;
771
775
  /**
772
776
  * When the criterion was created.
773
777
  */
@@ -793,6 +797,10 @@ export type CompetencyCriterionParameters = {
793
797
  * Guidance on what evidence satisfies the criterion; optional, null to clear.
794
798
  */
795
799
  evidence_note?: string | null;
800
+ /**
801
+ * Suggested assessment method; optional, null to clear.
802
+ */
803
+ assessment_method?: 'direct_observation' | 'simulation' | 'oral_questioning' | 'written_questioning' | 'products_of_work' | 'recognized_prior_learning' | 'witness_testimony' | 'other' | null;
796
804
  };
797
805
  /**
798
806
  * Swap a draft catalog row with its neighbor. The row cannot move past either end of the list.
@@ -1698,7 +1706,7 @@ export type ApprenticeshipProgramEmployerUpdateParameters = {
1698
1706
  require_timecard_allocation?: boolean;
1699
1707
  };
1700
1708
  /**
1701
- * Create a period on a wage schedule; the wage schedule is taken from the URL path. wage_cents and fringe_cents are sent as integer cents.
1709
+ * Create a period on a wage schedule; the wage schedule is taken from the URL path. wage_cents and fringe_cents are sent as integer cents. Omitting period_number, wage_percent, or wage_cents answers 400. A wrong JSON type, a negative number, or a null for any field but min_minutes, max_minutes, num_competencies, description, fringe_percent, and fringe_cents answers 422 at that field; a null in one of those leaves it unset, but a period with none of min_minutes, max_minutes, or num_competencies answers 422.
1702
1710
  */
1703
1711
  export type ApprenticeshipWageSchedulePeriodParameters = {
1704
1712
  /**
@@ -1739,7 +1747,7 @@ export type ApprenticeshipWageSchedulePeriodParameters = {
1739
1747
  fringe_cents?: number | null;
1740
1748
  };
1741
1749
  /**
1742
- * Update a period on a wage schedule. Send only the fields to change; the wage schedule is taken from the URL path, and wage_cents and fringe_cents are sent as integer cents.
1750
+ * Update a period on a wage schedule. Send only the fields to change; the wage schedule is taken from the URL path, and wage_cents and fringe_cents are sent as integer cents. A wrong JSON type, a negative number, or a null for any field but min_minutes, max_minutes, num_competencies, description, fringe_percent, and fringe_cents answers 422 at that field; a null in one of those clears it, but a period left with none of min_minutes, max_minutes, or num_competencies answers 422.
1743
1751
  */
1744
1752
  export type ApprenticeshipWageSchedulePeriodUpdateParameters = {
1745
1753
  /**
@@ -1747,15 +1755,15 @@ export type ApprenticeshipWageSchedulePeriodUpdateParameters = {
1747
1755
  */
1748
1756
  period_number?: number;
1749
1757
  /**
1750
- * Duration of this period, in on-the-job minutes spent within it — not a cumulative threshold; omit to leave it unchanged, or send null to clear. A newly added period must set at least one of min_minutes, max_minutes, or num_competencies.
1758
+ * Duration of this period, in on-the-job minutes spent within it — not a cumulative threshold; omit to leave it unchanged, or send null to clear. Every period must keep at least one of min_minutes, max_minutes, or num_competencies; a write that leaves all three null answers 422.
1751
1759
  */
1752
1760
  min_minutes?: number | null;
1753
1761
  /**
1754
- * Upper bound on this period's duration, in minutes; informational only, not used to compute advancement; omit to leave it unchanged, or send null to clear. A newly added period must set at least one of min_minutes, max_minutes, or num_competencies.
1762
+ * Upper bound on this period's duration, in minutes; informational only, not used to compute advancement; omit to leave it unchanged, or send null to clear. Every period must keep at least one of min_minutes, max_minutes, or num_competencies; a write that leaves all three null answers 422.
1755
1763
  */
1756
1764
  max_minutes?: number | null;
1757
1765
  /**
1758
- * Number of competencies required to complete this period; omit to leave it unchanged, or send null to clear. A newly added period must set at least one of min_minutes, max_minutes, or num_competencies.
1766
+ * Number of competencies required to complete this period; omit to leave it unchanged, or send null to clear. Every period must keep at least one of min_minutes, max_minutes, or num_competencies; a write that leaves all three null answers 422.
1759
1767
  */
1760
1768
  num_competencies?: number | null;
1761
1769
  /**
@@ -1780,7 +1788,7 @@ export type ApprenticeshipWageSchedulePeriodUpdateParameters = {
1780
1788
  fringe_cents?: number | null;
1781
1789
  };
1782
1790
  /**
1783
- * Create a wage schedule for an occupation; the occupation is taken from the URL path. Money is sent as integer cents; periods may be created inline via periods_attributes.
1791
+ * Create a wage schedule for an occupation; the occupation is taken from the URL path. Money is sent as integer cents; periods may be created inline via periods_attributes. Omitting name, wage_unit, journeyworker_wage_unit, or period_unit answers 400. A blank name, a unit outside its listed values, a wrong JSON type, or a null for any field but description and journeyworker_fringe_cents answers 422; a null in either of those leaves the field unset.
1784
1792
  */
1785
1793
  export type ApprenticeshipWageScheduleParameters = {
1786
1794
  /**
@@ -1816,7 +1824,7 @@ export type ApprenticeshipWageScheduleParameters = {
1816
1824
  */
1817
1825
  end_wage_cents?: number;
1818
1826
  /**
1819
- * Periods to create, update, or remove alongside the schedule; omit a period's id to add one, include its id to update it, or send its id with _destroy true to remove it; optional.
1827
+ * Periods to create, update, or remove alongside the schedule, as a list of row objects; omit a period's id to add one, include its id to update it, or send its id with _destroy true to remove it; optional. In a row, an unknown key, a wrong JSON type, a negative number, or a null for any field but min_minutes, max_minutes, num_competencies, description, fringe_percent, and fringe_cents answers 422 at that field; a null in one of those leaves it unset, but a period with none of min_minutes, max_minutes, or num_competencies answers 422.
1820
1828
  */
1821
1829
  periods_attributes?: Array<{
1822
1830
  /**
@@ -1826,7 +1834,7 @@ export type ApprenticeshipWageScheduleParameters = {
1826
1834
  /**
1827
1835
  * 0-indexed position of this period in the progression. Required.
1828
1836
  */
1829
- period_number: number;
1837
+ period_number?: number;
1830
1838
  /**
1831
1839
  * Duration of this period, in on-the-job minutes spent within it — not a cumulative threshold; optional, but at least one of min_minutes, max_minutes, or num_competencies must be set; null to clear.
1832
1840
  */
@@ -1846,11 +1854,11 @@ export type ApprenticeshipWageScheduleParameters = {
1846
1854
  /**
1847
1855
  * Percentage of the journeyworker wage paid during this period (e.g. 75 for 75%). Required.
1848
1856
  */
1849
- wage_percent: number;
1857
+ wage_percent?: number;
1850
1858
  /**
1851
1859
  * Wage rate for this period, in cents; denominated in the parent schedule's wage_unit. Required.
1852
1860
  */
1853
- wage_cents: number;
1861
+ wage_cents?: number;
1854
1862
  /**
1855
1863
  * Apprentice fringe for this period, as a percentage of the fringe on the wage determination the apprentice charges (e.g. 70 for 70%); optional, omit or send null when the period does not list fringe as a percentage. A period lists fringe one way at most, so sending both fringe_percent and fringe_cents non-null is rejected with a 422.
1856
1864
  */
@@ -1866,7 +1874,7 @@ export type ApprenticeshipWageScheduleParameters = {
1866
1874
  }>;
1867
1875
  };
1868
1876
  /**
1869
- * Update a wage schedule for an occupation. Send only the fields to change; money is sent as integer cents and periods may be created, updated, or removed inline via periods_attributes.
1877
+ * Update a wage schedule for an occupation. Send only the fields to change; money is sent as integer cents and periods may be created, updated, or removed inline via periods_attributes. A blank name, a unit outside its listed values, a wrong JSON type, or a null for any field but description and journeyworker_fringe_cents answers 422; a null in either of those clears the field.
1870
1878
  */
1871
1879
  export type ApprenticeshipWageScheduleUpdateParameters = {
1872
1880
  /**
@@ -1902,17 +1910,9 @@ export type ApprenticeshipWageScheduleUpdateParameters = {
1902
1910
  */
1903
1911
  end_wage_cents?: number;
1904
1912
  /**
1905
- * Periods to create, update, or remove alongside the schedule; omit a period's id to add one, include its id to update it, or send its id with _destroy true to remove it.
1913
+ * Periods to create, update, or remove alongside the schedule, as a list of row objects; omit a period's id to add one, include its id to update it, or send its id with _destroy true to remove it; omit the list to leave every period unchanged. In a row, an unknown key, a wrong JSON type, a negative number, or a null for any field but min_minutes, max_minutes, num_competencies, description, fringe_percent, and fringe_cents answers 422 at that field; a null in one of those clears it, but a period left with none of min_minutes, max_minutes, or num_competencies answers 422.
1906
1914
  */
1907
- periods_attributes?: Array<(unknown | {
1908
- min_minutes: number;
1909
- } | {
1910
- max_minutes: number;
1911
- } | {
1912
- num_competencies: number;
1913
- } | {
1914
- _destroy: true;
1915
- }) & {
1915
+ periods_attributes?: Array<{
1916
1916
  /**
1917
1917
  * Unique identifier.
1918
1918
  */
@@ -1922,15 +1922,15 @@ export type ApprenticeshipWageScheduleUpdateParameters = {
1922
1922
  */
1923
1923
  period_number?: number;
1924
1924
  /**
1925
- * Duration of this period, in on-the-job minutes spent within it — not a cumulative threshold; omit to leave it unchanged, or send null to clear. A newly added period must set at least one of min_minutes, max_minutes, or num_competencies.
1925
+ * Duration of this period, in on-the-job minutes spent within it — not a cumulative threshold; omit to leave it unchanged, or send null to clear. Every period must keep at least one of min_minutes, max_minutes, or num_competencies; a write that leaves all three null answers 422.
1926
1926
  */
1927
1927
  min_minutes?: number | null;
1928
1928
  /**
1929
- * Upper bound on this period's duration, in minutes; informational only, not used to compute advancement; omit to leave it unchanged, or send null to clear. A newly added period must set at least one of min_minutes, max_minutes, or num_competencies.
1929
+ * Upper bound on this period's duration, in minutes; informational only, not used to compute advancement; omit to leave it unchanged, or send null to clear. Every period must keep at least one of min_minutes, max_minutes, or num_competencies; a write that leaves all three null answers 422.
1930
1930
  */
1931
1931
  max_minutes?: number | null;
1932
1932
  /**
1933
- * Number of competencies required to complete this period; omit to leave it unchanged, or send null to clear. A newly added period must set at least one of min_minutes, max_minutes, or num_competencies.
1933
+ * Number of competencies required to complete this period; omit to leave it unchanged, or send null to clear. Every period must keep at least one of min_minutes, max_minutes, or num_competencies; a write that leaves all three null answers 422.
1934
1934
  */
1935
1935
  num_competencies?: number | null;
1936
1936
  /**
@@ -2545,6 +2545,10 @@ export type TimecodeHistoryVersionObject = {
2545
2545
  * Request body for creating or updating a timecode; only `name` is required. On create, omitted fields take their model/DB defaults (noted per field). On update the request applies a bitemporal correction, so omitted fields keep the current version's values rather than reverting to defaults.
2546
2546
  */
2547
2547
  export type TimecodeParameters = {
2548
+ /**
2549
+ * When the new timecode becomes effective. Defaults to the time of the request. Accepted on create only.
2550
+ */
2551
+ effective_date?: string;
2548
2552
  /**
2549
2553
  * Human-readable name of the timecode. Required; must be unique within the company.
2550
2554
  */
@@ -2605,10 +2609,6 @@ export type TimecodeParameters = {
2605
2609
  * Where the timecode may be applied: none, job, non_job, or job_with_timecode. Defaults to none on create.
2606
2610
  */
2607
2611
  restricted_to?: 'none' | 'job' | 'non_job' | 'job_with_timecode';
2608
- /**
2609
- * When the new timecode becomes effective. Defaults to the time of the request. Accepted on create only.
2610
- */
2611
- effective_date?: string;
2612
2612
  };
2613
2613
  /**
2614
2614
  * Request body for correcting a timecode over a valid-time span. Send only the fields to change; omitted fields retain their current values. `effective_from` defaults to the addressed version's start, and `effective_to` is optional.
@@ -2702,7 +2702,7 @@ export type TimecodeScheduledTerminationParameters = {
2702
2702
  effective_date: string;
2703
2703
  };
2704
2704
  /**
2705
- * Request body for scheduling a future change to a timecode: an effective_date paired with the attribute values to apply from that date. `effective_date` and `name` are required; omitted attributes inherit the current version's values.
2705
+ * Request body for scheduling a future change to a timecode: an effective_date paired with the attribute values to apply from that date. Only `effective_date` is required; omitted attributes inherit the current version's values.
2706
2706
  */
2707
2707
  export type TimecodeScheduledChangeParameters = {
2708
2708
  /**
@@ -2710,9 +2710,9 @@ export type TimecodeScheduledChangeParameters = {
2710
2710
  */
2711
2711
  effective_date: string;
2712
2712
  /**
2713
- * Timecode name to apply from the effective date. Required.
2713
+ * Timecode name to apply from the effective date; omit it to keep the current name.
2714
2714
  */
2715
- name: string;
2715
+ name?: string;
2716
2716
  /**
2717
2717
  * Free-text description to apply; null clears it.
2718
2718
  */
@@ -2844,10 +2844,6 @@ export type AssetsProductResponseObject = {
2844
2844
  * Create a catalog product. `type` (serial or bulk) is required and immutable. `attribute_values` upserts the product's category-attribute values.
2845
2845
  */
2846
2846
  export type AssetsProductParameters = {
2847
- /**
2848
- * Product kind, set on create and immutable: serial (individually tracked) or bulk (quantity-counted).
2849
- */
2850
- type: 'serial' | 'bulk';
2851
2847
  /**
2852
2848
  * Human-readable product name.
2853
2849
  */
@@ -2857,9 +2853,13 @@ export type AssetsProductParameters = {
2857
2853
  */
2858
2854
  description?: string | null;
2859
2855
  /**
2860
- * ID of the category classifying this product; null when uncategorized.
2856
+ * Manufacturer or brand; required when model is given. Null when not set.
2861
2857
  */
2862
- assets_category_id?: string | null;
2858
+ make?: string | null;
2859
+ /**
2860
+ * Model name or number; unique per manufacturer within the company. Null when not set.
2861
+ */
2862
+ model?: string | null;
2863
2863
  /**
2864
2864
  * Universal Product Code; unique within the company. Null when not set.
2865
2865
  */
@@ -2872,24 +2872,20 @@ export type AssetsProductParameters = {
2872
2872
  * Default low-stock reorder threshold for this product's items, applied across sites unless a site overrides it. Null when not set.
2873
2873
  */
2874
2874
  default_minimum_quantity?: number | null;
2875
- /**
2876
- * Manufacturer or brand; required when model is given. Null when not set.
2877
- */
2878
- make?: string | null;
2879
- /**
2880
- * Model name or number; unique per manufacturer within the company. Null when not set.
2881
- */
2882
- model?: string | null;
2883
2875
  /**
2884
2876
  * Unit of measure for counting a bulk product's inventory: one of each, pair, or pack. A serial product is always counted each.
2885
2877
  */
2886
2878
  counted_by?: 'each' | 'pair' | 'pack';
2879
+ /**
2880
+ * ID of the category classifying this product; null when uncategorized.
2881
+ */
2882
+ assets_category_id?: string | null;
2887
2883
  /**
2888
2884
  * Optional. Flag the product as a container whose items can hold other items (a toolbox or gang box). Only serialized products may be containers.
2889
2885
  */
2890
2886
  container?: boolean;
2891
2887
  /**
2892
- * Upserts the values of this product's category attributes, one entry per attribute. Send a blank value and null assets_attribute_option_id to clear one.
2888
+ * Upserts the values of this product's category attributes, as a list of row objects, one per attribute. Each row requires its assets_attribute_id; a row without one answers 400, and a blank one 422. Send a blank value and null assets_attribute_option_id to clear one. A value is a string or null; any other JSON type, or an unknown row field, answers 422 at that row.
2893
2889
  */
2894
2890
  attribute_values?: Array<{
2895
2891
  /**
@@ -2906,9 +2902,26 @@ export type AssetsProductParameters = {
2906
2902
  assets_attribute_option_id?: string | null;
2907
2903
  }>;
2908
2904
  /**
2909
- * Image attachments. Send file with a signed_id to add one; include id with _destroy to remove an existing one.
2905
+ * Image attachments, as a list of row objects. Send file with a signed_id to add one; include id with _destroy to remove an existing one. An unknown or wrongly typed row field answers 422 at that row.
2906
+ */
2907
+ images_attributes?: Array<{
2908
+ /**
2909
+ * ID of an existing attachment to remove; omit to add a new one.
2910
+ */
2911
+ id?: string;
2912
+ /**
2913
+ * A signed_id from POST /api/v1/direct_uploads registered for `assets.products`; a signed_id issued for any other resource answers 422.
2914
+ */
2915
+ file?: string;
2916
+ /**
2917
+ * Set true to remove the attachment named by id.
2918
+ */
2919
+ _destroy?: boolean;
2920
+ }>;
2921
+ /**
2922
+ * Product kind, set on create and immutable: serial (individually tracked) or bulk (quantity-counted).
2910
2923
  */
2911
- images_attributes?: Array<AssetsAttachmentParameters>;
2924
+ type: 'serial' | 'bulk';
2912
2925
  /**
2913
2926
  * ID of the user this write is performed on behalf of, recorded for auditing. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
2914
2927
  */
@@ -2927,9 +2940,13 @@ export type AssetsProductUpdateParameters = {
2927
2940
  */
2928
2941
  description?: string | null;
2929
2942
  /**
2930
- * ID of the category classifying this product; null when uncategorized.
2943
+ * Manufacturer or brand; required when model is given. Null when not set.
2931
2944
  */
2932
- assets_category_id?: string | null;
2945
+ make?: string | null;
2946
+ /**
2947
+ * Model name or number; unique per manufacturer within the company. Null when not set.
2948
+ */
2949
+ model?: string | null;
2933
2950
  /**
2934
2951
  * Universal Product Code; unique within the company. Null when not set.
2935
2952
  */
@@ -2942,24 +2959,20 @@ export type AssetsProductUpdateParameters = {
2942
2959
  * Default low-stock reorder threshold for this product's items, applied across sites unless a site overrides it. Null when not set.
2943
2960
  */
2944
2961
  default_minimum_quantity?: number | null;
2945
- /**
2946
- * Manufacturer or brand; required when model is given. Null when not set.
2947
- */
2948
- make?: string | null;
2949
- /**
2950
- * Model name or number; unique per manufacturer within the company. Null when not set.
2951
- */
2952
- model?: string | null;
2953
2962
  /**
2954
2963
  * Unit of measure for counting a bulk product's inventory: one of each, pair, or pack. A serial product is always counted each.
2955
2964
  */
2956
2965
  counted_by?: 'each' | 'pair' | 'pack';
2966
+ /**
2967
+ * ID of the category classifying this product; null when uncategorized.
2968
+ */
2969
+ assets_category_id?: string | null;
2957
2970
  /**
2958
2971
  * Optional. Flag the product as a container whose items can hold other items (a toolbox or gang box). Only serialized products may be containers.
2959
2972
  */
2960
2973
  container?: boolean;
2961
2974
  /**
2962
- * Upserts the values of this product's category attributes, one entry per attribute. Send a blank value and null assets_attribute_option_id to clear one.
2975
+ * Upserts the values of this product's category attributes, as a list of row objects, one per attribute. Each row requires its assets_attribute_id; a row without one answers 400, and a blank one 422. Send a blank value and null assets_attribute_option_id to clear one. A value is a string or null; any other JSON type, or an unknown row field, answers 422 at that row.
2963
2976
  */
2964
2977
  attribute_values?: Array<{
2965
2978
  /**
@@ -2976,9 +2989,22 @@ export type AssetsProductUpdateParameters = {
2976
2989
  assets_attribute_option_id?: string | null;
2977
2990
  }>;
2978
2991
  /**
2979
- * Image attachments. Send file with a signed_id to add one; include id with _destroy to remove an existing one.
2992
+ * Image attachments, as a list of row objects. Send file with a signed_id to add one; include id with _destroy to remove an existing one. An unknown or wrongly typed row field answers 422 at that row.
2980
2993
  */
2981
- images_attributes?: Array<AssetsAttachmentParameters>;
2994
+ images_attributes?: Array<{
2995
+ /**
2996
+ * ID of an existing attachment to remove; omit to add a new one.
2997
+ */
2998
+ id?: string;
2999
+ /**
3000
+ * A signed_id from POST /api/v1/direct_uploads registered for `assets.products`; a signed_id issued for any other resource answers 422.
3001
+ */
3002
+ file?: string;
3003
+ /**
3004
+ * Set true to remove the attachment named by id.
3005
+ */
3006
+ _destroy?: boolean;
3007
+ }>;
2982
3008
  };
2983
3009
  /**
2984
3010
  * A named daily allowance (meals, lodging, travel, and the like) that a company can attach to time.
@@ -3179,7 +3205,7 @@ export type AssetsAttributeResponseObject = {
3179
3205
  updated_at: string;
3180
3206
  };
3181
3207
  /**
3182
- * Create or update an attribute definition. Options apply only to a select attribute and are ignored otherwise; data_type cannot be changed once any value has been filled.
3208
+ * Create an attribute definition. Omitting name or data_type answers 400, and a blank or null name or any wrong-typed value answers 422. Options apply only to a select attribute and are ignored otherwise.
3183
3209
  */
3184
3210
  export type AssetsAttributeParameters = {
3185
3211
  /**
@@ -3191,7 +3217,7 @@ export type AssetsAttributeParameters = {
3191
3217
  */
3192
3218
  data_type: 'text' | 'number' | 'date' | 'boolean' | 'select';
3193
3219
  /**
3194
- * Choices for a select attribute, ignored for other data types. Include id to update an existing option, omit id to add one, or set _destroy to remove one.
3220
+ * Choices for a select attribute, ignored for other data types. Include id to update an existing option, omit id to add one, or set _destroy to remove one. An unknown or wrongly typed row field answers 422 at that row.
3195
3221
  */
3196
3222
  options?: Array<{
3197
3223
  /**
@@ -3213,7 +3239,7 @@ export type AssetsAttributeParameters = {
3213
3239
  }>;
3214
3240
  };
3215
3241
  /**
3216
- * Update an attribute definition. All fields are optional — send only what changes. Options apply only to a select attribute and are ignored otherwise; data_type cannot be changed once any value has been filled.
3242
+ * Update an attribute definition. All fields are optional — send only what changes. A blank or null name or any wrong-typed value answers 422. Options apply only to a select attribute and are ignored otherwise; data_type cannot be changed once any value has been filled.
3217
3243
  */
3218
3244
  export type AssetsAttributeUpdateParameters = {
3219
3245
  /**
@@ -3225,7 +3251,7 @@ export type AssetsAttributeUpdateParameters = {
3225
3251
  */
3226
3252
  data_type?: 'text' | 'number' | 'date' | 'boolean' | 'select';
3227
3253
  /**
3228
- * Choices for a select attribute, ignored for other data types. Include id to update an existing option, omit id to add one, or set _destroy to remove one.
3254
+ * Choices for a select attribute, ignored for other data types. Include id to update an existing option, omit id to add one, or set _destroy to remove one. An unknown or wrongly typed row field answers 422 at that row.
3229
3255
  */
3230
3256
  options?: Array<{
3231
3257
  /**
@@ -3305,7 +3331,7 @@ export type AssetsCategoryResponseObject = {
3305
3331
  updated_at: string;
3306
3332
  };
3307
3333
  /**
3308
- * Create or update a category; only name is required. `category_attributes` sets this category's direct attribute assignments.
3334
+ * Create a category. Only name is required; omitting it answers 400, and a blank or null name or any wrong-typed value answers 422. A null or blank parent_id files the category at the root. `category_attributes` sets this category's direct attribute assignments.
3309
3335
  */
3310
3336
  export type AssetsCategoryParameters = {
3311
3337
  /**
@@ -3317,7 +3343,7 @@ export type AssetsCategoryParameters = {
3317
3343
  */
3318
3344
  parent_id?: string | null;
3319
3345
  /**
3320
- * Attribute assignments for this category. Include id to update an existing assignment, omit id to add one, or set _destroy to remove one.
3346
+ * Attribute assignments for this category, as a list of row objects. Include id to update an existing assignment, omit id to add one, or set _destroy to remove one. An unknown or wrongly typed row field answers 422 at that row.
3321
3347
  */
3322
3348
  category_attributes?: Array<{
3323
3349
  /**
@@ -3327,11 +3353,11 @@ export type AssetsCategoryParameters = {
3327
3353
  /**
3328
3354
  * ID of the attribute definition.
3329
3355
  */
3330
- assets_attribute_id: string;
3356
+ assets_attribute_id?: string;
3331
3357
  /**
3332
3358
  * Where this attribute is filled in for the category: product (on the catalog product) or item (on each individual item).
3333
3359
  */
3334
- fillable_on: 'product' | 'item';
3360
+ fillable_on?: 'product' | 'item';
3335
3361
  /**
3336
3362
  * Whether a value for this attribute must be provided.
3337
3363
  */
@@ -3347,7 +3373,7 @@ export type AssetsCategoryParameters = {
3347
3373
  }>;
3348
3374
  };
3349
3375
  /**
3350
- * Update a category. All fields are optional — send only what changes. `category_attributes` sets this category's direct attribute assignments.
3376
+ * Update a category. All fields are optional — send only what changes. A blank or null name or any wrong-typed value answers 422, and a null or blank parent_id moves the category to the root. `category_attributes` sets this category's direct attribute assignments.
3351
3377
  */
3352
3378
  export type AssetsCategoryUpdateParameters = {
3353
3379
  /**
@@ -3359,7 +3385,7 @@ export type AssetsCategoryUpdateParameters = {
3359
3385
  */
3360
3386
  parent_id?: string | null;
3361
3387
  /**
3362
- * Attribute assignments for this category. Include id to update an existing assignment, omit id to add one, or set _destroy to remove one.
3388
+ * Attribute assignments for this category, as a list of row objects. Include id to update an existing assignment, omit id to add one, or set _destroy to remove one. An unknown or wrongly typed row field answers 422 at that row.
3363
3389
  */
3364
3390
  category_attributes?: Array<{
3365
3391
  /**
@@ -3369,11 +3395,11 @@ export type AssetsCategoryUpdateParameters = {
3369
3395
  /**
3370
3396
  * ID of the attribute definition.
3371
3397
  */
3372
- assets_attribute_id: string;
3398
+ assets_attribute_id?: string;
3373
3399
  /**
3374
3400
  * Where this attribute is filled in for the category: product (on the catalog product) or item (on each individual item).
3375
3401
  */
3376
- fillable_on: 'product' | 'item';
3402
+ fillable_on?: 'product' | 'item';
3377
3403
  /**
3378
3404
  * Whether a value for this attribute must be provided.
3379
3405
  */
@@ -5198,7 +5224,7 @@ export type UserResponseObject = {
5198
5224
  } | null;
5199
5225
  };
5200
5226
  /**
5201
- * Request body for updating a worker's profile. Limited to person-level identity fields; employment, roles, and compliance are managed through onboarding (create) and the user-company endpoints.
5227
+ * Request body for updating a worker's profile. Limited to person-level identity fields; employment, roles, and compliance are managed through onboarding (create) and the user-company endpoints. Include only the fields to change. A null or blank legal name, or any wrong-typed value, answers 422.
5202
5228
  */
5203
5229
  export type UserUpdateParameters = {
5204
5230
  /**
@@ -5238,7 +5264,7 @@ export type UserUpdateParameters = {
5238
5264
  */
5239
5265
  state?: string | null;
5240
5266
  /**
5241
- * Date of birth (YYYY-MM-DD).
5267
+ * Date of birth as a YYYY-MM-DD calendar date; send null to clear it.
5242
5268
  */
5243
5269
  birth_date?: string | null;
5244
5270
  /**
@@ -5404,9 +5430,9 @@ export type UserParameters = ({
5404
5430
  */
5405
5431
  hire_date?: string;
5406
5432
  /**
5407
- * Ids of the groups to add the worker to at your company.
5433
+ * Unique nonblank IDs of the groups at your company to add the worker to. Omit or send an empty array to add the worker to none. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before the worker is created.
5408
5434
  */
5409
- group_ids?: Array<string> | null;
5435
+ group_ids?: Array<string>;
5410
5436
  /**
5411
5437
  * Values for the employment's custom fields, as a list of configurations and their values. Each configuration may appear only once. Every visible configuration gets a stored value; one left out of the list, or an omitted or empty list, stores null.
5412
5438
  */
@@ -5679,23 +5705,27 @@ export type ManagerTimeEntryApprovalParameters = {
5679
5705
  approver_user_id: string;
5680
5706
  };
5681
5707
  /**
5682
- * The time-entry body fields shared by the create and update bodies; each of those declares its own requiredness.
5708
+ * Request body for creating a time entry. timekeeping_time_card_id, start_time, and end_time are required, and omitting one answers 400.
5683
5709
  */
5684
- export type TimeEntryParameters = {
5710
+ export type TimeEntryCreateParameters = {
5685
5711
  /**
5686
- * these will be rounded to the nearest second
5712
+ * Id of the time card to attach the entry to; user_id is derived server-side from it. Required and set at creation. Null or a value that is not a nonblank string answers 422; a card outside the key's scope answers 404.
5687
5713
  */
5688
- start_time?: string;
5714
+ timekeeping_time_card_id: string;
5689
5715
  /**
5690
- * these will be rounded to the nearest second
5716
+ * Start of the work as a timestamp string, rounded to the nearest second. 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.
5691
5717
  */
5692
- end_time?: string;
5718
+ start_time: string;
5719
+ /**
5720
+ * End of the work as a timestamp string, rounded to the nearest second. 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.
5721
+ */
5722
+ end_time: string;
5693
5723
  /**
5694
- * Id of the job to work against; the worker must have a Position covering that job at start_time. Send null (or omit) for no job.
5724
+ * Id of the job to work against; the worker must have a Position covering that job at start_time. Send null for no job; a blank string answers 422.
5695
5725
  */
5696
5726
  job_id?: string | null;
5697
5727
  /**
5698
- * Id of the timecode to classify the entry; must be one of the company's default timecodes. Send null for none.
5728
+ * Id of the timecode to classify the entry; must be one of the company's default timecodes. Send null for none; a blank string answers 422.
5699
5729
  */
5700
5730
  timekeeping_timecode_id?: string | null;
5701
5731
  /**
@@ -5711,31 +5741,54 @@ export type TimeEntryParameters = {
5711
5741
  */
5712
5742
  hourly_rate_cents?: string | null;
5713
5743
  /**
5714
- * Feature ids to allocate to this time entry. Only features your company can view are accepted.
5744
+ * Complete desired set of unique nonblank IDs of the features to allocate to this time entry. Only features your company can view are accepted. Omit to keep the allocations (none on create); send an empty array to clear them. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anything is written.
5715
5745
  */
5716
- feature_ids?: Array<string> | null;
5746
+ feature_ids?: Array<string>;
5747
+ /**
5748
+ * Send true to record an explicit "no feature" answer when the job requires a feature allocation and you're not supplying one; false or omission records none. Null or any non-boolean value answers 422.
5749
+ */
5750
+ feature_allocation_acknowledged?: boolean;
5717
5751
  };
5718
5752
  /**
5719
- * Request body for creating a time entry — the time_entry_parameters fields plus the time card and the explicit "no feature" acknowledgement. timekeeping_time_card_id, start_time, and end_time are required.
5753
+ * Request body for updating a time entry. Every field is optional, and an omitted field keeps its value.
5720
5754
  */
5721
- export type TimeEntryCreateParameters = TimeEntryParameters & {
5755
+ export type TimeEntryUpdateParameters = {
5722
5756
  /**
5723
- * Id of the time card to attach the entry to; user_id is derived server-side from it. Set at creation.
5757
+ * Start of the work as a timestamp string, rounded to the nearest second. 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.
5724
5758
  */
5725
- timekeeping_time_card_id: string;
5759
+ start_time?: string;
5726
5760
  /**
5727
- * Set true to record an explicit "no feature" answer when the job requires a feature allocation and you're not supplying one.
5761
+ * End of the work as a timestamp string, rounded to the nearest second. 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.
5728
5762
  */
5729
- feature_allocation_acknowledged?: boolean | null;
5730
- };
5731
- /**
5732
- * Request body for updating a time entry — the time_entry_parameters fields, every one optional, plus the acknowledgement that clears an apprenticeship allocation conflict.
5733
- */
5734
- export type TimeEntryUpdateParameters = TimeEntryParameters & {
5763
+ end_time?: string;
5764
+ /**
5765
+ * Id of the job to work against; the worker must have a Position covering that job at start_time. Send null for no job; a blank string answers 422.
5766
+ */
5767
+ job_id?: string | null;
5768
+ /**
5769
+ * Id of the timecode to classify the entry; must be one of the company's default timecodes. Send null for none; a blank string answers 422.
5770
+ */
5771
+ timekeeping_timecode_id?: string | null;
5772
+ /**
5773
+ * Two-letter US state code where the work occurred; null to clear.
5774
+ */
5775
+ state?: string | null;
5776
+ /**
5777
+ * Free-text note on the entry (maximum 10,000 characters); null to clear.
5778
+ */
5779
+ description?: string | null;
5780
+ /**
5781
+ * Base hourly rate in cents, sent as a string to preserve precision; omit it to let the system derive the rate from the position/user default, and null also derives the default. Admin only on user-scoped keys.
5782
+ */
5783
+ hourly_rate_cents?: string | null;
5784
+ /**
5785
+ * Complete desired set of unique nonblank IDs of the features to allocate to this time entry. Only features your company can view are accepted. Omit to keep the allocations (none on create); send an empty array to clear them. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anything is written.
5786
+ */
5787
+ feature_ids?: Array<string>;
5735
5788
  /**
5736
- * Set true to accept dropping the time card's apprenticeship hour allocations when the new times invalidate them; without it such an update returns 422.
5789
+ * Send true to accept dropping the time card's apprenticeship hour allocations when the new times invalidate them; without it such an update returns 422. Null or any non-boolean value answers 422.
5737
5790
  */
5738
- confirm_allocation_conflict?: boolean | null;
5791
+ confirm_allocation_conflict?: boolean;
5739
5792
  };
5740
5793
  /**
5741
5794
  * A form definition — a SurveyJS form template built and versioned in the web app's form builder. The same object the list door serializes. Read-only.
@@ -5900,16 +5953,19 @@ export type FormSubmissionResponseObject = {
5900
5953
  updated_at: string;
5901
5954
  };
5902
5955
  /**
5903
- * 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.
5956
+ * 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.
5904
5957
  */
5905
5958
  export type UserCompanyParameters = {
5906
- type?: UserCompanyType;
5959
+ /**
5960
+ * Whether the worker is an `EMPLOYEE` (W-2) or a `CONTRACTOR` (1099), in upper case. Null is not accepted.
5961
+ */
5962
+ type?: 'EMPLOYEE' | 'CONTRACTOR';
5907
5963
  /**
5908
5964
  * Job title at your company.
5909
5965
  */
5910
5966
  title?: string | null;
5911
5967
  /**
5912
- * Id of the worker's manager at your company (another user).
5968
+ * Id of the worker's manager at your company (another user). Send null to clear it; blank text answers 422.
5913
5969
  */
5914
5970
  manager_user_id?: string | null;
5915
5971
  /**
@@ -5917,13 +5973,13 @@ export type UserCompanyParameters = {
5917
5973
  */
5918
5974
  payroll_id?: string | null;
5919
5975
  /**
5920
- * Employment start date (YYYY-MM-DD). Changing it moves the start of the employment history.
5976
+ * Whether the worker is enrolled in Time and Attendance (time tracking). Null is not accepted.
5921
5977
  */
5922
- hire_date?: string | null;
5978
+ enrolled_in_t_and_a?: boolean;
5923
5979
  /**
5924
- * Whether the worker is enrolled in Time and Attendance (time tracking).
5980
+ * Employment start date (YYYY-MM-DD). Changing it moves the start of the employment history. Null or blank text leaves it where it is.
5925
5981
  */
5926
- enrolled_in_t_and_a?: boolean;
5982
+ hire_date?: string | null;
5927
5983
  /**
5928
5984
  * Custom-field values to change, as a list of configurations and their replacement values. Each configuration may appear only once. Only the listed configurations change; every other configuration keeps its stored value, and an omitted or empty list changes none.
5929
5985
  */
@@ -5939,52 +5995,55 @@ export type UserCompanyParameters = {
5939
5995
  }>;
5940
5996
  };
5941
5997
  /**
5942
- * Request body for adding a worker to your company, creating their employment record and its custom-field values. hire_date is required and sets when employment begins; the remaining fields seed the initial title, pay, benefits, and accruals. Returns the worker with the new employment flattened onto it.
5998
+ * Request body for adding a worker to your company, creating their employment record and its custom-field values. hire_date is required and sets when employment begins; the remaining fields seed the initial title, pay, benefits, and accruals. Returns the worker with the new employment flattened onto it. Omitting hire_date answers 400. 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.
5943
5999
  */
5944
6000
  export type UserCompanyCreateParameters = {
5945
6001
  /**
5946
- * Employment start date (YYYY-MM-DD). Sets when employment begins. Required.
6002
+ * Employment start date (YYYY-MM-DD). Sets when employment begins. Required; null, blank text, or any other form answers 422.
5947
6003
  */
5948
6004
  hire_date: string;
5949
- type?: UserCompanyType;
6005
+ /**
6006
+ * Whether the worker is an `EMPLOYEE` (W-2) or a `CONTRACTOR` (1099), in upper case. Omit to use `EMPLOYEE`; null is not accepted.
6007
+ */
6008
+ type?: 'EMPLOYEE' | 'CONTRACTOR';
5950
6009
  /**
5951
6010
  * Job title at your company.
5952
6011
  */
5953
6012
  title?: string | null;
5954
6013
  /**
5955
- * Id of the worker's manager at your company (another user).
6014
+ * Id of the worker's manager at your company (another user). Omit or send null for no manager; blank text answers 422.
5956
6015
  */
5957
6016
  manager_user_id?: string | null;
5958
6017
  /**
5959
- * How the worker is paid: hourly or salary.
6018
+ * The worker's identifier in your payroll system of record.
5960
6019
  */
5961
- compensation_type?: 'hourly' | 'salary';
6020
+ payroll_id?: string | null;
5962
6021
  /**
5963
- * Whether to enroll the worker in Time and Attendance (time tracking).
6022
+ * Whether to enroll the worker in Time and Attendance (time tracking). Null is not accepted.
5964
6023
  */
5965
6024
  enrolled_in_t_and_a?: boolean;
5966
6025
  /**
5967
- * The worker's identifier in your payroll system of record.
6026
+ * How the worker is paid: `hourly` or `salary`, in lower case. Null is not accepted.
5968
6027
  */
5969
- payroll_id?: string | null;
6028
+ compensation_type?: 'hourly' | 'salary';
5970
6029
  /**
5971
- * Base pay rate as a decimal string (for example "32.50"), in the company's currency.
6030
+ * Base pay rate as a decimal string (for example "32.50"), in the company's currency. A JSON number answers 422; send the amount as a string.
5972
6031
  */
5973
6032
  hourly_rate?: string | null;
5974
6033
  /**
5975
- * Whether the worker is eligible for overtime pay.
6034
+ * Whether the worker is eligible for overtime pay. Omit to use true; null is not accepted.
5976
6035
  */
5977
6036
  overtime_eligible?: boolean;
5978
6037
  /**
5979
- * Annual training-fund contribution as a decimal string. Used in prevailing-wage fringe calculations.
6038
+ * Annual training-fund contribution as a decimal string. Used in prevailing-wage fringe calculations. A JSON number answers 422.
5980
6039
  */
5981
6040
  training_annual_amount?: string | null;
5982
6041
  /**
5983
- * Employer-paid annual combined health benefit as a decimal string.
6042
+ * Employer-paid annual combined health benefit as a decimal string. A JSON number answers 422.
5984
6043
  */
5985
6044
  employer_combined_health_amount?: string | null;
5986
6045
  /**
5987
- * Employer-paid annual combined savings and retirement benefit as a decimal string.
6046
+ * Employer-paid annual combined savings and retirement benefit as a decimal string. A JSON number answers 422.
5988
6047
  */
5989
6048
  employer_combined_savings?: string | null;
5990
6049
  /**
@@ -6373,7 +6432,7 @@ export type UserGroupResponse = {
6373
6432
  */
6374
6433
  export type UserGroupParameters = {
6375
6434
  /**
6376
- * Required nonempty array of user ID strings to add to the group. Users already in the group are ignored, and the full membership list is returned.
6435
+ * Required nonempty array of unique nonblank IDs of the users to add to the group. Users already in the group are ignored, and the full membership list is returned. Omission answers 400; an empty array, null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anyone is added.
6377
6436
  */
6378
6437
  user_ids: Array<string>;
6379
6438
  };
@@ -6495,6 +6554,47 @@ export type UserCompanyScheduledTerminationParameters = {
6495
6554
  */
6496
6555
  termination_date: string;
6497
6556
  };
6557
+ /**
6558
+ * A pay period — a bounded pay window generated automatically by its pay schedule (PayPeriodConfig).
6559
+ */
6560
+ export type PayPeriodResponseObject = {
6561
+ /**
6562
+ * Unique identifier.
6563
+ */
6564
+ id: string;
6565
+ /**
6566
+ * ID of the pay schedule (PayPeriodConfig) that owns this pay period, stable across all of its versions.
6567
+ */
6568
+ timekeeping_pay_period_config_id: string;
6569
+ /**
6570
+ * Calendar date (YYYY-MM-DD) that workers are paid for this period.
6571
+ */
6572
+ pay_date: string;
6573
+ /**
6574
+ * Start of the pay-period window (ISO 8601).
6575
+ */
6576
+ start_time: string;
6577
+ /**
6578
+ * End of the pay-period window (ISO 8601).
6579
+ */
6580
+ end_time: string;
6581
+ /**
6582
+ * When payroll must be run for this period (ISO 8601).
6583
+ */
6584
+ pay_run_deadline: string;
6585
+ /**
6586
+ * When time-card approvals are due for this period (ISO 8601).
6587
+ */
6588
+ approvals_deadline: string;
6589
+ /**
6590
+ * When the record was created (ISO 8601).
6591
+ */
6592
+ created_at: string;
6593
+ /**
6594
+ * When the record was last updated (ISO 8601).
6595
+ */
6596
+ updated_at: string;
6597
+ };
6498
6598
  /**
6499
6599
  * A page of pay periods. A pay period is a bounded pay window generated automatically by its pay schedule (PayPeriodConfig), so this API is read-only.
6500
6600
  */
@@ -6504,44 +6604,7 @@ export type PayPeriodsResponseObject = {
6504
6604
  /**
6505
6605
  * The page of pay periods.
6506
6606
  */
6507
- data: Array<{
6508
- /**
6509
- * Unique identifier.
6510
- */
6511
- id: string;
6512
- /**
6513
- * ID of the pay schedule (PayPeriodConfig) that owns this pay period, stable across all of its versions.
6514
- */
6515
- timekeeping_pay_period_config_id: string;
6516
- /**
6517
- * Calendar date (YYYY-MM-DD) that workers are paid for this period.
6518
- */
6519
- pay_date: string;
6520
- /**
6521
- * Start of the pay-period window (ISO 8601).
6522
- */
6523
- start_time: string;
6524
- /**
6525
- * End of the pay-period window (ISO 8601).
6526
- */
6527
- end_time: string;
6528
- /**
6529
- * When payroll must be run for this period (ISO 8601).
6530
- */
6531
- pay_run_deadline: string;
6532
- /**
6533
- * When time-card approvals are due for this period (ISO 8601).
6534
- */
6535
- approvals_deadline: string;
6536
- /**
6537
- * When the record was created (ISO 8601).
6538
- */
6539
- created_at: string;
6540
- /**
6541
- * When the record was last updated (ISO 8601).
6542
- */
6543
- updated_at: string;
6544
- }>;
6607
+ data: Array<PayPeriodResponseObject>;
6545
6608
  };
6546
6609
  /**
6547
6610
  * One problem found while processing an accepted import, whatever its type.
@@ -8019,7 +8082,7 @@ export type ProjectResponseObject = {
8019
8082
  updated_at: string;
8020
8083
  };
8021
8084
  /**
8022
- * Request body for creating a project. `name` and `created_by_user_id` are required; the creator must be a member of the owning company. The owning company is inferred from the API key and is not part of the body. Undeclared body keys return 400 before any project or relationship is saved.
8085
+ * Request body for creating a project. `name` and `created_by_user_id` are required, and omitting either returns 400; the creator must be a member of the owning company. The owning company is inferred from the API key and is not part of the body. Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any project or relationship is saved.
8023
8086
  */
8024
8087
  export type ProjectParameters = {
8025
8088
  /**
@@ -8027,7 +8090,7 @@ export type ProjectParameters = {
8027
8090
  */
8028
8091
  external_id?: string | null;
8029
8092
  /**
8030
- * Human-readable project name; required, and must be unique within the owning company.
8093
+ * Human-readable project name; required, and must be unique within the owning company. Null, a blank string, or a wrong type answers 422.
8031
8094
  */
8032
8095
  name: string;
8033
8096
  /**
@@ -8035,11 +8098,7 @@ export type ProjectParameters = {
8035
8098
  */
8036
8099
  description?: string | null;
8037
8100
  /**
8038
- * User recorded as the project's creator; must be a member of the owning company. Required on create and immutable thereafter. Send it only on create; every update that includes it returns 400, even when unchanged.
8039
- */
8040
- created_by_user_id: string;
8041
- /**
8042
- * ID of a project visible to the API key's policy. The parent must be owned by this project's owner or list that owner in its participating_company_ids. Send null to make the project a root; the child schedule must fit within the parent's schedule.
8101
+ * ID of a project visible to the API key's policy. The parent must be owned by this project's owner or list that owner in its participating_company_ids. Send null to make the project a root; a blank ID or a wrong type answers 422. The child schedule must fit within the parent's schedule.
8043
8102
  */
8044
8103
  parent_id?: string | null;
8045
8104
  /**
@@ -8047,35 +8106,35 @@ export type ProjectParameters = {
8047
8106
  */
8048
8107
  participating_company_ids?: Array<string>;
8049
8108
  /**
8050
- * Schedule start date as an ISO8601 date (YYYY-MM-DD), or null; requires tz_name to be set.
8109
+ * Schedule start date as an ISO8601 date (YYYY-MM-DD), or null; requires tz_name to be set. Any other string, a timestamp included, answers 422.
8051
8110
  */
8052
8111
  start_date?: string | null;
8053
8112
  /**
8054
- * Schedule end date as an ISO8601 date (YYYY-MM-DD), or null; must be on or after start_date.
8113
+ * Schedule end date as an ISO8601 date (YYYY-MM-DD), or null; must be on or after start_date. Any other string, a timestamp included, answers 422.
8055
8114
  */
8056
8115
  end_date?: string | null;
8057
8116
  /**
8058
- * IANA time zone name. Required when start_date is set.
8117
+ * IANA time zone name, or null. Required when start_date is set. A blank or unlisted name answers 422.
8059
8118
  */
8060
8119
  tz_name?: string | null;
8061
8120
  /**
8062
- * Day of week billing starts: 0 (Sunday) through 6 (Saturday).
8121
+ * Day of week billing starts, as an integer: 0 (Sunday) through 6 (Saturday), or null. Any other value, a numeric string included, answers 422.
8063
8122
  */
8064
8123
  billing_start_day?: number | null;
8065
8124
  /**
8066
- * Federal PWA tracking mode: `all` (prevailing wage + apprenticeship), `pw_only`, `ap_only`, or `none`. Any other value returns 422.
8125
+ * Federal PWA tracking mode: `all` (prevailing wage + apprenticeship), `pw_only`, `ap_only`, or `none`. Null or any other value returns 422.
8067
8126
  */
8068
8127
  federal_pwa_mode?: 'all' | 'pw_only' | 'ap_only' | 'none';
8069
8128
  /**
8070
- * Any value other than `none` requires `region`.
8129
+ * Regional PWA tracking mode, with the same values as `federal_pwa_mode`; null or any other value returns 422. Any value other than `none` requires `region`.
8071
8130
  */
8072
8131
  regional_pwa_mode?: 'all' | 'pw_only' | 'ap_only' | 'none';
8073
8132
  /**
8074
- * US state abbreviation; must be one of the owning company's operating regions.
8133
+ * US state abbreviation, or null; must be one of the owning company's operating regions.
8075
8134
  */
8076
8135
  region?: string | null;
8077
8136
  /**
8078
- * Gates IRA tax-credit checks. Applies only while `federal_pwa_mode` is not `none` — sending `true` or null while federal tracking is off returns 422, and switching to `none` sets it back to `false`.
8137
+ * Gates IRA tax-credit checks. A boolean; null or any other type returns 422. Applies only while `federal_pwa_mode` is not `none` — sending `true` while federal tracking is off returns 422, and switching to `none` sets it back to `false`.
8079
8138
  */
8080
8139
  asset_owner?: boolean;
8081
8140
  /**
@@ -8091,24 +8150,28 @@ export type ProjectParameters = {
8091
8150
  */
8092
8151
  administrator_phone?: string | null;
8093
8152
  /**
8094
- * Decimal string (e.g. "5000.0"). Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8153
+ * Decimal string (e.g. "5000.0"), or null to clear it; a JSON number or any other type returns 422. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8095
8154
  */
8096
- budget?: string;
8155
+ budget?: string | null;
8097
8156
  /**
8098
- * Prevailing-wage lock-in date as an ISO8601 date. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8157
+ * Prevailing-wage lock-in date as an ISO8601 date (YYYY-MM-DD); any other string, a timestamp included, answers 422. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8099
8158
  */
8100
8159
  prevailing_wage_lock_in_date?: string | null;
8101
8160
  /**
8102
- * IRA beginning-of-construction date as an ISO8601 date. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8161
+ * IRA beginning-of-construction date as an ISO8601 date (YYYY-MM-DD); any other string, a timestamp included, answers 422. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8103
8162
  */
8104
8163
  beginning_of_construction_date?: string | null;
8105
8164
  /**
8106
- * IRA placed-in-service date as an ISO8601 date. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8165
+ * IRA placed-in-service date as an ISO8601 date (YYYY-MM-DD); any other string, a timestamp included, answers 422. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8107
8166
  */
8108
8167
  placed_in_service_date?: string | null;
8168
+ /**
8169
+ * User recorded as the project's creator; must be a member of the owning company. Required on create and immutable thereafter. Omission answers 400; null, a blank ID, or a wrong type answers 422. Send it only on create; every update that includes it returns 400, even when unchanged.
8170
+ */
8171
+ created_by_user_id: string;
8109
8172
  };
8110
8173
  /**
8111
- * Request body for updating a project. Every field is optional; omit a field to preserve its current value. The resulting project must still satisfy conditional PWA, regional, and schedule validation rules. `created_by_user_id` is create-only; omit it on PATCH. Every update that includes it returns 400, even when unchanged. Undeclared body keys return 400 before any project or relationship changes.
8174
+ * Request body for updating a project. Every field is optional; omit a field to preserve its current value. The resulting project must still satisfy conditional PWA, regional, and schedule validation rules. `created_by_user_id` is create-only; omit it on PATCH. Every update that includes it returns 400, even when unchanged. Undeclared body keys return 400, and a null for a field that is not nullable or a wrongly typed value returns 422 at its pointer, before any project or relationship changes.
8112
8175
  */
8113
8176
  export type ProjectUpdateParameters = {
8114
8177
  /**
@@ -8116,7 +8179,7 @@ export type ProjectUpdateParameters = {
8116
8179
  */
8117
8180
  external_id?: string | null;
8118
8181
  /**
8119
- * Human-readable project name; omit to preserve the current value. The resulting project name must remain present and unique within the owning company.
8182
+ * Human-readable project name; omit to preserve the current value. Null, a blank string, or a wrong type answers 422, and the name must remain unique within the owning company.
8120
8183
  */
8121
8184
  name?: string;
8122
8185
  /**
@@ -8124,7 +8187,7 @@ export type ProjectUpdateParameters = {
8124
8187
  */
8125
8188
  description?: string | null;
8126
8189
  /**
8127
- * ID of a project visible to the API key's policy. The parent must be owned by this project's owner or list that owner in its participating_company_ids. Send null to make the project a root; the child schedule must fit within the parent's schedule.
8190
+ * ID of a project visible to the API key's policy. The parent must be owned by this project's owner or list that owner in its participating_company_ids. Send null to make the project a root; a blank ID or a wrong type answers 422. The child schedule must fit within the parent's schedule.
8128
8191
  */
8129
8192
  parent_id?: string | null;
8130
8193
  /**
@@ -8132,35 +8195,35 @@ export type ProjectUpdateParameters = {
8132
8195
  */
8133
8196
  participating_company_ids?: Array<string>;
8134
8197
  /**
8135
- * Schedule start date as an ISO8601 date (YYYY-MM-DD), or null; requires tz_name to be set.
8198
+ * Schedule start date as an ISO8601 date (YYYY-MM-DD), or null; requires tz_name to be set. Any other string, a timestamp included, answers 422.
8136
8199
  */
8137
8200
  start_date?: string | null;
8138
8201
  /**
8139
- * Schedule end date as an ISO8601 date (YYYY-MM-DD), or null; must be on or after start_date.
8202
+ * Schedule end date as an ISO8601 date (YYYY-MM-DD), or null; must be on or after start_date. Any other string, a timestamp included, answers 422.
8140
8203
  */
8141
8204
  end_date?: string | null;
8142
8205
  /**
8143
- * IANA time zone name. Required when start_date is set.
8206
+ * IANA time zone name, or null. Required when start_date is set. A blank or unlisted name answers 422.
8144
8207
  */
8145
8208
  tz_name?: string | null;
8146
8209
  /**
8147
- * Day of week billing starts: 0 (Sunday) through 6 (Saturday).
8210
+ * Day of week billing starts, as an integer: 0 (Sunday) through 6 (Saturday), or null. Any other value, a numeric string included, answers 422.
8148
8211
  */
8149
8212
  billing_start_day?: number | null;
8150
8213
  /**
8151
- * Federal PWA tracking mode: `all` (prevailing wage + apprenticeship), `pw_only`, `ap_only`, or `none`. Any other value returns 422.
8214
+ * Federal PWA tracking mode: `all` (prevailing wage + apprenticeship), `pw_only`, `ap_only`, or `none`. Null or any other value returns 422.
8152
8215
  */
8153
8216
  federal_pwa_mode?: 'all' | 'pw_only' | 'ap_only' | 'none';
8154
8217
  /**
8155
- * Any value other than `none` requires `region`.
8218
+ * Regional PWA tracking mode, with the same values as `federal_pwa_mode`; null or any other value returns 422. Any value other than `none` requires `region`.
8156
8219
  */
8157
8220
  regional_pwa_mode?: 'all' | 'pw_only' | 'ap_only' | 'none';
8158
8221
  /**
8159
- * US state abbreviation; must be one of the owning company's operating regions.
8222
+ * US state abbreviation, or null; must be one of the owning company's operating regions.
8160
8223
  */
8161
8224
  region?: string | null;
8162
8225
  /**
8163
- * Gates IRA tax-credit checks. Applies only while `federal_pwa_mode` is not `none` — sending `true` or null while federal tracking is off returns 422, and switching to `none` sets it back to `false`.
8226
+ * Gates IRA tax-credit checks. A boolean; null or any other type returns 422. Applies only while `federal_pwa_mode` is not `none` — sending `true` while federal tracking is off returns 422, and switching to `none` sets it back to `false`.
8164
8227
  */
8165
8228
  asset_owner?: boolean;
8166
8229
  /**
@@ -8176,19 +8239,19 @@ export type ProjectUpdateParameters = {
8176
8239
  */
8177
8240
  administrator_phone?: string | null;
8178
8241
  /**
8179
- * Decimal string (e.g. "5000.0"). Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8242
+ * Decimal string (e.g. "5000.0"), or null to clear it; a JSON number or any other type returns 422. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8180
8243
  */
8181
- budget?: string;
8244
+ budget?: string | null;
8182
8245
  /**
8183
- * Prevailing-wage lock-in date as an ISO8601 date. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8246
+ * Prevailing-wage lock-in date as an ISO8601 date (YYYY-MM-DD); any other string, a timestamp included, answers 422. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8184
8247
  */
8185
8248
  prevailing_wage_lock_in_date?: string | null;
8186
8249
  /**
8187
- * IRA beginning-of-construction date as an ISO8601 date. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8250
+ * IRA beginning-of-construction date as an ISO8601 date (YYYY-MM-DD); any other string, a timestamp included, answers 422. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8188
8251
  */
8189
8252
  beginning_of_construction_date?: string | null;
8190
8253
  /**
8191
- * IRA placed-in-service date as an ISO8601 date. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8254
+ * IRA placed-in-service date as an ISO8601 date (YYYY-MM-DD); any other string, a timestamp included, answers 422. Applies only while `federal_pwa_mode` is not `none` — sending it while federal tracking is off, even as null, returns 422, and switching to `none` clears the stored value.
8192
8255
  */
8193
8256
  placed_in_service_date?: string | null;
8194
8257
  };
@@ -8231,52 +8294,173 @@ export type ProjectSiteUpdateParameters = {
8231
8294
  */
8232
8295
  feature_ids?: Array<string>;
8233
8296
  };
8234
- export type SiteCheckInResponseObject = {
8235
- id: string;
8236
- site_id: string;
8237
- /**
8238
- * The checked-in DSPTCH user; null when the person was recorded by name instead.
8239
- */
8240
- user_id: string | null;
8241
- first_name: string | null;
8242
- last_name: string | null;
8243
- site_contact_id: string | null;
8244
- site_contact_first_name: string | null;
8245
- site_contact_last_name: string | null;
8246
- employer_name: string | null;
8247
- description: string | null;
8248
- rationale: string | null;
8249
- /**
8250
- * How the check-in was captured.
8251
- */
8252
- source: 'manual' | 'auto' | 'public_form';
8253
- nerc_check_in: boolean;
8254
- cip_exceptional: boolean;
8255
- created_by_user_id: string | null;
8256
- latitude: number | null;
8257
- longitude: number | null;
8258
- start_time: string;
8259
- end_time: string | null;
8260
- verified_at: string | null;
8261
- created_at: string;
8262
- updated_at: string;
8263
- };
8264
8297
  /**
8265
- * A geographic location where work is performed — a site on the Atlas map. Read-only through the API; sites are drawn on the map or imported from external sources, not created here.
8298
+ * A file attached to a project. Uploaded through the direct-upload flow. `name` is always "document" and is not client-writable.
8266
8299
  */
8267
- export type SiteResponseObject = {
8300
+ export type ProjectDocumentResponseObject = {
8268
8301
  /**
8269
8302
  * Unique identifier.
8270
8303
  */
8271
8304
  id: string;
8272
8305
  /**
8273
- * Human-readable name of the site.
8306
+ * ID of the project this document belongs to.
8274
8307
  */
8275
- name: string;
8308
+ project_id: string;
8276
8309
  /**
8277
- * Site type code; one of the configured site types.
8310
+ * Read-only document label; this API does not set it, so it is always "document".
8278
8311
  */
8279
- type: 'MICROGRID' | 'POWER_PLANT' | 'TRANSMISSION' | 'battery' | 'mobile_assets' | 'ong' | 'solar' | 'training_hub' | 'warehouse' | 'wind';
8312
+ name: string;
8313
+ /**
8314
+ * The file's human-readable download name; null when not set.
8315
+ */
8316
+ filename: string | null;
8317
+ /**
8318
+ * Free-text description of the document; null when none.
8319
+ */
8320
+ description: string | null;
8321
+ /**
8322
+ * ID of the user who uploaded the document.
8323
+ */
8324
+ created_by_user_id: string;
8325
+ /**
8326
+ * The attached file; null while no blob is attached.
8327
+ */
8328
+ file: {
8329
+ /**
8330
+ * Stored name of the uploaded file.
8331
+ */
8332
+ filename: string;
8333
+ /**
8334
+ * MIME type of the file; null when not recorded.
8335
+ */
8336
+ content_type: string | null;
8337
+ /**
8338
+ * Size of the file in bytes.
8339
+ */
8340
+ byte_size: number;
8341
+ /**
8342
+ * A URL to download the file.
8343
+ */
8344
+ url: string;
8345
+ } | null;
8346
+ /**
8347
+ * When the record was created (ISO 8601).
8348
+ */
8349
+ created_at: string;
8350
+ /**
8351
+ * When the record was last updated (ISO 8601).
8352
+ */
8353
+ updated_at: string;
8354
+ };
8355
+ /**
8356
+ * Attach a file to a project as a document. file is required and takes a signed_id from the direct-upload endpoint.
8357
+ */
8358
+ export type ProjectDocumentParameters = {
8359
+ /**
8360
+ * A signed_id from POST /api/v1/direct_uploads identifying the uploaded blob to attach. Register the upload naming `projects.documents` — a signed_id issued for any other resource will not resolve here. Null and a blank string answer 422. Omitting file answers 400.
8361
+ */
8362
+ file: string;
8363
+ /**
8364
+ * The file's human-readable download name; null when not set.
8365
+ */
8366
+ filename?: string | null;
8367
+ /**
8368
+ * Free-text description of the document; null when none.
8369
+ */
8370
+ description?: string | null;
8371
+ /**
8372
+ * ID of the user this document is attached on behalf of, recorded as its creator. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
8373
+ */
8374
+ performed_by_user_id: string;
8375
+ };
8376
+ /**
8377
+ * Update a project document. All fields are optional — send only what changes. Omit file to retain the existing attachment, or supply a new signed_id to replace it. A document always holds a file, so null answers 422, as does a blank string. `name` is read-only; sending it answers 400.
8378
+ */
8379
+ export type ProjectDocumentUpdateParameters = {
8380
+ /**
8381
+ * A signed_id from POST /api/v1/direct_uploads identifying a replacement blob. Register the upload naming `projects.documents` — a signed_id issued for any other resource will not resolve here.
8382
+ */
8383
+ file?: string;
8384
+ /**
8385
+ * The file's human-readable download name; null when not set.
8386
+ */
8387
+ filename?: string | null;
8388
+ /**
8389
+ * Free-text description of the document; null when none.
8390
+ */
8391
+ description?: string | null;
8392
+ };
8393
+ /**
8394
+ * One entry in a project document's PaperTrail change history, recorded whenever the document is created, updated, or deleted — including when only its attached file is replaced. This is transaction-time audit data, not a temporal valid-time version.
8395
+ */
8396
+ export type ProjectDocumentVersionResponseObject = {
8397
+ /**
8398
+ * Unique identifier.
8399
+ */
8400
+ id: number;
8401
+ /**
8402
+ * ID of the document this version belongs to.
8403
+ */
8404
+ document_id: string;
8405
+ /**
8406
+ * The change this version records: one of create, update, or destroy.
8407
+ */
8408
+ event: 'create' | 'update' | 'destroy';
8409
+ /**
8410
+ * ID of the user who made the change; null when it was not attributed to a user.
8411
+ */
8412
+ whodunnit: string | null;
8413
+ /**
8414
+ * When the record was created (ISO 8601).
8415
+ */
8416
+ created_at: string;
8417
+ };
8418
+ export type SiteCheckInResponseObject = {
8419
+ id: string;
8420
+ site_id: string;
8421
+ /**
8422
+ * The checked-in DSPTCH user; null when the person was recorded by name instead.
8423
+ */
8424
+ user_id: string | null;
8425
+ first_name: string | null;
8426
+ last_name: string | null;
8427
+ site_contact_id: string | null;
8428
+ site_contact_first_name: string | null;
8429
+ site_contact_last_name: string | null;
8430
+ employer_name: string | null;
8431
+ description: string | null;
8432
+ rationale: string | null;
8433
+ /**
8434
+ * How the check-in was captured.
8435
+ */
8436
+ source: 'manual' | 'auto' | 'public_form';
8437
+ nerc_check_in: boolean;
8438
+ cip_exceptional: boolean;
8439
+ created_by_user_id: string | null;
8440
+ latitude: number | null;
8441
+ longitude: number | null;
8442
+ start_time: string;
8443
+ end_time: string | null;
8444
+ verified_at: string | null;
8445
+ created_at: string;
8446
+ updated_at: string;
8447
+ };
8448
+ /**
8449
+ * A geographic location where work is performed — a site on the Atlas map. Read-only through the API; sites are drawn on the map or imported from external sources, not created here.
8450
+ */
8451
+ export type SiteResponseObject = {
8452
+ /**
8453
+ * Unique identifier.
8454
+ */
8455
+ id: string;
8456
+ /**
8457
+ * Human-readable name of the site.
8458
+ */
8459
+ name: string;
8460
+ /**
8461
+ * Site type code; one of the configured site types.
8462
+ */
8463
+ type: 'MICROGRID' | 'POWER_PLANT' | 'TRANSMISSION' | 'battery' | 'mobile_assets' | 'ong' | 'solar' | 'training_hub' | 'warehouse' | 'wind';
8280
8464
  /**
8281
8465
  * Free-form attributes keyed per site type.
8282
8466
  */
@@ -8676,19 +8860,19 @@ export type ComplianceCheckDocumentObject = {
8676
8860
  created_at: string;
8677
8861
  };
8678
8862
  /**
8679
- * Update a compliance check. Every field is optional.
8863
+ * Update a compliance check. Every field is optional. Undeclared body keys return 400, and a wrong-typed value, a null for a field that is not nullable, or a status outside the list returns 422 at its pointer before anything is written.
8680
8864
  */
8681
8865
  export type ComplianceCheckParameters = {
8682
8866
  /**
8683
- * Only the person-settable statuses are writable, mirroring the web app: `dismissed` excludes the check from automatic re-evaluation; `pending` re-evaluates it on save. Evaluation owns `passed`/`failed`.
8867
+ * Only the person-settable statuses are writable, mirroring the web app: `dismissed` excludes the check from automatic re-evaluation; `pending` re-evaluates it on save. Evaluation owns `passed`/`failed`, so sending either, or null, answers 422.
8684
8868
  */
8685
8869
  status?: 'dismissed' | 'pending';
8686
8870
  /**
8687
- * When the check is due (ISO 8601); send null to clear it, or omit to leave it unchanged.
8871
+ * When the check is due, as an ISO 8601 date-time; send null to clear it, or omit to leave it unchanged. A value that is not a string answers 422.
8688
8872
  */
8689
8873
  time_due?: string | null;
8690
8874
  /**
8691
- * Replaces the check's assignees: send every user id that should be assigned, or an empty array to clear them. Every id must belong to a person in your company. Omit to leave the assignees unchanged.
8875
+ * Replaces the check's assignees: send every user id that should be assigned, each once, or an empty array to clear them. Every id must belong to a person in your company. Omit to leave the assignees unchanged. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anything is written.
8692
8876
  */
8693
8877
  assignee_user_ids?: Array<string>;
8694
8878
  /**
@@ -9784,7 +9968,7 @@ export type SiteFormAssignmentParameters = {
9784
9968
  */
9785
9969
  recurrence_end_time?: string | null;
9786
9970
  /**
9787
- * IDs of the users this form task is assigned to.
9971
+ * Unique nonblank IDs of the users this form task is assigned to; the list replaces the assignees. Omit it to keep them (none on create), or send an empty array to clear them. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anything is written.
9788
9972
  */
9789
9973
  task_assignee_user_ids?: Array<string>;
9790
9974
  /**
@@ -9839,7 +10023,7 @@ export type SiteFormAssignmentUpdateParameters = {
9839
10023
  */
9840
10024
  recurrence_end_time?: string | null;
9841
10025
  /**
9842
- * IDs of the users this form task is assigned to.
10026
+ * Unique nonblank IDs of the users this form task is assigned to; the list replaces the assignees. Omit it to keep them (none on create), or send an empty array to clear them. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anything is written.
9843
10027
  */
9844
10028
  task_assignee_user_ids?: Array<string>;
9845
10029
  /**
@@ -9956,7 +10140,7 @@ export type FeatureFormAssignmentParameters = {
9956
10140
  */
9957
10141
  recurrence_end_time?: string | null;
9958
10142
  /**
9959
- * IDs of the users this form task is assigned to.
10143
+ * Unique nonblank IDs of the users this form task is assigned to; the list replaces the assignees. Omit it to keep them (none on create), or send an empty array to clear them. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anything is written.
9960
10144
  */
9961
10145
  task_assignee_user_ids?: Array<string>;
9962
10146
  /**
@@ -10011,7 +10195,7 @@ export type FeatureFormAssignmentUpdateParameters = {
10011
10195
  */
10012
10196
  recurrence_end_time?: string | null;
10013
10197
  /**
10014
- * IDs of the users this form task is assigned to.
10198
+ * Unique nonblank IDs of the users this form task is assigned to; the list replaces the assignees. Omit it to keep them (none on create), or send an empty array to clear them. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anything is written.
10015
10199
  */
10016
10200
  task_assignee_user_ids?: Array<string>;
10017
10201
  /**
@@ -10070,7 +10254,7 @@ export type JobFormAssignmentParameters = {
10070
10254
  */
10071
10255
  recurrence_end_time?: string | null;
10072
10256
  /**
10073
- * IDs of the users this form task is assigned to.
10257
+ * Unique nonblank IDs of the users this form task is assigned to; the list replaces the assignees. Omit it to keep them (none on create), or send an empty array to clear them. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anything is written.
10074
10258
  */
10075
10259
  task_assignee_user_ids?: Array<string>;
10076
10260
  /**
@@ -10125,7 +10309,7 @@ export type JobFormAssignmentUpdateParameters = {
10125
10309
  */
10126
10310
  recurrence_end_time?: string | null;
10127
10311
  /**
10128
- * IDs of the users this form task is assigned to.
10312
+ * Unique nonblank IDs of the users this form task is assigned to; the list replaces the assignees. Omit it to keep them (none on create), or send an empty array to clear them. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anything is written.
10129
10313
  */
10130
10314
  task_assignee_user_ids?: Array<string>;
10131
10315
  /**
@@ -10454,75 +10638,65 @@ export type ProductionJobScopePriceResponseObject = {
10454
10638
  updated_at: string;
10455
10639
  };
10456
10640
  /**
10457
- * 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.
10641
+ * Record a completion against a scope price. The server takes the completable subtype from the production tracking kind of the scope price's job, never from the request: a feature-tracked job records which feature was completed, and a quantity-tracked job how many units were completed. completable_attributes declares both kinds' keys; sending the other kind's key answers 422 subtype_foreign_keys with an entry pointing at it, and nothing is written.
10458
10642
  */
10459
- export type ProductionCompletionParameters = ProductionFeatureCompletionParameters | ProductionQuantityCompletionParameters;
10460
- /**
10461
- * 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.
10462
- */
10463
- export type ProductionCompletionUpdateParameters = {
10643
+ export type ProductionCompletionParameters = {
10464
10644
  /**
10465
- * Free-text notes; omit to preserve them, or send null to clear them.
10645
+ * Scope price the work bills against; set on create only, and it determines the job. Omission answers 400; null, a blank ID, or a wrong type answers 422; a scope price the API key cannot see answers 404.
10646
+ */
10647
+ production_job_scope_price_id: string;
10648
+ /**
10649
+ * ID of the company member filing the completion. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
10650
+ */
10651
+ performed_by_user_id: string;
10652
+ /**
10653
+ * Free-text notes on the completion; null when none.
10466
10654
  */
10467
10655
  notes?: string | null;
10468
10656
  /**
10469
- * Date the work was performed (YYYY-MM-DD); omit to preserve it.
10657
+ * Date the work was performed (YYYY-MM-DD). Omit it to file the completion on today's date in the job's time zone; null or a value that is not a calendar date answers 422.
10470
10658
  */
10471
10659
  work_date?: string;
10472
10660
  /**
10473
- * Unique nonblank IDs of the job positions that performed the work. Omit to preserve the crew; a supplied list replaces it and must retain at least one position. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422.
10661
+ * Unique nonblank IDs of the job positions that performed the work (the crew). At least one is required. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422.
10474
10662
  */
10475
10663
  position_ids?: Array<string>;
10664
+ /**
10665
+ * The completion's subtype fields, whose kind follows the job's production tracking kind. A string, array, or null answers 422; an unknown key inside answers 422 at its pointer.
10666
+ */
10476
10667
  completable_attributes?: {
10477
10668
  /**
10478
- * Number of units completed, for quantity completions only. Omit to preserve it.
10669
+ * Feature the work completed, for a feature-tracked job; required there, and immutable after create.
10670
+ */
10671
+ feature_id?: string;
10672
+ /**
10673
+ * Number of units completed, a positive integer, for a quantity-tracked job; required there.
10479
10674
  */
10480
10675
  quantity_completed?: number;
10481
10676
  };
10482
10677
  };
10483
10678
  /**
10484
- * Fields shared by both completion payload kinds.
10679
+ * 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, so quantity_completed on one answers 422 subtype_foreign_keys with an entry pointing at it; quantity completions accept quantity_completed.
10485
10680
  */
10486
- export type ProductionCompletionBaseParameters = {
10487
- /**
10488
- * Scope price the work bills against; set on create only, and it determines the job. Omission answers 400; a scope price the API key cannot see answers 404.
10489
- */
10490
- production_job_scope_price_id: string;
10491
- /**
10492
- * ID of the company member filing the completion. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
10493
- */
10494
- performed_by_user_id: string;
10681
+ export type ProductionCompletionUpdateParameters = {
10495
10682
  /**
10496
- * Free-text notes on the completion; null when none.
10683
+ * Free-text notes; omit to preserve them, or send null to clear them.
10497
10684
  */
10498
10685
  notes?: string | null;
10499
10686
  /**
10500
- * Date the work was performed (YYYY-MM-DD); defaults to today in the job's time zone.
10687
+ * Date the work was performed (YYYY-MM-DD); omit to preserve it. Null or a value that is not a calendar date answers 422.
10501
10688
  */
10502
10689
  work_date?: string;
10503
10690
  /**
10504
- * Unique nonblank IDs of the job positions that performed the work (the crew). At least one is required; on update the list replaces the crew. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422.
10691
+ * Unique nonblank IDs of the job positions that performed the work. Omit to preserve the crew; a supplied list replaces it and must retain at least one position. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422.
10505
10692
  */
10506
10693
  position_ids?: Array<string>;
10507
- };
10508
- /**
10509
- * Payload for completions on feature-tracked jobs (the scope price's job tracks production by feature). quantity_completed is not accepted; the feature reference is immutable after create, so update accepts no completable_attributes at all.
10510
- */
10511
- export type ProductionFeatureCompletionParameters = ProductionCompletionBaseParameters & {
10512
- completable_attributes?: {
10513
- /**
10514
- * Feature the work completed; required on create, immutable after.
10515
- */
10516
- feature_id?: string;
10517
- };
10518
- };
10519
- /**
10520
- * Payload for completions on quantity-tracked jobs (the scope price's job tracks production by quantity). feature_id is not accepted.
10521
- */
10522
- export type ProductionQuantityCompletionParameters = ProductionCompletionBaseParameters & {
10694
+ /**
10695
+ * The completion's subtype fields. A string, array, or null answers 422; any key but quantity_completed, feature_id included, answers 422 at its pointer.
10696
+ */
10523
10697
  completable_attributes?: {
10524
10698
  /**
10525
- * Number of units completed.
10699
+ * Number of units completed, a positive integer, for quantity completions only. Omit to preserve it.
10526
10700
  */
10527
10701
  quantity_completed?: number;
10528
10702
  };
@@ -10712,7 +10886,7 @@ export type FormAssignmentTaskResponseObject = Array<{
10712
10886
  }>;
10713
10887
  }>;
10714
10888
  /**
10715
- * Request body for creating a certification — a named qualification a worker can hold. You can only manage your own company's certifications; global (platform) certifications are read-only.
10889
+ * Request body for creating a certification — a named qualification a worker can hold. You can only manage your own company's certifications; global (platform) certifications are read-only. Omitting company_id or name answers 400, and a null or blank one, or any wrong-typed value, answers 422.
10716
10890
  */
10717
10891
  export type CertificationParameters = {
10718
10892
  /**
@@ -10737,7 +10911,7 @@ export type CertificationParameters = {
10737
10911
  duration?: string | null;
10738
10912
  };
10739
10913
  /**
10740
- * Request body for updating a certification — a named qualification a worker can hold. Include only the fields to change. You can only manage your own company's certifications; global (platform) certifications are read-only. The certification's company is fixed at creation.
10914
+ * Request body for updating a certification — a named qualification a worker can hold. Include only the fields to change. You can only manage your own company's certifications; global (platform) certifications are read-only. The certification's company is fixed at creation. A null or blank name, or any wrong-typed value, answers 422.
10741
10915
  */
10742
10916
  export type CertificationUpdateParameters = {
10743
10917
  /**
@@ -10973,11 +11147,11 @@ export type UserCertificationUpdateParameters = {
10973
11147
  archived_at?: string | null;
10974
11148
  };
10975
11149
  /**
10976
- * Request body for approving a certification held by a worker. A user key approves in its own user's name and sends no body.
11150
+ * Request body for approving a certification held by a worker. A user key approves in its own user's name and must omit approved_by_user_id. A company key must name the approver.
10977
11151
  */
10978
11152
  export type UserCertificationApprovalParameters = {
10979
11153
  /**
10980
- * Company keys only: a visible admin, manager, or safety manager at the key's company to record as approver. Required with a company key.
11154
+ * Id of a visible admin, manager, or safety manager at the key's company to record as approver. Required for a company key. A user key that sends it is refused.
10981
11155
  */
10982
11156
  approved_by_user_id?: string;
10983
11157
  };
@@ -11762,62 +11936,6 @@ export type RegionalJobWageDeterminationHistoryCorrectionObject = {
11762
11936
  created_at: string;
11763
11937
  updated_at: string;
11764
11938
  };
11765
- /**
11766
- * State-specific rate fields for a Regional determination, as decimal-string money in cents
11767
- * (e.g. "538.0"). These nine properties are the whole write vocabulary, but which of them a
11768
- * request may send is set by the job's region, not the request — sending a key the job's
11769
- * region does not allow returns a 422:
11770
- *
11771
- * - Categorized-fringe regions (currently IL) accept `combined_health_fringe_rate_cents`,
11772
- * `combined_savings_fringe_rate_cents`, `combined_holiday_pto_fringe_rate_cents`,
11773
- * `training_fringe_rate_cents`, and `other_fringe_rate_cents`.
11774
- * - Overtime-adder regions (currently IL and NY) accept `one_five_x_adder_rate_cents`,
11775
- * `two_x_adder_rate_cents`, `one_five_x_fringe_adder_rate_cents`, and
11776
- * `two_x_fringe_adder_rate_cents`.
11777
- *
11778
- * In a categorized-fringe region the five fringe keys are required, not merely accepted —
11779
- * omitting any of them returns a 422. Categorized-fringe values are non-null when present;
11780
- * overtime-adder values may be null.
11781
- *
11782
- */
11783
- export type RegionalWageDeterminationFields = {
11784
- /**
11785
- * Combined health fringe rate, in cents as a decimal string. Categorized-fringe regions only; non-null when present.
11786
- */
11787
- combined_health_fringe_rate_cents?: string;
11788
- /**
11789
- * Combined savings fringe rate, in cents as a decimal string. Categorized-fringe regions only; non-null when present.
11790
- */
11791
- combined_savings_fringe_rate_cents?: string;
11792
- /**
11793
- * Combined holiday/PTO fringe rate, in cents as a decimal string. Categorized-fringe regions only; non-null when present.
11794
- */
11795
- combined_holiday_pto_fringe_rate_cents?: string;
11796
- /**
11797
- * Training fringe rate, in cents as a decimal string. Categorized-fringe regions only; non-null when present.
11798
- */
11799
- training_fringe_rate_cents?: string;
11800
- /**
11801
- * Other (uncategorized) fringe rate, in cents as a decimal string. Categorized-fringe regions only; non-null when present.
11802
- */
11803
- other_fringe_rate_cents?: string;
11804
- /**
11805
- * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
11806
- */
11807
- one_five_x_adder_rate_cents?: string | null;
11808
- /**
11809
- * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
11810
- */
11811
- two_x_adder_rate_cents?: string | null;
11812
- /**
11813
- * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
11814
- */
11815
- one_five_x_fringe_adder_rate_cents?: string | null;
11816
- /**
11817
- * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
11818
- */
11819
- two_x_fringe_adder_rate_cents?: string | null;
11820
- };
11821
11939
  /**
11822
11940
  * State-specific rate fields recorded on a Regional determination, as decimal-string money in
11823
11941
  * cents (e.g. "538.0"). Which keys appear is set by the job's region, so this object is always
@@ -11846,7 +11964,7 @@ export type JobWageDeterminationParameters = ({
11846
11964
  type: 'Pwa::JobWageDeterminations::Regional';
11847
11965
  } & RegionalJobWageDeterminationParameters);
11848
11966
  /**
11849
- * Parameters for creating a Federal (Davis-Bacon) wage determination on a job.
11967
+ * Parameters for creating a Federal (Davis-Bacon) wage determination on a job. A Federal determination holds no regional rates, so a body sending `regional_fields` returns a 422.
11850
11968
  */
11851
11969
  export type FederalJobWageDeterminationParameters = {
11852
11970
  /**
@@ -11881,6 +11999,10 @@ export type FederalJobWageDeterminationParameters = {
11881
11999
  * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
11882
12000
  */
11883
12001
  general_wage_determination?: string | null;
12002
+ /**
12003
+ * Overtime package whose rules govern overtime on work under this determination. It attaches to every version of the new determination. Null, or an omitted key, attaches none. A package belonging to another company is refused, and a Federal determination refuses one outright — only a Regional determination carries overtime rules.
12004
+ */
12005
+ overtime_package_id?: string | null;
11884
12006
  };
11885
12007
  /**
11886
12008
  * Parameters for creating a Regional (state prevailing-wage) wage determination on a job.
@@ -11903,18 +12025,66 @@ export type RegionalJobWageDeterminationParameters = {
11903
12025
  */
11904
12026
  hourly_rate_cents: string;
11905
12027
  /**
11906
- * Hourly fringe rate, in cents as a decimal string (e.g. "1200.0" is $12.00).
12028
+ * The hourly fringe rate, in cents as a decimal string. Required except in a categorized-fringe region (currently IL), which sums it from the five categorized fringe rates.
11907
12029
  */
11908
12030
  fringe_rate_cents?: string;
12031
+ /**
12032
+ * Not recorded on a Regional determination; a value sent here is dropped.
12033
+ */
12034
+ class_code?: string | null;
12035
+ /**
12036
+ * Not recorded on a Regional determination; a listed value sent here is dropped.
12037
+ */
12038
+ construction_category?: 'building' | 'heavy' | 'highway' | 'residential' | null;
11909
12039
  /**
11910
12040
  * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
11911
12041
  */
11912
12042
  general_wage_determination?: string | null;
11913
12043
  /**
11914
- * Overtime package whose rules govern overtime on work under this determination. This is not a versioned attribute: setting it points every version at that package, not only the one this request writes, and `effective_from` does not date it. Send null to detach, leaving the determination with no overtime package of its own. Omit the key to leave the current attachment alone. A package belonging to another company is refused, and a Federal determination refuses one outright — only a Regional determination carries overtime rules.
12044
+ * State-specific rates, as decimal-string money in cents (e.g. "538.0"). The determination's region decides which rates it holds: categorized-fringe regions (currently IL) require the five fringe rates, and overtime-adder regions (currently IL and NY) accept the four adder rates. A value for a rate the region does not hold returns a 422.
12045
+ */
12046
+ regional_fields?: {
12047
+ /**
12048
+ * Combined health fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12049
+ */
12050
+ combined_health_fringe_rate_cents?: string | null;
12051
+ /**
12052
+ * Combined savings fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12053
+ */
12054
+ combined_savings_fringe_rate_cents?: string | null;
12055
+ /**
12056
+ * Combined holiday/PTO fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12057
+ */
12058
+ combined_holiday_pto_fringe_rate_cents?: string | null;
12059
+ /**
12060
+ * Training fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12061
+ */
12062
+ training_fringe_rate_cents?: string | null;
12063
+ /**
12064
+ * Other (uncategorized) fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12065
+ */
12066
+ other_fringe_rate_cents?: string | null;
12067
+ /**
12068
+ * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12069
+ */
12070
+ one_five_x_adder_rate_cents?: string | null;
12071
+ /**
12072
+ * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12073
+ */
12074
+ two_x_adder_rate_cents?: string | null;
12075
+ /**
12076
+ * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12077
+ */
12078
+ one_five_x_fringe_adder_rate_cents?: string | null;
12079
+ /**
12080
+ * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12081
+ */
12082
+ two_x_fringe_adder_rate_cents?: string | null;
12083
+ };
12084
+ /**
12085
+ * Overtime package whose rules govern overtime on work under this determination. It attaches to every version of the new determination. Null, or an omitted key, attaches none. A package belonging to another company is refused, and a Federal determination refuses one outright — only a Regional determination carries overtime rules.
11915
12086
  */
11916
12087
  overtime_package_id?: string | null;
11917
- regional_fields?: RegionalWageDeterminationFields;
11918
12088
  };
11919
12089
  /**
11920
12090
  * Parameters for editing a job wage determination from a point in valid time forward. The type is fixed by the determination the id names and is not sent.
@@ -11956,7 +12126,47 @@ export type JobWageDeterminationUpdateParameters = {
11956
12126
  * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
11957
12127
  */
11958
12128
  general_wage_determination?: string | null;
11959
- regional_fields?: RegionalWageDeterminationFields;
12129
+ /**
12130
+ * State-specific rates for a Regional determination, as decimal-string money in cents (e.g. "538.0"). The determination's region decides which rates it holds: categorized-fringe regions (currently IL) require the five fringe rates, and overtime-adder regions (currently IL and NY) accept the four adder rates. A value for a rate the region does not hold returns a 422; send null to clear one. An omitted rate keeps its current value.
12131
+ */
12132
+ regional_fields?: {
12133
+ /**
12134
+ * Combined health fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12135
+ */
12136
+ combined_health_fringe_rate_cents?: string | null;
12137
+ /**
12138
+ * Combined savings fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12139
+ */
12140
+ combined_savings_fringe_rate_cents?: string | null;
12141
+ /**
12142
+ * Combined holiday/PTO fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12143
+ */
12144
+ combined_holiday_pto_fringe_rate_cents?: string | null;
12145
+ /**
12146
+ * Training fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12147
+ */
12148
+ training_fringe_rate_cents?: string | null;
12149
+ /**
12150
+ * Other (uncategorized) fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12151
+ */
12152
+ other_fringe_rate_cents?: string | null;
12153
+ /**
12154
+ * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12155
+ */
12156
+ one_five_x_adder_rate_cents?: string | null;
12157
+ /**
12158
+ * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12159
+ */
12160
+ two_x_adder_rate_cents?: string | null;
12161
+ /**
12162
+ * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12163
+ */
12164
+ one_five_x_fringe_adder_rate_cents?: string | null;
12165
+ /**
12166
+ * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12167
+ */
12168
+ two_x_fringe_adder_rate_cents?: string | null;
12169
+ };
11960
12170
  };
11961
12171
  /**
11962
12172
  * Parameters for an effective-dated change to a job wage determination, applying from a calendar date forward. The type is fixed by the determination the id names and is not sent.
@@ -11990,7 +12200,47 @@ export type JobWageDeterminationScheduledChangeParameters = {
11990
12200
  * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
11991
12201
  */
11992
12202
  general_wage_determination?: string | null;
11993
- regional_fields?: RegionalWageDeterminationFields;
12203
+ /**
12204
+ * State-specific rates for a Regional determination, as decimal-string money in cents (e.g. "538.0"). The determination's region decides which rates it holds: categorized-fringe regions (currently IL) require the five fringe rates, and overtime-adder regions (currently IL and NY) accept the four adder rates. A value for a rate the region does not hold returns a 422; send null to clear one. An omitted rate keeps its current value.
12205
+ */
12206
+ regional_fields?: {
12207
+ /**
12208
+ * Combined health fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12209
+ */
12210
+ combined_health_fringe_rate_cents?: string | null;
12211
+ /**
12212
+ * Combined savings fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12213
+ */
12214
+ combined_savings_fringe_rate_cents?: string | null;
12215
+ /**
12216
+ * Combined holiday/PTO fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12217
+ */
12218
+ combined_holiday_pto_fringe_rate_cents?: string | null;
12219
+ /**
12220
+ * Training fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12221
+ */
12222
+ training_fringe_rate_cents?: string | null;
12223
+ /**
12224
+ * Other (uncategorized) fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12225
+ */
12226
+ other_fringe_rate_cents?: string | null;
12227
+ /**
12228
+ * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12229
+ */
12230
+ one_five_x_adder_rate_cents?: string | null;
12231
+ /**
12232
+ * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12233
+ */
12234
+ two_x_adder_rate_cents?: string | null;
12235
+ /**
12236
+ * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12237
+ */
12238
+ one_five_x_fringe_adder_rate_cents?: string | null;
12239
+ /**
12240
+ * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12241
+ */
12242
+ two_x_fringe_adder_rate_cents?: string | null;
12243
+ };
11994
12244
  };
11995
12245
  /**
11996
12246
  * Parameters for moving where a job wage determination's timeline begins.
@@ -12254,7 +12504,7 @@ export type ProjectWageDeterminationParameters = ({
12254
12504
  type: 'Pwa::ProjectWageDeterminations::Regional';
12255
12505
  } & RegionalProjectWageDeterminationParameters);
12256
12506
  /**
12257
- * Parameters for creating a Federal (Davis-Bacon) wage determination on a project.
12507
+ * Parameters for creating a Federal (Davis-Bacon) wage determination on a project. A Federal determination holds no regional rates, so a body sending `regional_fields` returns a 422.
12258
12508
  */
12259
12509
  export type FederalProjectWageDeterminationParameters = {
12260
12510
  /**
@@ -12289,6 +12539,10 @@ export type FederalProjectWageDeterminationParameters = {
12289
12539
  * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
12290
12540
  */
12291
12541
  general_wage_determination?: string | null;
12542
+ /**
12543
+ * Overtime package whose rules govern overtime on work under this determination. It attaches to every version of the new determination. Null, or an omitted key, attaches none. A package belonging to another company is refused, and a Federal determination refuses one outright — only a Regional determination carries overtime rules.
12544
+ */
12545
+ overtime_package_id?: string | null;
12292
12546
  };
12293
12547
  /**
12294
12548
  * Parameters for creating a Regional (state prevailing-wage) wage determination on a project.
@@ -12311,18 +12565,66 @@ export type RegionalProjectWageDeterminationParameters = {
12311
12565
  */
12312
12566
  hourly_rate_cents: string;
12313
12567
  /**
12314
- * Hourly fringe rate, in cents as a decimal string (e.g. "1200.0" is $12.00).
12568
+ * The hourly fringe rate, in cents as a decimal string. Required except in a categorized-fringe region (currently IL), which sums it from the five categorized fringe rates.
12315
12569
  */
12316
12570
  fringe_rate_cents?: string;
12571
+ /**
12572
+ * Not recorded on a Regional determination; a value sent here is dropped.
12573
+ */
12574
+ class_code?: string | null;
12575
+ /**
12576
+ * Not recorded on a Regional determination; a listed value sent here is dropped.
12577
+ */
12578
+ construction_category?: 'building' | 'heavy' | 'highway' | 'residential' | null;
12317
12579
  /**
12318
12580
  * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
12319
12581
  */
12320
12582
  general_wage_determination?: string | null;
12321
12583
  /**
12322
- * Overtime package whose rules govern overtime on work under this determination. This is not a versioned attribute: setting it points every version at that package, not only the one this request writes, and `effective_from` does not date it. Send null to detach, leaving the determination with no overtime package of its own. Omit the key to leave the current attachment alone. A package belonging to another company is refused, and a Federal determination refuses one outright — only a Regional determination carries overtime rules.
12584
+ * State-specific rates, as decimal-string money in cents (e.g. "538.0"). The determination's region decides which rates it holds: categorized-fringe regions (currently IL) require the five fringe rates, and overtime-adder regions (currently IL and NY) accept the four adder rates. A value for a rate the region does not hold returns a 422.
12585
+ */
12586
+ regional_fields?: {
12587
+ /**
12588
+ * Combined health fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12589
+ */
12590
+ combined_health_fringe_rate_cents?: string | null;
12591
+ /**
12592
+ * Combined savings fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12593
+ */
12594
+ combined_savings_fringe_rate_cents?: string | null;
12595
+ /**
12596
+ * Combined holiday/PTO fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12597
+ */
12598
+ combined_holiday_pto_fringe_rate_cents?: string | null;
12599
+ /**
12600
+ * Training fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12601
+ */
12602
+ training_fringe_rate_cents?: string | null;
12603
+ /**
12604
+ * Other (uncategorized) fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12605
+ */
12606
+ other_fringe_rate_cents?: string | null;
12607
+ /**
12608
+ * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12609
+ */
12610
+ one_five_x_adder_rate_cents?: string | null;
12611
+ /**
12612
+ * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12613
+ */
12614
+ two_x_adder_rate_cents?: string | null;
12615
+ /**
12616
+ * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12617
+ */
12618
+ one_five_x_fringe_adder_rate_cents?: string | null;
12619
+ /**
12620
+ * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12621
+ */
12622
+ two_x_fringe_adder_rate_cents?: string | null;
12623
+ };
12624
+ /**
12625
+ * Overtime package whose rules govern overtime on work under this determination. It attaches to every version of the new determination. Null, or an omitted key, attaches none. A package belonging to another company is refused, and a Federal determination refuses one outright — only a Regional determination carries overtime rules.
12323
12626
  */
12324
12627
  overtime_package_id?: string | null;
12325
- regional_fields?: RegionalWageDeterminationFields;
12326
12628
  };
12327
12629
  /**
12328
12630
  * Parameters for editing a project wage determination from a point in valid time forward. The type is fixed by the determination the id names and is not sent.
@@ -12364,7 +12666,47 @@ export type ProjectWageDeterminationUpdateParameters = {
12364
12666
  * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
12365
12667
  */
12366
12668
  general_wage_determination?: string | null;
12367
- regional_fields?: RegionalWageDeterminationFields;
12669
+ /**
12670
+ * State-specific rates for a Regional determination, as decimal-string money in cents (e.g. "538.0"). The determination's region decides which rates it holds: categorized-fringe regions (currently IL) require the five fringe rates, and overtime-adder regions (currently IL and NY) accept the four adder rates. A value for a rate the region does not hold returns a 422; send null to clear one. An omitted rate keeps its current value.
12671
+ */
12672
+ regional_fields?: {
12673
+ /**
12674
+ * Combined health fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12675
+ */
12676
+ combined_health_fringe_rate_cents?: string | null;
12677
+ /**
12678
+ * Combined savings fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12679
+ */
12680
+ combined_savings_fringe_rate_cents?: string | null;
12681
+ /**
12682
+ * Combined holiday/PTO fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12683
+ */
12684
+ combined_holiday_pto_fringe_rate_cents?: string | null;
12685
+ /**
12686
+ * Training fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12687
+ */
12688
+ training_fringe_rate_cents?: string | null;
12689
+ /**
12690
+ * Other (uncategorized) fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12691
+ */
12692
+ other_fringe_rate_cents?: string | null;
12693
+ /**
12694
+ * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12695
+ */
12696
+ one_five_x_adder_rate_cents?: string | null;
12697
+ /**
12698
+ * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12699
+ */
12700
+ two_x_adder_rate_cents?: string | null;
12701
+ /**
12702
+ * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12703
+ */
12704
+ one_five_x_fringe_adder_rate_cents?: string | null;
12705
+ /**
12706
+ * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12707
+ */
12708
+ two_x_fringe_adder_rate_cents?: string | null;
12709
+ };
12368
12710
  };
12369
12711
  /**
12370
12712
  * Parameters for an effective-dated change to a project wage determination, applying from a calendar date forward. The type is fixed by the determination the id names and is not sent.
@@ -12398,7 +12740,47 @@ export type ProjectWageDeterminationScheduledChangeParameters = {
12398
12740
  * The DOL general wage determination the rates are drawn from — the general decision number plus its revision (e.g. "CA20230001/5"); null when not recorded.
12399
12741
  */
12400
12742
  general_wage_determination?: string | null;
12401
- regional_fields?: RegionalWageDeterminationFields;
12743
+ /**
12744
+ * State-specific rates for a Regional determination, as decimal-string money in cents (e.g. "538.0"). The determination's region decides which rates it holds: categorized-fringe regions (currently IL) require the five fringe rates, and overtime-adder regions (currently IL and NY) accept the four adder rates. A value for a rate the region does not hold returns a 422; send null to clear one. An omitted rate keeps its current value.
12745
+ */
12746
+ regional_fields?: {
12747
+ /**
12748
+ * Combined health fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12749
+ */
12750
+ combined_health_fringe_rate_cents?: string | null;
12751
+ /**
12752
+ * Combined savings fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12753
+ */
12754
+ combined_savings_fringe_rate_cents?: string | null;
12755
+ /**
12756
+ * Combined holiday/PTO fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12757
+ */
12758
+ combined_holiday_pto_fringe_rate_cents?: string | null;
12759
+ /**
12760
+ * Training fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12761
+ */
12762
+ training_fringe_rate_cents?: string | null;
12763
+ /**
12764
+ * Other (uncategorized) fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12765
+ */
12766
+ other_fringe_rate_cents?: string | null;
12767
+ /**
12768
+ * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12769
+ */
12770
+ one_five_x_adder_rate_cents?: string | null;
12771
+ /**
12772
+ * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12773
+ */
12774
+ two_x_adder_rate_cents?: string | null;
12775
+ /**
12776
+ * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12777
+ */
12778
+ one_five_x_fringe_adder_rate_cents?: string | null;
12779
+ /**
12780
+ * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12781
+ */
12782
+ two_x_fringe_adder_rate_cents?: string | null;
12783
+ };
12402
12784
  };
12403
12785
  /**
12404
12786
  * Parameters for moving where a project wage determination's timeline begins.
@@ -12711,29 +13093,53 @@ export type PayRatesRuleResponseObject = {
12711
13093
  * Parameters for creating a conditional wage or fringe adjustment in a pay-rate rule package.
12712
13094
  */
12713
13095
  export type PayRatesRuleParameters = {
12714
- effect: RateRuleEffect;
12715
- /**
12716
- * Match conditions for the rule. Omit or send an empty list for an unconditional rule.
12717
- */
12718
- conditions?: Array<RateRuleCondition>;
12719
13096
  /**
12720
13097
  * Calendar date when the rule begins in the package's timezone, which is that of the project or job holding the package, else its company's; defaults to today there.
12721
13098
  */
12722
13099
  effective_date?: string;
13100
+ /**
13101
+ * The adjustment applied when a rule matches — an addition to the wage or fringe rate.
13102
+ */
13103
+ effect: {
13104
+ /**
13105
+ * Which base rate the effect adds to: `wage_increment` the hourly wage rate, `fringe_increment` the fringe rate.
13106
+ */
13107
+ type: 'wage_increment' | 'fringe_increment';
13108
+ /**
13109
+ * Amount added to the base rate, in whole cents as a decimal string (e.g. "300" is $3.00). Zero or positive; fractional input is truncated.
13110
+ */
13111
+ amount_cents: string;
13112
+ };
13113
+ /**
13114
+ * Match conditions for the rule. Omit or send an empty list for an unconditional rule.
13115
+ */
13116
+ conditions?: Array<RateRuleTimeRangeCondition | RateRuleDaysCondition | RateRuleSpecificDateCondition | RateRuleApprenticePeriodCondition | RateRuleApprenticeHoursCondition | RateRuleOvertimeMultiplierCondition>;
12723
13117
  };
12724
13118
  /**
12725
13119
  * Change a rule from an effective date forward. Omitted effect or conditions keep that part of the targeted version. When the targeted recipe changes, the resulting complete recipe applies from that coordinate across later scheduled versions; an unchanged recipe does not alter later scheduled versions. An empty conditions list makes the rule unconditional. Omit effective_from to correct the selected version from its exact existing start. A rule with an unbounded lower limit requires effective_from.
12726
13120
  */
12727
13121
  export type PayRatesRuleUpdateParameters = {
12728
- effect?: RateRuleEffect;
12729
- /**
12730
- * Replacement match conditions. Omit this field to keep the targeted version's conditions; send an empty list to make the rule unconditional.
12731
- */
12732
- conditions?: Array<RateRuleCondition>;
12733
13122
  /**
12734
13123
  * Date the change begins, YYYY-MM-DD. Omit it to correct the selected version from its exact existing start. Required when that version has no lower bound.
12735
13124
  */
12736
13125
  effective_from?: string;
13126
+ /**
13127
+ * The adjustment applied when a rule matches — an addition to the wage or fringe rate.
13128
+ */
13129
+ effect?: {
13130
+ /**
13131
+ * Which base rate the effect adds to: `wage_increment` the hourly wage rate, `fringe_increment` the fringe rate.
13132
+ */
13133
+ type: 'wage_increment' | 'fringe_increment';
13134
+ /**
13135
+ * Amount added to the base rate, in whole cents as a decimal string (e.g. "300" is $3.00). Zero or positive; fractional input is truncated.
13136
+ */
13137
+ amount_cents: string;
13138
+ };
13139
+ /**
13140
+ * Replacement match conditions. Omit this field to keep the targeted version's conditions; send an empty list to make the rule unconditional.
13141
+ */
13142
+ conditions?: Array<RateRuleTimeRangeCondition | RateRuleDaysCondition | RateRuleSpecificDateCondition | RateRuleApprenticePeriodCondition | RateRuleApprenticeHoursCondition | RateRuleOvertimeMultiplierCondition>;
12737
13143
  };
12738
13144
  /**
12739
13145
  * Parameters for moving where a pay-rate rule family's valid-time timeline begins.
@@ -12761,11 +13167,23 @@ export type PayRatesRuleScheduledChangeParameters = {
12761
13167
  * Date the change begins, YYYY-MM-DD.
12762
13168
  */
12763
13169
  effective_date: string;
12764
- effect?: RateRuleEffect;
13170
+ /**
13171
+ * The adjustment applied when a rule matches — an addition to the wage or fringe rate.
13172
+ */
13173
+ effect?: {
13174
+ /**
13175
+ * Which base rate the effect adds to: `wage_increment` the hourly wage rate, `fringe_increment` the fringe rate.
13176
+ */
13177
+ type: 'wage_increment' | 'fringe_increment';
13178
+ /**
13179
+ * Amount added to the base rate, in whole cents as a decimal string (e.g. "300" is $3.00). Zero or positive; fractional input is truncated.
13180
+ */
13181
+ amount_cents: string;
13182
+ };
12765
13183
  /**
12766
13184
  * Replacement match conditions. Omit this field to keep the targeted version's conditions; send an empty list to make the rule unconditional.
12767
13185
  */
12768
- conditions?: Array<RateRuleCondition>;
13186
+ conditions?: Array<RateRuleTimeRangeCondition | RateRuleDaysCondition | RateRuleSpecificDateCondition | RateRuleApprenticePeriodCondition | RateRuleApprenticeHoursCondition | RateRuleOvertimeMultiplierCondition>;
12769
13187
  };
12770
13188
  export type PayRatesRuleHistoryCorrectionObject = {
12771
13189
  /**
@@ -13011,11 +13429,23 @@ export type RateRuleParameters = {
13011
13429
  * Date the rule takes effect, YYYY-MM-DD. Defaults to today. Cannot predate the earliest wage determination the rule's package applies to.
13012
13430
  */
13013
13431
  effective_date?: string | null;
13014
- effect: RateRuleEffect;
13432
+ /**
13433
+ * The adjustment applied when a rule matches — an addition to the wage or fringe rate.
13434
+ */
13435
+ effect: {
13436
+ /**
13437
+ * Which base rate the effect adds to: `wage_increment` the hourly wage rate, `fringe_increment` the fringe rate.
13438
+ */
13439
+ type: 'wage_increment' | 'fringe_increment';
13440
+ /**
13441
+ * Amount added to the base rate, in whole cents as a decimal string (e.g. "300" is $3.00). Zero or positive; fractional input is truncated.
13442
+ */
13443
+ amount_cents: string;
13444
+ };
13015
13445
  /**
13016
13446
  * Match conditions for the rule; optional. Omit or send an empty list for a rule that always applies. At most one condition per category (time, day-selection, apprentice, overtime).
13017
13447
  */
13018
- conditions?: Array<RateRuleCondition>;
13448
+ conditions?: Array<RateRuleTimeRangeCondition | RateRuleDaysCondition | RateRuleSpecificDateCondition | RateRuleApprenticePeriodCondition | RateRuleApprenticeHoursCondition | RateRuleOvertimeMultiplierCondition>;
13019
13449
  };
13020
13450
  /**
13021
13451
  * A tracked physical asset owned by a company and typed by a product — either an individually-tracked serial unit or a quantity-tracked bulk stock record. The serial-only fields (serial_number, status, purchase_date, purchase_price_cents, currency, external_id, external_system_url) are null on a bulk item.
@@ -13132,7 +13562,7 @@ export type AssetsItemParameters = {
13132
13562
  /**
13133
13563
  * Free-text description of the item.
13134
13564
  */
13135
- description?: string;
13565
+ description?: string | null;
13136
13566
  /**
13137
13567
  * ID of the product this item is an instance of.
13138
13568
  */
@@ -13140,7 +13570,7 @@ export type AssetsItemParameters = {
13140
13570
  /**
13141
13571
  * Serial number identifying the individual physical unit; unique within its product.
13142
13572
  */
13143
- serial_number: string;
13573
+ serial_number?: string | null;
13144
13574
  /**
13145
13575
  * Placement status of the item: available, or assigned when held by a user.
13146
13576
  */
@@ -13148,21 +13578,21 @@ export type AssetsItemParameters = {
13148
13578
  /**
13149
13579
  * When the item was purchased (ISO 8601).
13150
13580
  */
13151
- purchase_date?: string;
13581
+ purchase_date?: string | null;
13152
13582
  /**
13153
13583
  * Purchase price in cents, in the item's currency.
13154
13584
  */
13155
- purchase_price_cents?: number;
13585
+ purchase_price_cents?: number | null;
13156
13586
  /**
13157
13587
  * Identifier for this item in an external system.
13158
13588
  */
13159
- external_id?: string;
13589
+ external_id?: string | null;
13160
13590
  /**
13161
13591
  * URL to this item in an external system.
13162
13592
  */
13163
- external_system_url?: string;
13593
+ external_system_url?: string | null;
13164
13594
  /**
13165
- * 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.
13595
+ * Upserts the values of the item-level attributes of the product's category, as a list of row objects, one per attribute. Each row requires its assets_attribute_id; a row without one answers 400, and a blank one 422. Send a blank value and null assets_attribute_option_id to clear one. A value is a string or null; any other JSON type, or an unknown row field, answers 422 at that row.
13166
13596
  */
13167
13597
  attribute_values?: Array<{
13168
13598
  /**
@@ -13179,32 +13609,45 @@ export type AssetsItemParameters = {
13179
13609
  assets_attribute_option_id?: string | null;
13180
13610
  }>;
13181
13611
  /**
13182
- * Image attachments. Send file with a signed_id to add one; include id with _destroy to remove an existing one.
13612
+ * Image attachments, as a list of row objects. Send file with a signed_id to add one; include id with _destroy to remove an existing one. An unknown or wrongly typed row field answers 422 at that row.
13613
+ */
13614
+ images_attributes?: Array<{
13615
+ /**
13616
+ * ID of an existing attachment to remove; omit to add a new one.
13617
+ */
13618
+ id?: string;
13619
+ /**
13620
+ * A signed_id from POST /api/v1/direct_uploads registered for `assets.items`; a signed_id issued for any other resource answers 422.
13621
+ */
13622
+ file?: string;
13623
+ /**
13624
+ * Set true to remove the attachment named by id.
13625
+ */
13626
+ _destroy?: boolean;
13627
+ }>;
13628
+ /**
13629
+ * ID of the user this write is performed on behalf of — recorded as the item's creator or updater and attributed to any placement. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
13183
13630
  */
13184
- images_attributes?: Array<AssetsAttachmentParameters>;
13631
+ performed_by_user_id: string;
13185
13632
  /**
13186
13633
  * Optional, create only. Stock the new item at this site, recording a receive transaction. Mutually exclusive with user_id and container_item_id.
13187
13634
  */
13188
- assets_site_id?: string;
13635
+ assets_site_id?: string | null;
13189
13636
  /**
13190
13637
  * Optional, create only. Assign the new item to this user. Mutually exclusive with assets_site_id and container_item_id.
13191
13638
  */
13192
- user_id?: string;
13639
+ user_id?: string | null;
13193
13640
  /**
13194
13641
  * Optional, create only. Place the new item inside this container item. Mutually exclusive with assets_site_id and user_id.
13195
13642
  */
13196
- container_item_id?: string;
13643
+ container_item_id?: string | null;
13197
13644
  /**
13198
13645
  * Optional, create only. The storage location within the placement site or container the item lands in; must belong to that holder. Omit for an unbinned placement. Ignored for a user assignment.
13199
13646
  */
13200
- assets_sub_location_id?: string;
13201
- /**
13202
- * ID of the user this write is performed on behalf of — recorded as the item's creator or updater and attributed to any placement. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
13203
- */
13204
- performed_by_user_id: string;
13647
+ assets_sub_location_id?: string | null;
13205
13648
  };
13206
13649
  /**
13207
- * 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.
13650
+ * 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. The serial-only fields (serial_number, status, purchase_date, purchase_price_cents, external_id, external_system_url) apply to a serial item; sending one for a bulk item answers 422 subtype_foreign_keys with an entry pointing at each such field, and nothing is written.
13208
13651
  */
13209
13652
  export type AssetsItemUpdateParameters = {
13210
13653
  /**
@@ -13214,7 +13657,7 @@ export type AssetsItemUpdateParameters = {
13214
13657
  /**
13215
13658
  * Free-text description of the item.
13216
13659
  */
13217
- description?: string;
13660
+ description?: string | null;
13218
13661
  /**
13219
13662
  * ID of the product this item is an instance of.
13220
13663
  */
@@ -13222,7 +13665,7 @@ export type AssetsItemUpdateParameters = {
13222
13665
  /**
13223
13666
  * Serial number identifying the individual physical unit; unique within its product.
13224
13667
  */
13225
- serial_number?: string;
13668
+ serial_number?: string | null;
13226
13669
  /**
13227
13670
  * Placement status of the item: available, or assigned when held by a user.
13228
13671
  */
@@ -13230,21 +13673,21 @@ export type AssetsItemUpdateParameters = {
13230
13673
  /**
13231
13674
  * When the item was purchased (ISO 8601).
13232
13675
  */
13233
- purchase_date?: string;
13676
+ purchase_date?: string | null;
13234
13677
  /**
13235
13678
  * Purchase price in cents, in the item's currency.
13236
13679
  */
13237
- purchase_price_cents?: number;
13680
+ purchase_price_cents?: number | null;
13238
13681
  /**
13239
13682
  * Identifier for this item in an external system.
13240
13683
  */
13241
- external_id?: string;
13684
+ external_id?: string | null;
13242
13685
  /**
13243
13686
  * URL to this item in an external system.
13244
13687
  */
13245
- external_system_url?: string;
13688
+ external_system_url?: string | null;
13246
13689
  /**
13247
- * 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.
13690
+ * Upserts the values of the item-level attributes of the product's category, as a list of row objects, one per attribute. Each row requires its assets_attribute_id; a row without one answers 400, and a blank one 422. Send a blank value and null assets_attribute_option_id to clear one. A value is a string or null; any other JSON type, or an unknown row field, answers 422 at that row.
13248
13691
  */
13249
13692
  attribute_values?: Array<{
13250
13693
  /**
@@ -13261,9 +13704,22 @@ export type AssetsItemUpdateParameters = {
13261
13704
  assets_attribute_option_id?: string | null;
13262
13705
  }>;
13263
13706
  /**
13264
- * Image attachments. Send file with a signed_id to add one; include id with _destroy to remove an existing one.
13707
+ * Image attachments, as a list of row objects. Send file with a signed_id to add one; include id with _destroy to remove an existing one. An unknown or wrongly typed row field answers 422 at that row.
13265
13708
  */
13266
- images_attributes?: Array<AssetsAttachmentParameters>;
13709
+ images_attributes?: Array<{
13710
+ /**
13711
+ * ID of an existing attachment to remove; omit to add a new one.
13712
+ */
13713
+ id?: string;
13714
+ /**
13715
+ * A signed_id from POST /api/v1/direct_uploads registered for `assets.items`; a signed_id issued for any other resource answers 422.
13716
+ */
13717
+ file?: string;
13718
+ /**
13719
+ * Set true to remove the attachment named by id.
13720
+ */
13721
+ _destroy?: boolean;
13722
+ }>;
13267
13723
  /**
13268
13724
  * ID of the user this update is performed on behalf of, recorded as updater. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
13269
13725
  */
@@ -13596,34 +14052,17 @@ export type AssetsAttachmentResponseObject = {
13596
14052
  byte_size: number;
13597
14053
  /**
13598
14054
  * A URL to download the file.
13599
- */
13600
- url: string;
13601
- } | null;
13602
- /**
13603
- * When the record was created (ISO 8601).
13604
- */
13605
- created_at: string;
13606
- /**
13607
- * When the record was last updated (ISO 8601).
13608
- */
13609
- updated_at: string;
13610
- };
13611
- /**
13612
- * One attachment in a nested collection. Send file with a signed_id to add one; send id (with _destroy) to remove an existing one.
13613
- */
13614
- export type AssetsAttachmentParameters = {
13615
- /**
13616
- * ID of an existing attachment to remove; omit to add a new one.
13617
- */
13618
- id?: string;
14055
+ */
14056
+ url: string;
14057
+ } | null;
13619
14058
  /**
13620
- * A signed_id from POST /api/v1/direct_uploads identifying the uploaded blob to attach. Register the upload naming the resource of the endpoint you are calling — `assets.items` for item images, `assets.products` for product images, `assets.items.service_events` for service event attachments — because a signed_id issued for any other resource will not resolve here.
14059
+ * When the record was created (ISO 8601).
13621
14060
  */
13622
- file?: string;
14061
+ created_at: string;
13623
14062
  /**
13624
- * Set true to remove the attachment named by id.
14063
+ * When the record was last updated (ISO 8601).
13625
14064
  */
13626
- _destroy?: boolean;
14065
+ updated_at: string;
13627
14066
  };
13628
14067
  /**
13629
14068
  * A file attached to an asset item — a document such as a manual, warranty, or certificate. Uploaded through the direct-upload flow and optionally marked as a certified copy.
@@ -13853,7 +14292,7 @@ export type AssetsItemFormAssignmentParameters = {
13853
14292
  */
13854
14293
  recurrence_end_time?: string | null;
13855
14294
  /**
13856
- * IDs of the users this form task is assigned to.
14295
+ * Unique nonblank IDs of the users this form task is assigned to; the list replaces the assignees. Omit it to keep them (none on create), or send an empty array to clear them. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anything is written.
13857
14296
  */
13858
14297
  task_assignee_user_ids?: Array<string>;
13859
14298
  /**
@@ -13908,7 +14347,7 @@ export type AssetsItemFormAssignmentUpdateParameters = {
13908
14347
  */
13909
14348
  recurrence_end_time?: string | null;
13910
14349
  /**
13911
- * IDs of the users this form task is assigned to.
14350
+ * Unique nonblank IDs of the users this form task is assigned to; the list replaces the assignees. Omit it to keep them (none on create), or send an empty array to clear them. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before anything is written.
13912
14351
  */
13913
14352
  task_assignee_user_ids?: Array<string>;
13914
14353
  /**
@@ -14317,13 +14756,26 @@ export type AssetsServiceEventParameters = {
14317
14756
  */
14318
14757
  assets_service_schedule_id?: string | null;
14319
14758
  /**
14320
- * ID of the user who performed the service. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
14759
+ * Document attachments for the service, as a list of row objects. Send file with a signed_id to add one. An unknown or wrongly typed row field answers 422 at that row.
14321
14760
  */
14322
- performed_by_user_id: string;
14761
+ attachments_attributes?: Array<{
14762
+ /**
14763
+ * ID of an existing attachment to remove; omit to add a new one.
14764
+ */
14765
+ id?: string;
14766
+ /**
14767
+ * A signed_id from POST /api/v1/direct_uploads registered for `assets.items.service_events`; a signed_id issued for any other resource answers 422.
14768
+ */
14769
+ file?: string;
14770
+ /**
14771
+ * Set true to remove the attachment named by id.
14772
+ */
14773
+ _destroy?: boolean;
14774
+ }>;
14323
14775
  /**
14324
- * Document attachments for the service. On update, set _destroy with an id to remove an existing one; omit id to add a new one.
14776
+ * ID of the user who performed the service. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
14325
14777
  */
14326
- attachments_attributes?: Array<AssetsAttachmentParameters>;
14778
+ performed_by_user_id: string;
14327
14779
  };
14328
14780
  /**
14329
14781
  * Update a service event. Event fields are optional — send only what changes — but performed_by_user_id is required to record the updater. A linked schedule dictates kind, and changing or removing the link recomputes affected due dates.
@@ -14346,13 +14798,26 @@ export type AssetsServiceEventUpdateParameters = {
14346
14798
  */
14347
14799
  assets_service_schedule_id?: string | null;
14348
14800
  /**
14349
- * ID of the user this update is performed on behalf of. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
14801
+ * Document attachments for the service, as a list of row objects. Set _destroy with an id to remove an existing one; omit id to add a new one. An unknown or wrongly typed row field answers 422 at that row.
14350
14802
  */
14351
- performed_by_user_id: string;
14803
+ attachments_attributes?: Array<{
14804
+ /**
14805
+ * ID of an existing attachment to remove; omit to add a new one.
14806
+ */
14807
+ id?: string;
14808
+ /**
14809
+ * A signed_id from POST /api/v1/direct_uploads registered for `assets.items.service_events`; a signed_id issued for any other resource answers 422.
14810
+ */
14811
+ file?: string;
14812
+ /**
14813
+ * Set true to remove the attachment named by id.
14814
+ */
14815
+ _destroy?: boolean;
14816
+ }>;
14352
14817
  /**
14353
- * Document attachments for the service. Set _destroy with an id to remove an existing one; omit id to add a new one.
14818
+ * ID of the user this update is performed on behalf of. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
14354
14819
  */
14355
- attachments_attributes?: Array<AssetsAttachmentParameters>;
14820
+ performed_by_user_id: string;
14356
14821
  };
14357
14822
  /**
14358
14823
  * A product-level service cadence that seeds and syncs the matching schedules on that product's items. Changing its defining fields (name, kind, interval) reconciles linked item schedules in the background.
@@ -14627,55 +15092,55 @@ export type AssetsTransferResponseObject = {
14627
15092
  updated_at: string;
14628
15093
  };
14629
15094
  /**
14630
- * Move item stock. Each endpoint is a site, a user, or a container — give at most one per side. With both a source and a destination this is a two-sided transfer (returns the created transfer, 201). With a single open end it is a one-sided move — placing an unplaced item (destination only) or removing it from its holder (source only) — which records transactions but no transfer and returns 204. Moves are applied immediately, so the source must hold enough of each item.
15095
+ * Move item stock. Each endpoint is a site, a user, or a container — give at most one per side; more than one on a side, or no endpoint at all, answers 422. With both a source and a destination this is a two-sided transfer (returns the created transfer, 201). With a single open end it is a one-sided move — placing an unplaced item (destination only) or removing it from its holder (source only) — which records transactions but no transfer and returns 204. Moves are applied immediately, so the source must hold enough of each item.
14631
15096
  */
14632
15097
  export type AssetsTransferParameters = {
14633
15098
  /**
14634
- * ID of the source site. At most one source endpoint (site, user, or container).
15099
+ * ID of the source site. At most one source endpoint (site, user, or container); omit the others. Null, a blank ID, or a wrong type answers 422, and a site outside the company that owns the API key answers 404.
14635
15100
  */
14636
15101
  from_assets_site_id?: string;
14637
15102
  /**
14638
- * ID of the source user. At most one source endpoint (site, user, or container).
15103
+ * ID of the source user. At most one source endpoint (site, user, or container); omit the others. Null, a blank ID, or a wrong type answers 422, and a user holding none of the line items answers 404.
14639
15104
  */
14640
15105
  from_user_id?: string;
14641
15106
  /**
14642
- * ID of the source container item. At most one source endpoint (site, user, or container).
15107
+ * ID of the source container item. At most one source endpoint (site, user, or container); omit the others. Null, a blank ID, or a wrong type answers 422, and an item outside the company that owns the API key answers 404.
14643
15108
  */
14644
15109
  from_container_item_id?: string;
14645
15110
  /**
14646
- * ID of the destination site. At most one destination endpoint (site, user, or container).
15111
+ * Optional. The storage location within the source site or container the stock draws from. Omit or send null for the source's unbinned stock. A blank ID or a wrong type answers 422, a storage location outside the company that owns the API key answers 404, and one named without a source site or container, or not belonging to it, answers 422.
15112
+ */
15113
+ from_assets_sub_location_id?: string | null;
15114
+ /**
15115
+ * ID of the destination site. At most one destination endpoint (site, user, or container); omit the others. Null, a blank ID, or a wrong type answers 422, and a site outside the company that owns the API key answers 404.
14647
15116
  */
14648
15117
  to_assets_site_id?: string;
14649
15118
  /**
14650
- * ID of the destination user. At most one destination endpoint (site, user, or container).
15119
+ * ID of the destination user. At most one destination endpoint (site, user, or container); omit the others. Null, a blank ID, or a wrong type answers 422, and a user neither currently employed by nor holding a role in the company that owns the API key answers 404.
14651
15120
  */
14652
15121
  to_user_id?: string;
14653
15122
  /**
14654
- * ID of the destination container item. At most one destination endpoint (site, user, or container).
15123
+ * ID of the destination container item. At most one destination endpoint (site, user, or container); omit the others. Null, a blank ID, or a wrong type answers 422, and an item outside the company that owns the API key answers 404.
14655
15124
  */
14656
15125
  to_container_item_id?: string;
14657
15126
  /**
14658
- * Optional. The storage location within the source site or container the stock draws from; must belong to that endpoint. Omit for the source's unbinned stock.
15127
+ * Optional. The storage location within the destination site or container the stock lands in. Omit or send null for an unbinned destination. A blank ID or a wrong type answers 422, a storage location outside the company that owns the API key answers 404, and one named without a destination site or container, or not belonging to it, answers 422.
14659
15128
  */
14660
- from_assets_sub_location_id?: string;
14661
- /**
14662
- * Optional. The storage location within the destination site or container the stock lands in; must belong to that endpoint. Omit for an unbinned destination.
14663
- */
14664
- to_assets_sub_location_id?: string;
15129
+ to_assets_sub_location_id?: string | null;
14665
15130
  /**
14666
15131
  * ID of the user this move is performed on behalf of, recorded as its initiator. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422. A user outside the company that owns the API key answers 422.
14667
15132
  */
14668
15133
  performed_by_user_id: string;
14669
15134
  /**
14670
- * The items and quantities to move; at least one is required.
15135
+ * The items and quantities to move, as a list of row objects; at least one is required. Omission answers 400, and null, an empty list, or a value that is not a list answers 422. A row missing a field answers 400 naming it, and an unknown or wrongly typed row field answers 422 at that row.
14671
15136
  */
14672
15137
  line_items: Array<{
14673
15138
  /**
14674
- * ID of the asset item to move.
15139
+ * ID of the asset item to move. A blank ID or a wrong type answers 422 at its row, and an item outside the company that owns the API key answers 404.
14675
15140
  */
14676
15141
  assets_item_id: string;
14677
15142
  /**
14678
- * Number of units of the item to move; greater than 0.
15143
+ * Number of units of the item to move, as an integer of 1 or more. Any other value, a fraction or a numeric string included, answers 422 at its row.
14679
15144
  */
14680
15145
  quantity: number;
14681
15146
  }>;
@@ -15725,6 +16190,10 @@ export type CreatePeriodErrors = {
15725
16190
  * Forbidden
15726
16191
  */
15727
16192
  403: Problem;
16193
+ /**
16194
+ * Not Found
16195
+ */
16196
+ 404: Problem;
15728
16197
  /**
15729
16198
  * Unprocessable Content
15730
16199
  */
@@ -15996,6 +16465,10 @@ export type UpdateWageScheduleErrors = {
15996
16465
  * Not Found
15997
16466
  */
15998
16467
  404: Problem;
16468
+ /**
16469
+ * Unprocessable Content
16470
+ */
16471
+ 422: Problem;
15999
16472
  };
16000
16473
  export type UpdateWageScheduleError = UpdateWageScheduleErrors[keyof UpdateWageScheduleErrors];
16001
16474
  export type UpdateWageScheduleResponses = {
@@ -16873,7 +17346,7 @@ export type UpdateItemErrors = {
16873
17346
  */
16874
17347
  404: Problem;
16875
17348
  /**
16876
- * Unprocessable Content
17349
+ * Unprocessable Content (malformed row)
16877
17350
  */
16878
17351
  422: Problem;
16879
17352
  };
@@ -17827,7 +18300,7 @@ export type UpdateProductErrors = {
17827
18300
  */
17828
18301
  404: Problem;
17829
18302
  /**
17830
- * Unprocessable Content
18303
+ * Unprocessable Content (malformed row)
17831
18304
  */
17832
18305
  422: Problem;
17833
18306
  };
@@ -25740,6 +26213,10 @@ export type ListPayPeriodsData = {
25740
26213
  body?: never;
25741
26214
  path?: never;
25742
26215
  query?: {
26216
+ /**
26217
+ * The pay schedule family id, the same value each period returns as timekeeping_pay_period_config_id.
26218
+ */
26219
+ 'filter[timekeeping_pay_period_config_id]'?: string;
25743
26220
  'filter[start_time][gte]'?: string;
25744
26221
  'filter[start_time][lte]'?: string;
25745
26222
  filter?: string;
@@ -25779,6 +26256,32 @@ export type ListPayPeriodsResponses = {
25779
26256
  200: PayPeriodsResponseObject;
25780
26257
  };
25781
26258
  export type ListPayPeriodsResponse = ListPayPeriodsResponses[keyof ListPayPeriodsResponses];
26259
+ export type GetPayPeriodData = {
26260
+ body?: never;
26261
+ path: {
26262
+ id: string;
26263
+ };
26264
+ query?: never;
26265
+ url: '/api/v1/pay_periods/{id}';
26266
+ };
26267
+ export type GetPayPeriodErrors = {
26268
+ /**
26269
+ * Forbidden
26270
+ */
26271
+ 403: Problem;
26272
+ /**
26273
+ * Not Found
26274
+ */
26275
+ 404: Problem;
26276
+ };
26277
+ export type GetPayPeriodError = GetPayPeriodErrors[keyof GetPayPeriodErrors];
26278
+ export type GetPayPeriodResponses = {
26279
+ /**
26280
+ * Success
26281
+ */
26282
+ 200: PayPeriodResponseObject;
26283
+ };
26284
+ export type GetPayPeriodResponse = GetPayPeriodResponses[keyof GetPayPeriodResponses];
25782
26285
  export type ListCompensationElementsData = {
25783
26286
  body?: never;
25784
26287
  path?: never;
@@ -27429,6 +27932,10 @@ export type ListEmploymentsData = {
27429
27932
  * Return employments for this user ID.
27430
27933
  */
27431
27934
  'filter[user_id]'?: string;
27935
+ /**
27936
+ * Return employments whose version at the lens time (now, or `as_of[valid]`) belongs to this department.
27937
+ */
27938
+ 'filter[companies_department_id]'?: string;
27432
27939
  filter?: string;
27433
27940
  'filter[unexpected]'?: string;
27434
27941
  /**
@@ -28180,6 +28687,226 @@ export type UpdateCompletionResponses = {
28180
28687
  200: ProductionCompletionResponseObject;
28181
28688
  };
28182
28689
  export type UpdateCompletionResponse = UpdateCompletionResponses[keyof UpdateCompletionResponses];
28690
+ export type ListProjectDocumentVersionsData = {
28691
+ body?: never;
28692
+ path: {
28693
+ project_id: string;
28694
+ document_id: string;
28695
+ };
28696
+ query?: {
28697
+ /**
28698
+ * This pagination cursor corresponds to the cursor value found in the response in
28699
+ * `meta.page.next_cursor`.
28700
+ */
28701
+ 'page[cursor]'?: string;
28702
+ /**
28703
+ * 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`.
28704
+ */
28705
+ 'page[limit]'?: number;
28706
+ page?: string;
28707
+ };
28708
+ url: '/api/v1/projects/{project_id}/documents/{document_id}/versions';
28709
+ };
28710
+ export type ListProjectDocumentVersionsErrors = {
28711
+ /**
28712
+ * Bad Request
28713
+ */
28714
+ 400: Problem;
28715
+ /**
28716
+ * Forbidden
28717
+ */
28718
+ 403: Problem;
28719
+ /**
28720
+ * Not Found
28721
+ */
28722
+ 404: Problem;
28723
+ };
28724
+ export type ListProjectDocumentVersionsError = ListProjectDocumentVersionsErrors[keyof ListProjectDocumentVersionsErrors];
28725
+ export type ListProjectDocumentVersionsResponses = {
28726
+ /**
28727
+ * Success
28728
+ */
28729
+ 200: {
28730
+ meta: Meta;
28731
+ links: Links;
28732
+ data: Array<ProjectDocumentVersionResponseObject>;
28733
+ };
28734
+ };
28735
+ export type ListProjectDocumentVersionsResponse = ListProjectDocumentVersionsResponses[keyof ListProjectDocumentVersionsResponses];
28736
+ export type ListProjectDocumentsData = {
28737
+ body?: never;
28738
+ path: {
28739
+ project_id: string;
28740
+ };
28741
+ query?: {
28742
+ 'filter[created_at][gte]'?: string;
28743
+ 'filter[created_at][lte]'?: string;
28744
+ 'filter[updated_at][gte]'?: string;
28745
+ 'filter[updated_at][lte]'?: string;
28746
+ /**
28747
+ * This pagination cursor corresponds to the cursor value found in the response in
28748
+ * `meta.page.next_cursor`.
28749
+ */
28750
+ 'page[cursor]'?: string;
28751
+ /**
28752
+ * 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`.
28753
+ */
28754
+ 'page[limit]'?: number;
28755
+ page?: string;
28756
+ filter?: string;
28757
+ 'filter[unexpected]'?: string;
28758
+ };
28759
+ url: '/api/v1/projects/{project_id}/documents';
28760
+ };
28761
+ export type ListProjectDocumentsErrors = {
28762
+ /**
28763
+ * Bad Request
28764
+ */
28765
+ 400: Problem;
28766
+ /**
28767
+ * Forbidden
28768
+ */
28769
+ 403: Problem;
28770
+ /**
28771
+ * Not Found
28772
+ */
28773
+ 404: Problem;
28774
+ /**
28775
+ * Unprocessable Content
28776
+ */
28777
+ 422: Problem;
28778
+ };
28779
+ export type ListProjectDocumentsError = ListProjectDocumentsErrors[keyof ListProjectDocumentsErrors];
28780
+ export type ListProjectDocumentsResponses = {
28781
+ /**
28782
+ * Success
28783
+ */
28784
+ 200: {
28785
+ meta: Meta;
28786
+ links: Links;
28787
+ data: Array<ProjectDocumentResponseObject>;
28788
+ };
28789
+ };
28790
+ export type ListProjectDocumentsResponse = ListProjectDocumentsResponses[keyof ListProjectDocumentsResponses];
28791
+ export type CreateProjectDocumentData = {
28792
+ body: ProjectDocumentParameters;
28793
+ path: {
28794
+ project_id: string;
28795
+ };
28796
+ query?: never;
28797
+ url: '/api/v1/projects/{project_id}/documents';
28798
+ };
28799
+ export type CreateProjectDocumentErrors = {
28800
+ /**
28801
+ * Bad Request (missing performed_by_user_id)
28802
+ */
28803
+ 400: Problem;
28804
+ /**
28805
+ * Forbidden
28806
+ */
28807
+ 403: Problem;
28808
+ /**
28809
+ * Not Found
28810
+ */
28811
+ 404: Problem;
28812
+ /**
28813
+ * Unprocessable Content
28814
+ */
28815
+ 422: Problem;
28816
+ };
28817
+ export type CreateProjectDocumentError = CreateProjectDocumentErrors[keyof CreateProjectDocumentErrors];
28818
+ export type CreateProjectDocumentResponses = {
28819
+ /**
28820
+ * Created
28821
+ */
28822
+ 201: ProjectDocumentResponseObject;
28823
+ };
28824
+ export type CreateProjectDocumentResponse = CreateProjectDocumentResponses[keyof CreateProjectDocumentResponses];
28825
+ export type DeleteProjectDocumentData = {
28826
+ body?: never;
28827
+ path: {
28828
+ project_id: string;
28829
+ id: string;
28830
+ };
28831
+ query?: never;
28832
+ url: '/api/v1/projects/{project_id}/documents/{id}';
28833
+ };
28834
+ export type DeleteProjectDocumentErrors = {
28835
+ /**
28836
+ * Forbidden
28837
+ */
28838
+ 403: Problem;
28839
+ /**
28840
+ * Not Found
28841
+ */
28842
+ 404: Problem;
28843
+ };
28844
+ export type DeleteProjectDocumentError = DeleteProjectDocumentErrors[keyof DeleteProjectDocumentErrors];
28845
+ export type DeleteProjectDocumentResponses = {
28846
+ /**
28847
+ * No Content
28848
+ */
28849
+ 204: void;
28850
+ };
28851
+ export type DeleteProjectDocumentResponse = DeleteProjectDocumentResponses[keyof DeleteProjectDocumentResponses];
28852
+ export type GetProjectDocumentData = {
28853
+ body?: never;
28854
+ path: {
28855
+ project_id: string;
28856
+ id: string;
28857
+ };
28858
+ query?: never;
28859
+ url: '/api/v1/projects/{project_id}/documents/{id}';
28860
+ };
28861
+ export type GetProjectDocumentErrors = {
28862
+ /**
28863
+ * Forbidden
28864
+ */
28865
+ 403: Problem;
28866
+ /**
28867
+ * Not Found
28868
+ */
28869
+ 404: Problem;
28870
+ };
28871
+ export type GetProjectDocumentError = GetProjectDocumentErrors[keyof GetProjectDocumentErrors];
28872
+ export type GetProjectDocumentResponses = {
28873
+ /**
28874
+ * Success
28875
+ */
28876
+ 200: ProjectDocumentResponseObject;
28877
+ };
28878
+ export type GetProjectDocumentResponse = GetProjectDocumentResponses[keyof GetProjectDocumentResponses];
28879
+ export type UpdateProjectDocumentData = {
28880
+ body: ProjectDocumentUpdateParameters;
28881
+ path: {
28882
+ project_id: string;
28883
+ id: string;
28884
+ };
28885
+ query?: never;
28886
+ url: '/api/v1/projects/{project_id}/documents/{id}';
28887
+ };
28888
+ export type UpdateProjectDocumentErrors = {
28889
+ /**
28890
+ * Bad Request
28891
+ */
28892
+ 400: Problem;
28893
+ /**
28894
+ * Forbidden
28895
+ */
28896
+ 403: Problem;
28897
+ /**
28898
+ * Not Found
28899
+ */
28900
+ 404: Problem;
28901
+ };
28902
+ export type UpdateProjectDocumentError = UpdateProjectDocumentErrors[keyof UpdateProjectDocumentErrors];
28903
+ export type UpdateProjectDocumentResponses = {
28904
+ /**
28905
+ * Success
28906
+ */
28907
+ 200: ProjectDocumentResponseObject;
28908
+ };
28909
+ export type UpdateProjectDocumentResponse = UpdateProjectDocumentResponses[keyof UpdateProjectDocumentResponses];
28183
28910
  export type CreateProjectTradeData = {
28184
28911
  body: PwaTradeParameters;
28185
28912
  path: {
@@ -32457,10 +33184,10 @@ export type RemoveUserFromCompanyData = {
32457
33184
  body?: never;
32458
33185
  path: {
32459
33186
  user_id: string;
32460
- company_id: string;
33187
+ id: string;
32461
33188
  };
32462
33189
  query?: never;
32463
- url: '/api/v1/users/{user_id}/companies/{company_id}';
33190
+ url: '/api/v1/users/{user_id}/companies/{id}';
32464
33191
  };
32465
33192
  export type RemoveUserFromCompanyErrors = {
32466
33193
  /**
@@ -32487,10 +33214,10 @@ export type UpdateCompanyData = {
32487
33214
  body: UserCompanyParameters;
32488
33215
  path: {
32489
33216
  user_id: string;
32490
- company_id: string;
33217
+ id: string;
32491
33218
  };
32492
33219
  query?: never;
32493
- url: '/api/v1/users/{user_id}/companies/{company_id}';
33220
+ url: '/api/v1/users/{user_id}/companies/{id}';
32494
33221
  };
32495
33222
  export type UpdateCompanyErrors = {
32496
33223
  /**