@dsptch-work/api-client 0.35.0 → 0.37.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.
@@ -313,12 +313,6 @@ export type Problem = {
313
313
  *
314
314
  * An attachment signed id names no upload this endpoint can read. A signed id is issued for one `resource` and verifies only there, so an id for a different resource is indistinguishable from one that is malformed, expired, or tampered with, and all of them answer alike. The message names the resource the upload needed; upload the file again to the direct-uploads endpoint naming it, and pass the signed id that call returns.
315
315
  *
316
- * ### non_numeric_cents
317
- *
318
- * **Non-Numeric Money Value**
319
- *
320
- * A money parameter is not a numeric value in cents. Send money as a numeric cents value.
321
- *
322
316
  * ### nothing_to_cancel
323
317
  *
324
318
  * **Nothing To Cancel**
@@ -400,7 +394,7 @@ export type Problem = {
400
394
  * Another write to the same resource held it for longer than this request was willing to wait, or collided with it, so nothing was applied. The request itself is fine — resend it unchanged after the `Retry-After` window.
401
395
  *
402
396
  */
403
- export type ProblemTypeCatalog = 'blank_axis' | 'invalid_cursor' | 'invalid_filter_key' | 'invalid_limit' | 'invalid_signature' | 'malformed_body' | 'non_range_filter_value' | 'non_scalar_axis' | 'non_scalar_filter_value' | 'parameter_missing' | 'parameter_not_object' | 'unknown_axis' | 'unknown_key' | 'unsupported_axis' | 'valid_axis_on_timeline' | 'unauthorized' | 'company_scoped_key_required' | 'forbidden' | 'forbidden_key' | 'insufficient_api_key_scope' | 'user_scoped_key_required' | 'not_found' | 'already_subscribed' | 'already_terminated' | 'authorization_revoked' | 'import_in_progress' | 'pay_schedule_already_exists' | 'product_archived' | 'recorded_since_termination' | 'span_beyond_timeline_end' | 'version_overlap' | 'precondition_failed' | 'attachment_not_image' | 'company_not_employer' | 'confirm_apprenticeship_conflict' | 'destroy_restricted' | 'interval_too_wide' | 'invalid_date' | 'invalid_filter_value' | 'invalid_iso8601_duration' | 'invalid_placement_move' | 'invalid_signed_id' | 'non_numeric_cents' | 'nothing_to_cancel' | 'pagination_failed' | 'subtype_foreign_keys' | 'synced_determination' | 'user_not_company_member' | 'validation_failed' | 'wage_schedule_outside_program' | 'precondition_required' | 'too_many_requests' | 'internal_error' | 'database_timeout' | 'write_contended';
397
+ export type ProblemTypeCatalog = 'blank_axis' | 'invalid_cursor' | 'invalid_filter_key' | 'invalid_limit' | 'invalid_signature' | 'malformed_body' | 'non_range_filter_value' | 'non_scalar_axis' | 'non_scalar_filter_value' | 'parameter_missing' | 'parameter_not_object' | 'unknown_axis' | 'unknown_key' | 'unsupported_axis' | 'valid_axis_on_timeline' | 'unauthorized' | 'company_scoped_key_required' | 'forbidden' | 'forbidden_key' | 'insufficient_api_key_scope' | 'user_scoped_key_required' | 'not_found' | 'already_subscribed' | 'already_terminated' | 'authorization_revoked' | 'import_in_progress' | 'pay_schedule_already_exists' | 'product_archived' | 'recorded_since_termination' | 'span_beyond_timeline_end' | 'version_overlap' | 'precondition_failed' | 'attachment_not_image' | 'company_not_employer' | 'confirm_apprenticeship_conflict' | 'destroy_restricted' | 'interval_too_wide' | 'invalid_date' | 'invalid_filter_value' | 'invalid_iso8601_duration' | 'invalid_placement_move' | 'invalid_signed_id' | 'nothing_to_cancel' | 'pagination_failed' | 'subtype_foreign_keys' | 'synced_determination' | 'user_not_company_member' | 'validation_failed' | 'wage_schedule_outside_program' | 'precondition_required' | 'too_many_requests' | 'internal_error' | 'database_timeout' | 'write_contended';
404
398
  export type ApiKeyScopeResponseObject = {
405
399
  resource: string;
406
400
  action: 'read' | 'create' | 'update' | 'delete';
@@ -413,7 +407,7 @@ export type DirectUploadParameters = {
413
407
  /**
414
408
  * 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
409
  */
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';
410
+ 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' | 'jobs.documents' | '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
411
  /**
418
412
  * Metadata describing the file being registered, before its bytes are uploaded.
419
413
  */
@@ -769,9 +763,9 @@ export type CompetencyCriterionResponseObject = {
769
763
  */
770
764
  evidence_note: string | null;
771
765
  /**
772
- * Suggested assessment method for this criterion; null when unset. An assessment does not have to use it.
766
+ * Suggested assessment methods for this criterion. Empty when none are suggested. An assessment does not have to use them.
773
767
  */
774
- assessment_method: 'direct_observation' | 'simulation' | 'oral_questioning' | 'written_questioning' | 'products_of_work' | 'recognized_prior_learning' | 'witness_testimony' | 'other' | null;
768
+ assessment_methods: Array<'direct_observation' | 'simulation' | 'oral_questioning' | 'written_questioning' | 'products_of_work' | 'recognized_prior_learning' | 'witness_testimony' | 'other'>;
775
769
  /**
776
770
  * When the criterion was created.
777
771
  */
@@ -798,9 +792,9 @@ export type CompetencyCriterionParameters = {
798
792
  */
799
793
  evidence_note?: string | null;
800
794
  /**
801
- * Suggested assessment method; optional, null to clear.
795
+ * Suggested assessment methods. Optional. Send an empty array to clear.
802
796
  */
803
- assessment_method?: 'direct_observation' | 'simulation' | 'oral_questioning' | 'written_questioning' | 'products_of_work' | 'recognized_prior_learning' | 'witness_testimony' | 'other' | null;
797
+ assessment_methods?: Array<'direct_observation' | 'simulation' | 'oral_questioning' | 'written_questioning' | 'products_of_work' | 'recognized_prior_learning' | 'witness_testimony' | 'other'>;
804
798
  };
805
799
  /**
806
800
  * Swap a draft catalog row with its neighbor. The row cannot move past either end of the list.
@@ -1019,9 +1013,9 @@ export type CompetencyAssessmentResponseObject = {
1019
1013
  updated_at: string;
1020
1014
  };
1021
1015
  /**
1022
- * One task line on an assessment. decision and qa_feedback are omitted, not null, when the caller is the candidate and the package is not yet decided.
1016
+ * One criterion line on an assessment. decision and qa_feedback are omitted, not null, when the caller is the candidate and the package is not yet decided.
1023
1017
  */
1024
- export type CompetencyAssessmentKeyActivityResponseObject = {
1018
+ export type CompetencyAssessmentCriterionResponseObject = {
1025
1019
  /**
1026
1020
  * ID of the line.
1027
1021
  */
@@ -1031,9 +1025,9 @@ export type CompetencyAssessmentKeyActivityResponseObject = {
1031
1025
  */
1032
1026
  competencies_assessment_id: string;
1033
1027
  /**
1034
- * ID of the catalog key activity snapshotted onto the line.
1028
+ * ID of the catalog criterion snapshotted onto the line.
1035
1029
  */
1036
- competencies_key_activity_id: string;
1030
+ competencies_criterion_id: string;
1037
1031
  /**
1038
1032
  * Methods the assessor recorded for this line. Empty when none have been recorded.
1039
1033
  */
@@ -1090,7 +1084,7 @@ export type CompetencyEvidenceItemResponseObject = {
1090
1084
  /**
1091
1085
  * ID of the assessment line this evidence is attached to.
1092
1086
  */
1093
- competencies_assessment_key_activity_id: string;
1087
+ competencies_assessment_criterion_id: string;
1094
1088
  /**
1095
1089
  * What the evidence points at: upload, form_submission, or certification.
1096
1090
  */
@@ -1706,7 +1700,7 @@ export type ApprenticeshipProgramEmployerUpdateParameters = {
1706
1700
  require_timecard_allocation?: boolean;
1707
1701
  };
1708
1702
  /**
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.
1703
+ * Create a period on a wage schedule; the wage schedule is taken from the URL path. wage_percent and fringe_percent are sent as decimal strings (e.g. "62.5"), and wage_cents and fringe_cents as cents in a decimal string (e.g. "2800" or "2800.0"). 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.
1710
1704
  */
1711
1705
  export type ApprenticeshipWageSchedulePeriodParameters = {
1712
1706
  /**
@@ -1730,24 +1724,24 @@ export type ApprenticeshipWageSchedulePeriodParameters = {
1730
1724
  */
1731
1725
  description?: string | null;
1732
1726
  /**
1733
- * Percentage of the journeyworker wage paid during this period (e.g. 75 for 75%). Required.
1727
+ * Percentage of the journeyworker wage paid during this period, as a decimal string (e.g. "75" or "75.0" for 75%). Required.
1734
1728
  */
1735
- wage_percent: number;
1729
+ wage_percent: string;
1736
1730
  /**
1737
- * Wage rate for this period, in cents; denominated in the parent schedule's wage_unit. Required.
1731
+ * Wage rate for this period, in cents as a decimal string (e.g. "3150" or "3150.0"); denominated in the parent schedule's wage_unit. Required.
1738
1732
  */
1739
- wage_cents: number;
1733
+ wage_cents: string;
1740
1734
  /**
1741
- * 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.
1735
+ * Apprentice fringe for this period, as a percentage of the fringe on the wage determination the apprentice charges, sent as a decimal string (e.g. "70" or "70.0" 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.
1742
1736
  */
1743
- fringe_percent?: number | null;
1737
+ fringe_percent?: string | null;
1744
1738
  /**
1745
- * Fixed hourly apprentice fringe for this period, in cents, in the period's wage currency; optional, omit or send null when the period does not list a fixed fringe. A period lists fringe one way at most, so sending both fringe_percent and fringe_cents non-null is rejected with a 422.
1739
+ * Fixed hourly apprentice fringe for this period, in cents as a decimal string (e.g. "450" or "450.0"), in the period's wage currency; optional, omit or send null when the period does not list a fixed fringe. A period lists fringe one way at most, so sending both fringe_percent and fringe_cents non-null is rejected with a 422.
1746
1740
  */
1747
- fringe_cents?: number | null;
1741
+ fringe_cents?: string | null;
1748
1742
  };
1749
1743
  /**
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.
1744
+ * Update a period on a wage schedule. Send only the fields to change; the wage schedule is taken from the URL path, wage_percent and fringe_percent are sent as decimal strings (e.g. "62.5"), and wage_cents and fringe_cents as cents in a decimal string (e.g. "2800" or "2800.0"). 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.
1751
1745
  */
1752
1746
  export type ApprenticeshipWageSchedulePeriodUpdateParameters = {
1753
1747
  /**
@@ -1755,15 +1749,15 @@ export type ApprenticeshipWageSchedulePeriodUpdateParameters = {
1755
1749
  */
1756
1750
  period_number?: number;
1757
1751
  /**
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. A newly added period must set at least one of min_minutes, max_minutes, or num_competencies.
1752
+ * 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.
1759
1753
  */
1760
1754
  min_minutes?: number | null;
1761
1755
  /**
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. A newly added period must set at least one of min_minutes, max_minutes, or num_competencies.
1756
+ * 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.
1763
1757
  */
1764
1758
  max_minutes?: number | null;
1765
1759
  /**
1766
- * 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.
1760
+ * 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.
1767
1761
  */
1768
1762
  num_competencies?: number | null;
1769
1763
  /**
@@ -1771,24 +1765,24 @@ export type ApprenticeshipWageSchedulePeriodUpdateParameters = {
1771
1765
  */
1772
1766
  description?: string | null;
1773
1767
  /**
1774
- * Percentage of the journeyworker wage paid during this period (e.g. 75 for 75%); omit to leave it unchanged.
1768
+ * Percentage of the journeyworker wage paid during this period, as a decimal string (e.g. "75" or "75.0" for 75%); omit to leave it unchanged.
1775
1769
  */
1776
- wage_percent?: number;
1770
+ wage_percent?: string;
1777
1771
  /**
1778
- * Wage rate for this period, in cents; omit to leave it unchanged.
1772
+ * Wage rate for this period, in cents as a decimal string (e.g. "3150" or "3150.0"); omit to leave it unchanged.
1779
1773
  */
1780
- wage_cents?: number;
1774
+ wage_cents?: string;
1781
1775
  /**
1782
- * Apprentice fringe for this period, as a percentage of the fringe on the wage determination the apprentice charges (e.g. 70 for 70%); omit to leave it unchanged, or send null to clear. A period lists fringe one way at most, so switching to a fixed amount sends fringe_cents with fringe_percent null; a request that leaves both set is rejected with a 422.
1776
+ * Apprentice fringe for this period, as a percentage of the fringe on the wage determination the apprentice charges, sent as a decimal string (e.g. "70" or "70.0" for 70%); omit to leave it unchanged, or send null to clear. A period lists fringe one way at most, so switching to a fixed amount sends fringe_cents with fringe_percent null; a request that leaves both set is rejected with a 422.
1783
1777
  */
1784
- fringe_percent?: number | null;
1778
+ fringe_percent?: string | null;
1785
1779
  /**
1786
- * Fixed hourly apprentice fringe for this period, in cents; omit to leave it unchanged, or send null to clear. A period lists fringe one way at most, so switching to a percentage sends fringe_percent with fringe_cents null; a request that leaves both set is rejected with a 422.
1780
+ * Fixed hourly apprentice fringe for this period, in cents as a decimal string (e.g. "450" or "450.0"); omit to leave it unchanged, or send null to clear. A period lists fringe one way at most, so switching to a percentage sends fringe_percent with fringe_cents null; a request that leaves both set is rejected with a 422.
1787
1781
  */
1788
- fringe_cents?: number | null;
1782
+ fringe_cents?: string | null;
1789
1783
  };
1790
1784
  /**
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.
1785
+ * Create a wage schedule for an occupation; the occupation is taken from the URL path. Money is sent as cents in a decimal string (e.g. "2800" or "2800.0"); 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.
1792
1786
  */
1793
1787
  export type ApprenticeshipWageScheduleParameters = {
1794
1788
  /**
@@ -1812,19 +1806,19 @@ export type ApprenticeshipWageScheduleParameters = {
1812
1806
  */
1813
1807
  period_unit: 'hours' | 'weeks' | 'months' | 'quarter' | 'semi_annual' | 'year';
1814
1808
  /**
1815
- * The journeyworker wage to progress toward, in cents; denominated in journeyworker_wage_unit; optional, defaults to 0.
1809
+ * The journeyworker wage to progress toward, in cents as a decimal string (e.g. "5000" or "5000.0"); denominated in journeyworker_wage_unit; optional, defaults to 0.
1816
1810
  */
1817
- journeyworker_wage_cents?: number;
1811
+ journeyworker_wage_cents?: string;
1818
1812
  /**
1819
- * The journeyworker fringe that percentage-listed periods are authored against, in cents; an authoring reference only, never priced; optional, omit or send null to leave it unset.
1813
+ * The journeyworker fringe that percentage-listed periods are authored against, in cents as a decimal string (e.g. "2000" or "2000.0"); an authoring reference only, never priced; optional, omit or send null to leave it unset.
1820
1814
  */
1821
- journeyworker_fringe_cents?: number | null;
1815
+ journeyworker_fringe_cents?: string | null;
1822
1816
  /**
1823
- * Wage at the end of the progression (100% of the journeyworker wage), in cents; denominated in wage_unit; optional, defaults to 0.
1817
+ * Wage at the end of the progression (100% of the journeyworker wage), in cents as a decimal string (e.g. "4200" or "4200.0"); denominated in wage_unit; optional, defaults to 0.
1824
1818
  */
1825
- end_wage_cents?: number;
1819
+ end_wage_cents?: string;
1826
1820
  /**
1827
- * 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.
1821
+ * 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.
1828
1822
  */
1829
1823
  periods_attributes?: Array<{
1830
1824
  /**
@@ -1834,7 +1828,7 @@ export type ApprenticeshipWageScheduleParameters = {
1834
1828
  /**
1835
1829
  * 0-indexed position of this period in the progression. Required.
1836
1830
  */
1837
- period_number: number;
1831
+ period_number?: number;
1838
1832
  /**
1839
1833
  * 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.
1840
1834
  */
@@ -1852,21 +1846,21 @@ export type ApprenticeshipWageScheduleParameters = {
1852
1846
  */
1853
1847
  description?: string | null;
1854
1848
  /**
1855
- * Percentage of the journeyworker wage paid during this period (e.g. 75 for 75%). Required.
1849
+ * Percentage of the journeyworker wage paid during this period, as a decimal string (e.g. "75" or "75.0" for 75%). Required.
1856
1850
  */
1857
- wage_percent: number;
1851
+ wage_percent?: string;
1858
1852
  /**
1859
- * Wage rate for this period, in cents; denominated in the parent schedule's wage_unit. Required.
1853
+ * Wage rate for this period, in cents as a decimal string (e.g. "3150" or "3150.0"); denominated in the parent schedule's wage_unit. Required.
1860
1854
  */
1861
- wage_cents: number;
1855
+ wage_cents?: string;
1862
1856
  /**
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.
1857
+ * Apprentice fringe for this period, as a percentage of the fringe on the wage determination the apprentice charges, sent as a decimal string (e.g. "70" or "70.0" 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.
1864
1858
  */
1865
- fringe_percent?: number | null;
1859
+ fringe_percent?: string | null;
1866
1860
  /**
1867
- * Fixed hourly apprentice fringe for this period, in cents, in the period's wage currency; optional, omit or send null when the period does not list a fixed fringe. A period lists fringe one way at most, so sending both fringe_percent and fringe_cents non-null is rejected with a 422.
1861
+ * Fixed hourly apprentice fringe for this period, in cents as a decimal string (e.g. "450" or "450.0"), in the period's wage currency; optional, omit or send null when the period does not list a fixed fringe. A period lists fringe one way at most, so sending both fringe_percent and fringe_cents non-null is rejected with a 422.
1868
1862
  */
1869
- fringe_cents?: number | null;
1863
+ fringe_cents?: string | null;
1870
1864
  /**
1871
1865
  * Set to true, together with the period's id, to remove that period from the schedule.
1872
1866
  */
@@ -1874,7 +1868,7 @@ export type ApprenticeshipWageScheduleParameters = {
1874
1868
  }>;
1875
1869
  };
1876
1870
  /**
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.
1871
+ * Update a wage schedule for an occupation. Send only the fields to change; money is sent as cents in a decimal string (e.g. "2800" or "2800.0") 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.
1878
1872
  */
1879
1873
  export type ApprenticeshipWageScheduleUpdateParameters = {
1880
1874
  /**
@@ -1898,29 +1892,21 @@ export type ApprenticeshipWageScheduleUpdateParameters = {
1898
1892
  */
1899
1893
  period_unit?: 'hours' | 'weeks' | 'months' | 'quarter' | 'semi_annual' | 'year';
1900
1894
  /**
1901
- * Journeyworker wage to progress toward, in cents; omit to leave it unchanged.
1895
+ * Journeyworker wage to progress toward, in cents as a decimal string (e.g. "5000" or "5000.0"); omit to leave it unchanged.
1902
1896
  */
1903
- journeyworker_wage_cents?: number;
1897
+ journeyworker_wage_cents?: string;
1904
1898
  /**
1905
- * The journeyworker fringe that percentage-listed periods are authored against, in cents; an authoring reference only, never priced; omit to leave it unchanged, or send null to clear.
1899
+ * The journeyworker fringe that percentage-listed periods are authored against, in cents as a decimal string (e.g. "2000" or "2000.0"); an authoring reference only, never priced; omit to leave it unchanged, or send null to clear.
1906
1900
  */
1907
- journeyworker_fringe_cents?: number | null;
1901
+ journeyworker_fringe_cents?: string | null;
1908
1902
  /**
1909
- * Wage at the end of the progression, in cents; omit to leave it unchanged.
1903
+ * Wage at the end of the progression, in cents as a decimal string (e.g. "4200" or "4200.0"); omit to leave it unchanged.
1910
1904
  */
1911
- end_wage_cents?: number;
1905
+ end_wage_cents?: string;
1912
1906
  /**
1913
- * 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.
1907
+ * 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.
1914
1908
  */
1915
- periods_attributes?: Array<(unknown | {
1916
- min_minutes: number;
1917
- } | {
1918
- max_minutes: number;
1919
- } | {
1920
- num_competencies: number;
1921
- } | {
1922
- _destroy: true;
1923
- }) & {
1909
+ periods_attributes?: Array<{
1924
1910
  /**
1925
1911
  * Unique identifier.
1926
1912
  */
@@ -1930,15 +1916,15 @@ export type ApprenticeshipWageScheduleUpdateParameters = {
1930
1916
  */
1931
1917
  period_number?: number;
1932
1918
  /**
1933
- * 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.
1919
+ * 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.
1934
1920
  */
1935
1921
  min_minutes?: number | null;
1936
1922
  /**
1937
- * 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.
1923
+ * 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.
1938
1924
  */
1939
1925
  max_minutes?: number | null;
1940
1926
  /**
1941
- * 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.
1927
+ * 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.
1942
1928
  */
1943
1929
  num_competencies?: number | null;
1944
1930
  /**
@@ -1946,21 +1932,21 @@ export type ApprenticeshipWageScheduleUpdateParameters = {
1946
1932
  */
1947
1933
  description?: string | null;
1948
1934
  /**
1949
- * Percentage of the journeyworker wage paid during this period (e.g. 75 for 75%); omit to leave it unchanged.
1935
+ * Percentage of the journeyworker wage paid during this period, as a decimal string (e.g. "75" or "75.0" for 75%); omit to leave it unchanged.
1950
1936
  */
1951
- wage_percent?: number;
1937
+ wage_percent?: string;
1952
1938
  /**
1953
- * Wage rate for this period, in cents; omit to leave it unchanged.
1939
+ * Wage rate for this period, in cents as a decimal string (e.g. "3150" or "3150.0"); omit to leave it unchanged.
1954
1940
  */
1955
- wage_cents?: number;
1941
+ wage_cents?: string;
1956
1942
  /**
1957
- * Apprentice fringe for this period, as a percentage of the fringe on the wage determination the apprentice charges (e.g. 70 for 70%); omit to leave it unchanged, or send null to clear. A period lists fringe one way at most, so switching to a fixed amount sends fringe_cents with fringe_percent null; a request that leaves both set is rejected with a 422.
1943
+ * Apprentice fringe for this period, as a percentage of the fringe on the wage determination the apprentice charges, sent as a decimal string (e.g. "70" or "70.0" for 70%); omit to leave it unchanged, or send null to clear. A period lists fringe one way at most, so switching to a fixed amount sends fringe_cents with fringe_percent null; a request that leaves both set is rejected with a 422.
1958
1944
  */
1959
- fringe_percent?: number | null;
1945
+ fringe_percent?: string | null;
1960
1946
  /**
1961
- * Fixed hourly apprentice fringe for this period, in cents; omit to leave it unchanged, or send null to clear. A period lists fringe one way at most, so switching to a percentage sends fringe_percent with fringe_cents null; a request that leaves both set is rejected with a 422.
1947
+ * Fixed hourly apprentice fringe for this period, in cents as a decimal string (e.g. "450" or "450.0"); omit to leave it unchanged, or send null to clear. A period lists fringe one way at most, so switching to a percentage sends fringe_percent with fringe_cents null; a request that leaves both set is rejected with a 422.
1962
1948
  */
1963
- fringe_cents?: number | null;
1949
+ fringe_cents?: string | null;
1964
1950
  /**
1965
1951
  * Set to true, together with the period's id, to remove that period from the schedule.
1966
1952
  */
@@ -2553,6 +2539,10 @@ export type TimecodeHistoryVersionObject = {
2553
2539
  * 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.
2554
2540
  */
2555
2541
  export type TimecodeParameters = {
2542
+ /**
2543
+ * When the new timecode becomes effective, as a calendar date (`YYYY-MM-DD`) stored as midnight UTC. A time sent with it is kept, not dropped, and is read as UTC unless it carries an offset (`Z` or `-05:00`). Defaults to the time of the request. Accepted on create only.
2544
+ */
2545
+ effective_date?: string;
2556
2546
  /**
2557
2547
  * Human-readable name of the timecode. Required; must be unique within the company.
2558
2548
  */
@@ -2613,10 +2603,6 @@ export type TimecodeParameters = {
2613
2603
  * Where the timecode may be applied: none, job, non_job, or job_with_timecode. Defaults to none on create.
2614
2604
  */
2615
2605
  restricted_to?: 'none' | 'job' | 'non_job' | 'job_with_timecode';
2616
- /**
2617
- * When the new timecode becomes effective. Defaults to the time of the request. Accepted on create only.
2618
- */
2619
- effective_date?: string;
2620
2606
  };
2621
2607
  /**
2622
2608
  * 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.
@@ -2710,7 +2696,7 @@ export type TimecodeScheduledTerminationParameters = {
2710
2696
  effective_date: string;
2711
2697
  };
2712
2698
  /**
2713
- * 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.
2699
+ * 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.
2714
2700
  */
2715
2701
  export type TimecodeScheduledChangeParameters = {
2716
2702
  /**
@@ -2718,9 +2704,9 @@ export type TimecodeScheduledChangeParameters = {
2718
2704
  */
2719
2705
  effective_date: string;
2720
2706
  /**
2721
- * Timecode name to apply from the effective date. Required.
2707
+ * Timecode name to apply from the effective date; omit it to keep the current name.
2722
2708
  */
2723
- name: string;
2709
+ name?: string;
2724
2710
  /**
2725
2711
  * Free-text description to apply; null clears it.
2726
2712
  */
@@ -3213,7 +3199,7 @@ export type AssetsAttributeResponseObject = {
3213
3199
  updated_at: string;
3214
3200
  };
3215
3201
  /**
3216
- * 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.
3202
+ * 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.
3217
3203
  */
3218
3204
  export type AssetsAttributeParameters = {
3219
3205
  /**
@@ -3225,7 +3211,7 @@ export type AssetsAttributeParameters = {
3225
3211
  */
3226
3212
  data_type: 'text' | 'number' | 'date' | 'boolean' | 'select';
3227
3213
  /**
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.
3214
+ * 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
3215
  */
3230
3216
  options?: Array<{
3231
3217
  /**
@@ -3247,7 +3233,7 @@ export type AssetsAttributeParameters = {
3247
3233
  }>;
3248
3234
  };
3249
3235
  /**
3250
- * 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.
3236
+ * 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.
3251
3237
  */
3252
3238
  export type AssetsAttributeUpdateParameters = {
3253
3239
  /**
@@ -3259,7 +3245,7 @@ export type AssetsAttributeUpdateParameters = {
3259
3245
  */
3260
3246
  data_type?: 'text' | 'number' | 'date' | 'boolean' | 'select';
3261
3247
  /**
3262
- * 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.
3248
+ * 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.
3263
3249
  */
3264
3250
  options?: Array<{
3265
3251
  /**
@@ -4639,62 +4625,69 @@ export type PwaJobDetailsResponseObject = {
4639
4625
  ny_dol_prc_number?: string | null;
4640
4626
  } | null;
4641
4627
  /**
4642
- * Fields shared by job creation and updates. Updates may omit any field to preserve its current value. The resulting job must still satisfy its schedule and PWA validation rules.
4628
+ * Parameters for creating a job. Sets the job's schedule, work types, address, custom-field values, and optional Prevailing Wage / Apprenticeship (PWA) compliance. `requested_by_company_id` and `created_by_user_id` are required unless `template_id` names a template, whose copy keeps both. 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 job or relationship is saved.
4643
4629
  */
4644
- export type JobParameters = {
4630
+ export type JobCreateParameters = {
4631
+ /**
4632
+ * ID of the user creating the job; the creator cannot be changed afterward. A copy of a template keeps the template's creator when this is omitted. Null, a blank ID, or a wrong type answers 422.
4633
+ */
4634
+ created_by_user_id?: string;
4635
+ /**
4636
+ * ID of a job template to copy this job from; when set, the new job is created from that template. Null or omit to start from a blank job; a blank ID or a wrong type answers 422.
4637
+ */
4638
+ template_id?: string | null;
4645
4639
  /**
4646
4640
  * Human-readable job name, unique within the creating company; null when unset.
4647
4641
  */
4648
4642
  name?: string | null;
4649
4643
  /**
4650
- * Free-text description of the job.
4644
+ * Free-text description of the job. Null or a wrong type answers 422.
4651
4645
  */
4652
4646
  description?: string;
4653
4647
  /**
4654
- * ID of the company that requested the job (for example a general contractor). Required on create; omit on update to preserve the existing requester.
4648
+ * ID of the company that requested the job (for example a general contractor). Omit on update to preserve the existing requester. Null, a blank ID, or a wrong type answers 422.
4655
4649
  */
4656
4650
  requested_by_company_id?: string;
4657
- /**
4658
- * Complete desired set of unique nonblank manager user IDs. Omit to preserve the set; send an empty array to clear it. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before any job or relationship is saved.
4659
- */
4660
- manager_user_ids?: Array<string>;
4661
4651
  /**
4662
4652
  * Purchase order number for the job; null when unset.
4663
4653
  */
4664
4654
  purchase_order_number?: string | null;
4665
4655
  /**
4666
- * ID of the project this job belongs to; null when the job is not part of a project.
4656
+ * ID of the project this job belongs to; null when the job is not part of a project. A blank ID or a wrong type answers 422.
4667
4657
  */
4668
4658
  project_id?: string | null;
4669
4659
  /**
4670
- * ID of a department belonging to the job's provider company. Retrieve department IDs from GET /api/v1/companies/departments. Send null to clear the assignment; omit on update to preserve it, or on create to preserve a copied template's assignment. A new job without a template starts unassigned.
4660
+ * ID of a department belonging to the job's provider company. Retrieve department IDs from GET /api/v1/companies/departments. Send null to clear the assignment; omit on update to preserve it, or on create to preserve a copied template's assignment. A new job without a template starts unassigned. A blank ID or a wrong type answers 422.
4671
4661
  */
4672
4662
  companies_department_id?: string | null;
4673
4663
  /**
4674
- * Federal prevailing-wage / apprenticeship (PWA) tracking mode: one of all (both prevailing wage and apprenticeship), pw_only, ap_only, or none.
4664
+ * Federal prevailing-wage / apprenticeship (PWA) tracking mode: one of all (both prevailing wage and apprenticeship), pw_only, ap_only, or none. Null or any other value returns 422.
4675
4665
  */
4676
4666
  federal_pwa_mode?: 'all' | 'pw_only' | 'ap_only' | 'none';
4677
4667
  /**
4678
- * Regional (state) prevailing-wage / apprenticeship tracking mode: one of all (both prevailing wage and apprenticeship), pw_only, ap_only, or none.
4668
+ * Regional (state) prevailing-wage / apprenticeship tracking mode, with the same values as federal_pwa_mode; null or any other value returns 422.
4679
4669
  */
4680
4670
  regional_pwa_mode?: 'all' | 'pw_only' | 'ap_only' | 'none';
4681
4671
  /**
4682
4672
  * Two-letter state code (e.g. CA, IL, NY) that selects which regional prevailing-wage fields under pwa_details apply.
4683
4673
  */
4684
- region?: string;
4674
+ region?: string | null;
4685
4675
  /**
4686
- * Start of the job's scheduled window (ISO 8601); the date is anchored to the start of that day in tz_name. Null to leave the job unscheduled.
4676
+ * Start of the job's scheduled window (ISO 8601); the date is anchored to the start of that day in tz_name. Null to leave the job unscheduled; any other non-string, false included, answers 422.
4687
4677
  */
4688
4678
  start_time?: string | null;
4689
4679
  /**
4690
- * End of the job's scheduled window (ISO 8601); the date is anchored to the start of that day in tz_name. Null to leave the job unscheduled.
4680
+ * End of the job's scheduled window (ISO 8601); the date is anchored to the start of that day in tz_name. Null to leave the job unscheduled; any other non-string, false included, answers 422.
4691
4681
  */
4692
4682
  end_time?: string | null;
4693
4683
  /**
4694
- * Time zone the job's schedule and time tracking are anchored to (e.g. US/Central); defaults to US/Central when unset.
4684
+ * Time zone the job's schedule and time tracking are anchored to (e.g. US/Central); defaults to US/Central when unset. Null, a blank or unlisted name, or a wrong type answers 422.
4695
4685
  */
4696
4686
  tz_name?: string;
4697
- time_card_start_day?: TimeCardStartDay;
4687
+ /**
4688
+ * Day of the week the job's workweek and time cards start on, as an integer: 0 (Sunday) through 6 (Saturday). Any other value, a numeric string included, answers 422.
4689
+ */
4690
+ time_card_start_day?: number;
4698
4691
  /**
4699
4692
  * Clock-in enforcement level: one of none (no guidance), warning (manual time entries fail the clock-in compliance check), or required (a technician's own time on the job must come from clocking in on DSPTCH Mobile; the technician's own web and user-API-key time-entry writes are refused). A time entry whose time code, as of the entry's start time, is PTO, holiday, or restricted to non-job time entries is exempt at every level. Time-entry writes made with a company API key are not gated. While the creating company requires clock-in company-wide, a create stores `required` whatever value is sent, and lowering an open job returns 422 with the error at `#/clock_in_requirement`. Omit the field to leave the current value unchanged.
4700
4693
  */
@@ -4704,31 +4697,35 @@ export type JobParameters = {
4704
4697
  */
4705
4698
  send_geofence_reminders?: boolean | null;
4706
4699
  /**
4707
- * Whether customers granted access can view this job.
4700
+ * Whether customers granted access can view this job. A boolean; null or any other type returns 422.
4708
4701
  */
4709
4702
  allow_customer_access?: boolean;
4710
4703
  /**
4711
- * Complete desired set of unique nonblank timecode IDs. Omit to preserve the set; send an empty array to clear it. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before any job or relationship is saved.
4712
- */
4713
- timekeeping_timecode_ids?: Array<string>;
4714
- /**
4715
- * Whether the feature-allocation selector is shown for this job; null when unset.
4704
+ * Whether the feature-allocation selector is shown for this job. A boolean; null or any other type returns 422.
4716
4705
  */
4717
- tracks_feature_allocations?: boolean | null;
4706
+ tracks_feature_allocations?: boolean;
4718
4707
  /**
4719
- * Whether applicable time entries on this job must carry a feature allocation; null when unset.
4708
+ * Whether applicable time entries on this job must carry a feature allocation. A boolean; null or any other type returns 422.
4720
4709
  */
4721
- requires_feature_allocation?: boolean | null;
4710
+ requires_feature_allocation?: boolean;
4722
4711
  /**
4723
- * Whether time entries on this job are capped at one feature allocation; null when unset.
4712
+ * Whether time entries on this job are capped at one feature allocation. A boolean; null or any other type returns 422.
4724
4713
  */
4725
- max_one_feature_allocation?: boolean | null;
4714
+ max_one_feature_allocation?: boolean;
4726
4715
  /**
4727
4716
  * How this job records production completions: one of none (opts out), feature (per site feature, e.g. a turbine), or quantity (a unit count, e.g. modules). Locked once any completion exists. Omit the field to leave the current value unchanged.
4728
4717
  */
4729
4718
  production_tracking_kind?: 'none' | 'feature' | 'quantity';
4730
4719
  /**
4731
- * Work types (trade or scope categories) to associate with the job; null when none.
4720
+ * Complete desired set of unique nonblank manager user IDs. Omit to preserve the set; send an empty array to clear it. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before any job or relationship is saved.
4721
+ */
4722
+ manager_user_ids?: Array<string>;
4723
+ /**
4724
+ * Complete desired set of unique nonblank timecode IDs. Omit to preserve the set; send an empty array to clear it. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before any job or relationship is saved.
4725
+ */
4726
+ timekeeping_timecode_ids?: Array<string>;
4727
+ /**
4728
+ * Work types (trade or scope categories) to associate with the job, one row each. Null, a non-array, or a row that is not an object answers 422.
4732
4729
  */
4733
4730
  job_work_types_attributes?: Array<{
4734
4731
  /**
@@ -4739,9 +4736,9 @@ export type JobParameters = {
4739
4736
  * ID of the work type to associate with the job.
4740
4737
  */
4741
4738
  work_type_id?: string;
4742
- }> | null;
4739
+ }>;
4743
4740
  /**
4744
- * The job's structured street address; null when unset.
4741
+ * The job's structured street address. Null or a non-object answers 422; an unknown key inside it answers 422 at its pointer.
4745
4742
  */
4746
4743
  job_address_attributes?: {
4747
4744
  /**
@@ -4781,20 +4778,33 @@ export type JobParameters = {
4781
4778
  */
4782
4779
  country?: string | null;
4783
4780
  /**
4784
- * IANA time zone of the address (e.g. America/Chicago); null when unset.
4781
+ * Time zone of the address (e.g. US/Central); null when unset. A blank or unlisted name answers 422.
4785
4782
  */
4786
4783
  timezone?: string | null;
4787
4784
  /**
4788
- * Whether the address has been verified; null when unset.
4785
+ * Whether the address has been verified. A boolean; null or any other type returns 422.
4789
4786
  */
4790
- verified?: boolean | null;
4787
+ verified?: boolean;
4791
4788
  /**
4792
- * Human-readable one-line address label; null when unset.
4789
+ * Human-readable one-line address label; null derives it from the other fields.
4793
4790
  */
4794
4791
  label?: string | null;
4795
- } | null;
4792
+ };
4793
+ /**
4794
+ * Values for the job's custom fields, as a list of configurations and their values. Each configuration may appear only once. Every visible configuration gets a stored value; one left out of the list, or an omitted or empty list, stores null.
4795
+ */
4796
+ custom_fields?: Array<{
4797
+ /**
4798
+ * ID of a visible custom-field configuration owned by the credential company and applicable to jobs.
4799
+ */
4800
+ custom_field_config_id: string;
4801
+ /**
4802
+ * Value as text or null.
4803
+ */
4804
+ value: string | null;
4805
+ }>;
4796
4806
  /**
4797
- * Prevailing-wage / apprenticeship (PWA) compliance details to set on the job. Omit or send an empty object to make no PWA-details changes; null and non-object values are rejected. The accepted regional keys depend on the effective region and regional PWA mode.
4807
+ * Prevailing-wage / apprenticeship (PWA) compliance details to set on the job. Omit or send an empty object to make no PWA-details changes. Null or a non-object answers 422, and so does an unknown key or a wrongly typed field inside it, at its pointer. The accepted regional keys depend on the effective region and regional PWA mode.
4798
4808
  */
4799
4809
  pwa_details?: {
4800
4810
  /**
@@ -4802,7 +4812,7 @@ export type JobParameters = {
4802
4812
  */
4803
4813
  contractor_type?: 'prime_contractor' | 'sub_contractor' | null;
4804
4814
  /**
4805
- * Whether new positions on the job default to paying the full fringe as cash. Omit to retain the current value (or use the database default on create); when sent, the value must be true or false.
4815
+ * Whether new positions on the job default to paying the full fringe as cash. Omit to retain the current value (or use the database default on create); when sent, the value must be JSON true or false.
4806
4816
  */
4807
4817
  pay_full_cash_fringe_by_default?: boolean;
4808
4818
  /**
@@ -4834,7 +4844,7 @@ export type JobParameters = {
4834
4844
  */
4835
4845
  il_dol_project_id?: string | null;
4836
4846
  /**
4837
- * Whether the Illinois project is funded with state capital funds; null when not applicable.
4847
+ * Whether the Illinois project is funded with state capital funds, as JSON true or false; null when not applicable.
4838
4848
  */
4839
4849
  il_dol_state_capital_funds?: boolean | null;
4840
4850
  /**
@@ -4864,166 +4874,363 @@ export type JobParameters = {
4864
4874
  };
4865
4875
  };
4866
4876
  /**
4867
- * Parameters for creating a job. `requested_by_company_id` and `created_by_user_id` are required. Sets the job's schedule, work types, address, custom-field values, and optional Prevailing Wage / Apprenticeship (PWA) compliance.
4877
+ * Parameters for updating an existing job. Every field is optional; omit a field to preserve its current value. The resulting job must still satisfy schedule and PWA validation rules. Accepts every shared job field plus a directly settable status and custom-field changes. Sending `created_by_user_id` returns 400 unknown_key, including when it matches the existing creator or is null. 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 job or relationship changes.
4868
4878
  */
4869
- export type JobCreateParameters = JobParameters & {
4870
- /**
4871
- * ID of the user creating the job. Required on create; the creator cannot be changed afterward.
4872
- */
4873
- created_by_user_id: string;
4879
+ export type JobUpdateParameters = {
4874
4880
  /**
4875
- * ID of a job template to copy this job from; when set, the new job is created from that template. Null or omit to start from a blank job.
4881
+ * Human-readable job name, unique within the creating company; null when unset.
4876
4882
  */
4877
- template_id?: string | null;
4883
+ name?: string | null;
4878
4884
  /**
4879
- * Values for the job's custom fields, as a list of configurations and their values. Each configuration may appear only once. Every visible configuration gets a stored value; one left out of the list, or an omitted or empty list, stores null.
4885
+ * Free-text description of the job. Null or a wrong type answers 422.
4880
4886
  */
4881
- custom_fields?: Array<{
4882
- /**
4883
- * ID of a visible custom-field configuration owned by the credential company and applicable to jobs.
4884
- */
4885
- custom_field_config_id: string;
4886
- /**
4887
- * Value as text or null.
4888
- */
4889
- value: string | null;
4890
- }>;
4891
- };
4892
- /**
4893
- * Parameters for updating an existing job. Every field is optional; omit a field to preserve its current value. The resulting job must still satisfy schedule and PWA validation rules. Accepts every shared job field plus a directly settable status and custom-field changes. Sending `created_by_user_id` returns 400 unknown_key, including when it matches the existing creator or is null.
4894
- */
4895
- export type JobUpdateParameters = JobParameters & {
4887
+ description?: string;
4896
4888
  /**
4897
- * Settable status values. Other statuses are derived from job and position state and cannot be set directly.
4889
+ * ID of the company that requested the job (for example a general contractor). Omit on update to preserve the existing requester. Null, a blank ID, or a wrong type answers 422.
4898
4890
  */
4899
- status?: 'completed' | 'cancelled' | 'disputed';
4891
+ requested_by_company_id?: string;
4900
4892
  /**
4901
- * 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.
4893
+ * Purchase order number for the job; null when unset.
4902
4894
  */
4903
- custom_fields?: Array<{
4904
- /**
4905
- * ID of a custom-field configuration owned by the credential company and applicable to jobs. A hidden configuration may be updated only when the job already stores its value.
4906
- */
4907
- custom_field_config_id: string;
4908
- /**
4909
- * Replacement value as text or null. Null stores a value rather than removing the row.
4910
- */
4911
- value: string | null;
4912
- }>;
4913
- };
4914
- /**
4915
- * A reusable job template — a saved job pattern for quickly creating new jobs with the same setup. Read-only through the API (listing only).
4916
- */
4917
- export type JobTemplateResponseObject = {
4895
+ purchase_order_number?: string | null;
4918
4896
  /**
4919
- * Unique identifier.
4897
+ * ID of the project this job belongs to; null when the job is not part of a project. A blank ID or a wrong type answers 422.
4920
4898
  */
4921
- id: string;
4899
+ project_id?: string | null;
4922
4900
  /**
4923
- * Display name of the template.
4901
+ * ID of a department belonging to the job's provider company. Retrieve department IDs from GET /api/v1/companies/departments. Send null to clear the assignment; omit on update to preserve it, or on create to preserve a copied template's assignment. A new job without a template starts unassigned. A blank ID or a wrong type answers 422.
4924
4902
  */
4925
- name: string;
4903
+ companies_department_id?: string | null;
4926
4904
  /**
4927
- * Description of the template; null when unset.
4905
+ * Federal prevailing-wage / apprenticeship (PWA) tracking mode: one of all (both prevailing wage and apprenticeship), pw_only, ap_only, or none. Null or any other value returns 422.
4928
4906
  */
4929
- description: string | null;
4930
- };
4931
- /**
4932
- * A named collection of a company's users, used to organize people for assignment, filtering, and company workflows. Membership is managed through the nested group-users endpoints.
4933
- */
4934
- export type GroupResponseObject = {
4907
+ federal_pwa_mode?: 'all' | 'pw_only' | 'ap_only' | 'none';
4935
4908
  /**
4936
- * Unique identifier.
4909
+ * Regional (state) prevailing-wage / apprenticeship tracking mode, with the same values as federal_pwa_mode; null or any other value returns 422.
4937
4910
  */
4938
- id: string;
4911
+ regional_pwa_mode?: 'all' | 'pw_only' | 'ap_only' | 'none';
4939
4912
  /**
4940
- * The group's display name; unique within the company.
4913
+ * Two-letter state code (e.g. CA, IL, NY) that selects which regional prevailing-wage fields under pwa_details apply.
4941
4914
  */
4942
- name: string;
4915
+ region?: string | null;
4943
4916
  /**
4944
- * When the record was created (ISO 8601).
4917
+ * Start of the job's scheduled window (ISO 8601); the date is anchored to the start of that day in tz_name. Null to leave the job unscheduled; any other non-string, false included, answers 422.
4945
4918
  */
4946
- created_at: string;
4919
+ start_time?: string | null;
4947
4920
  /**
4948
- * When the record was last updated (ISO 8601).
4921
+ * End of the job's scheduled window (ISO 8601); the date is anchored to the start of that day in tz_name. Null to leave the job unscheduled; any other non-string, false included, answers 422.
4949
4922
  */
4950
- updated_at: string;
4951
- };
4952
- /**
4953
- * Request body for creating a group. Send fields in JSON; the group belongs to the company that owns the API key.
4954
- */
4955
- export type GroupParameters = {
4923
+ end_time?: string | null;
4956
4924
  /**
4957
- * Required display name, unique within the company. Omission answers 400; supplied null or a wrong type answers 422. Blank names fail model validation with 422.
4925
+ * Time zone the job's schedule and time tracking are anchored to (e.g. US/Central); defaults to US/Central when unset. Null, a blank or unlisted name, or a wrong type answers 422.
4958
4926
  */
4959
- name: string;
4960
- };
4961
- /**
4962
- * Request body for updating a group. Send only fields to change in JSON; omitted fields remain unchanged.
4963
- */
4964
- export type GroupUpdateParameters = {
4927
+ tz_name?: string;
4965
4928
  /**
4966
- * The group's display name, unique within the company; omit to leave it unchanged. Supplied null, a wrong type, or a blank name answers 422.
4929
+ * Day of the week the job's workweek and time cards start on, as an integer: 0 (Sunday) through 6 (Saturday). Any other value, a numeric string included, answers 422.
4967
4930
  */
4968
- name?: string;
4969
- };
4970
- /**
4971
- * A worker as your company sees them: the cross-company person merged with their employment record at your company (title, pay, benefits, and accruals), their roles at your company, and optional prevailing-wage compliance details. Your company sees everyone it employs, everyone it has granted a role, and everyone it has invited, which is the same set the web app shows. A role holder or an invitee your company does not employ has no employment record to merge, so the employment fields (employment_id through employment_window, plus manager_user_id and custom_fields) are null for them, and employment_state reads none. There is no delete — removing a worker terminates their employment at the company (see the user-company endpoints), which sets termination_date and drops them from the default list.
4972
- */
4973
- export type UserResponseObject = {
4931
+ time_card_start_day?: number;
4974
4932
  /**
4975
- * Unique identifier of the worker (the person).
4933
+ * Clock-in enforcement level: one of none (no guidance), warning (manual time entries fail the clock-in compliance check), or required (a technician's own time on the job must come from clocking in on DSPTCH Mobile; the technician's own web and user-API-key time-entry writes are refused). A time entry whose time code, as of the entry's start time, is PTO, holiday, or restricted to non-job time entries is exempt at every level. Time-entry writes made with a company API key are not gated. While the creating company requires clock-in company-wide, a create stores `required` whatever value is sent, and lowering an open job returns 422 with the error at `#/clock_in_requirement`. Omit the field to leave the current value unchanged.
4976
4934
  */
4977
- id: string;
4935
+ clock_in_requirement?: 'none' | 'warning' | 'required';
4978
4936
  /**
4979
- * Full legal name, composed from first_name and last_name.
4937
+ * Whether to send geofence-based clock-in/out reminders for this job; null when unset.
4980
4938
  */
4981
- name: string;
4939
+ send_geofence_reminders?: boolean | null;
4982
4940
  /**
4983
- * Legal first name. Used for compliance and other exports.
4941
+ * Whether customers granted access can view this job. A boolean; null or any other type returns 422.
4984
4942
  */
4985
- first_name: string | null;
4943
+ allow_customer_access?: boolean;
4986
4944
  /**
4987
- * Legal last name. Used for compliance and other exports.
4945
+ * Whether the feature-allocation selector is shown for this job. A boolean; null or any other type returns 422.
4988
4946
  */
4989
- last_name: string | null;
4947
+ tracks_feature_allocations?: boolean;
4990
4948
  /**
4991
- * Chosen first name. Coalesced over first_name for display; the legal name is used for exports. Null when unset.
4949
+ * Whether applicable time entries on this job must carry a feature allocation. A boolean; null or any other type returns 422.
4992
4950
  */
4993
- preferred_first_name: string | null;
4951
+ requires_feature_allocation?: boolean;
4994
4952
  /**
4995
- * Chosen last name. Coalesced over last_name for display; the legal name is used for exports. Null when unset.
4953
+ * Whether time entries on this job are capped at one feature allocation. A boolean; null or any other type returns 422.
4996
4954
  */
4997
- preferred_last_name: string | null;
4955
+ max_one_feature_allocation?: boolean;
4998
4956
  /**
4999
- * Work email address, used to sign in and to receive the company invite. Null when unset.
4957
+ * How this job records production completions: one of none (opts out), feature (per site feature, e.g. a turbine), or quantity (a unit count, e.g. modules). Locked once any completion exists. Omit the field to leave the current value unchanged.
5000
4958
  */
5001
- email: string | null;
4959
+ production_tracking_kind?: 'none' | 'feature' | 'quantity';
5002
4960
  /**
5003
- * Personal (non-work) email address. Null when unset.
4961
+ * Complete desired set of unique nonblank manager user IDs. Omit to preserve the set; send an empty array to clear it. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before any job or relationship is saved.
5004
4962
  */
5005
- personal_email: string | null;
4963
+ manager_user_ids?: Array<string>;
5006
4964
  /**
5007
- * Contact phone number. Null when unset.
4965
+ * Complete desired set of unique nonblank timecode IDs. Omit to preserve the set; send an empty array to clear it. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before any job or relationship is saved.
5008
4966
  */
5009
- phone_number: string | null;
4967
+ timekeeping_timecode_ids?: Array<string>;
5010
4968
  /**
5011
- * City of the worker's contact address. Null when unset.
4969
+ * Work types (trade or scope categories) to associate with the job, one row each. Null, a non-array, or a row that is not an object answers 422.
5012
4970
  */
5013
- city: string | null;
4971
+ job_work_types_attributes?: Array<{
4972
+ /**
4973
+ * Whether this is the job's primary work type.
4974
+ */
4975
+ primary?: boolean;
4976
+ /**
4977
+ * ID of the work type to associate with the job.
4978
+ */
4979
+ work_type_id?: string;
4980
+ }>;
5014
4981
  /**
5015
- * Two-letter US state code of the worker's contact address. Null when unset.
4982
+ * The job's structured street address. Null or a non-object answers 422; an unknown key inside it answers 422 at its pointer.
5016
4983
  */
5017
- state: string | null;
4984
+ job_address_attributes?: {
4985
+ /**
4986
+ * ID of an existing address to update; null to create a new address.
4987
+ */
4988
+ id?: string | null;
4989
+ /**
4990
+ * Secondary address designator such as an apartment or suite number; null when unset.
4991
+ */
4992
+ sub_address_number?: string | null;
4993
+ /**
4994
+ * Street number of the address; null when unset.
4995
+ */
4996
+ address_number?: string | null;
4997
+ /**
4998
+ * Neighborhood of the address; null when unset.
4999
+ */
5000
+ neighborhood?: string | null;
5001
+ /**
5002
+ * City or municipality of the address; null when unset.
5003
+ */
5004
+ municipality?: string | null;
5005
+ /**
5006
+ * County or other sub-region of the address; null when unset.
5007
+ */
5008
+ sub_region?: string | null;
5009
+ /**
5010
+ * State or region of the address; null when unset.
5011
+ */
5012
+ region?: string | null;
5013
+ /**
5014
+ * Postal or ZIP code of the address; null when unset.
5015
+ */
5016
+ postal_code?: string | null;
5017
+ /**
5018
+ * Country of the address; null when unset.
5019
+ */
5020
+ country?: string | null;
5021
+ /**
5022
+ * Time zone of the address (e.g. US/Central); null when unset. A blank or unlisted name answers 422.
5023
+ */
5024
+ timezone?: string | null;
5025
+ /**
5026
+ * Whether the address has been verified. A boolean; null or any other type returns 422.
5027
+ */
5028
+ verified?: boolean;
5029
+ /**
5030
+ * Human-readable one-line address label; null derives it from the other fields.
5031
+ */
5032
+ label?: string | null;
5033
+ };
5018
5034
  /**
5019
- * Date of birth (YYYY-MM-DD). Null when unset. Used for compliance reporting.
5035
+ * 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.
5020
5036
  */
5021
- birth_date: string | null;
5037
+ custom_fields?: Array<{
5038
+ /**
5039
+ * ID of a custom-field configuration owned by the credential company and applicable to jobs. A hidden configuration may be updated only when the job already stores its value.
5040
+ */
5041
+ custom_field_config_id: string;
5042
+ /**
5043
+ * Replacement value as text or null. Null stores a value rather than removing the row.
5044
+ */
5045
+ value: string | null;
5046
+ }>;
5022
5047
  /**
5023
- * US Department of Labor apprentice number, when the worker is a registered apprentice. Null when none.
5048
+ * Prevailing-wage / apprenticeship (PWA) compliance details to set on the job. Omit or send an empty object to make no PWA-details changes. Null or a non-object answers 422, and so does an unknown key or a wrongly typed field inside it, at its pointer. The accepted regional keys depend on the effective region and regional PWA mode.
5024
5049
  */
5025
- dol_apprentice_no: string | null;
5026
- /**
5050
+ pwa_details?: {
5051
+ /**
5052
+ * Role of the company on this job for PWA reporting: one of prime_contractor or sub_contractor; null when unset.
5053
+ */
5054
+ contractor_type?: 'prime_contractor' | 'sub_contractor' | null;
5055
+ /**
5056
+ * Whether new positions on the job default to paying the full fringe as cash. Omit to retain the current value (or use the database default on create); when sent, the value must be JSON true or false.
5057
+ */
5058
+ pay_full_cash_fringe_by_default?: boolean;
5059
+ /**
5060
+ * California DIR (Department of Industrial Relations) awarding-body ID; null when not applicable.
5061
+ */
5062
+ dir_awarding_body_id?: string | null;
5063
+ /**
5064
+ * California DIR project registration ID (an 11-digit number); null when not applicable.
5065
+ */
5066
+ dir_project_id?: string | null;
5067
+ /**
5068
+ * California DIR project name; null when not applicable.
5069
+ */
5070
+ dir_project_name?: string | null;
5071
+ /**
5072
+ * California DIR contract ID; null when not applicable.
5073
+ */
5074
+ dir_contract_id?: string | null;
5075
+ /**
5076
+ * California DIR awarding-body name; null when not applicable.
5077
+ */
5078
+ dir_project_awarding_body_name?: string | null;
5079
+ /**
5080
+ * California DIR project number; null when not applicable.
5081
+ */
5082
+ dir_project_number?: string | null;
5083
+ /**
5084
+ * Illinois DOL (Department of Labor) project ID; null when not applicable.
5085
+ */
5086
+ il_dol_project_id?: string | null;
5087
+ /**
5088
+ * Whether the Illinois project is funded with state capital funds, as JSON true or false; null when not applicable.
5089
+ */
5090
+ il_dol_state_capital_funds?: boolean | null;
5091
+ /**
5092
+ * Illinois DOL public-body name; null when not applicable.
5093
+ */
5094
+ il_dol_public_body_name?: string | null;
5095
+ /**
5096
+ * ID of the Illinois DOL public-body contact; null when not applicable.
5097
+ */
5098
+ il_dol_public_body_contact_id?: string | null;
5099
+ /**
5100
+ * ID of the Illinois DOL public-body address; null when not applicable.
5101
+ */
5102
+ il_dol_public_body_address_id?: string | null;
5103
+ /**
5104
+ * Illinois DOL contract number; null when not applicable.
5105
+ */
5106
+ il_dol_contract_number?: string | null;
5107
+ /**
5108
+ * Illinois SHINES project ID; null when not applicable.
5109
+ */
5110
+ il_shines_project_id?: string | null;
5111
+ /**
5112
+ * New York DOL prevailing-rate-case (PRC) number, a 10-digit identifier; null when not applicable.
5113
+ */
5114
+ ny_dol_prc_number?: string | null;
5115
+ };
5116
+ /**
5117
+ * Settable status values. Other statuses are derived from job and position state and cannot be set directly; null or any other value returns 422.
5118
+ */
5119
+ status?: 'completed' | 'cancelled' | 'disputed';
5120
+ };
5121
+ /**
5122
+ * A reusable job template — a saved job pattern for quickly creating new jobs with the same setup. Read-only through the API (listing only).
5123
+ */
5124
+ export type JobTemplateResponseObject = {
5125
+ /**
5126
+ * Unique identifier.
5127
+ */
5128
+ id: string;
5129
+ /**
5130
+ * Display name of the template.
5131
+ */
5132
+ name: string;
5133
+ /**
5134
+ * Description of the template; null when unset.
5135
+ */
5136
+ description: string | null;
5137
+ };
5138
+ /**
5139
+ * A named collection of a company's users, used to organize people for assignment, filtering, and company workflows. Membership is managed through the nested group-users endpoints.
5140
+ */
5141
+ export type GroupResponseObject = {
5142
+ /**
5143
+ * Unique identifier.
5144
+ */
5145
+ id: string;
5146
+ /**
5147
+ * The group's display name; unique within the company.
5148
+ */
5149
+ name: string;
5150
+ /**
5151
+ * When the record was created (ISO 8601).
5152
+ */
5153
+ created_at: string;
5154
+ /**
5155
+ * When the record was last updated (ISO 8601).
5156
+ */
5157
+ updated_at: string;
5158
+ };
5159
+ /**
5160
+ * Request body for creating a group. Send fields in JSON; the group belongs to the company that owns the API key.
5161
+ */
5162
+ export type GroupParameters = {
5163
+ /**
5164
+ * Required display name, unique within the company. Omission answers 400; supplied null or a wrong type answers 422. Blank names fail model validation with 422.
5165
+ */
5166
+ name: string;
5167
+ };
5168
+ /**
5169
+ * Request body for updating a group. Send only fields to change in JSON; omitted fields remain unchanged.
5170
+ */
5171
+ export type GroupUpdateParameters = {
5172
+ /**
5173
+ * The group's display name, unique within the company; omit to leave it unchanged. Supplied null, a wrong type, or a blank name answers 422.
5174
+ */
5175
+ name?: string;
5176
+ };
5177
+ /**
5178
+ * A worker as your company sees them: the cross-company person merged with their employment record at your company (title, pay, benefits, and accruals), their roles at your company, and optional prevailing-wage compliance details. Your company sees everyone it employs, everyone it has granted a role, and everyone it has invited, which is the same set the web app shows. A role holder or an invitee your company does not employ has no employment record to merge, so the employment fields (employment_id through employment_window, plus manager_user_id and custom_fields) are null for them, and employment_state reads none. There is no delete — removing a worker terminates their employment at the company (see the user-company endpoints), which sets termination_date and drops them from the default list.
5179
+ */
5180
+ export type UserResponseObject = {
5181
+ /**
5182
+ * Unique identifier of the worker (the person).
5183
+ */
5184
+ id: string;
5185
+ /**
5186
+ * Full legal name, composed from first_name and last_name.
5187
+ */
5188
+ name: string;
5189
+ /**
5190
+ * Legal first name. Used for compliance and other exports.
5191
+ */
5192
+ first_name: string | null;
5193
+ /**
5194
+ * Legal last name. Used for compliance and other exports.
5195
+ */
5196
+ last_name: string | null;
5197
+ /**
5198
+ * Chosen first name. Coalesced over first_name for display; the legal name is used for exports. Null when unset.
5199
+ */
5200
+ preferred_first_name: string | null;
5201
+ /**
5202
+ * Chosen last name. Coalesced over last_name for display; the legal name is used for exports. Null when unset.
5203
+ */
5204
+ preferred_last_name: string | null;
5205
+ /**
5206
+ * Work email address, used to sign in and to receive the company invite. Null when unset.
5207
+ */
5208
+ email: string | null;
5209
+ /**
5210
+ * Personal (non-work) email address. Null when unset.
5211
+ */
5212
+ personal_email: string | null;
5213
+ /**
5214
+ * Contact phone number. Null when unset.
5215
+ */
5216
+ phone_number: string | null;
5217
+ /**
5218
+ * City of the worker's contact address. Null when unset.
5219
+ */
5220
+ city: string | null;
5221
+ /**
5222
+ * Two-letter US state code of the worker's contact address. Null when unset.
5223
+ */
5224
+ state: string | null;
5225
+ /**
5226
+ * Date of birth (YYYY-MM-DD). Null when unset. Used for compliance reporting.
5227
+ */
5228
+ birth_date: string | null;
5229
+ /**
5230
+ * US Department of Labor apprentice number, when the worker is a registered apprentice. Null when none.
5231
+ */
5232
+ dol_apprentice_no: string | null;
5233
+ /**
5027
5234
  * URL of the worker's profile picture (a resized variant). Null when none is set.
5028
5235
  */
5029
5236
  avatar_url: string | null;
@@ -5073,21 +5280,21 @@ export type UserResponseObject = {
5073
5280
  */
5074
5281
  compensation_type: 'hourly' | 'salary' | null;
5075
5282
  /**
5076
- * Base pay rate, formatted as a currency string in the company's currency. Present for company keys, company administrators, and the employed person, and omitted otherwise; null when authorized but unset.
5283
+ * Base hourly pay in cents as a decimal string. Present for company keys, company administrators, and the employed person, and omitted otherwise; null when authorized but unset.
5077
5284
  */
5078
- hourly_rate?: string | null;
5285
+ hourly_rate_cents?: string | null;
5079
5286
  /**
5080
- * Annual training-fund contribution for the worker, formatted as a currency string. Present for company keys, company administrators, and the employed person, and omitted otherwise; null when authorized but unset. Used in prevailing-wage fringe calculations.
5287
+ * Annual training-fund contribution for the worker in cents as a decimal string. Present for company keys, company administrators, and the employed person, and omitted otherwise; null when authorized but unset. Used in prevailing-wage fringe calculations.
5081
5288
  */
5082
- training_annual_amount?: string | null;
5289
+ training_annual_amount_cents?: string | null;
5083
5290
  /**
5084
- * Employer-paid annual combined health benefit, formatted as a currency string. Present for company keys, company administrators, and the employed person, and omitted otherwise; null when authorized but unset. Used in prevailing-wage fringe calculations.
5291
+ * Employer-paid annual combined health benefit in cents as a decimal string. Present for company keys, company administrators, and the employed person, and omitted otherwise; null when authorized but unset. Used in prevailing-wage fringe calculations.
5085
5292
  */
5086
- employer_combined_health_amount?: string | null;
5293
+ employer_combined_health_amount_cents?: string | null;
5087
5294
  /**
5088
- * Employer-paid annual combined savings and retirement benefit, formatted as a currency string. Present for company keys, company administrators, and the employed person, and omitted otherwise; null when authorized but unset. Used in prevailing-wage fringe calculations.
5295
+ * Employer-paid annual combined savings and retirement benefit in cents as a decimal string. Present for company keys, company administrators, and the employed person, and omitted otherwise; null when authorized but unset. Used in prevailing-wage fringe calculations.
5089
5296
  */
5090
- employer_combined_savings?: string | null;
5297
+ employer_combined_savings_cents?: string | null;
5091
5298
  /**
5092
5299
  * Annualized minutes the worker is expected to work, used to annualize fringe benefits. Null to fall back to the standard full-time year.
5093
5300
  */
@@ -5232,7 +5439,7 @@ export type UserResponseObject = {
5232
5439
  } | null;
5233
5440
  };
5234
5441
  /**
5235
- * 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.
5442
+ * 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.
5236
5443
  */
5237
5444
  export type UserUpdateParameters = {
5238
5445
  /**
@@ -5272,7 +5479,7 @@ export type UserUpdateParameters = {
5272
5479
  */
5273
5480
  state?: string | null;
5274
5481
  /**
5275
- * Date of birth (YYYY-MM-DD).
5482
+ * Date of birth as a YYYY-MM-DD calendar date; send null to clear it.
5276
5483
  */
5277
5484
  birth_date?: string | null;
5278
5485
  /**
@@ -5284,22 +5491,10 @@ export type UserUpdateParameters = {
5284
5491
  */
5285
5492
  avatar_signed_id?: string | null;
5286
5493
  };
5287
- export type UserParameters = ({
5288
- /**
5289
- * Work email address; the worker signs in and receives their invite here. Null when the worker has none. Required to send an invite unless a phone number is given.
5290
- */
5291
- email: string;
5292
- } | {
5293
- /**
5294
- * Contact phone number. Null when the worker has none. Required to send an invite unless a work email is given.
5295
- */
5296
- phone_number: string;
5297
- } | {
5298
- /**
5299
- * Non-stored field. If true, no invite is created and work email / phone are not required.
5300
- */
5301
- skip_invite: true;
5302
- }) & {
5494
+ /**
5495
+ * Request body for onboarding a worker into your company. In one call it creates the person (if new), their employment record and its custom-field values, roles, group memberships, an optional invite, and optional compliance details. first_name and last_name are required, and omitting either answers 400. Unless skip_invite is true, the invite needs a work email or a phone number, and a request with neither answers 422 at both fields. An unlisted key 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.
5496
+ */
5497
+ export type UserParameters = {
5303
5498
  /**
5304
5499
  * Work email address; the worker signs in and receives their invite here. Null when the worker has none. Required to send an invite unless a phone number is given.
5305
5500
  */
@@ -5313,11 +5508,11 @@ export type UserParameters = ({
5313
5508
  */
5314
5509
  phone_number?: string | null;
5315
5510
  /**
5316
- * Legal first name. Used for compliance and other exports.
5511
+ * Legal first name. Used for compliance and other exports. Null or blank text answers 422.
5317
5512
  */
5318
5513
  first_name: string;
5319
5514
  /**
5320
- * Legal last name. Used for compliance and other exports.
5515
+ * Legal last name. Used for compliance and other exports. Null or blank text answers 422.
5321
5516
  */
5322
5517
  last_name: string;
5323
5518
  /**
@@ -5331,116 +5526,115 @@ export type UserParameters = ({
5331
5526
  /**
5332
5527
  * City of the worker's contact address.
5333
5528
  */
5334
- city?: string;
5529
+ city?: string | null;
5335
5530
  /**
5336
5531
  * Two-letter US state code of the worker's contact address.
5337
5532
  */
5338
- state?: string;
5533
+ state?: string | null;
5339
5534
  /**
5340
- * Date of birth (YYYY-MM-DD).
5535
+ * Date of birth as a YYYY-MM-DD calendar date; any other form answers 422.
5341
5536
  */
5342
- birth_date?: string;
5537
+ birth_date?: string | null;
5343
5538
  /**
5344
5539
  * US Department of Labor apprentice number, when the worker is a registered apprentice.
5345
5540
  */
5346
- dol_apprentice_no?: string;
5541
+ dol_apprentice_no?: string | null;
5347
5542
  /**
5348
5543
  * GWO WINDA training record id (Global Wind Organisation), formatted as two letters, six digits, then two letters.
5349
5544
  */
5350
- winda_id?: string;
5545
+ winda_id?: string | null;
5351
5546
  /**
5352
5547
  * URL of the worker's LinkedIn profile.
5353
5548
  */
5354
- linkedin_url?: string;
5549
+ linkedin_url?: string | null;
5355
5550
  /**
5356
- * Roles to grant the worker at your company, as an array of role strings such as TECHNICIAN, FIELD_LEAD, MANAGER, SAFETY_MANAGER, and ADMIN.
5551
+ * Roles to grant the worker at your company, as an array of role strings such as TECHNICIAN, FIELD_LEAD, MANAGER, SAFETY_MANAGER, and ADMIN. Omit or send an empty array to grant none. Null, a non-string, blank or repeated role answers 422.
5357
5552
  */
5358
- roles?: Array<string> | null;
5553
+ roles?: Array<string>;
5359
5554
  /**
5360
5555
  * Signed ID of a direct-upload blob to attach as the profile picture. Obtain it by first uploading the image to POST /api/v1/direct_uploads. Null creates the worker without one; a blank string answers 422.
5361
5556
  */
5362
5557
  avatar_signed_id?: string | null;
5363
5558
  /**
5364
- * Id of the internal user recorded as the creator of the worker's invite, and named to the recipient as the person inviting them. A user key always records its own user and answers 403 if the body names one; a company key must name a user your company can see, or the request answers 404. Ignored when skip_invite is set.
5559
+ * Id of the internal user recorded as the creator of the worker's invite, and named to the recipient as the person inviting them. A user key always records its own user and answers 403 if the body names one; a company key must name a user your company can see, or the request answers 404. Omit or send null to record none; blank text answers 422. Ignored when skip_invite is set.
5365
5560
  */
5366
- created_by_user_id?: string;
5561
+ created_by_user_id?: string | null;
5367
5562
  /**
5368
5563
  * Id of the internal user recorded as having last sent the worker's invite, and named as the sender on that person's in-app notification. Read like created_by_user_id. Null, and ignored, when skip_invite is set.
5369
5564
  */
5370
5565
  last_sent_by_user_id?: string | null;
5371
5566
  /**
5372
- * Non-stored field. If true will not send an invite notification.
5567
+ * Non-stored field. If true, the invite is created without notifying the worker. Null is not accepted.
5373
5568
  */
5374
5569
  skip_notify?: boolean;
5375
5570
  /**
5376
- * Non-stored field. If true, no invite is created and work email / phone are not required.
5571
+ * Non-stored field. If true, no invite is created and work email / phone are not required. Null is not accepted.
5377
5572
  */
5378
5573
  skip_invite?: boolean;
5379
- type?: UserCompanyType;
5380
5574
  /**
5381
- * Job title at your company.
5575
+ * First day of employment (YYYY-MM-DD). Sets the start of the employment record; defaults to today when omitted. Null, blank text, or any other form answers 422.
5382
5576
  */
5383
- title?: string;
5577
+ hire_date?: string;
5384
5578
  /**
5385
- * Id of the worker's manager at your company (another user).
5579
+ * Whether the worker is an `EMPLOYEE` (W-2) or a `CONTRACTOR` (1099), in upper case. Omit to use `EMPLOYEE`; null is not accepted.
5386
5580
  */
5387
- manager_user_id?: string;
5581
+ type?: 'EMPLOYEE' | 'CONTRACTOR';
5388
5582
  /**
5389
- * The worker's identifier in your payroll system of record.
5583
+ * Job title at your company.
5390
5584
  */
5391
- payroll_id?: string;
5585
+ title?: string | null;
5392
5586
  /**
5393
- * Base pay rate as a decimal string (for example "32.50"), in the company's currency.
5587
+ * Id of the worker's manager at your company (another user). Omit or send null for no manager; blank text answers 422.
5394
5588
  */
5395
- hourly_rate?: string;
5589
+ manager_user_id?: string | null;
5396
5590
  /**
5397
- * How the worker is paid: `hourly` or `salary`. Omit to use `hourly`; null is not accepted.
5591
+ * The worker's identifier in your payroll system of record.
5398
5592
  */
5399
- compensation_type?: 'hourly' | 'salary';
5593
+ payroll_id?: string | null;
5400
5594
  /**
5401
- * Whether the worker is eligible for overtime pay.
5595
+ * Whether to enroll the worker in Time and Attendance (time tracking). Omit to use true; null is not accepted.
5402
5596
  */
5403
- overtime_eligible?: string;
5597
+ enrolled_in_t_and_a?: boolean;
5404
5598
  /**
5405
- * Whether to enroll the worker in Time and Attendance (time tracking).
5599
+ * How the worker is paid: `hourly` or `salary`, in lower case. Omit to use `hourly`; null is not accepted.
5406
5600
  */
5407
- enrolled_in_t_and_a?: string;
5601
+ compensation_type?: 'hourly' | 'salary';
5408
5602
  /**
5409
- * Annual training-fund contribution as a decimal string. Used in prevailing-wage fringe calculations.
5603
+ * Base hourly pay in cents as a decimal string (for example "3250" for 32.50). Omit or send null to leave it unset; send "0" for zero. A JSON number answers 422; send the amount as a string.
5410
5604
  */
5411
- training_annual_amount?: string;
5605
+ hourly_rate_cents?: string | null;
5412
5606
  /**
5413
- * Employer-paid annual combined health benefit as a decimal string. Null to leave unset.
5607
+ * Annual training-fund contribution in cents as a decimal string. Used in prevailing-wage fringe calculations. Omit or send null to leave it unset; send "0" for zero. A JSON number answers 422.
5414
5608
  */
5415
- employer_combined_health_amount?: string | null;
5609
+ training_annual_amount_cents?: string | null;
5416
5610
  /**
5417
- * Employer-paid annual combined savings and retirement benefit as a decimal string. Null to leave unset.
5611
+ * Employer-paid annual combined health benefit in cents as a decimal string. Omit or send null to leave it unset; send "0" for zero. A JSON number answers 422.
5418
5612
  */
5419
- employer_combined_savings?: string | null;
5613
+ employer_combined_health_amount_cents?: string | null;
5420
5614
  /**
5421
- * Annualized minutes the worker is expected to work, used to annualize fringe benefits.
5615
+ * Employer-paid annual combined savings and retirement benefit in cents as a decimal string. Omit or send null to leave it unset; send "0" for zero. A JSON number answers 422.
5422
5616
  */
5423
- worked_annual_minutes?: string;
5617
+ employer_combined_savings_cents?: string | null;
5424
5618
  /**
5425
- * Paid time off accrued for the year, in minutes.
5619
+ * Whether the worker is eligible for overtime pay. Omit to use true; null is not accepted.
5426
5620
  */
5427
- pto_annual_minutes?: string;
5621
+ overtime_eligible?: boolean;
5428
5622
  /**
5429
- * Holiday time accrued for the year, in minutes.
5623
+ * Annualized minutes the worker is expected to work, used to annualize fringe benefits, as a whole number.
5430
5624
  */
5431
- holiday_annual_minutes?: string;
5625
+ worked_annual_minutes?: number | null;
5432
5626
  /**
5433
- * Paid training time for the year, in minutes.
5627
+ * Paid time off accrued for the year, in whole minutes.
5434
5628
  */
5435
- training_annual_minutes?: string;
5629
+ pto_annual_minutes?: number | null;
5436
5630
  /**
5437
- * First day of employment (YYYY-MM-DD). Sets the start of the employment record; defaults to today when omitted.
5631
+ * Holiday time accrued for the year, in whole minutes.
5438
5632
  */
5439
- hire_date?: string;
5633
+ holiday_annual_minutes?: number | null;
5440
5634
  /**
5441
- * Ids of the groups to add the worker to at your company.
5635
+ * Paid training time for the year, in whole minutes.
5442
5636
  */
5443
- group_ids?: Array<string> | null;
5637
+ training_annual_minutes?: number | null;
5444
5638
  /**
5445
5639
  * 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.
5446
5640
  */
@@ -5455,7 +5649,11 @@ export type UserParameters = ({
5455
5649
  value: string | null;
5456
5650
  }>;
5457
5651
  /**
5458
- * Prevailing-wage and apprenticeship compliance details to create for the worker (home address, demographics, and jurisdiction-specific reporting fields). Omit when the worker has no compliance record.
5652
+ * 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.
5653
+ */
5654
+ group_ids?: Array<string>;
5655
+ /**
5656
+ * Prevailing-wage and apprenticeship compliance details to create for the worker (home address, demographics, and jurisdiction-specific reporting fields). Omit it, or send an empty object, when the worker has no compliance record; null answers 422.
5459
5657
  */
5460
5658
  company_user_pwa_info?: {
5461
5659
  /**
@@ -5542,7 +5740,7 @@ export type UserParameters = ({
5542
5740
  * Oregon BOLI race classification, as an array of codes such as white, asian, hispanic_or_latino, and black_or_african_american.
5543
5741
  */
5544
5742
  or_boli_race?: Array<'american_indian_or_alaska_native' | 'asian' | 'hispanic_or_latino' | 'black_or_african_american' | 'native_hawaiian_or_pacific_islander' | 'white' | 'portuguese_or_brazilian'>;
5545
- } | null;
5743
+ };
5546
5744
  };
5547
5745
  /**
5548
5746
  * A page of time entries, with pagination metadata and navigation links.
@@ -5641,11 +5839,11 @@ export type TimeEntryResponseObject = {
5641
5839
  */
5642
5840
  timekeeping_pay_period_id: string;
5643
5841
  /**
5644
- * ISO8601 timestamp when work began; falls on a whole-minute boundary.
5842
+ * ISO8601 timestamp in UTC (`Z`) when work began; falls on a whole-minute boundary.
5645
5843
  */
5646
5844
  start_time: string;
5647
5845
  /**
5648
- * ISO8601 timestamp when work ended; falls on a whole-minute boundary.
5846
+ * ISO8601 timestamp in UTC (`Z`) when work ended; falls on a whole-minute boundary.
5649
5847
  */
5650
5848
  end_time: string;
5651
5849
  /**
@@ -5713,23 +5911,27 @@ export type ManagerTimeEntryApprovalParameters = {
5713
5911
  approver_user_id: string;
5714
5912
  };
5715
5913
  /**
5716
- * The time-entry body fields shared by the create and update bodies; each of those declares its own requiredness.
5914
+ * Request body for creating a time entry. timekeeping_time_card_id, start_time, and end_time are required, and omitting one answers 400.
5717
5915
  */
5718
- export type TimeEntryParameters = {
5916
+ export type TimeEntryCreateParameters = {
5719
5917
  /**
5720
- * these will be rounded to the nearest second
5918
+ * 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.
5721
5919
  */
5722
- start_time?: string;
5920
+ timekeeping_time_card_id: string;
5723
5921
  /**
5724
- * these will be rounded to the nearest second
5922
+ * Start of the work as a timestamp string, rounded to the nearest second. A time with an offset (`Z` or `-05:00`) is read at that instant. A time without one is read in the time card's pay schedule zone (`tz_name`); a time the clocks skip when they spring forward is read an hour later, and a time they repeat when they fall back is read as its first occurrence. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
5725
5923
  */
5726
- end_time?: string;
5924
+ start_time: string;
5727
5925
  /**
5728
- * 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.
5926
+ * End of the work as a timestamp string, rounded to the nearest second. A time with an offset (`Z` or `-05:00`) is read at that instant. A time without one is read in the time card's pay schedule zone (`tz_name`); a time the clocks skip when they spring forward is read an hour later, and a time they repeat when they fall back is read as its first occurrence. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
5927
+ */
5928
+ end_time: string;
5929
+ /**
5930
+ * 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.
5729
5931
  */
5730
5932
  job_id?: string | null;
5731
5933
  /**
5732
- * Id of the timecode to classify the entry; must be one of the company's default timecodes. Send null for none.
5934
+ * 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.
5733
5935
  */
5734
5936
  timekeeping_timecode_id?: string | null;
5735
5937
  /**
@@ -5745,31 +5947,54 @@ export type TimeEntryParameters = {
5745
5947
  */
5746
5948
  hourly_rate_cents?: string | null;
5747
5949
  /**
5748
- * Feature ids to allocate to this time entry. Only features your company can view are accepted.
5950
+ * 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.
5749
5951
  */
5750
- feature_ids?: Array<string> | null;
5952
+ feature_ids?: Array<string>;
5953
+ /**
5954
+ * 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.
5955
+ */
5956
+ feature_allocation_acknowledged?: boolean;
5751
5957
  };
5752
5958
  /**
5753
- * 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.
5959
+ * Request body for updating a time entry. Every field is optional, and an omitted field keeps its value.
5754
5960
  */
5755
- export type TimeEntryCreateParameters = TimeEntryParameters & {
5961
+ export type TimeEntryUpdateParameters = {
5756
5962
  /**
5757
- * Id of the time card to attach the entry to; user_id is derived server-side from it. Set at creation.
5963
+ * Start of the work as a timestamp string, rounded to the nearest second. A time with an offset (`Z` or `-05:00`) is read at that instant. A time without one is read in the time card's pay schedule zone (`tz_name`); a time the clocks skip when they spring forward is read an hour later, and a time they repeat when they fall back is read as its first occurrence. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
5758
5964
  */
5759
- timekeeping_time_card_id: string;
5965
+ start_time?: string;
5760
5966
  /**
5761
- * Set true to record an explicit "no feature" answer when the job requires a feature allocation and you're not supplying one.
5967
+ * End of the work as a timestamp string, rounded to the nearest second. A time with an offset (`Z` or `-05:00`) is read at that instant. A time without one is read in the time card's pay schedule zone (`tz_name`); a time the clocks skip when they spring forward is read an hour later, and a time they repeat when they fall back is read as its first occurrence. Null or a non-string answers 422 at its pointer; a string that does not parse as a date and time answers 422 invalid_date.
5762
5968
  */
5763
- feature_allocation_acknowledged?: boolean | null;
5764
- };
5765
- /**
5766
- * Request body for updating a time entry — the time_entry_parameters fields, every one optional, plus the acknowledgement that clears an apprenticeship allocation conflict.
5767
- */
5768
- export type TimeEntryUpdateParameters = TimeEntryParameters & {
5969
+ end_time?: string;
5970
+ /**
5971
+ * 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.
5972
+ */
5973
+ job_id?: string | null;
5974
+ /**
5975
+ * 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.
5976
+ */
5977
+ timekeeping_timecode_id?: string | null;
5978
+ /**
5979
+ * Two-letter US state code where the work occurred; null to clear.
5980
+ */
5981
+ state?: string | null;
5982
+ /**
5983
+ * Free-text note on the entry (maximum 10,000 characters); null to clear.
5984
+ */
5985
+ description?: string | null;
5769
5986
  /**
5770
- * 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.
5987
+ * 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.
5771
5988
  */
5772
- confirm_allocation_conflict?: boolean | null;
5989
+ hourly_rate_cents?: string | null;
5990
+ /**
5991
+ * 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.
5992
+ */
5993
+ feature_ids?: Array<string>;
5994
+ /**
5995
+ * 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.
5996
+ */
5997
+ confirm_allocation_conflict?: boolean;
5773
5998
  };
5774
5999
  /**
5775
6000
  * 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.
@@ -5934,16 +6159,19 @@ export type FormSubmissionResponseObject = {
5934
6159
  updated_at: string;
5935
6160
  };
5936
6161
  /**
5937
- * 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.
6162
+ * 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.
5938
6163
  */
5939
6164
  export type UserCompanyParameters = {
5940
- type?: UserCompanyType;
6165
+ /**
6166
+ * Whether the worker is an `EMPLOYEE` (W-2) or a `CONTRACTOR` (1099), in upper case. Null is not accepted.
6167
+ */
6168
+ type?: 'EMPLOYEE' | 'CONTRACTOR';
5941
6169
  /**
5942
6170
  * Job title at your company.
5943
6171
  */
5944
6172
  title?: string | null;
5945
6173
  /**
5946
- * Id of the worker's manager at your company (another user).
6174
+ * Id of the worker's manager at your company (another user). Send null to clear it; blank text answers 422.
5947
6175
  */
5948
6176
  manager_user_id?: string | null;
5949
6177
  /**
@@ -5951,13 +6179,13 @@ export type UserCompanyParameters = {
5951
6179
  */
5952
6180
  payroll_id?: string | null;
5953
6181
  /**
5954
- * Employment start date (YYYY-MM-DD). Changing it moves the start of the employment history.
6182
+ * Whether the worker is enrolled in Time and Attendance (time tracking). Null is not accepted.
5955
6183
  */
5956
- hire_date?: string | null;
6184
+ enrolled_in_t_and_a?: boolean;
5957
6185
  /**
5958
- * Whether the worker is enrolled in Time and Attendance (time tracking).
6186
+ * Employment start date (YYYY-MM-DD). Changing it moves the start of the employment history. Null or blank text leaves it where it is.
5959
6187
  */
5960
- enrolled_in_t_and_a?: boolean;
6188
+ hire_date?: string | null;
5961
6189
  /**
5962
6190
  * 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.
5963
6191
  */
@@ -5973,54 +6201,57 @@ export type UserCompanyParameters = {
5973
6201
  }>;
5974
6202
  };
5975
6203
  /**
5976
- * 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.
6204
+ * 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.
5977
6205
  */
5978
6206
  export type UserCompanyCreateParameters = {
5979
6207
  /**
5980
- * Employment start date (YYYY-MM-DD). Sets when employment begins. Required.
6208
+ * Employment start date (YYYY-MM-DD). Sets when employment begins. Required; null, blank text, or any other form answers 422.
5981
6209
  */
5982
6210
  hire_date: string;
5983
- type?: UserCompanyType;
6211
+ /**
6212
+ * Whether the worker is an `EMPLOYEE` (W-2) or a `CONTRACTOR` (1099), in upper case. Omit to use `EMPLOYEE`; null is not accepted.
6213
+ */
6214
+ type?: 'EMPLOYEE' | 'CONTRACTOR';
5984
6215
  /**
5985
6216
  * Job title at your company.
5986
6217
  */
5987
6218
  title?: string | null;
5988
6219
  /**
5989
- * Id of the worker's manager at your company (another user).
6220
+ * Id of the worker's manager at your company (another user). Omit or send null for no manager; blank text answers 422.
5990
6221
  */
5991
6222
  manager_user_id?: string | null;
5992
6223
  /**
5993
- * How the worker is paid: hourly or salary.
6224
+ * The worker's identifier in your payroll system of record.
5994
6225
  */
5995
- compensation_type?: 'hourly' | 'salary';
6226
+ payroll_id?: string | null;
5996
6227
  /**
5997
- * Whether to enroll the worker in Time and Attendance (time tracking).
6228
+ * Whether to enroll the worker in Time and Attendance (time tracking). Null is not accepted.
5998
6229
  */
5999
6230
  enrolled_in_t_and_a?: boolean;
6000
6231
  /**
6001
- * The worker's identifier in your payroll system of record.
6232
+ * How the worker is paid: `hourly` or `salary`, in lower case. Null is not accepted.
6002
6233
  */
6003
- payroll_id?: string | null;
6234
+ compensation_type?: 'hourly' | 'salary';
6004
6235
  /**
6005
- * Base pay rate as a decimal string (for example "32.50"), in the company's currency.
6236
+ * Base hourly pay in cents as a decimal string (for example "3250" for 32.50). Omit or send null to leave it unset; send "0" for zero. A JSON number answers 422; send the amount as a string.
6006
6237
  */
6007
- hourly_rate?: string | null;
6238
+ hourly_rate_cents?: string | null;
6008
6239
  /**
6009
- * Whether the worker is eligible for overtime pay.
6240
+ * Annual training-fund contribution in cents as a decimal string. Used in prevailing-wage fringe calculations. Omit or send null to leave it unset; send "0" for zero. A JSON number answers 422.
6010
6241
  */
6011
- overtime_eligible?: boolean;
6242
+ training_annual_amount_cents?: string | null;
6012
6243
  /**
6013
- * Annual training-fund contribution as a decimal string. Used in prevailing-wage fringe calculations.
6244
+ * Employer-paid annual combined health benefit in cents as a decimal string. Omit or send null to leave it unset; send "0" for zero. A JSON number answers 422.
6014
6245
  */
6015
- training_annual_amount?: string | null;
6246
+ employer_combined_health_amount_cents?: string | null;
6016
6247
  /**
6017
- * Employer-paid annual combined health benefit as a decimal string.
6248
+ * Employer-paid annual combined savings and retirement benefit in cents as a decimal string. Omit or send null to leave it unset; send "0" for zero. A JSON number answers 422.
6018
6249
  */
6019
- employer_combined_health_amount?: string | null;
6250
+ employer_combined_savings_cents?: string | null;
6020
6251
  /**
6021
- * Employer-paid annual combined savings and retirement benefit as a decimal string.
6252
+ * Whether the worker is eligible for overtime pay. Omit to use true; null is not accepted.
6022
6253
  */
6023
- employer_combined_savings?: string | null;
6254
+ overtime_eligible?: boolean;
6024
6255
  /**
6025
6256
  * Annualized minutes the worker is expected to work, used to annualize fringe benefits.
6026
6257
  */
@@ -6074,29 +6305,29 @@ export type UserCompanyScheduledChangesParameters = {
6074
6305
  */
6075
6306
  effective_date: string;
6076
6307
  /**
6077
- * Base pay rate as a decimal string (for example "32.50"), in the company's currency.
6308
+ * Base hourly pay in cents as a decimal string (for example "3250" for 32.50). Omit to carry forward the preceding version, or send null to clear it; send "0" for zero.
6078
6309
  */
6079
- hourly_rate?: string | null;
6310
+ hourly_rate_cents?: string | null;
6080
6311
  /**
6081
- * How the worker is paid: hourly or salary.
6312
+ * Annual training-fund contribution in cents as a decimal string. Omit to carry forward the preceding version, or send null to clear it; send "0" for zero.
6082
6313
  */
6083
- compensation_type?: 'hourly' | 'salary';
6314
+ training_annual_amount_cents?: string | null;
6084
6315
  /**
6085
- * Whether the worker is eligible for overtime pay.
6316
+ * Employer-paid annual combined health benefit in cents as a decimal string. Omit to carry forward the preceding version, or send null to clear it; send "0" for zero.
6086
6317
  */
6087
- overtime_eligible?: boolean;
6318
+ employer_combined_health_amount_cents?: string | null;
6088
6319
  /**
6089
- * Annual training-fund contribution as a decimal string.
6320
+ * Employer-paid annual combined savings and retirement benefit in cents as a decimal string. Omit to carry forward the preceding version, or send null to clear it; send "0" for zero.
6090
6321
  */
6091
- training_annual_amount?: string | null;
6322
+ employer_combined_savings_cents?: string | null;
6092
6323
  /**
6093
- * Employer-paid annual combined health benefit as a decimal string.
6324
+ * How the worker is paid: hourly or salary.
6094
6325
  */
6095
- employer_combined_health_amount?: string | null;
6326
+ compensation_type?: 'hourly' | 'salary';
6096
6327
  /**
6097
- * Employer-paid annual combined savings and retirement benefit as a decimal string.
6328
+ * Whether the worker is eligible for overtime pay.
6098
6329
  */
6099
- employer_combined_savings?: string | null;
6330
+ overtime_eligible?: boolean;
6100
6331
  /**
6101
6332
  * Annualized minutes the worker is expected to work, used to annualize fringe benefits.
6102
6333
  */
@@ -6407,7 +6638,7 @@ export type UserGroupResponse = {
6407
6638
  */
6408
6639
  export type UserGroupParameters = {
6409
6640
  /**
6410
- * 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.
6641
+ * 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.
6411
6642
  */
6412
6643
  user_ids: Array<string>;
6413
6644
  };
@@ -6476,9 +6707,9 @@ export type UserCompanyScheduledChange = {
6476
6707
  */
6477
6708
  start_date: string;
6478
6709
  /**
6479
- * Base pay rate for this version, formatted as a currency string; null when unset.
6710
+ * Base hourly pay for this version in cents as a decimal string; null when unset.
6480
6711
  */
6481
- hourly_rate: string | null;
6712
+ hourly_rate_cents: string | null;
6482
6713
  /**
6483
6714
  * How the worker is paid: hourly or salary.
6484
6715
  */
@@ -6488,17 +6719,17 @@ export type UserCompanyScheduledChange = {
6488
6719
  */
6489
6720
  overtime_eligible: boolean;
6490
6721
  /**
6491
- * Annual training-fund contribution, formatted as a currency string; null when unset.
6722
+ * Annual training-fund contribution in cents as a decimal string; null when unset.
6492
6723
  */
6493
- training_annual_amount: string | null;
6724
+ training_annual_amount_cents: string | null;
6494
6725
  /**
6495
- * Employer-paid annual combined health benefit, formatted as a currency string; null when unset.
6726
+ * Employer-paid annual combined health benefit in cents as a decimal string; null when unset.
6496
6727
  */
6497
- employer_combined_health_amount: string | null;
6728
+ employer_combined_health_amount_cents: string | null;
6498
6729
  /**
6499
- * Employer-paid annual combined savings and retirement benefit, formatted as a currency string; null when unset.
6730
+ * Employer-paid annual combined savings and retirement benefit in cents as a decimal string; null when unset.
6500
6731
  */
6501
- employer_combined_savings: string | null;
6732
+ employer_combined_savings_cents: string | null;
6502
6733
  /**
6503
6734
  * Annualized minutes the worker is expected to work in this version; null when unset.
6504
6735
  */
@@ -6529,6 +6760,47 @@ export type UserCompanyScheduledTerminationParameters = {
6529
6760
  */
6530
6761
  termination_date: string;
6531
6762
  };
6763
+ /**
6764
+ * A pay period — a bounded pay window generated automatically by its pay schedule (PayPeriodConfig).
6765
+ */
6766
+ export type PayPeriodResponseObject = {
6767
+ /**
6768
+ * Unique identifier.
6769
+ */
6770
+ id: string;
6771
+ /**
6772
+ * ID of the pay schedule (PayPeriodConfig) that owns this pay period, stable across all of its versions.
6773
+ */
6774
+ timekeeping_pay_period_config_id: string;
6775
+ /**
6776
+ * Calendar date (YYYY-MM-DD) that workers are paid for this period.
6777
+ */
6778
+ pay_date: string;
6779
+ /**
6780
+ * Start of the pay-period window (ISO 8601).
6781
+ */
6782
+ start_time: string;
6783
+ /**
6784
+ * End of the pay-period window (ISO 8601).
6785
+ */
6786
+ end_time: string;
6787
+ /**
6788
+ * When payroll must be run for this period (ISO 8601).
6789
+ */
6790
+ pay_run_deadline: string;
6791
+ /**
6792
+ * When time-card approvals are due for this period (ISO 8601).
6793
+ */
6794
+ approvals_deadline: string;
6795
+ /**
6796
+ * When the record was created (ISO 8601).
6797
+ */
6798
+ created_at: string;
6799
+ /**
6800
+ * When the record was last updated (ISO 8601).
6801
+ */
6802
+ updated_at: string;
6803
+ };
6532
6804
  /**
6533
6805
  * 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.
6534
6806
  */
@@ -6538,44 +6810,7 @@ export type PayPeriodsResponseObject = {
6538
6810
  /**
6539
6811
  * The page of pay periods.
6540
6812
  */
6541
- data: Array<{
6542
- /**
6543
- * Unique identifier.
6544
- */
6545
- id: string;
6546
- /**
6547
- * ID of the pay schedule (PayPeriodConfig) that owns this pay period, stable across all of its versions.
6548
- */
6549
- timekeeping_pay_period_config_id: string;
6550
- /**
6551
- * Calendar date (YYYY-MM-DD) that workers are paid for this period.
6552
- */
6553
- pay_date: string;
6554
- /**
6555
- * Start of the pay-period window (ISO 8601).
6556
- */
6557
- start_time: string;
6558
- /**
6559
- * End of the pay-period window (ISO 8601).
6560
- */
6561
- end_time: string;
6562
- /**
6563
- * When payroll must be run for this period (ISO 8601).
6564
- */
6565
- pay_run_deadline: string;
6566
- /**
6567
- * When time-card approvals are due for this period (ISO 8601).
6568
- */
6569
- approvals_deadline: string;
6570
- /**
6571
- * When the record was created (ISO 8601).
6572
- */
6573
- created_at: string;
6574
- /**
6575
- * When the record was last updated (ISO 8601).
6576
- */
6577
- updated_at: string;
6578
- }>;
6813
+ data: Array<PayPeriodResponseObject>;
6579
6814
  };
6580
6815
  /**
6581
6816
  * One problem found while processing an accepted import, whatever its type.
@@ -6836,7 +7071,7 @@ export type TimeEntryImportResponseObject = {
6836
7071
  updated_at: string;
6837
7072
  };
6838
7073
  /**
6839
- * Submit a spreadsheet of time entries for a pay period. All seven of payroll_id, start_time, end_time, timecode, job_id, state and description must be present as column headers, or the file is refused naming the ones missing. Of those, payroll_id, start_time, end_time, timecode and state must also carry a value on every row. features, federal_labor_classification and regional_labor_classification are read when present. Header matching ignores case and treats spaces as underscores, and column order does not matter. Any other column is refused: a name this import does not read would be dropped without trace, so the file is rejected naming it rather than applied in part.
7074
+ * Submit a spreadsheet of time entries for a pay period. All six of payroll_id, start_time, end_time, timecode, job_id and description must be present as column headers, or the file is refused naming the ones missing. The payroll_id, start_time, end_time and timecode columns must carry a value on every row. The state column may be omitted, or its cells left blank, when the row's Job resolves a recognized state through its operating region, address, then oldest qualifying Site address. A valid explicit state overrides this fallback; an invalid supplied state fails. Missing or blank state without a Job, unresolved geography, or an unrecognized address region rejects the whole file with row-specific errors. The original file retains omissions and blank values, so background processing resolves current Job geography again. features, federal_labor_classification and regional_labor_classification are read when present. Header matching ignores case and treats spaces as underscores, and column order does not matter. Any other column is refused: a name this import does not read would be dropped without trace, so the file is rejected naming it rather than applied in part.
6840
7075
  *
6841
7076
  * Because acceptance is synchronous but the write happens in the background, only one import at a time is accepted for a pay period: while an earlier one is still `pending` or `processing`, a second answers 409 naming `import_in_progress`, and nothing is written. Poll the earlier import until it reports, then submit again.
6842
7077
  */
@@ -8018,11 +8253,11 @@ export type ProjectResponseObject = {
8018
8253
  /**
8019
8254
  * Project budget as a money amount in cents, serialized as a decimal string (e.g. "500000.0" for a $5,000 budget), or null.
8020
8255
  */
8021
- budget_cents: string | null;
8256
+ budget_cents?: string | null;
8022
8257
  /**
8023
8258
  * ISO 4217 currency code for the budget, or null; defaults to "USD".
8024
8259
  */
8025
- budget_currency: string | null;
8260
+ budget_currency?: string | null;
8026
8261
  /**
8027
8262
  * Schedule start date as an ISO8601 date (YYYY-MM-DD), or null.
8028
8263
  */
@@ -8053,7 +8288,7 @@ export type ProjectResponseObject = {
8053
8288
  updated_at: string;
8054
8289
  };
8055
8290
  /**
8056
- * 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.
8291
+ * 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.
8057
8292
  */
8058
8293
  export type ProjectParameters = {
8059
8294
  /**
@@ -8061,7 +8296,7 @@ export type ProjectParameters = {
8061
8296
  */
8062
8297
  external_id?: string | null;
8063
8298
  /**
8064
- * Human-readable project name; required, and must be unique within the owning company.
8299
+ * Human-readable project name; required, and must be unique within the owning company. Null, a blank string, or a wrong type answers 422.
8065
8300
  */
8066
8301
  name: string;
8067
8302
  /**
@@ -8069,11 +8304,7 @@ export type ProjectParameters = {
8069
8304
  */
8070
8305
  description?: string | null;
8071
8306
  /**
8072
- * 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.
8073
- */
8074
- created_by_user_id: string;
8075
- /**
8076
- * 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.
8307
+ * 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.
8077
8308
  */
8078
8309
  parent_id?: string | null;
8079
8310
  /**
@@ -8081,35 +8312,35 @@ export type ProjectParameters = {
8081
8312
  */
8082
8313
  participating_company_ids?: Array<string>;
8083
8314
  /**
8084
- * Schedule start date as an ISO8601 date (YYYY-MM-DD), or null; requires tz_name to be set.
8315
+ * 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.
8085
8316
  */
8086
8317
  start_date?: string | null;
8087
8318
  /**
8088
- * Schedule end date as an ISO8601 date (YYYY-MM-DD), or null; must be on or after start_date.
8319
+ * 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.
8089
8320
  */
8090
8321
  end_date?: string | null;
8091
8322
  /**
8092
- * IANA time zone name. Required when start_date is set.
8323
+ * IANA time zone name, or null. Required when start_date is set. A blank or unlisted name answers 422.
8093
8324
  */
8094
8325
  tz_name?: string | null;
8095
8326
  /**
8096
- * Day of week billing starts: 0 (Sunday) through 6 (Saturday).
8327
+ * Day of week billing starts, as an integer: 0 (Sunday) through 6 (Saturday), or null. Any other value, a numeric string included, answers 422.
8097
8328
  */
8098
8329
  billing_start_day?: number | null;
8099
8330
  /**
8100
- * Federal PWA tracking mode: `all` (prevailing wage + apprenticeship), `pw_only`, `ap_only`, or `none`. Any other value returns 422.
8331
+ * Federal PWA tracking mode: `all` (prevailing wage + apprenticeship), `pw_only`, `ap_only`, or `none`. Null or any other value returns 422.
8101
8332
  */
8102
8333
  federal_pwa_mode?: 'all' | 'pw_only' | 'ap_only' | 'none';
8103
8334
  /**
8104
- * Any value other than `none` requires `region`.
8335
+ * 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`.
8105
8336
  */
8106
8337
  regional_pwa_mode?: 'all' | 'pw_only' | 'ap_only' | 'none';
8107
8338
  /**
8108
- * US state abbreviation; must be one of the owning company's operating regions.
8339
+ * US state abbreviation, or null; must be one of the owning company's operating regions.
8109
8340
  */
8110
8341
  region?: string | null;
8111
8342
  /**
8112
- * 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`.
8343
+ * 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`.
8113
8344
  */
8114
8345
  asset_owner?: boolean;
8115
8346
  /**
@@ -8125,24 +8356,28 @@ export type ProjectParameters = {
8125
8356
  */
8126
8357
  administrator_phone?: string | null;
8127
8358
  /**
8128
- * 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.
8359
+ * Budget in cents as a decimal string (e.g. "500000" or the read form "500000.0" for $5,000), or null to clear it; a JSON number or any other type returns 422, and a fraction rounds to two decimal places. 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.
8129
8360
  */
8130
- budget?: string;
8361
+ budget_cents?: string | null;
8131
8362
  /**
8132
- * 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.
8363
+ * 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.
8133
8364
  */
8134
8365
  prevailing_wage_lock_in_date?: string | null;
8135
8366
  /**
8136
- * 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.
8367
+ * 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.
8137
8368
  */
8138
8369
  beginning_of_construction_date?: string | null;
8139
8370
  /**
8140
- * 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.
8371
+ * 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.
8141
8372
  */
8142
8373
  placed_in_service_date?: string | null;
8374
+ /**
8375
+ * 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.
8376
+ */
8377
+ created_by_user_id: string;
8143
8378
  };
8144
8379
  /**
8145
- * 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.
8380
+ * 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.
8146
8381
  */
8147
8382
  export type ProjectUpdateParameters = {
8148
8383
  /**
@@ -8150,7 +8385,7 @@ export type ProjectUpdateParameters = {
8150
8385
  */
8151
8386
  external_id?: string | null;
8152
8387
  /**
8153
- * Human-readable project name; omit to preserve the current value. The resulting project name must remain present and unique within the owning company.
8388
+ * 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.
8154
8389
  */
8155
8390
  name?: string;
8156
8391
  /**
@@ -8158,7 +8393,7 @@ export type ProjectUpdateParameters = {
8158
8393
  */
8159
8394
  description?: string | null;
8160
8395
  /**
8161
- * 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.
8396
+ * 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.
8162
8397
  */
8163
8398
  parent_id?: string | null;
8164
8399
  /**
@@ -8166,104 +8401,225 @@ export type ProjectUpdateParameters = {
8166
8401
  */
8167
8402
  participating_company_ids?: Array<string>;
8168
8403
  /**
8169
- * Schedule start date as an ISO8601 date (YYYY-MM-DD), or null; requires tz_name to be set.
8404
+ * 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.
8170
8405
  */
8171
8406
  start_date?: string | null;
8172
8407
  /**
8173
- * Schedule end date as an ISO8601 date (YYYY-MM-DD), or null; must be on or after start_date.
8408
+ * 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.
8174
8409
  */
8175
8410
  end_date?: string | null;
8176
8411
  /**
8177
- * IANA time zone name. Required when start_date is set.
8412
+ * IANA time zone name, or null. Required when start_date is set. A blank or unlisted name answers 422.
8178
8413
  */
8179
8414
  tz_name?: string | null;
8180
8415
  /**
8181
- * Day of week billing starts: 0 (Sunday) through 6 (Saturday).
8416
+ * Day of week billing starts, as an integer: 0 (Sunday) through 6 (Saturday), or null. Any other value, a numeric string included, answers 422.
8182
8417
  */
8183
8418
  billing_start_day?: number | null;
8184
8419
  /**
8185
- * Federal PWA tracking mode: `all` (prevailing wage + apprenticeship), `pw_only`, `ap_only`, or `none`. Any other value returns 422.
8420
+ * Federal PWA tracking mode: `all` (prevailing wage + apprenticeship), `pw_only`, `ap_only`, or `none`. Null or any other value returns 422.
8186
8421
  */
8187
8422
  federal_pwa_mode?: 'all' | 'pw_only' | 'ap_only' | 'none';
8188
8423
  /**
8189
- * Any value other than `none` requires `region`.
8424
+ * 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`.
8425
+ */
8426
+ regional_pwa_mode?: 'all' | 'pw_only' | 'ap_only' | 'none';
8427
+ /**
8428
+ * US state abbreviation, or null; must be one of the owning company's operating regions.
8429
+ */
8430
+ region?: string | null;
8431
+ /**
8432
+ * 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`.
8433
+ */
8434
+ asset_owner?: boolean;
8435
+ /**
8436
+ * Name of the project administrator. 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.
8437
+ */
8438
+ administrator_name?: string | null;
8439
+ /**
8440
+ * Email of the project administrator. 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.
8441
+ */
8442
+ administrator_email?: string | null;
8443
+ /**
8444
+ * Phone of the project administrator, normalized to E.164. 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.
8445
+ */
8446
+ administrator_phone?: string | null;
8447
+ /**
8448
+ * Budget in cents as a decimal string (e.g. "500000" or the read form "500000.0" for $5,000), or null to clear it; a JSON number or any other type returns 422, and a fraction rounds to two decimal places. 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.
8449
+ */
8450
+ budget_cents?: string | null;
8451
+ /**
8452
+ * 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.
8453
+ */
8454
+ prevailing_wage_lock_in_date?: string | null;
8455
+ /**
8456
+ * 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.
8457
+ */
8458
+ beginning_of_construction_date?: string | null;
8459
+ /**
8460
+ * 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.
8461
+ */
8462
+ placed_in_service_date?: string | null;
8463
+ };
8464
+ /**
8465
+ * A project–site assignment: the join linking a project to a site, optionally scoping which of that site's features apply. Path `{id}` is this join's id, not the Site's. Not included on project GET.
8466
+ */
8467
+ export type ProjectSiteResponseObject = {
8468
+ /**
8469
+ * Unique identifier.
8470
+ */
8471
+ id: string;
8472
+ /**
8473
+ * ID of the linked site.
8474
+ */
8475
+ site_id: string;
8476
+ /**
8477
+ * IDs of the site's features that apply to this project. Empty when none are scoped.
8478
+ */
8479
+ feature_ids: Array<string>;
8480
+ };
8481
+ /**
8482
+ * Request body for attaching a site to a project. `site_id` is required; `feature_ids` is optional. The project is taken from the path and is not part of the body.
8483
+ */
8484
+ export type ProjectSiteParameters = {
8485
+ /**
8486
+ * ID of a site visible to the API key. The site must be public or private to the project's owning company. Duplicate (project, site) pairs are rejected. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422.
8487
+ */
8488
+ site_id: string;
8489
+ /**
8490
+ * Optional complete set of unique nonblank feature IDs on that site to scope to this project. Omit to attach the site with no features. Each feature must belong to the site. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422.
8491
+ */
8492
+ feature_ids?: Array<string>;
8493
+ };
8494
+ /**
8495
+ * Request body for replacing which of the site's features apply to this project. Every field is optional; omit a field to preserve its current value. `site_id` is create-only and an update that names it is rejected.
8496
+ */
8497
+ export type ProjectSiteUpdateParameters = {
8498
+ /**
8499
+ * Complete desired set of unique nonblank feature IDs on the linked site. Send an empty array to clear the set. Omit to leave the current set unchanged. Each feature must belong to the site. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422.
8500
+ */
8501
+ feature_ids?: Array<string>;
8502
+ };
8503
+ /**
8504
+ * A file attached to a project. Uploaded through the direct-upload flow. `name` is always "document" and is not client-writable.
8505
+ */
8506
+ export type ProjectDocumentResponseObject = {
8507
+ /**
8508
+ * Unique identifier.
8509
+ */
8510
+ id: string;
8511
+ /**
8512
+ * ID of the project this document belongs to.
8513
+ */
8514
+ project_id: string;
8515
+ /**
8516
+ * Read-only document label; this API does not set it, so it is always "document".
8517
+ */
8518
+ name: string;
8519
+ /**
8520
+ * The file's human-readable download name; null when not set.
8190
8521
  */
8191
- regional_pwa_mode?: 'all' | 'pw_only' | 'ap_only' | 'none';
8522
+ filename: string | null;
8192
8523
  /**
8193
- * US state abbreviation; must be one of the owning company's operating regions.
8524
+ * Free-text description of the document; null when none.
8194
8525
  */
8195
- region?: string | null;
8526
+ description: string | null;
8196
8527
  /**
8197
- * 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`.
8528
+ * ID of the user who uploaded the document.
8198
8529
  */
8199
- asset_owner?: boolean;
8530
+ created_by_user_id: string;
8200
8531
  /**
8201
- * Name of the project administrator. 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.
8532
+ * The attached file; null while no blob is attached.
8202
8533
  */
8203
- administrator_name?: string | null;
8534
+ file: {
8535
+ /**
8536
+ * Stored name of the uploaded file.
8537
+ */
8538
+ filename: string;
8539
+ /**
8540
+ * MIME type of the file; null when not recorded.
8541
+ */
8542
+ content_type: string | null;
8543
+ /**
8544
+ * Size of the file in bytes.
8545
+ */
8546
+ byte_size: number;
8547
+ /**
8548
+ * A URL to download the file.
8549
+ */
8550
+ url: string;
8551
+ } | null;
8204
8552
  /**
8205
- * Email of the project administrator. 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.
8553
+ * When the record was created (ISO 8601).
8206
8554
  */
8207
- administrator_email?: string | null;
8555
+ created_at: string;
8208
8556
  /**
8209
- * Phone of the project administrator, normalized to E.164. 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.
8557
+ * When the record was last updated (ISO 8601).
8210
8558
  */
8211
- administrator_phone?: string | null;
8559
+ updated_at: string;
8560
+ };
8561
+ /**
8562
+ * Attach a file to a project as a document. file is required and takes a signed_id from the direct-upload endpoint.
8563
+ */
8564
+ export type ProjectDocumentParameters = {
8212
8565
  /**
8213
- * 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.
8566
+ * 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.
8214
8567
  */
8215
- budget?: string;
8568
+ file: string;
8216
8569
  /**
8217
- * 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.
8570
+ * The file's human-readable download name; null when not set.
8218
8571
  */
8219
- prevailing_wage_lock_in_date?: string | null;
8572
+ filename?: string | null;
8220
8573
  /**
8221
- * 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.
8574
+ * Free-text description of the document; null when none.
8222
8575
  */
8223
- beginning_of_construction_date?: string | null;
8576
+ description?: string | null;
8224
8577
  /**
8225
- * 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.
8578
+ * 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.
8226
8579
  */
8227
- placed_in_service_date?: string | null;
8580
+ performed_by_user_id: string;
8228
8581
  };
8229
8582
  /**
8230
- * A project–site assignment: the join linking a project to a site, optionally scoping which of that site's features apply. Path `{id}` is this join's id, not the Site's. Not included on project GET.
8583
+ * 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.
8231
8584
  */
8232
- export type ProjectSiteResponseObject = {
8585
+ export type ProjectDocumentUpdateParameters = {
8233
8586
  /**
8234
- * Unique identifier.
8587
+ * 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.
8235
8588
  */
8236
- id: string;
8589
+ file?: string;
8237
8590
  /**
8238
- * ID of the linked site.
8591
+ * The file's human-readable download name; null when not set.
8239
8592
  */
8240
- site_id: string;
8593
+ filename?: string | null;
8241
8594
  /**
8242
- * IDs of the site's features that apply to this project. Empty when none are scoped.
8595
+ * Free-text description of the document; null when none.
8243
8596
  */
8244
- feature_ids: Array<string>;
8597
+ description?: string | null;
8245
8598
  };
8246
8599
  /**
8247
- * Request body for attaching a site to a project. `site_id` is required; `feature_ids` is optional. The project is taken from the path and is not part of the body.
8600
+ * 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.
8248
8601
  */
8249
- export type ProjectSiteParameters = {
8602
+ export type ProjectDocumentVersionResponseObject = {
8250
8603
  /**
8251
- * ID of a site visible to the API key. The site must be public or private to the project's owning company. Duplicate (project, site) pairs are rejected. Omission answers 400; supplied null, a blank ID, or a wrong type answers 422.
8604
+ * Unique identifier.
8252
8605
  */
8253
- site_id: string;
8606
+ id: number;
8254
8607
  /**
8255
- * Optional complete set of unique nonblank feature IDs on that site to scope to this project. Omit to attach the site with no features. Each feature must belong to the site. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422.
8608
+ * ID of the document this version belongs to.
8256
8609
  */
8257
- feature_ids?: Array<string>;
8258
- };
8259
- /**
8260
- * Request body for replacing which of the site's features apply to this project. Every field is optional; omit a field to preserve its current value. `site_id` is create-only and an update that names it is rejected.
8261
- */
8262
- export type ProjectSiteUpdateParameters = {
8610
+ document_id: string;
8263
8611
  /**
8264
- * Complete desired set of unique nonblank feature IDs on the linked site. Send an empty array to clear the set. Omit to leave the current set unchanged. Each feature must belong to the site. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422.
8612
+ * The change this version records: one of create, update, or destroy.
8265
8613
  */
8266
- feature_ids?: Array<string>;
8614
+ event: 'create' | 'update' | 'destroy';
8615
+ /**
8616
+ * ID of the user who made the change; null when it was not attributed to a user.
8617
+ */
8618
+ whodunnit: string | null;
8619
+ /**
8620
+ * When the record was created (ISO 8601).
8621
+ */
8622
+ created_at: string;
8267
8623
  };
8268
8624
  export type SiteCheckInResponseObject = {
8269
8625
  id: string;
@@ -8291,6 +8647,10 @@ export type SiteCheckInResponseObject = {
8291
8647
  longitude: number | null;
8292
8648
  start_time: string;
8293
8649
  end_time: string | null;
8650
+ /**
8651
+ * Whole minutes between start_time and end_time, rounded to the nearest minute; null while the check-in is still open.
8652
+ */
8653
+ duration_minutes: number | null;
8294
8654
  verified_at: string | null;
8295
8655
  created_at: string;
8296
8656
  updated_at: string;
@@ -8710,19 +9070,19 @@ export type ComplianceCheckDocumentObject = {
8710
9070
  created_at: string;
8711
9071
  };
8712
9072
  /**
8713
- * Update a compliance check. Every field is optional.
9073
+ * 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.
8714
9074
  */
8715
9075
  export type ComplianceCheckParameters = {
8716
9076
  /**
8717
- * 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`.
9077
+ * 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.
8718
9078
  */
8719
9079
  status?: 'dismissed' | 'pending';
8720
9080
  /**
8721
- * When the check is due (ISO 8601); send null to clear it, or omit to leave it unchanged.
9081
+ * When the check is due, as a calendar date (`YYYY-MM-DD`) stored as midnight UTC. A time sent with it is kept, not dropped, and is read as UTC unless it carries an offset (`Z` or `-05:00`). Send null to clear it, or omit to leave it unchanged. A value that is not a string answers 422.
8722
9082
  */
8723
9083
  time_due?: string | null;
8724
9084
  /**
8725
- * 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.
9085
+ * 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.
8726
9086
  */
8727
9087
  assignee_user_ids?: Array<string>;
8728
9088
  /**
@@ -8755,6 +9115,8 @@ export type TodoInboxTodoResponseObject = {
8755
9115
  created_by_user_id: string;
8756
9116
  updated_by_user_id: string;
8757
9117
  completed: boolean;
9118
+ priority: 'critical' | 'high' | 'medium' | 'low' | null;
9119
+ category: 'apprenticeship' | 'certified_payroll' | 'company' | 'job' | 'payroll' | 'project' | 'regional' | 'tax_credit' | 'timekeeping' | 'worker';
8758
9120
  task_assignee_user_ids: Array<string>;
8759
9121
  description: RichTextObject;
8760
9122
  time_due: string | null;
@@ -9434,7 +9796,7 @@ export type PaystubLineItemResponseObject = {
9434
9796
  updated_at: string;
9435
9797
  };
9436
9798
  /**
9437
- * Request body for creating a paystub line item. All four fields are required. Undeclared body keys are rejected with 400; references outside the authenticated company return 404.
9799
+ * Request body for creating a paystub line item. All four fields are required. Undeclared body keys or an omitted field answer 400; a null or blank value, or any wrong-typed value, answers 422; references outside the authenticated company return 404.
9438
9800
  */
9439
9801
  export type PaystubLineItemParameters = {
9440
9802
  /**
@@ -9442,7 +9804,7 @@ export type PaystubLineItemParameters = {
9442
9804
  */
9443
9805
  payrolls_paystub_id: string;
9444
9806
  /**
9445
- * Amount of this line, in cents as a decimal string (e.g. "5000.0" is $50.00). Required.
9807
+ * Amount of this line, in cents as a decimal string (e.g. "5000.0" is $50.00); a JSON number answers 422. Required.
9446
9808
  */
9447
9809
  amount_cents: string;
9448
9810
  /**
@@ -9455,7 +9817,7 @@ export type PaystubLineItemParameters = {
9455
9817
  payrolls_external_map_id: string;
9456
9818
  };
9457
9819
  /**
9458
- * Request body for updating a paystub line item. Send only the fields to change. Undeclared body keys are rejected with 400; newly supplied references outside the authenticated company return 404.
9820
+ * Request body for updating a paystub line item. Send only the fields to change. Undeclared body keys are rejected with 400; a null or blank value, or any wrong-typed value, answers 422; newly supplied references outside the authenticated company return 404.
9459
9821
  */
9460
9822
  export type PaystubLineItemUpdateParameters = {
9461
9823
  /**
@@ -9463,7 +9825,7 @@ export type PaystubLineItemUpdateParameters = {
9463
9825
  */
9464
9826
  payrolls_paystub_id?: string;
9465
9827
  /**
9466
- * Amount of this line, in cents as a decimal string (e.g. "5000.0" is $50.00). Omit to leave it unchanged.
9828
+ * Amount of this line, in cents as a decimal string (e.g. "5000.0" is $50.00); a JSON number answers 422. Omit to leave it unchanged.
9467
9829
  */
9468
9830
  amount_cents?: string;
9469
9831
  /**
@@ -9525,6 +9887,137 @@ export type JobSiteUpdateParameters = {
9525
9887
  */
9526
9888
  feature_ids?: Array<string>;
9527
9889
  };
9890
+ /**
9891
+ * A document attached to a job — either an uploaded file or an external URL, never both. Includes PWA documentation when the caller may see it.
9892
+ */
9893
+ export type JobDocumentResponseObject = {
9894
+ /**
9895
+ * Id of the job document.
9896
+ */
9897
+ id: string;
9898
+ /**
9899
+ * Id of the job this document belongs to. Taken from the path on writes.
9900
+ */
9901
+ job_id: string;
9902
+ /**
9903
+ * Human-readable document name.
9904
+ */
9905
+ name: string;
9906
+ /**
9907
+ * Document type code from the DocumentType catalog, including `PWA_DOCUMENTATION`.
9908
+ */
9909
+ type: 'CERTIFICATIONS' | 'CHECKLIST' | 'MAP' | 'MSA' | 'ONSITE_POSTER' | 'OTHER' | 'PARTS_INSTRUCTIONS' | 'PHOTO' | 'PO' | 'PWA_DOCUMENTATION' | 'RESUME' | 'WO';
9910
+ /**
9911
+ * Optional description; null when absent.
9912
+ */
9913
+ description: string | null;
9914
+ /**
9915
+ * True when only callers with job financial access may see the document. PWA documentation is always true.
9916
+ */
9917
+ admin_only: boolean;
9918
+ /**
9919
+ * External link when the document is a URL rather than an uploaded file; null when a file is attached.
9920
+ */
9921
+ url: string | null;
9922
+ /**
9923
+ * The attached file's filename, content type, size, and URL; null when the document is a URL.
9924
+ */
9925
+ file: {
9926
+ /**
9927
+ * Stored name of the uploaded file.
9928
+ */
9929
+ filename: string;
9930
+ /**
9931
+ * MIME type of the file; null when not recorded.
9932
+ */
9933
+ content_type: string | null;
9934
+ /**
9935
+ * Size of the file in bytes.
9936
+ */
9937
+ byte_size: number;
9938
+ /**
9939
+ * A URL to download the file.
9940
+ */
9941
+ url: string;
9942
+ } | null;
9943
+ /**
9944
+ * When the document was created.
9945
+ */
9946
+ created_at: string;
9947
+ /**
9948
+ * When the document was last updated.
9949
+ */
9950
+ updated_at: string;
9951
+ };
9952
+ /**
9953
+ * A page of a job's documents, with pagination metadata and navigation links.
9954
+ */
9955
+ export type JobDocumentsResponseObject = {
9956
+ meta: Meta;
9957
+ links: Links;
9958
+ /**
9959
+ * The page of job documents.
9960
+ */
9961
+ data: Array<JobDocumentResponseObject>;
9962
+ };
9963
+ /**
9964
+ * Request body for creating a job document. The job is taken from the path and is not part of the body. Supply exactly one of `url` or `file`.
9965
+ */
9966
+ export type JobDocumentParameters = {
9967
+ /**
9968
+ * Document type code from the DocumentType catalog. Omission or a blank value answers 422. `PWA_DOCUMENTATION` is persisted as admin-only.
9969
+ */
9970
+ type?: string;
9971
+ /**
9972
+ * Human-readable document name. Omission or a blank value answers 422.
9973
+ */
9974
+ name?: string;
9975
+ /**
9976
+ * Optional description. Null clears it on create to absent.
9977
+ */
9978
+ description?: string | null;
9979
+ /**
9980
+ * A signed_id from POST /api/v1/direct_uploads identifying the uploaded blob to attach. Register the upload naming `jobs.documents` — a signed_id issued for any other resource will not resolve here. Omit when supplying `url`. Null and a blank string answer 422.
9981
+ */
9982
+ file?: string;
9983
+ /**
9984
+ * When true, only callers with job financial access may see the document. Forced true when `type` is `PWA_DOCUMENTATION`.
9985
+ */
9986
+ admin_only?: boolean;
9987
+ /**
9988
+ * External https URL. Omit when supplying `file`. Sending both `url` and `file`, or neither, answers 422.
9989
+ */
9990
+ url?: string | null;
9991
+ };
9992
+ /**
9993
+ * Request body for updating a job document. Every field is optional; omit a field to preserve its current value. The resulting document must still be exactly one of `url` or `file`.
9994
+ */
9995
+ export type JobDocumentUpdateParameters = {
9996
+ /**
9997
+ * Replacement document type code from the DocumentType catalog. `PWA_DOCUMENTATION` is persisted as admin-only.
9998
+ */
9999
+ type?: string;
10000
+ /**
10001
+ * Replacement human-readable document name. A blank value answers 422.
10002
+ */
10003
+ name?: string;
10004
+ /**
10005
+ * Replacement description. Null clears it.
10006
+ */
10007
+ description?: string | null;
10008
+ /**
10009
+ * A signed_id from POST /api/v1/direct_uploads identifying a replacement blob. Register the upload naming `jobs.documents` — a signed_id issued for any other resource will not resolve here. Null removes the attachment; the document must then have a `url`.
10010
+ */
10011
+ file?: string | null;
10012
+ /**
10013
+ * When true, only callers with job financial access may see the document. Forced true when `type` is `PWA_DOCUMENTATION`.
10014
+ */
10015
+ admin_only?: boolean;
10016
+ /**
10017
+ * Replacement external https URL. Null clears it; the document must then have a file.
10018
+ */
10019
+ url?: string | null;
10020
+ };
9528
10021
  /**
9529
10022
  * A good-faith-effort exception on a job — a record that the employer requested apprentices from a registered program and did not receive the full request, or that no qualifying program existed. Read-only. Does not include supporting document slots.
9530
10023
  */
@@ -9818,7 +10311,7 @@ export type SiteFormAssignmentParameters = {
9818
10311
  */
9819
10312
  recurrence_end_time?: string | null;
9820
10313
  /**
9821
- * IDs of the users this form task is assigned to.
10314
+ * 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.
9822
10315
  */
9823
10316
  task_assignee_user_ids?: Array<string>;
9824
10317
  /**
@@ -9873,7 +10366,7 @@ export type SiteFormAssignmentUpdateParameters = {
9873
10366
  */
9874
10367
  recurrence_end_time?: string | null;
9875
10368
  /**
9876
- * IDs of the users this form task is assigned to.
10369
+ * 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.
9877
10370
  */
9878
10371
  task_assignee_user_ids?: Array<string>;
9879
10372
  /**
@@ -9990,7 +10483,7 @@ export type FeatureFormAssignmentParameters = {
9990
10483
  */
9991
10484
  recurrence_end_time?: string | null;
9992
10485
  /**
9993
- * IDs of the users this form task is assigned to.
10486
+ * 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.
9994
10487
  */
9995
10488
  task_assignee_user_ids?: Array<string>;
9996
10489
  /**
@@ -10045,7 +10538,7 @@ export type FeatureFormAssignmentUpdateParameters = {
10045
10538
  */
10046
10539
  recurrence_end_time?: string | null;
10047
10540
  /**
10048
- * IDs of the users this form task is assigned to.
10541
+ * 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.
10049
10542
  */
10050
10543
  task_assignee_user_ids?: Array<string>;
10051
10544
  /**
@@ -10104,7 +10597,7 @@ export type JobFormAssignmentParameters = {
10104
10597
  */
10105
10598
  recurrence_end_time?: string | null;
10106
10599
  /**
10107
- * IDs of the users this form task is assigned to.
10600
+ * 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.
10108
10601
  */
10109
10602
  task_assignee_user_ids?: Array<string>;
10110
10603
  /**
@@ -10159,7 +10652,7 @@ export type JobFormAssignmentUpdateParameters = {
10159
10652
  */
10160
10653
  recurrence_end_time?: string | null;
10161
10654
  /**
10162
- * IDs of the users this form task is assigned to.
10655
+ * 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.
10163
10656
  */
10164
10657
  task_assignee_user_ids?: Array<string>;
10165
10658
  /**
@@ -10347,65 +10840,65 @@ export type PositionsResponseObject = {
10347
10840
  data: Array<PositionResponseObject>;
10348
10841
  };
10349
10842
  /**
10350
- * Request body for creating or updating a position on a job. The job is taken from the URL path.
10843
+ * Request body for creating or updating a position on a job. The job is taken from the URL path. Send only the fields to set; omitted fields keep their stored values. An undeclared key answers 400; a wrong type, null where it is not accepted, or a blank ID answers 422 at the field's pointer.
10351
10844
  */
10352
10845
  export type PositionParameters = {
10353
10846
  /**
10354
- * ID of the worker to assign; cannot be changed once the position has tracked time.
10847
+ * ID of the worker to assign, or null to leave the position unfilled; cannot be changed once the position has tracked time.
10355
10848
  */
10356
10849
  fulfilled_by_user_id?: string | null;
10357
10850
  /**
10358
- * The position's first day, as a calendar date (`YYYY-MM-DD`) in the job's tz_name. Required when the job has a schedule, and must fall within it. A time is refused with `422`. On update, null leaves the stored date unchanged.
10851
+ * The position's first day, as a calendar date (`YYYY-MM-DD`) in the job's tz_name. Required when the job has a schedule, and must fall within it. Omit both dates on create to leave the position unscheduled, and on update to keep the stored days; null, a blank, or a time answers 422.
10359
10852
  */
10360
- start_time?: string | null;
10853
+ start_time?: string;
10361
10854
  /**
10362
- * The position's last day, as a calendar date (`YYYY-MM-DD`) in the job's tz_name. Required when the job has a schedule, and must be on or after start_time and within it. A time is refused with `422`. On update, null leaves the stored date unchanged.
10855
+ * The position's last day, as a calendar date (`YYYY-MM-DD`) in the job's tz_name. Required when the job has a schedule, and must be on or after start_time and within it. Omit both dates on create to leave the position unscheduled, and on update to keep the stored days; null, a blank, or a time answers 422.
10363
10856
  */
10364
- end_time?: string | null;
10857
+ end_time?: string;
10365
10858
  /**
10366
10859
  * ID of the position function (role) to assign; null for none. Must be a global function or one of the job's company.
10367
10860
  */
10368
10861
  position_function_id?: string | null;
10369
10862
  /**
10370
- * ID of the per diem to apply; its rate and currency are copied onto the position. Must belong to the job's company.
10863
+ * ID of the per diem to apply, or null for none; the position takes its rate and currency on every save. Must belong to the job's company.
10371
10864
  */
10372
10865
  per_diem_id?: string | null;
10373
10866
  /**
10374
- * Per-diem amount in cents; the effective rate is derived from the chosen per diem.
10867
+ * ID of a selectable pay-rate rule package scoped to this job, or null to clear it. Omit on create to leave the assignment unset — the job's default is not copied. A package the key cannot see, scoped to another job, or not selectable answers 404. A package with cash-fringe rules on a non-PWA position answers 422.
10375
10868
  */
10376
- per_diem_rate_cents?: number | null;
10869
+ pay_rates_rule_package_id?: string | null;
10377
10870
  /**
10378
10871
  * Whether the position tracks PWA compliance; must be true to attach wage determinations or set the PWA rate fields.
10379
10872
  */
10380
10873
  pwa?: boolean;
10381
10874
  /**
10382
- * Desired hourly cash-fringe rate in cents. Admin only on user-scoped keys.
10875
+ * Desired hourly cash-fringe rate in cents, as a decimal string like the response's. Admin only on user-scoped keys; another user's key sending it answers 403.
10383
10876
  */
10384
- cash_fringe_rate_cents?: number | null;
10877
+ cash_fringe_rate_cents?: string | null;
10385
10878
  /**
10386
- * Desired base hourly rate in cents. Admin only on user-scoped keys.
10879
+ * Desired base hourly rate in cents, as a decimal string like the response's. Admin only on user-scoped keys; another user's key sending it answers 403.
10387
10880
  */
10388
- hourly_rate_cents?: number | null;
10881
+ hourly_rate_cents?: string | null;
10389
10882
  /**
10390
- * Desired PWA wage-pay rate in cents (PWA positions only). Admin only on user-scoped keys.
10883
+ * Desired PWA wage-pay rate in cents, as a decimal string like the response's (PWA positions only). Admin only on user-scoped keys; another user's key sending it answers 403.
10391
10884
  */
10392
- pwa_wage_pay_rate_cents?: number | null;
10885
+ pwa_wage_pay_rate_cents?: string | null;
10393
10886
  /**
10394
- * Desired hourly wage-adder rate in cents. Admin only on user-scoped keys.
10887
+ * Desired hourly wage-adder rate in cents, as a decimal string like the response's. Admin only on user-scoped keys; another user's key sending it answers 403.
10395
10888
  */
10396
- wage_adder_rate_cents?: number | null;
10889
+ wage_adder_rate_cents?: string | null;
10397
10890
  /**
10398
10891
  * The complete desired set of unique nonblank job wage determination IDs. On PATCH, this replaces the current set; omit the field to leave assignments unchanged. Required federal and regional assignments cannot be removed from a PWA position. Null, null members, wrong types, blank IDs, and duplicate IDs answer 422 before any changes are written.
10399
10892
  */
10400
10893
  job_wage_determination_ids?: Array<string>;
10401
10894
  /**
10402
- * PWA classification detail to set; skill_level sets the apprenticeship or skill classification.
10895
+ * The position's PWA classification detail. Sending it replaces the stored detail with one carrying skill_level; omit it to keep the stored detail.
10403
10896
  */
10404
10897
  pwa_details_attributes?: {
10405
10898
  /**
10406
- * The apprenticeship or skill classification to set.
10899
+ * The Illinois skill classification, `journeyman` or `foreman`; null records none. Required whenever pwa_details_attributes is sent.
10407
10900
  */
10408
- skill_level?: string | null;
10901
+ skill_level: 'journeyman' | 'foreman' | null;
10409
10902
  };
10410
10903
  };
10411
10904
  /**
@@ -10736,7 +11229,7 @@ export type FormAssignmentTaskResponseObject = Array<{
10736
11229
  }>;
10737
11230
  }>;
10738
11231
  /**
10739
- * 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.
11232
+ * 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.
10740
11233
  */
10741
11234
  export type CertificationParameters = {
10742
11235
  /**
@@ -10761,7 +11254,7 @@ export type CertificationParameters = {
10761
11254
  duration?: string | null;
10762
11255
  };
10763
11256
  /**
10764
- * 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.
11257
+ * 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.
10765
11258
  */
10766
11259
  export type CertificationUpdateParameters = {
10767
11260
  /**
@@ -10925,7 +11418,7 @@ export type UserCertificationParameters = {
10925
11418
  */
10926
11419
  certification_id: string;
10927
11420
  /**
10928
- * When the worker earned the certification (ISO 8601). Required.
11421
+ * When the worker earned the certification, as a calendar date (`YYYY-MM-DD`) stored as midnight UTC. A time sent with it is kept, not dropped, and is read as UTC unless it carries an offset (`Z` or `-05:00`). Required.
10929
11422
  */
10930
11423
  received_at: string;
10931
11424
  /**
@@ -10967,7 +11460,7 @@ export type UserCertificationUpdateParameters = {
10967
11460
  */
10968
11461
  certification_id?: string;
10969
11462
  /**
10970
- * When the worker earned the certification (ISO 8601). Omit to preserve the current receipt date.
11463
+ * When the worker earned the certification, as a calendar date (`YYYY-MM-DD`) stored as midnight UTC. A time sent with it is kept, not dropped, and is read as UTC unless it carries an offset (`Z` or `-05:00`). Omit to preserve the current receipt date.
10971
11464
  */
10972
11465
  received_at?: string;
10973
11466
  /**
@@ -10997,11 +11490,11 @@ export type UserCertificationUpdateParameters = {
10997
11490
  archived_at?: string | null;
10998
11491
  };
10999
11492
  /**
11000
- * Request body for approving a certification held by a worker. A user key approves in its own user's name and sends no body.
11493
+ * 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.
11001
11494
  */
11002
11495
  export type UserCertificationApprovalParameters = {
11003
11496
  /**
11004
- * Company keys only: a visible admin, manager, or safety manager at the key's company to record as approver. Required with a company key.
11497
+ * 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.
11005
11498
  */
11006
11499
  approved_by_user_id?: string;
11007
11500
  };
@@ -11786,62 +12279,6 @@ export type RegionalJobWageDeterminationHistoryCorrectionObject = {
11786
12279
  created_at: string;
11787
12280
  updated_at: string;
11788
12281
  };
11789
- /**
11790
- * State-specific rate fields for a Regional determination, as decimal-string money in cents
11791
- * (e.g. "538.0"). These nine properties are the whole write vocabulary, but which of them a
11792
- * request may send is set by the job's region, not the request — sending a key the job's
11793
- * region does not allow returns a 422:
11794
- *
11795
- * - Categorized-fringe regions (currently IL) accept `combined_health_fringe_rate_cents`,
11796
- * `combined_savings_fringe_rate_cents`, `combined_holiday_pto_fringe_rate_cents`,
11797
- * `training_fringe_rate_cents`, and `other_fringe_rate_cents`.
11798
- * - Overtime-adder regions (currently IL and NY) accept `one_five_x_adder_rate_cents`,
11799
- * `two_x_adder_rate_cents`, `one_five_x_fringe_adder_rate_cents`, and
11800
- * `two_x_fringe_adder_rate_cents`.
11801
- *
11802
- * In a categorized-fringe region the five fringe keys are required, not merely accepted —
11803
- * omitting any of them returns a 422. Categorized-fringe values are non-null when present;
11804
- * overtime-adder values may be null.
11805
- *
11806
- */
11807
- export type RegionalWageDeterminationFields = {
11808
- /**
11809
- * Combined health fringe rate, in cents as a decimal string. Categorized-fringe regions only; non-null when present.
11810
- */
11811
- combined_health_fringe_rate_cents?: string;
11812
- /**
11813
- * Combined savings fringe rate, in cents as a decimal string. Categorized-fringe regions only; non-null when present.
11814
- */
11815
- combined_savings_fringe_rate_cents?: string;
11816
- /**
11817
- * Combined holiday/PTO fringe rate, in cents as a decimal string. Categorized-fringe regions only; non-null when present.
11818
- */
11819
- combined_holiday_pto_fringe_rate_cents?: string;
11820
- /**
11821
- * Training fringe rate, in cents as a decimal string. Categorized-fringe regions only; non-null when present.
11822
- */
11823
- training_fringe_rate_cents?: string;
11824
- /**
11825
- * Other (uncategorized) fringe rate, in cents as a decimal string. Categorized-fringe regions only; non-null when present.
11826
- */
11827
- other_fringe_rate_cents?: string;
11828
- /**
11829
- * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
11830
- */
11831
- one_five_x_adder_rate_cents?: string | null;
11832
- /**
11833
- * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
11834
- */
11835
- two_x_adder_rate_cents?: string | null;
11836
- /**
11837
- * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
11838
- */
11839
- one_five_x_fringe_adder_rate_cents?: string | null;
11840
- /**
11841
- * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
11842
- */
11843
- two_x_fringe_adder_rate_cents?: string | null;
11844
- };
11845
12282
  /**
11846
12283
  * State-specific rate fields recorded on a Regional determination, as decimal-string money in
11847
12284
  * cents (e.g. "538.0"). Which keys appear is set by the job's region, so this object is always
@@ -11870,7 +12307,7 @@ export type JobWageDeterminationParameters = ({
11870
12307
  type: 'Pwa::JobWageDeterminations::Regional';
11871
12308
  } & RegionalJobWageDeterminationParameters);
11872
12309
  /**
11873
- * Parameters for creating a Federal (Davis-Bacon) wage determination on a job.
12310
+ * 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.
11874
12311
  */
11875
12312
  export type FederalJobWageDeterminationParameters = {
11876
12313
  /**
@@ -11905,6 +12342,10 @@ export type FederalJobWageDeterminationParameters = {
11905
12342
  * 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.
11906
12343
  */
11907
12344
  general_wage_determination?: string | null;
12345
+ /**
12346
+ * 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.
12347
+ */
12348
+ overtime_package_id?: string | null;
11908
12349
  };
11909
12350
  /**
11910
12351
  * Parameters for creating a Regional (state prevailing-wage) wage determination on a job.
@@ -11927,18 +12368,66 @@ export type RegionalJobWageDeterminationParameters = {
11927
12368
  */
11928
12369
  hourly_rate_cents: string;
11929
12370
  /**
11930
- * Hourly fringe rate, in cents as a decimal string (e.g. "1200.0" is $12.00).
12371
+ * 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.
11931
12372
  */
11932
12373
  fringe_rate_cents?: string;
12374
+ /**
12375
+ * Not recorded on a Regional determination; a value sent here is dropped.
12376
+ */
12377
+ class_code?: string | null;
12378
+ /**
12379
+ * Not recorded on a Regional determination; a listed value sent here is dropped.
12380
+ */
12381
+ construction_category?: 'building' | 'heavy' | 'highway' | 'residential' | null;
11933
12382
  /**
11934
12383
  * 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.
11935
12384
  */
11936
12385
  general_wage_determination?: string | null;
11937
12386
  /**
11938
- * 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.
12387
+ * 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.
12388
+ */
12389
+ regional_fields?: {
12390
+ /**
12391
+ * Combined health fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12392
+ */
12393
+ combined_health_fringe_rate_cents?: string | null;
12394
+ /**
12395
+ * Combined savings fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12396
+ */
12397
+ combined_savings_fringe_rate_cents?: string | null;
12398
+ /**
12399
+ * Combined holiday/PTO fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12400
+ */
12401
+ combined_holiday_pto_fringe_rate_cents?: string | null;
12402
+ /**
12403
+ * Training fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12404
+ */
12405
+ training_fringe_rate_cents?: string | null;
12406
+ /**
12407
+ * Other (uncategorized) fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12408
+ */
12409
+ other_fringe_rate_cents?: string | null;
12410
+ /**
12411
+ * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12412
+ */
12413
+ one_five_x_adder_rate_cents?: string | null;
12414
+ /**
12415
+ * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12416
+ */
12417
+ two_x_adder_rate_cents?: string | null;
12418
+ /**
12419
+ * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12420
+ */
12421
+ one_five_x_fringe_adder_rate_cents?: string | null;
12422
+ /**
12423
+ * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12424
+ */
12425
+ two_x_fringe_adder_rate_cents?: string | null;
12426
+ };
12427
+ /**
12428
+ * 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.
11939
12429
  */
11940
12430
  overtime_package_id?: string | null;
11941
- regional_fields?: RegionalWageDeterminationFields;
11942
12431
  };
11943
12432
  /**
11944
12433
  * 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.
@@ -11980,7 +12469,47 @@ export type JobWageDeterminationUpdateParameters = {
11980
12469
  * 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.
11981
12470
  */
11982
12471
  general_wage_determination?: string | null;
11983
- regional_fields?: RegionalWageDeterminationFields;
12472
+ /**
12473
+ * 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.
12474
+ */
12475
+ regional_fields?: {
12476
+ /**
12477
+ * Combined health fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12478
+ */
12479
+ combined_health_fringe_rate_cents?: string | null;
12480
+ /**
12481
+ * Combined savings fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12482
+ */
12483
+ combined_savings_fringe_rate_cents?: string | null;
12484
+ /**
12485
+ * Combined holiday/PTO fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12486
+ */
12487
+ combined_holiday_pto_fringe_rate_cents?: string | null;
12488
+ /**
12489
+ * Training fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12490
+ */
12491
+ training_fringe_rate_cents?: string | null;
12492
+ /**
12493
+ * Other (uncategorized) fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12494
+ */
12495
+ other_fringe_rate_cents?: string | null;
12496
+ /**
12497
+ * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12498
+ */
12499
+ one_five_x_adder_rate_cents?: string | null;
12500
+ /**
12501
+ * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12502
+ */
12503
+ two_x_adder_rate_cents?: string | null;
12504
+ /**
12505
+ * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12506
+ */
12507
+ one_five_x_fringe_adder_rate_cents?: string | null;
12508
+ /**
12509
+ * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12510
+ */
12511
+ two_x_fringe_adder_rate_cents?: string | null;
12512
+ };
11984
12513
  };
11985
12514
  /**
11986
12515
  * 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.
@@ -12014,7 +12543,47 @@ export type JobWageDeterminationScheduledChangeParameters = {
12014
12543
  * 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.
12015
12544
  */
12016
12545
  general_wage_determination?: string | null;
12017
- regional_fields?: RegionalWageDeterminationFields;
12546
+ /**
12547
+ * 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.
12548
+ */
12549
+ regional_fields?: {
12550
+ /**
12551
+ * Combined health fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12552
+ */
12553
+ combined_health_fringe_rate_cents?: string | null;
12554
+ /**
12555
+ * Combined savings fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12556
+ */
12557
+ combined_savings_fringe_rate_cents?: string | null;
12558
+ /**
12559
+ * Combined holiday/PTO fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12560
+ */
12561
+ combined_holiday_pto_fringe_rate_cents?: string | null;
12562
+ /**
12563
+ * Training fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12564
+ */
12565
+ training_fringe_rate_cents?: string | null;
12566
+ /**
12567
+ * Other (uncategorized) fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12568
+ */
12569
+ other_fringe_rate_cents?: string | null;
12570
+ /**
12571
+ * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12572
+ */
12573
+ one_five_x_adder_rate_cents?: string | null;
12574
+ /**
12575
+ * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12576
+ */
12577
+ two_x_adder_rate_cents?: string | null;
12578
+ /**
12579
+ * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12580
+ */
12581
+ one_five_x_fringe_adder_rate_cents?: string | null;
12582
+ /**
12583
+ * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12584
+ */
12585
+ two_x_fringe_adder_rate_cents?: string | null;
12586
+ };
12018
12587
  };
12019
12588
  /**
12020
12589
  * Parameters for moving where a job wage determination's timeline begins.
@@ -12278,7 +12847,7 @@ export type ProjectWageDeterminationParameters = ({
12278
12847
  type: 'Pwa::ProjectWageDeterminations::Regional';
12279
12848
  } & RegionalProjectWageDeterminationParameters);
12280
12849
  /**
12281
- * Parameters for creating a Federal (Davis-Bacon) wage determination on a project.
12850
+ * 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.
12282
12851
  */
12283
12852
  export type FederalProjectWageDeterminationParameters = {
12284
12853
  /**
@@ -12313,6 +12882,10 @@ export type FederalProjectWageDeterminationParameters = {
12313
12882
  * 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.
12314
12883
  */
12315
12884
  general_wage_determination?: string | null;
12885
+ /**
12886
+ * 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.
12887
+ */
12888
+ overtime_package_id?: string | null;
12316
12889
  };
12317
12890
  /**
12318
12891
  * Parameters for creating a Regional (state prevailing-wage) wage determination on a project.
@@ -12335,18 +12908,66 @@ export type RegionalProjectWageDeterminationParameters = {
12335
12908
  */
12336
12909
  hourly_rate_cents: string;
12337
12910
  /**
12338
- * Hourly fringe rate, in cents as a decimal string (e.g. "1200.0" is $12.00).
12911
+ * 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.
12339
12912
  */
12340
12913
  fringe_rate_cents?: string;
12914
+ /**
12915
+ * Not recorded on a Regional determination; a value sent here is dropped.
12916
+ */
12917
+ class_code?: string | null;
12918
+ /**
12919
+ * Not recorded on a Regional determination; a listed value sent here is dropped.
12920
+ */
12921
+ construction_category?: 'building' | 'heavy' | 'highway' | 'residential' | null;
12341
12922
  /**
12342
12923
  * 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.
12343
12924
  */
12344
12925
  general_wage_determination?: string | null;
12345
12926
  /**
12346
- * 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.
12927
+ * 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.
12928
+ */
12929
+ regional_fields?: {
12930
+ /**
12931
+ * Combined health fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12932
+ */
12933
+ combined_health_fringe_rate_cents?: string | null;
12934
+ /**
12935
+ * Combined savings fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12936
+ */
12937
+ combined_savings_fringe_rate_cents?: string | null;
12938
+ /**
12939
+ * Combined holiday/PTO fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12940
+ */
12941
+ combined_holiday_pto_fringe_rate_cents?: string | null;
12942
+ /**
12943
+ * Training fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12944
+ */
12945
+ training_fringe_rate_cents?: string | null;
12946
+ /**
12947
+ * Other (uncategorized) fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
12948
+ */
12949
+ other_fringe_rate_cents?: string | null;
12950
+ /**
12951
+ * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12952
+ */
12953
+ one_five_x_adder_rate_cents?: string | null;
12954
+ /**
12955
+ * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12956
+ */
12957
+ two_x_adder_rate_cents?: string | null;
12958
+ /**
12959
+ * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12960
+ */
12961
+ one_five_x_fringe_adder_rate_cents?: string | null;
12962
+ /**
12963
+ * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
12964
+ */
12965
+ two_x_fringe_adder_rate_cents?: string | null;
12966
+ };
12967
+ /**
12968
+ * 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.
12347
12969
  */
12348
12970
  overtime_package_id?: string | null;
12349
- regional_fields?: RegionalWageDeterminationFields;
12350
12971
  };
12351
12972
  /**
12352
12973
  * 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.
@@ -12388,7 +13009,47 @@ export type ProjectWageDeterminationUpdateParameters = {
12388
13009
  * 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.
12389
13010
  */
12390
13011
  general_wage_determination?: string | null;
12391
- regional_fields?: RegionalWageDeterminationFields;
13012
+ /**
13013
+ * 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.
13014
+ */
13015
+ regional_fields?: {
13016
+ /**
13017
+ * Combined health fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
13018
+ */
13019
+ combined_health_fringe_rate_cents?: string | null;
13020
+ /**
13021
+ * Combined savings fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
13022
+ */
13023
+ combined_savings_fringe_rate_cents?: string | null;
13024
+ /**
13025
+ * Combined holiday/PTO fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
13026
+ */
13027
+ combined_holiday_pto_fringe_rate_cents?: string | null;
13028
+ /**
13029
+ * Training fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
13030
+ */
13031
+ training_fringe_rate_cents?: string | null;
13032
+ /**
13033
+ * Other (uncategorized) fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
13034
+ */
13035
+ other_fringe_rate_cents?: string | null;
13036
+ /**
13037
+ * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
13038
+ */
13039
+ one_five_x_adder_rate_cents?: string | null;
13040
+ /**
13041
+ * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
13042
+ */
13043
+ two_x_adder_rate_cents?: string | null;
13044
+ /**
13045
+ * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
13046
+ */
13047
+ one_five_x_fringe_adder_rate_cents?: string | null;
13048
+ /**
13049
+ * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
13050
+ */
13051
+ two_x_fringe_adder_rate_cents?: string | null;
13052
+ };
12392
13053
  };
12393
13054
  /**
12394
13055
  * 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.
@@ -12422,7 +13083,47 @@ export type ProjectWageDeterminationScheduledChangeParameters = {
12422
13083
  * 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.
12423
13084
  */
12424
13085
  general_wage_determination?: string | null;
12425
- regional_fields?: RegionalWageDeterminationFields;
13086
+ /**
13087
+ * 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.
13088
+ */
13089
+ regional_fields?: {
13090
+ /**
13091
+ * Combined health fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
13092
+ */
13093
+ combined_health_fringe_rate_cents?: string | null;
13094
+ /**
13095
+ * Combined savings fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
13096
+ */
13097
+ combined_savings_fringe_rate_cents?: string | null;
13098
+ /**
13099
+ * Combined holiday/PTO fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
13100
+ */
13101
+ combined_holiday_pto_fringe_rate_cents?: string | null;
13102
+ /**
13103
+ * Training fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
13104
+ */
13105
+ training_fringe_rate_cents?: string | null;
13106
+ /**
13107
+ * Other (uncategorized) fringe rate, in cents as a decimal string. Required in categorized-fringe regions, which refuse null; null elsewhere.
13108
+ */
13109
+ other_fringe_rate_cents?: string | null;
13110
+ /**
13111
+ * Hourly wage adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
13112
+ */
13113
+ one_five_x_adder_rate_cents?: string | null;
13114
+ /**
13115
+ * Hourly wage adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
13116
+ */
13117
+ two_x_adder_rate_cents?: string | null;
13118
+ /**
13119
+ * Hourly fringe adder added to 1.5x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
13120
+ */
13121
+ one_five_x_fringe_adder_rate_cents?: string | null;
13122
+ /**
13123
+ * Hourly fringe adder added to 2x overtime, in cents as a decimal string. Overtime-adder regions only; may be null.
13124
+ */
13125
+ two_x_fringe_adder_rate_cents?: string | null;
13126
+ };
12426
13127
  };
12427
13128
  /**
12428
13129
  * Parameters for moving where a project wage determination's timeline begins.
@@ -13126,11 +13827,11 @@ export type AssetsItemResponseObject = {
13126
13827
  */
13127
13828
  status: 'available' | 'assigned' | null;
13128
13829
  /**
13129
- * When the item was purchased (ISO 8601).
13830
+ * When the item was purchased, as a calendar date (`YYYY-MM-DD`) stored as midnight UTC. A time sent with it is kept, not dropped, and is read as UTC unless it carries an offset (`Z` or `-05:00`).
13130
13831
  */
13131
13832
  purchase_date: string | null;
13132
13833
  /**
13133
- * Purchase price in cents, in the item's currency.
13834
+ * Purchase price in cents as a decimal string (e.g. "12345.0" is $123.45), in the item's currency.
13134
13835
  */
13135
13836
  purchase_price_cents: string | null;
13136
13837
  /**
@@ -13218,13 +13919,13 @@ export type AssetsItemParameters = {
13218
13919
  */
13219
13920
  status?: 'available' | 'assigned';
13220
13921
  /**
13221
- * When the item was purchased (ISO 8601).
13922
+ * When the item was purchased, as a calendar date (`YYYY-MM-DD`) stored as midnight UTC. A time sent with it is kept, not dropped, and is read as UTC unless it carries an offset (`Z` or `-05:00`).
13222
13923
  */
13223
13924
  purchase_date?: string | null;
13224
13925
  /**
13225
- * Purchase price in cents, in the item's currency.
13926
+ * Purchase price in cents as a decimal string (e.g. "12345.0" is $123.45), in the item's currency.
13226
13927
  */
13227
- purchase_price_cents?: number | null;
13928
+ purchase_price_cents?: string | null;
13228
13929
  /**
13229
13930
  * Identifier for this item in an external system.
13230
13931
  */
@@ -13313,13 +14014,13 @@ export type AssetsItemUpdateParameters = {
13313
14014
  */
13314
14015
  status?: 'available' | 'assigned';
13315
14016
  /**
13316
- * When the item was purchased (ISO 8601).
14017
+ * When the item was purchased, as a calendar date (`YYYY-MM-DD`) stored as midnight UTC. A time sent with it is kept, not dropped, and is read as UTC unless it carries an offset (`Z` or `-05:00`).
13317
14018
  */
13318
14019
  purchase_date?: string | null;
13319
14020
  /**
13320
- * Purchase price in cents, in the item's currency.
14021
+ * Purchase price in cents as a decimal string (e.g. "12345.0" is $123.45), in the item's currency.
13321
14022
  */
13322
- purchase_price_cents?: number | null;
14023
+ purchase_price_cents?: string | null;
13323
14024
  /**
13324
14025
  * Identifier for this item in an external system.
13325
14026
  */
@@ -13934,7 +14635,7 @@ export type AssetsItemFormAssignmentParameters = {
13934
14635
  */
13935
14636
  recurrence_end_time?: string | null;
13936
14637
  /**
13937
- * IDs of the users this form task is assigned to.
14638
+ * 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.
13938
14639
  */
13939
14640
  task_assignee_user_ids?: Array<string>;
13940
14641
  /**
@@ -13989,7 +14690,7 @@ export type AssetsItemFormAssignmentUpdateParameters = {
13989
14690
  */
13990
14691
  recurrence_end_time?: string | null;
13991
14692
  /**
13992
- * IDs of the users this form task is assigned to.
14693
+ * 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.
13993
14694
  */
13994
14695
  task_assignee_user_ids?: Array<string>;
13995
14696
  /**
@@ -14734,55 +15435,55 @@ export type AssetsTransferResponseObject = {
14734
15435
  updated_at: string;
14735
15436
  };
14736
15437
  /**
14737
- * 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.
15438
+ * 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.
14738
15439
  */
14739
15440
  export type AssetsTransferParameters = {
14740
15441
  /**
14741
- * ID of the source site. At most one source endpoint (site, user, or container).
15442
+ * 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.
14742
15443
  */
14743
15444
  from_assets_site_id?: string;
14744
15445
  /**
14745
- * ID of the source user. At most one source endpoint (site, user, or container).
15446
+ * 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.
14746
15447
  */
14747
15448
  from_user_id?: string;
14748
15449
  /**
14749
- * ID of the source container item. At most one source endpoint (site, user, or container).
15450
+ * 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.
14750
15451
  */
14751
15452
  from_container_item_id?: string;
14752
15453
  /**
14753
- * ID of the destination site. At most one destination endpoint (site, user, or container).
15454
+ * 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.
15455
+ */
15456
+ from_assets_sub_location_id?: string | null;
15457
+ /**
15458
+ * 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.
14754
15459
  */
14755
15460
  to_assets_site_id?: string;
14756
15461
  /**
14757
- * ID of the destination user. At most one destination endpoint (site, user, or container).
15462
+ * 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.
14758
15463
  */
14759
15464
  to_user_id?: string;
14760
15465
  /**
14761
- * ID of the destination container item. At most one destination endpoint (site, user, or container).
15466
+ * 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.
14762
15467
  */
14763
15468
  to_container_item_id?: string;
14764
15469
  /**
14765
- * 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.
15470
+ * 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.
14766
15471
  */
14767
- from_assets_sub_location_id?: string;
14768
- /**
14769
- * Optional. The storage location within the destination site or container the stock lands in; must belong to that endpoint. Omit for an unbinned destination.
14770
- */
14771
- to_assets_sub_location_id?: string;
15472
+ to_assets_sub_location_id?: string | null;
14772
15473
  /**
14773
15474
  * 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.
14774
15475
  */
14775
15476
  performed_by_user_id: string;
14776
15477
  /**
14777
- * The items and quantities to move; at least one is required.
15478
+ * 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.
14778
15479
  */
14779
15480
  line_items: Array<{
14780
15481
  /**
14781
- * ID of the asset item to move.
15482
+ * 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.
14782
15483
  */
14783
15484
  assets_item_id: string;
14784
15485
  /**
14785
- * Number of units of the item to move; greater than 0.
15486
+ * 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.
14786
15487
  */
14787
15488
  quantity: number;
14788
15489
  }>;
@@ -15832,6 +16533,10 @@ export type CreatePeriodErrors = {
15832
16533
  * Forbidden
15833
16534
  */
15834
16535
  403: Problem;
16536
+ /**
16537
+ * Not Found
16538
+ */
16539
+ 404: Problem;
15835
16540
  /**
15836
16541
  * Unprocessable Content
15837
16542
  */
@@ -16103,6 +16808,10 @@ export type UpdateWageScheduleErrors = {
16103
16808
  * Not Found
16104
16809
  */
16105
16810
  404: Problem;
16811
+ /**
16812
+ * Unprocessable Content
16813
+ */
16814
+ 422: Problem;
16106
16815
  };
16107
16816
  export type UpdateWageScheduleError = UpdateWageScheduleErrors[keyof UpdateWageScheduleErrors];
16108
16817
  export type UpdateWageScheduleResponses = {
@@ -17669,9 +18378,9 @@ export type DeleteDocumentErrors = {
17669
18378
  export type DeleteDocumentError = DeleteDocumentErrors[keyof DeleteDocumentErrors];
17670
18379
  export type DeleteDocumentResponses = {
17671
18380
  /**
17672
- * Success
18381
+ * No Content
17673
18382
  */
17674
- 200: AssetsDocumentResponseObject;
18383
+ 204: void;
17675
18384
  };
17676
18385
  export type DeleteDocumentResponse = DeleteDocumentResponses[keyof DeleteDocumentResponses];
17677
18386
  export type GetDocumentData = {
@@ -20041,7 +20750,7 @@ export type GetAssessmentResponses = {
20041
20750
  200: CompetencyAssessmentResponseObject;
20042
20751
  };
20043
20752
  export type GetAssessmentResponse = GetAssessmentResponses[keyof GetAssessmentResponses];
20044
- export type ListAssessmentKeyActivitiesData = {
20753
+ export type ListAssessmentCriteriaData = {
20045
20754
  body?: never;
20046
20755
  path: {
20047
20756
  assessment_id: string;
@@ -20050,9 +20759,9 @@ export type ListAssessmentKeyActivitiesData = {
20050
20759
  filter?: string;
20051
20760
  'filter[unexpected]'?: string;
20052
20761
  };
20053
- url: '/api/v1/competencies/assessments/{assessment_id}/key_activities';
20762
+ url: '/api/v1/competencies/assessments/{assessment_id}/criteria';
20054
20763
  };
20055
- export type ListAssessmentKeyActivitiesErrors = {
20764
+ export type ListAssessmentCriteriaErrors = {
20056
20765
  /**
20057
20766
  * Bad Request
20058
20767
  */
@@ -20062,46 +20771,46 @@ export type ListAssessmentKeyActivitiesErrors = {
20062
20771
  */
20063
20772
  403: Problem;
20064
20773
  };
20065
- export type ListAssessmentKeyActivitiesError = ListAssessmentKeyActivitiesErrors[keyof ListAssessmentKeyActivitiesErrors];
20066
- export type ListAssessmentKeyActivitiesResponses = {
20774
+ export type ListAssessmentCriteriaError = ListAssessmentCriteriaErrors[keyof ListAssessmentCriteriaErrors];
20775
+ export type ListAssessmentCriteriaResponses = {
20067
20776
  /**
20068
20777
  * Candidate sees a decided review
20069
20778
  */
20070
20779
  200: {
20071
20780
  meta: Meta;
20072
20781
  links: Links;
20073
- data: Array<CompetencyAssessmentKeyActivityResponseObject>;
20782
+ data: Array<CompetencyAssessmentCriterionResponseObject>;
20074
20783
  };
20075
20784
  };
20076
- export type ListAssessmentKeyActivitiesResponse = ListAssessmentKeyActivitiesResponses[keyof ListAssessmentKeyActivitiesResponses];
20077
- export type GetAssessmentKeyActivityData = {
20785
+ export type ListAssessmentCriteriaResponse = ListAssessmentCriteriaResponses[keyof ListAssessmentCriteriaResponses];
20786
+ export type GetAssessmentCriterionData = {
20078
20787
  body?: never;
20079
20788
  path: {
20080
20789
  assessment_id: string;
20081
20790
  id: string;
20082
20791
  };
20083
20792
  query?: never;
20084
- url: '/api/v1/competencies/assessments/{assessment_id}/key_activities/{id}';
20793
+ url: '/api/v1/competencies/assessments/{assessment_id}/criteria/{id}';
20085
20794
  };
20086
- export type GetAssessmentKeyActivityErrors = {
20795
+ export type GetAssessmentCriterionErrors = {
20087
20796
  /**
20088
20797
  * Forbidden
20089
20798
  */
20090
20799
  403: Problem;
20091
20800
  };
20092
- export type GetAssessmentKeyActivityError = GetAssessmentKeyActivityErrors[keyof GetAssessmentKeyActivityErrors];
20093
- export type GetAssessmentKeyActivityResponses = {
20801
+ export type GetAssessmentCriterionError = GetAssessmentCriterionErrors[keyof GetAssessmentCriterionErrors];
20802
+ export type GetAssessmentCriterionResponses = {
20094
20803
  /**
20095
20804
  * Candidate sees a decided review
20096
20805
  */
20097
- 200: CompetencyAssessmentKeyActivityResponseObject;
20806
+ 200: CompetencyAssessmentCriterionResponseObject;
20098
20807
  };
20099
- export type GetAssessmentKeyActivityResponse = GetAssessmentKeyActivityResponses[keyof GetAssessmentKeyActivityResponses];
20808
+ export type GetAssessmentCriterionResponse = GetAssessmentCriterionResponses[keyof GetAssessmentCriterionResponses];
20100
20809
  export type ListEvidenceItemsData = {
20101
20810
  body?: never;
20102
20811
  path: {
20103
20812
  assessment_id: string;
20104
- key_activity_id: string;
20813
+ criterion_id: string;
20105
20814
  };
20106
20815
  query?: {
20107
20816
  /**
@@ -20111,7 +20820,7 @@ export type ListEvidenceItemsData = {
20111
20820
  filter?: string;
20112
20821
  'filter[unexpected]'?: string;
20113
20822
  };
20114
- url: '/api/v1/competencies/assessments/{assessment_id}/key_activities/{key_activity_id}/evidence_items';
20823
+ url: '/api/v1/competencies/assessments/{assessment_id}/criteria/{criterion_id}/evidence_items';
20115
20824
  };
20116
20825
  export type ListEvidenceItemsErrors = {
20117
20826
  /**
@@ -20139,11 +20848,11 @@ export type GetEvidenceItemData = {
20139
20848
  body?: never;
20140
20849
  path: {
20141
20850
  assessment_id: string;
20142
- key_activity_id: string;
20851
+ criterion_id: string;
20143
20852
  id: string;
20144
20853
  };
20145
20854
  query?: never;
20146
- url: '/api/v1/competencies/assessments/{assessment_id}/key_activities/{key_activity_id}/evidence_items/{id}';
20855
+ url: '/api/v1/competencies/assessments/{assessment_id}/criteria/{criterion_id}/evidence_items/{id}';
20147
20856
  };
20148
20857
  export type GetEvidenceItemErrors = {
20149
20858
  /**
@@ -22142,28 +22851,169 @@ export type DeleteGroupErrors = {
22142
22851
  * Forbidden
22143
22852
  */
22144
22853
  403: Problem;
22145
- /**
22146
- * Not Found
22147
- */
22148
- 404: Problem;
22854
+ /**
22855
+ * Not Found
22856
+ */
22857
+ 404: Problem;
22858
+ };
22859
+ export type DeleteGroupError = DeleteGroupErrors[keyof DeleteGroupErrors];
22860
+ export type DeleteGroupResponses = {
22861
+ /**
22862
+ * Success
22863
+ */
22864
+ 200: GroupResponseObject;
22865
+ };
22866
+ export type DeleteGroupResponse = DeleteGroupResponses[keyof DeleteGroupResponses];
22867
+ export type GetGroupData = {
22868
+ body?: never;
22869
+ path: {
22870
+ id: string;
22871
+ };
22872
+ query?: never;
22873
+ url: '/api/v1/groups/{id}';
22874
+ };
22875
+ export type GetGroupErrors = {
22876
+ /**
22877
+ * Forbidden
22878
+ */
22879
+ 403: Problem;
22880
+ /**
22881
+ * Not Found
22882
+ */
22883
+ 404: Problem;
22884
+ };
22885
+ export type GetGroupError = GetGroupErrors[keyof GetGroupErrors];
22886
+ export type GetGroupResponses = {
22887
+ /**
22888
+ * Success
22889
+ */
22890
+ 200: GroupResponseObject;
22891
+ };
22892
+ export type GetGroupResponse = GetGroupResponses[keyof GetGroupResponses];
22893
+ export type UpdateGroupData = {
22894
+ body?: GroupUpdateParameters;
22895
+ path: {
22896
+ id: string;
22897
+ };
22898
+ query?: never;
22899
+ url: '/api/v1/groups/{id}';
22900
+ };
22901
+ export type UpdateGroupErrors = {
22902
+ /**
22903
+ * Bad Request
22904
+ */
22905
+ 400: Problem;
22906
+ /**
22907
+ * Forbidden
22908
+ */
22909
+ 403: Problem;
22910
+ /**
22911
+ * Not Found
22912
+ */
22913
+ 404: Problem;
22914
+ /**
22915
+ * Unprocessable Content
22916
+ */
22917
+ 422: Problem;
22918
+ };
22919
+ export type UpdateGroupError = UpdateGroupErrors[keyof UpdateGroupErrors];
22920
+ export type UpdateGroupResponses = {
22921
+ /**
22922
+ * Success
22923
+ */
22924
+ 200: GroupResponseObject;
22925
+ };
22926
+ export type UpdateGroupResponse = UpdateGroupResponses[keyof UpdateGroupResponses];
22927
+ export type ListJobDocumentsData = {
22928
+ body?: never;
22929
+ path: {
22930
+ job_id: string;
22931
+ };
22932
+ query?: {
22933
+ /**
22934
+ * Returns documents whose type is any of the given DocumentType values. Comma-separate to match multiple (e.g. `PWA_DOCUMENTATION,OTHER`).
22935
+ */
22936
+ 'filter[type]'?: Array<'CERTIFICATIONS' | 'CHECKLIST' | 'MAP' | 'MSA' | 'ONSITE_POSTER' | 'OTHER' | 'PARTS_INSTRUCTIONS' | 'PHOTO' | 'PO' | 'PWA_DOCUMENTATION' | 'RESUME' | 'WO'>;
22937
+ };
22938
+ url: '/api/v1/jobs/{job_id}/documents';
22939
+ };
22940
+ export type ListJobDocumentsErrors = {
22941
+ /**
22942
+ * Forbidden
22943
+ */
22944
+ 403: Problem;
22945
+ /**
22946
+ * Not Found
22947
+ */
22948
+ 404: Problem;
22949
+ };
22950
+ export type ListJobDocumentsError = ListJobDocumentsErrors[keyof ListJobDocumentsErrors];
22951
+ export type ListJobDocumentsResponses = {
22952
+ /**
22953
+ * Success
22954
+ */
22955
+ 200: JobDocumentsResponseObject;
22956
+ };
22957
+ export type ListJobDocumentsResponse = ListJobDocumentsResponses[keyof ListJobDocumentsResponses];
22958
+ export type CreateJobDocumentData = {
22959
+ body: JobDocumentParameters;
22960
+ path: {
22961
+ job_id: string;
22962
+ };
22963
+ query?: never;
22964
+ url: '/api/v1/jobs/{job_id}/documents';
22965
+ };
22966
+ export type CreateJobDocumentErrors = {
22967
+ /**
22968
+ * Forbidden
22969
+ */
22970
+ 403: Problem;
22971
+ /**
22972
+ * Unprocessable Content
22973
+ */
22974
+ 422: Problem;
22975
+ };
22976
+ export type CreateJobDocumentError = CreateJobDocumentErrors[keyof CreateJobDocumentErrors];
22977
+ export type CreateJobDocumentResponses = {
22978
+ /**
22979
+ * Created
22980
+ */
22981
+ 201: JobDocumentResponseObject;
22982
+ };
22983
+ export type CreateJobDocumentResponse = CreateJobDocumentResponses[keyof CreateJobDocumentResponses];
22984
+ export type DeleteJobDocumentData = {
22985
+ body?: never;
22986
+ path: {
22987
+ job_id: string;
22988
+ id: string;
22989
+ };
22990
+ query?: never;
22991
+ url: '/api/v1/jobs/{job_id}/documents/{id}';
22992
+ };
22993
+ export type DeleteJobDocumentErrors = {
22994
+ /**
22995
+ * Forbidden
22996
+ */
22997
+ 403: Problem;
22149
22998
  };
22150
- export type DeleteGroupError = DeleteGroupErrors[keyof DeleteGroupErrors];
22151
- export type DeleteGroupResponses = {
22999
+ export type DeleteJobDocumentError = DeleteJobDocumentErrors[keyof DeleteJobDocumentErrors];
23000
+ export type DeleteJobDocumentResponses = {
22152
23001
  /**
22153
- * Success
23002
+ * No Content
22154
23003
  */
22155
- 200: GroupResponseObject;
23004
+ 204: void;
22156
23005
  };
22157
- export type DeleteGroupResponse = DeleteGroupResponses[keyof DeleteGroupResponses];
22158
- export type GetGroupData = {
23006
+ export type DeleteJobDocumentResponse = DeleteJobDocumentResponses[keyof DeleteJobDocumentResponses];
23007
+ export type GetJobDocumentData = {
22159
23008
  body?: never;
22160
23009
  path: {
23010
+ job_id: string;
22161
23011
  id: string;
22162
23012
  };
22163
23013
  query?: never;
22164
- url: '/api/v1/groups/{id}';
23014
+ url: '/api/v1/jobs/{job_id}/documents/{id}';
22165
23015
  };
22166
- export type GetGroupErrors = {
23016
+ export type GetJobDocumentErrors = {
22167
23017
  /**
22168
23018
  * Forbidden
22169
23019
  */
@@ -22173,27 +23023,24 @@ export type GetGroupErrors = {
22173
23023
  */
22174
23024
  404: Problem;
22175
23025
  };
22176
- export type GetGroupError = GetGroupErrors[keyof GetGroupErrors];
22177
- export type GetGroupResponses = {
23026
+ export type GetJobDocumentError = GetJobDocumentErrors[keyof GetJobDocumentErrors];
23027
+ export type GetJobDocumentResponses = {
22178
23028
  /**
22179
23029
  * Success
22180
23030
  */
22181
- 200: GroupResponseObject;
23031
+ 200: JobDocumentResponseObject;
22182
23032
  };
22183
- export type GetGroupResponse = GetGroupResponses[keyof GetGroupResponses];
22184
- export type UpdateGroupData = {
22185
- body?: GroupUpdateParameters;
23033
+ export type GetJobDocumentResponse = GetJobDocumentResponses[keyof GetJobDocumentResponses];
23034
+ export type UpdateJobDocumentData = {
23035
+ body: JobDocumentUpdateParameters;
22186
23036
  path: {
23037
+ job_id: string;
22187
23038
  id: string;
22188
23039
  };
22189
23040
  query?: never;
22190
- url: '/api/v1/groups/{id}';
23041
+ url: '/api/v1/jobs/{job_id}/documents/{id}';
22191
23042
  };
22192
- export type UpdateGroupErrors = {
22193
- /**
22194
- * Bad Request
22195
- */
22196
- 400: Problem;
23043
+ export type UpdateJobDocumentErrors = {
22197
23044
  /**
22198
23045
  * Forbidden
22199
23046
  */
@@ -22202,19 +23049,15 @@ export type UpdateGroupErrors = {
22202
23049
  * Not Found
22203
23050
  */
22204
23051
  404: Problem;
22205
- /**
22206
- * Unprocessable Content
22207
- */
22208
- 422: Problem;
22209
23052
  };
22210
- export type UpdateGroupError = UpdateGroupErrors[keyof UpdateGroupErrors];
22211
- export type UpdateGroupResponses = {
23053
+ export type UpdateJobDocumentError = UpdateJobDocumentErrors[keyof UpdateJobDocumentErrors];
23054
+ export type UpdateJobDocumentResponses = {
22212
23055
  /**
22213
23056
  * Success
22214
23057
  */
22215
- 200: GroupResponseObject;
23058
+ 200: JobDocumentResponseObject;
22216
23059
  };
22217
- export type UpdateGroupResponse = UpdateGroupResponses[keyof UpdateGroupResponses];
23060
+ export type UpdateJobDocumentResponse = UpdateJobDocumentResponses[keyof UpdateJobDocumentResponses];
22218
23061
  export type ListJobFormAssignmentTasksData = {
22219
23062
  body?: never;
22220
23063
  path: {
@@ -25847,6 +26690,10 @@ export type ListPayPeriodsData = {
25847
26690
  body?: never;
25848
26691
  path?: never;
25849
26692
  query?: {
26693
+ /**
26694
+ * The pay schedule family id, the same value each period returns as timekeeping_pay_period_config_id.
26695
+ */
26696
+ 'filter[timekeeping_pay_period_config_id]'?: string;
25850
26697
  'filter[start_time][gte]'?: string;
25851
26698
  'filter[start_time][lte]'?: string;
25852
26699
  filter?: string;
@@ -25886,6 +26733,32 @@ export type ListPayPeriodsResponses = {
25886
26733
  200: PayPeriodsResponseObject;
25887
26734
  };
25888
26735
  export type ListPayPeriodsResponse = ListPayPeriodsResponses[keyof ListPayPeriodsResponses];
26736
+ export type GetPayPeriodData = {
26737
+ body?: never;
26738
+ path: {
26739
+ id: string;
26740
+ };
26741
+ query?: never;
26742
+ url: '/api/v1/pay_periods/{id}';
26743
+ };
26744
+ export type GetPayPeriodErrors = {
26745
+ /**
26746
+ * Forbidden
26747
+ */
26748
+ 403: Problem;
26749
+ /**
26750
+ * Not Found
26751
+ */
26752
+ 404: Problem;
26753
+ };
26754
+ export type GetPayPeriodError = GetPayPeriodErrors[keyof GetPayPeriodErrors];
26755
+ export type GetPayPeriodResponses = {
26756
+ /**
26757
+ * Success
26758
+ */
26759
+ 200: PayPeriodResponseObject;
26760
+ };
26761
+ export type GetPayPeriodResponse = GetPayPeriodResponses[keyof GetPayPeriodResponses];
25889
26762
  export type ListCompensationElementsData = {
25890
26763
  body?: never;
25891
26764
  path?: never;
@@ -27536,6 +28409,10 @@ export type ListEmploymentsData = {
27536
28409
  * Return employments for this user ID.
27537
28410
  */
27538
28411
  'filter[user_id]'?: string;
28412
+ /**
28413
+ * Return employments whose version at the lens time (now, or `as_of[valid]`) belongs to this department.
28414
+ */
28415
+ 'filter[companies_department_id]'?: string;
27539
28416
  filter?: string;
27540
28417
  'filter[unexpected]'?: string;
27541
28418
  /**
@@ -28287,6 +29164,226 @@ export type UpdateCompletionResponses = {
28287
29164
  200: ProductionCompletionResponseObject;
28288
29165
  };
28289
29166
  export type UpdateCompletionResponse = UpdateCompletionResponses[keyof UpdateCompletionResponses];
29167
+ export type ListProjectDocumentVersionsData = {
29168
+ body?: never;
29169
+ path: {
29170
+ project_id: string;
29171
+ document_id: string;
29172
+ };
29173
+ query?: {
29174
+ /**
29175
+ * This pagination cursor corresponds to the cursor value found in the response in
29176
+ * `meta.page.next_cursor`.
29177
+ */
29178
+ 'page[cursor]'?: string;
29179
+ /**
29180
+ * 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`.
29181
+ */
29182
+ 'page[limit]'?: number;
29183
+ page?: string;
29184
+ };
29185
+ url: '/api/v1/projects/{project_id}/documents/{document_id}/versions';
29186
+ };
29187
+ export type ListProjectDocumentVersionsErrors = {
29188
+ /**
29189
+ * Bad Request
29190
+ */
29191
+ 400: Problem;
29192
+ /**
29193
+ * Forbidden
29194
+ */
29195
+ 403: Problem;
29196
+ /**
29197
+ * Not Found
29198
+ */
29199
+ 404: Problem;
29200
+ };
29201
+ export type ListProjectDocumentVersionsError = ListProjectDocumentVersionsErrors[keyof ListProjectDocumentVersionsErrors];
29202
+ export type ListProjectDocumentVersionsResponses = {
29203
+ /**
29204
+ * Success
29205
+ */
29206
+ 200: {
29207
+ meta: Meta;
29208
+ links: Links;
29209
+ data: Array<ProjectDocumentVersionResponseObject>;
29210
+ };
29211
+ };
29212
+ export type ListProjectDocumentVersionsResponse = ListProjectDocumentVersionsResponses[keyof ListProjectDocumentVersionsResponses];
29213
+ export type ListProjectDocumentsData = {
29214
+ body?: never;
29215
+ path: {
29216
+ project_id: string;
29217
+ };
29218
+ query?: {
29219
+ 'filter[created_at][gte]'?: string;
29220
+ 'filter[created_at][lte]'?: string;
29221
+ 'filter[updated_at][gte]'?: string;
29222
+ 'filter[updated_at][lte]'?: string;
29223
+ /**
29224
+ * This pagination cursor corresponds to the cursor value found in the response in
29225
+ * `meta.page.next_cursor`.
29226
+ */
29227
+ 'page[cursor]'?: string;
29228
+ /**
29229
+ * 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`.
29230
+ */
29231
+ 'page[limit]'?: number;
29232
+ page?: string;
29233
+ filter?: string;
29234
+ 'filter[unexpected]'?: string;
29235
+ };
29236
+ url: '/api/v1/projects/{project_id}/documents';
29237
+ };
29238
+ export type ListProjectDocumentsErrors = {
29239
+ /**
29240
+ * Bad Request
29241
+ */
29242
+ 400: Problem;
29243
+ /**
29244
+ * Forbidden
29245
+ */
29246
+ 403: Problem;
29247
+ /**
29248
+ * Not Found
29249
+ */
29250
+ 404: Problem;
29251
+ /**
29252
+ * Unprocessable Content
29253
+ */
29254
+ 422: Problem;
29255
+ };
29256
+ export type ListProjectDocumentsError = ListProjectDocumentsErrors[keyof ListProjectDocumentsErrors];
29257
+ export type ListProjectDocumentsResponses = {
29258
+ /**
29259
+ * Success
29260
+ */
29261
+ 200: {
29262
+ meta: Meta;
29263
+ links: Links;
29264
+ data: Array<ProjectDocumentResponseObject>;
29265
+ };
29266
+ };
29267
+ export type ListProjectDocumentsResponse = ListProjectDocumentsResponses[keyof ListProjectDocumentsResponses];
29268
+ export type CreateProjectDocumentData = {
29269
+ body: ProjectDocumentParameters;
29270
+ path: {
29271
+ project_id: string;
29272
+ };
29273
+ query?: never;
29274
+ url: '/api/v1/projects/{project_id}/documents';
29275
+ };
29276
+ export type CreateProjectDocumentErrors = {
29277
+ /**
29278
+ * Bad Request (missing performed_by_user_id)
29279
+ */
29280
+ 400: Problem;
29281
+ /**
29282
+ * Forbidden
29283
+ */
29284
+ 403: Problem;
29285
+ /**
29286
+ * Not Found
29287
+ */
29288
+ 404: Problem;
29289
+ /**
29290
+ * Unprocessable Content
29291
+ */
29292
+ 422: Problem;
29293
+ };
29294
+ export type CreateProjectDocumentError = CreateProjectDocumentErrors[keyof CreateProjectDocumentErrors];
29295
+ export type CreateProjectDocumentResponses = {
29296
+ /**
29297
+ * Created
29298
+ */
29299
+ 201: ProjectDocumentResponseObject;
29300
+ };
29301
+ export type CreateProjectDocumentResponse = CreateProjectDocumentResponses[keyof CreateProjectDocumentResponses];
29302
+ export type DeleteProjectDocumentData = {
29303
+ body?: never;
29304
+ path: {
29305
+ project_id: string;
29306
+ id: string;
29307
+ };
29308
+ query?: never;
29309
+ url: '/api/v1/projects/{project_id}/documents/{id}';
29310
+ };
29311
+ export type DeleteProjectDocumentErrors = {
29312
+ /**
29313
+ * Forbidden
29314
+ */
29315
+ 403: Problem;
29316
+ /**
29317
+ * Not Found
29318
+ */
29319
+ 404: Problem;
29320
+ };
29321
+ export type DeleteProjectDocumentError = DeleteProjectDocumentErrors[keyof DeleteProjectDocumentErrors];
29322
+ export type DeleteProjectDocumentResponses = {
29323
+ /**
29324
+ * No Content
29325
+ */
29326
+ 204: void;
29327
+ };
29328
+ export type DeleteProjectDocumentResponse = DeleteProjectDocumentResponses[keyof DeleteProjectDocumentResponses];
29329
+ export type GetProjectDocumentData = {
29330
+ body?: never;
29331
+ path: {
29332
+ project_id: string;
29333
+ id: string;
29334
+ };
29335
+ query?: never;
29336
+ url: '/api/v1/projects/{project_id}/documents/{id}';
29337
+ };
29338
+ export type GetProjectDocumentErrors = {
29339
+ /**
29340
+ * Forbidden
29341
+ */
29342
+ 403: Problem;
29343
+ /**
29344
+ * Not Found
29345
+ */
29346
+ 404: Problem;
29347
+ };
29348
+ export type GetProjectDocumentError = GetProjectDocumentErrors[keyof GetProjectDocumentErrors];
29349
+ export type GetProjectDocumentResponses = {
29350
+ /**
29351
+ * Success
29352
+ */
29353
+ 200: ProjectDocumentResponseObject;
29354
+ };
29355
+ export type GetProjectDocumentResponse = GetProjectDocumentResponses[keyof GetProjectDocumentResponses];
29356
+ export type UpdateProjectDocumentData = {
29357
+ body: ProjectDocumentUpdateParameters;
29358
+ path: {
29359
+ project_id: string;
29360
+ id: string;
29361
+ };
29362
+ query?: never;
29363
+ url: '/api/v1/projects/{project_id}/documents/{id}';
29364
+ };
29365
+ export type UpdateProjectDocumentErrors = {
29366
+ /**
29367
+ * Bad Request
29368
+ */
29369
+ 400: Problem;
29370
+ /**
29371
+ * Forbidden
29372
+ */
29373
+ 403: Problem;
29374
+ /**
29375
+ * Not Found
29376
+ */
29377
+ 404: Problem;
29378
+ };
29379
+ export type UpdateProjectDocumentError = UpdateProjectDocumentErrors[keyof UpdateProjectDocumentErrors];
29380
+ export type UpdateProjectDocumentResponses = {
29381
+ /**
29382
+ * Success
29383
+ */
29384
+ 200: ProjectDocumentResponseObject;
29385
+ };
29386
+ export type UpdateProjectDocumentResponse = UpdateProjectDocumentResponses[keyof UpdateProjectDocumentResponses];
28290
29387
  export type CreateProjectTradeData = {
28291
29388
  body: PwaTradeParameters;
28292
29389
  path: {
@@ -32562,12 +33659,18 @@ export type CreateCompanyResponses = {
32562
33659
  export type CreateCompanyResponse = CreateCompanyResponses[keyof CreateCompanyResponses];
32563
33660
  export type RemoveUserFromCompanyData = {
32564
33661
  body?: never;
33662
+ headers: {
33663
+ /**
33664
+ * Version validator for the whole employment family, or `*` to remove its current state.
33665
+ */
33666
+ 'If-Match': string;
33667
+ };
32565
33668
  path: {
32566
33669
  user_id: string;
32567
- company_id: string;
33670
+ id: string;
32568
33671
  };
32569
33672
  query?: never;
32570
- url: '/api/v1/users/{user_id}/companies/{company_id}';
33673
+ url: '/api/v1/users/{user_id}/companies/{id}';
32571
33674
  };
32572
33675
  export type RemoveUserFromCompanyErrors = {
32573
33676
  /**
@@ -32578,6 +33681,14 @@ export type RemoveUserFromCompanyErrors = {
32578
33681
  * Not Found
32579
33682
  */
32580
33683
  404: Problem;
33684
+ /**
33685
+ * Precondition Failed
33686
+ */
33687
+ 412: Problem;
33688
+ /**
33689
+ * Precondition Required
33690
+ */
33691
+ 428: Problem;
32581
33692
  };
32582
33693
  export type RemoveUserFromCompanyError = RemoveUserFromCompanyErrors[keyof RemoveUserFromCompanyErrors];
32583
33694
  export type RemoveUserFromCompanyResponses = {
@@ -32594,10 +33705,10 @@ export type UpdateCompanyData = {
32594
33705
  body: UserCompanyParameters;
32595
33706
  path: {
32596
33707
  user_id: string;
32597
- company_id: string;
33708
+ id: string;
32598
33709
  };
32599
33710
  query?: never;
32600
- url: '/api/v1/users/{user_id}/companies/{company_id}';
33711
+ url: '/api/v1/users/{user_id}/companies/{id}';
32601
33712
  };
32602
33713
  export type UpdateCompanyErrors = {
32603
33714
  /**