@burdenoff/microfe-movethewheels 2026.1031.1 → 2026.1031.3

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.
Files changed (51) hide show
  1. package/dist/MoveTheWheelsRoot.js +144 -136
  2. package/dist/MoveTheWheelsRoutes.js +61 -57
  3. package/dist/components/ShipmentRiskDialog.js +228 -0
  4. package/dist/components/TrackingAlertList.js +149 -0
  5. package/dist/generated/tracking-quality-operations.d.ts +1154 -2
  6. package/dist/generated/wspace-types.d.ts +2895 -50
  7. package/dist/hooks/useEntityImport.js +68 -0
  8. package/dist/hooks/useShipmentRisk.js +72 -0
  9. package/dist/hooks/useTracking.js +96 -82
  10. package/dist/movethewheels/components/ShipmentRiskDialog.d.ts +20 -0
  11. package/dist/movethewheels/components/TrackingAlertList.d.ts +14 -0
  12. package/dist/movethewheels/hooks/useEntityImport.d.ts +19 -0
  13. package/dist/movethewheels/hooks/useShipmentRisk.d.ts +41 -0
  14. package/dist/movethewheels/pages/ImportExportPage.d.ts +9 -0
  15. package/dist/movethewheels/types/index.d.ts +15 -1
  16. package/dist/movethewheels/utils/entityImport.d.ts +109 -0
  17. package/dist/movethewheels/utils/trackingAlerts.d.ts +36 -0
  18. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-down-up.js +22 -0
  19. package/dist/node_modules/lucide-react/dist/esm/icons/file-spreadsheet.js +30 -0
  20. package/dist/node_modules/lucide-react/dist/esm/icons/file-up.js +22 -0
  21. package/dist/pages/CustomersPage.js +88 -79
  22. package/dist/pages/DashboardPage.js +147 -151
  23. package/dist/pages/DriversPage.js +115 -106
  24. package/dist/pages/ImportExportPage.js +435 -0
  25. package/dist/pages/LiveTrackingPage.js +169 -169
  26. package/dist/pages/ProductsPage.js +85 -76
  27. package/dist/pages/VehiclesPage.js +99 -90
  28. package/dist/pages/WarehousesPage.js +97 -88
  29. package/dist/utils/entityImport.js +73 -0
  30. package/dist/utils/trackingAlerts.js +86 -0
  31. package/package.json +4 -2
  32. package/src/generated/tracking-quality-operations.ts +1519 -1
  33. package/src/generated/wspace-types.ts +3248 -51
  34. package/src/movethewheels/MoveTheWheelsRoot.tsx +8 -0
  35. package/src/movethewheels/MoveTheWheelsRoutes.tsx +4 -0
  36. package/src/movethewheels/components/ShipmentRiskDialog.tsx +315 -0
  37. package/src/movethewheels/components/TrackingAlertList.tsx +188 -0
  38. package/src/movethewheels/hooks/useEntityImport.ts +108 -0
  39. package/src/movethewheels/hooks/useShipmentRisk.ts +195 -0
  40. package/src/movethewheels/hooks/useTracking.ts +66 -22
  41. package/src/movethewheels/pages/CustomersPage.tsx +6 -1
  42. package/src/movethewheels/pages/DashboardPage.tsx +10 -20
  43. package/src/movethewheels/pages/DriversPage.tsx +6 -0
  44. package/src/movethewheels/pages/ImportExportPage.tsx +483 -0
  45. package/src/movethewheels/pages/LiveTrackingPage.tsx +20 -22
  46. package/src/movethewheels/pages/ProductsPage.tsx +14 -1
  47. package/src/movethewheels/pages/VehiclesPage.tsx +6 -0
  48. package/src/movethewheels/pages/WarehousesPage.tsx +6 -1
  49. package/src/movethewheels/types/index.ts +16 -1
  50. package/src/movethewheels/utils/entityImport.ts +239 -0
  51. package/src/movethewheels/utils/trackingAlerts.ts +151 -0
@@ -45,8 +45,10 @@ export type AdjustInventoryStockInput = {
45
45
  };
46
46
 
47
47
  export type CaptureEpodInput = {
48
+ completionAttestation?: InputMaybe<Scalars['Boolean']['input']>;
48
49
  context?: InputMaybe<ContextInput>;
49
50
  deliveryJobId: Scalars['ID']['input'];
51
+ expectedShipmentStatusRevision?: InputMaybe<Scalars['Int']['input']>;
50
52
  latitude?: InputMaybe<Scalars['Float']['input']>;
51
53
  locationAccuracy?: InputMaybe<Scalars['Float']['input']>;
52
54
  longitude?: InputMaybe<Scalars['Float']['input']>;
@@ -69,6 +71,26 @@ export type CloseMtwContainerCycleInput = {
69
71
  idempotencyKey: Scalars['String']['input'];
70
72
  };
71
73
 
74
+ export type CompareMtwFreightInvoiceInput = {
75
+ correctionReason?: InputMaybe<Scalars['String']['input']>;
76
+ estimateVersionId: Scalars['ID']['input'];
77
+ evidence: Array<MtwContainerEvidenceInput>;
78
+ expectedPreviousComparisonId?: InputMaybe<Scalars['ID']['input']>;
79
+ expectedRevision: Scalars['Int']['input'];
80
+ facts: MtwFreightInvoiceFactsInput;
81
+ idempotencyKey: Scalars['String']['input'];
82
+ shipmentId: Scalars['ID']['input'];
83
+ };
84
+
85
+ export type ConfigureShipmentStatusSourceInput = {
86
+ basisTrackingEventId: Scalars['ID']['input'];
87
+ expectedStatusRevision: Scalars['Int']['input'];
88
+ integrationId: Scalars['ID']['input'];
89
+ maxFutureSkewSeconds: Scalars['Int']['input'];
90
+ maxSourceAgeSeconds: Scalars['Int']['input'];
91
+ reason: Scalars['String']['input'];
92
+ };
93
+
72
94
  export type ContextFilterInput = {
73
95
  appId?: InputMaybe<Scalars['ID']['input']>;
74
96
  projectId?: InputMaybe<Scalars['ID']['input']>;
@@ -455,7 +477,7 @@ export type MtwAnalyticsSeries = {
455
477
  revenueTrend: Array<MtwAnalyticsPoint>;
456
478
  };
457
479
 
458
- /** Ranked vehicles and drivers that can take a route right now, best first. */
480
+ /** Ranked candidates from recorded status, expiry and known live routes; not legal, maintenance or duty-hours clearance. */
459
481
  export type MtwAssignmentSuggestions = {
460
482
  __typename?: 'MtwAssignmentSuggestions';
461
483
  drivers: Array<MtwDriverSuggestion>;
@@ -744,6 +766,40 @@ export type MtwConsolidationSourceInput = {
744
766
  revision?: InputMaybe<Scalars['String']['input']>;
745
767
  };
746
768
 
769
+ export type MtwConsumedFuelBasis =
770
+ | 'ESTIMATED_CONSUMPTION'
771
+ | 'MEASURED_CONSUMPTION'
772
+ | 'PURCHASED_OR_REFUELLED'
773
+ | 'UNKNOWN';
774
+
775
+ export type MtwConsumedFuelPreview = {
776
+ __typename?: 'MtwConsumedFuelPreview';
777
+ distance?: Maybe<MtwFuelDistanceObservation>;
778
+ fuel?: Maybe<MtwFuelVolumeObservation>;
779
+ litresPer100Km?: Maybe<Scalars['Float']['output']>;
780
+ qualification: MtwConsumedFuelQualification;
781
+ reasons: Array<MtwConsumedFuelReason>;
782
+ status: MtwUtilizationMetricStatus;
783
+ };
784
+
785
+ export type MtwConsumedFuelPreviewInput = {
786
+ distance?: InputMaybe<MtwFuelDistanceObservationInput>;
787
+ fuel?: InputMaybe<MtwFuelVolumeObservationInput>;
788
+ };
789
+
790
+ export type MtwConsumedFuelQualification =
791
+ | 'OPERATOR_REPORTED_UNVERIFIED';
792
+
793
+ export type MtwConsumedFuelReason =
794
+ | 'DISTANCE_UNKNOWN'
795
+ | 'FUEL_UNKNOWN'
796
+ | 'INTERVAL_MISMATCH'
797
+ | 'NON_MEASURED_DISTANCE'
798
+ | 'PARTIAL_COVERAGE'
799
+ | 'SOURCE_UNKNOWN'
800
+ | 'UNSUPPORTED_FUEL_BASIS'
801
+ | 'ZERO_DISTANCE';
802
+
747
803
  export type MtwContainer = {
748
804
  __typename?: 'MtwContainer';
749
805
  containerNumber: Scalars['String']['output'];
@@ -1022,6 +1078,31 @@ export type MtwContainerSuitability =
1022
1078
  | 'REJECTED'
1023
1079
  | 'REVIEW_REQUIRED';
1024
1080
 
1081
+ export type MtwCreateServiceOfferingInput = {
1082
+ availability?: InputMaybe<MtwServiceAvailability>;
1083
+ category: MtwServiceOfferingCategory;
1084
+ currency?: InputMaybe<Scalars['String']['input']>;
1085
+ description?: InputMaybe<Scalars['String']['input']>;
1086
+ isActive?: InputMaybe<Scalars['Boolean']['input']>;
1087
+ name: Scalars['String']['input'];
1088
+ price?: InputMaybe<Scalars['Float']['input']>;
1089
+ pricingUnit?: InputMaybe<Scalars['String']['input']>;
1090
+ providerId: Scalars['ID']['input'];
1091
+ transitDays?: InputMaybe<Scalars['Int']['input']>;
1092
+ };
1093
+
1094
+ export type MtwCreateServiceProviderInput = {
1095
+ contactInfo?: InputMaybe<Scalars['JSON']['input']>;
1096
+ description?: InputMaybe<Scalars['String']['input']>;
1097
+ isActive?: InputMaybe<Scalars['Boolean']['input']>;
1098
+ isVerified?: InputMaybe<Scalars['Boolean']['input']>;
1099
+ name: Scalars['String']['input'];
1100
+ rating?: InputMaybe<Scalars['Float']['input']>;
1101
+ serviceAreas?: InputMaybe<Array<Scalars['String']['input']>>;
1102
+ services?: InputMaybe<Array<Scalars['String']['input']>>;
1103
+ type: MtwServiceProviderType;
1104
+ };
1105
+
1025
1106
  export type MtwCustomer = {
1026
1107
  __typename?: 'MtwCustomer';
1027
1108
  address?: Maybe<Scalars['JSON']['output']>;
@@ -1366,6 +1447,7 @@ export type MtwFleetAlertSubjectType =
1366
1447
  export type MtwFleetAlertType =
1367
1448
  | 'LICENSE_EXPIRED'
1368
1449
  | 'LICENSE_EXPIRING'
1450
+ | 'LICENSE_UNKNOWN'
1369
1451
  | 'MAINTENANCE_DUE_SOON'
1370
1452
  | 'MAINTENANCE_OVERDUE';
1371
1453
 
@@ -1613,6 +1695,276 @@ export type MtwFreightCategory =
1613
1695
  | 'PRE_CARRIAGE'
1614
1696
  | 'TAX_ESTIMATE';
1615
1697
 
1698
+ export type MtwFreightCommercialCapture = {
1699
+ __typename?: 'MtwFreightCommercialCapture';
1700
+ cargo: MtwFreightCommercialCargoFact;
1701
+ carrier: MtwFreightCommercialCarrierFact;
1702
+ destination: MtwFreightCommercialLocationFact;
1703
+ equipment: MtwFreightCommercialEquipmentFact;
1704
+ origin: MtwFreightCommercialLocationFact;
1705
+ ownerLegs: Array<MtwFreightCommercialOwnerLeg>;
1706
+ ownerShipment: MtwFreightCommercialShipment;
1707
+ schemaVersion: Scalars['Int']['output'];
1708
+ selectedLegs: Array<MtwFreightCommercialLegPin>;
1709
+ service: MtwFreightCommercialServiceFact;
1710
+ volume: MtwFreightCommercialVolumeFact;
1711
+ weight: MtwFreightCommercialWeightFact;
1712
+ };
1713
+
1714
+ export type MtwFreightCommercialCaptureInput = {
1715
+ cargo: MtwFreightCommercialCargoFactInput;
1716
+ carrier: MtwFreightCommercialCarrierFactInput;
1717
+ destination: MtwFreightCommercialLocationFactInput;
1718
+ equipment: MtwFreightCommercialEquipmentFactInput;
1719
+ origin: MtwFreightCommercialLocationFactInput;
1720
+ schemaVersion: Scalars['Int']['input'];
1721
+ selectedLegs: Array<MtwFreightCommercialLegPinInput>;
1722
+ service: MtwFreightCommercialServiceFactInput;
1723
+ volume: MtwFreightCommercialVolumeFactInput;
1724
+ weight: MtwFreightCommercialWeightFactInput;
1725
+ };
1726
+
1727
+ export type MtwFreightCommercialCargo = {
1728
+ __typename?: 'MtwFreightCommercialCargo';
1729
+ classificationLabel: Scalars['String']['output'];
1730
+ description: Scalars['String']['output'];
1731
+ };
1732
+
1733
+ export type MtwFreightCommercialCargoFact = {
1734
+ __typename?: 'MtwFreightCommercialCargoFact';
1735
+ provenance?: Maybe<MtwFreightCommercialProvenance>;
1736
+ reason?: Maybe<Scalars['String']['output']>;
1737
+ status: MtwFreightCommercialStatus;
1738
+ value?: Maybe<MtwFreightCommercialCargo>;
1739
+ };
1740
+
1741
+ export type MtwFreightCommercialCargoFactInput = {
1742
+ provenance?: InputMaybe<MtwFreightCommercialProvenanceInput>;
1743
+ reason?: InputMaybe<Scalars['String']['input']>;
1744
+ status: MtwFreightCommercialStatus;
1745
+ value?: InputMaybe<MtwFreightCommercialCargoInput>;
1746
+ };
1747
+
1748
+ export type MtwFreightCommercialCargoInput = {
1749
+ classificationLabel: Scalars['String']['input'];
1750
+ description: Scalars['String']['input'];
1751
+ };
1752
+
1753
+ export type MtwFreightCommercialCarrier = {
1754
+ __typename?: 'MtwFreightCommercialCarrier';
1755
+ label: Scalars['String']['output'];
1756
+ reference: Scalars['String']['output'];
1757
+ };
1758
+
1759
+ export type MtwFreightCommercialCarrierFact = {
1760
+ __typename?: 'MtwFreightCommercialCarrierFact';
1761
+ provenance?: Maybe<MtwFreightCommercialProvenance>;
1762
+ reason?: Maybe<Scalars['String']['output']>;
1763
+ status: MtwFreightCommercialStatus;
1764
+ value?: Maybe<MtwFreightCommercialCarrier>;
1765
+ };
1766
+
1767
+ export type MtwFreightCommercialCarrierFactInput = {
1768
+ provenance?: InputMaybe<MtwFreightCommercialProvenanceInput>;
1769
+ reason?: InputMaybe<Scalars['String']['input']>;
1770
+ status: MtwFreightCommercialStatus;
1771
+ value?: InputMaybe<MtwFreightCommercialCarrierInput>;
1772
+ };
1773
+
1774
+ export type MtwFreightCommercialCarrierInput = {
1775
+ label: Scalars['String']['input'];
1776
+ reference: Scalars['String']['input'];
1777
+ };
1778
+
1779
+ export type MtwFreightCommercialEquipment = {
1780
+ __typename?: 'MtwFreightCommercialEquipment';
1781
+ count: Scalars['Int']['output'];
1782
+ typeLabel: Scalars['String']['output'];
1783
+ };
1784
+
1785
+ export type MtwFreightCommercialEquipmentFact = {
1786
+ __typename?: 'MtwFreightCommercialEquipmentFact';
1787
+ provenance?: Maybe<MtwFreightCommercialProvenance>;
1788
+ reason?: Maybe<Scalars['String']['output']>;
1789
+ status: MtwFreightCommercialStatus;
1790
+ value?: Maybe<MtwFreightCommercialEquipment>;
1791
+ };
1792
+
1793
+ export type MtwFreightCommercialEquipmentFactInput = {
1794
+ provenance?: InputMaybe<MtwFreightCommercialProvenanceInput>;
1795
+ reason?: InputMaybe<Scalars['String']['input']>;
1796
+ status: MtwFreightCommercialStatus;
1797
+ value?: InputMaybe<MtwFreightCommercialEquipmentInput>;
1798
+ };
1799
+
1800
+ export type MtwFreightCommercialEquipmentInput = {
1801
+ count: Scalars['Int']['input'];
1802
+ typeLabel: Scalars['String']['input'];
1803
+ };
1804
+
1805
+ export type MtwFreightCommercialLegPin = {
1806
+ __typename?: 'MtwFreightCommercialLegPin';
1807
+ expectedUpdatedAt: Scalars['DateTime']['output'];
1808
+ id: Scalars['ID']['output'];
1809
+ };
1810
+
1811
+ export type MtwFreightCommercialLegPinInput = {
1812
+ expectedUpdatedAt: Scalars['DateTime']['input'];
1813
+ id: Scalars['ID']['input'];
1814
+ };
1815
+
1816
+ export type MtwFreightCommercialLink = {
1817
+ __typename?: 'MtwFreightCommercialLink';
1818
+ fileId: Scalars['ID']['output'];
1819
+ versionId: Scalars['ID']['output'];
1820
+ };
1821
+
1822
+ export type MtwFreightCommercialLinkInput = {
1823
+ fileId: Scalars['ID']['input'];
1824
+ versionId: Scalars['ID']['input'];
1825
+ };
1826
+
1827
+ export type MtwFreightCommercialLocation = {
1828
+ __typename?: 'MtwFreightCommercialLocation';
1829
+ jurisdictionLabel?: Maybe<Scalars['String']['output']>;
1830
+ kind: MtwFreightLocationKind;
1831
+ label: Scalars['String']['output'];
1832
+ };
1833
+
1834
+ export type MtwFreightCommercialLocationFact = {
1835
+ __typename?: 'MtwFreightCommercialLocationFact';
1836
+ provenance?: Maybe<MtwFreightCommercialProvenance>;
1837
+ reason?: Maybe<Scalars['String']['output']>;
1838
+ status: MtwFreightCommercialStatus;
1839
+ value?: Maybe<MtwFreightCommercialLocation>;
1840
+ };
1841
+
1842
+ export type MtwFreightCommercialLocationFactInput = {
1843
+ provenance?: InputMaybe<MtwFreightCommercialProvenanceInput>;
1844
+ reason?: InputMaybe<Scalars['String']['input']>;
1845
+ status: MtwFreightCommercialStatus;
1846
+ value?: InputMaybe<MtwFreightCommercialLocationInput>;
1847
+ };
1848
+
1849
+ export type MtwFreightCommercialLocationInput = {
1850
+ jurisdictionLabel?: InputMaybe<Scalars['String']['input']>;
1851
+ kind: MtwFreightLocationKind;
1852
+ label: Scalars['String']['input'];
1853
+ };
1854
+
1855
+ export type MtwFreightCommercialOwnerLeg = {
1856
+ __typename?: 'MtwFreightCommercialOwnerLeg';
1857
+ carrierId?: Maybe<Scalars['ID']['output']>;
1858
+ carrierName?: Maybe<Scalars['String']['output']>;
1859
+ containerCount?: Maybe<Scalars['Int']['output']>;
1860
+ containerType?: Maybe<OceanContainerType>;
1861
+ id: Scalars['ID']['output'];
1862
+ legNumber: Scalars['Int']['output'];
1863
+ mode: TransportMode;
1864
+ updatedAt: Scalars['DateTime']['output'];
1865
+ volumeCbm?: Maybe<Scalars['Float']['output']>;
1866
+ weightKg?: Maybe<Scalars['Float']['output']>;
1867
+ };
1868
+
1869
+ export type MtwFreightCommercialProvenance = {
1870
+ __typename?: 'MtwFreightCommercialProvenance';
1871
+ evidenceLinks: Array<MtwFreightCommercialLink>;
1872
+ observedAt?: Maybe<Scalars['DateTime']['output']>;
1873
+ sourceReference: Scalars['String']['output'];
1874
+ sourceRevision: Scalars['String']['output'];
1875
+ };
1876
+
1877
+ export type MtwFreightCommercialProvenanceInput = {
1878
+ evidenceLinks: Array<MtwFreightCommercialLinkInput>;
1879
+ observedAt?: InputMaybe<Scalars['DateTime']['input']>;
1880
+ sourceReference: Scalars['String']['input'];
1881
+ sourceRevision: Scalars['String']['input'];
1882
+ };
1883
+
1884
+ export type MtwFreightCommercialServiceFact = {
1885
+ __typename?: 'MtwFreightCommercialServiceFact';
1886
+ provenance?: Maybe<MtwFreightCommercialProvenance>;
1887
+ reason?: Maybe<Scalars['String']['output']>;
1888
+ status: MtwFreightCommercialStatus;
1889
+ value?: Maybe<Scalars['String']['output']>;
1890
+ };
1891
+
1892
+ export type MtwFreightCommercialServiceFactInput = {
1893
+ provenance?: InputMaybe<MtwFreightCommercialProvenanceInput>;
1894
+ reason?: InputMaybe<Scalars['String']['input']>;
1895
+ status: MtwFreightCommercialStatus;
1896
+ value?: InputMaybe<Scalars['String']['input']>;
1897
+ };
1898
+
1899
+ export type MtwFreightCommercialShipment = {
1900
+ __typename?: 'MtwFreightCommercialShipment';
1901
+ primaryMode: TransportMode;
1902
+ shipmentId: Scalars['ID']['output'];
1903
+ updatedAt: Scalars['DateTime']['output'];
1904
+ };
1905
+
1906
+ /** Reported commercial context only; no quote acceptance or completeness authority. */
1907
+ export type MtwFreightCommercialStatus =
1908
+ | 'NOT_APPLICABLE'
1909
+ | 'SOURCED'
1910
+ | 'UNKNOWN';
1911
+
1912
+ export type MtwFreightCommercialVolume = {
1913
+ __typename?: 'MtwFreightCommercialVolume';
1914
+ amount: Scalars['String']['output'];
1915
+ unit: MtwFreightVolumeUnit;
1916
+ zeroReason?: Maybe<Scalars['String']['output']>;
1917
+ };
1918
+
1919
+ export type MtwFreightCommercialVolumeFact = {
1920
+ __typename?: 'MtwFreightCommercialVolumeFact';
1921
+ provenance?: Maybe<MtwFreightCommercialProvenance>;
1922
+ reason?: Maybe<Scalars['String']['output']>;
1923
+ status: MtwFreightCommercialStatus;
1924
+ value?: Maybe<MtwFreightCommercialVolume>;
1925
+ };
1926
+
1927
+ export type MtwFreightCommercialVolumeFactInput = {
1928
+ provenance?: InputMaybe<MtwFreightCommercialProvenanceInput>;
1929
+ reason?: InputMaybe<Scalars['String']['input']>;
1930
+ status: MtwFreightCommercialStatus;
1931
+ value?: InputMaybe<MtwFreightCommercialVolumeInput>;
1932
+ };
1933
+
1934
+ export type MtwFreightCommercialVolumeInput = {
1935
+ amount: Scalars['String']['input'];
1936
+ unit: MtwFreightVolumeUnit;
1937
+ zeroReason?: InputMaybe<Scalars['String']['input']>;
1938
+ };
1939
+
1940
+ export type MtwFreightCommercialWeight = {
1941
+ __typename?: 'MtwFreightCommercialWeight';
1942
+ amount: Scalars['String']['output'];
1943
+ unit: MtwFreightWeightUnit;
1944
+ zeroReason?: Maybe<Scalars['String']['output']>;
1945
+ };
1946
+
1947
+ export type MtwFreightCommercialWeightFact = {
1948
+ __typename?: 'MtwFreightCommercialWeightFact';
1949
+ provenance?: Maybe<MtwFreightCommercialProvenance>;
1950
+ reason?: Maybe<Scalars['String']['output']>;
1951
+ status: MtwFreightCommercialStatus;
1952
+ value?: Maybe<MtwFreightCommercialWeight>;
1953
+ };
1954
+
1955
+ export type MtwFreightCommercialWeightFactInput = {
1956
+ provenance?: InputMaybe<MtwFreightCommercialProvenanceInput>;
1957
+ reason?: InputMaybe<Scalars['String']['input']>;
1958
+ status: MtwFreightCommercialStatus;
1959
+ value?: InputMaybe<MtwFreightCommercialWeightInput>;
1960
+ };
1961
+
1962
+ export type MtwFreightCommercialWeightInput = {
1963
+ amount: Scalars['String']['input'];
1964
+ unit: MtwFreightWeightUnit;
1965
+ zeroReason?: InputMaybe<Scalars['String']['input']>;
1966
+ };
1967
+
1616
1968
  /** A declared currency/scale convention, not automatic ISO verification. */
1617
1969
  export type MtwFreightCurrency = {
1618
1970
  __typename?: 'MtwFreightCurrency';
@@ -1644,6 +1996,7 @@ export type MtwFreightEstimatePage = {
1644
1996
  export type MtwFreightEstimateVersion = {
1645
1997
  __typename?: 'MtwFreightEstimateVersion';
1646
1998
  actorProvenance: Scalars['String']['output'];
1999
+ commercialCapture?: Maybe<MtwFreightCommercialCapture>;
1647
2000
  createdBy: Scalars['ID']['output'];
1648
2001
  estimateReference: Scalars['String']['output'];
1649
2002
  evidence: Array<MtwContainerEvidence>;
@@ -1719,6 +2072,193 @@ export type MtwFreightFxInput = {
1719
2072
  toCurrency: MtwFreightCurrencyInput;
1720
2073
  };
1721
2074
 
2075
+ export type MtwFreightInvoiceAcceptance =
2076
+ | 'NOT_ESTABLISHED';
2077
+
2078
+ export type MtwFreightInvoiceBlocker =
2079
+ | 'EVIDENCE_REQUIRED'
2080
+ | 'INVOICE_REFERENCE_UNKNOWN'
2081
+ | 'SHIPMENT_NOT_LIVE'
2082
+ | 'SUPPLIER_UNKNOWN';
2083
+
2084
+ export type MtwFreightInvoiceComparableSubtotal = {
2085
+ __typename?: 'MtwFreightInvoiceComparableSubtotal';
2086
+ currency: MtwFreightCurrency;
2087
+ deltaMinor: Scalars['String']['output'];
2088
+ estimateMinor: Scalars['String']['output'];
2089
+ invoiceLineIds: Array<Scalars['ID']['output']>;
2090
+ invoiceMinor: Scalars['String']['output'];
2091
+ payerReference: Scalars['String']['output'];
2092
+ };
2093
+
2094
+ export type MtwFreightInvoiceComparison = {
2095
+ __typename?: 'MtwFreightInvoiceComparison';
2096
+ actorProvenance: Scalars['String']['output'];
2097
+ correctionReason?: Maybe<Scalars['String']['output']>;
2098
+ createdBy: Scalars['ID']['output'];
2099
+ estimate: MtwFreightInvoiceEstimatePin;
2100
+ estimateDeclaredSubtotals: Array<MtwFreightSubtotal>;
2101
+ evidence: Array<MtwContainerEvidence>;
2102
+ facts: MtwFreightInvoiceFacts;
2103
+ id: Scalars['ID']['output'];
2104
+ idempotencyKey: Scalars['String']['output'];
2105
+ invoiceDeclaredSubtotals: Array<MtwFreightSubtotal>;
2106
+ invoiceIdentityId: Scalars['ID']['output'];
2107
+ methodVersion: Scalars['Int']['output'];
2108
+ onBehalfOf?: Maybe<Scalars['ID']['output']>;
2109
+ outcome: MtwFreightInvoiceOutcome;
2110
+ previousComparisonId?: Maybe<Scalars['ID']['output']>;
2111
+ recordedAt: Scalars['DateTime']['output'];
2112
+ requestFingerprint: Scalars['String']['output'];
2113
+ revision: Scalars['Int']['output'];
2114
+ shipmentId: Scalars['ID']['output'];
2115
+ };
2116
+
2117
+ export type MtwFreightInvoiceComparisonPage = {
2118
+ __typename?: 'MtwFreightInvoiceComparisonPage';
2119
+ hasMore: Scalars['Boolean']['output'];
2120
+ items: Array<MtwFreightInvoiceComparison>;
2121
+ limit: Scalars['Int']['output'];
2122
+ nextOffset?: Maybe<Scalars['Int']['output']>;
2123
+ offset: Scalars['Int']['output'];
2124
+ total: Scalars['Int']['output'];
2125
+ };
2126
+
2127
+ export type MtwFreightInvoiceEstimatePin = {
2128
+ __typename?: 'MtwFreightInvoiceEstimatePin';
2129
+ acceptance: MtwFreightInvoiceAcceptance;
2130
+ estimateReference: Scalars['String']['output'];
2131
+ id: Scalars['ID']['output'];
2132
+ kind: MtwFreightKind;
2133
+ quotedAt?: Maybe<Scalars['DateTime']['output']>;
2134
+ sourceReference: Scalars['String']['output'];
2135
+ sourceRevision: Scalars['String']['output'];
2136
+ validFrom?: Maybe<Scalars['DateTime']['output']>;
2137
+ validUntil?: Maybe<Scalars['DateTime']['output']>;
2138
+ version: Scalars['Int']['output'];
2139
+ };
2140
+
2141
+ export type MtwFreightInvoiceFacts = {
2142
+ __typename?: 'MtwFreightInvoiceFacts';
2143
+ currency: MtwFreightCurrency;
2144
+ invoiceDate?: Maybe<Scalars['String']['output']>;
2145
+ invoiceReference?: Maybe<Scalars['String']['output']>;
2146
+ rows: Array<MtwFreightInvoiceRow>;
2147
+ schemaVersion: Scalars['Int']['output'];
2148
+ sourceReference: Scalars['String']['output'];
2149
+ sourceRevision: Scalars['String']['output'];
2150
+ supplierLabel?: Maybe<Scalars['String']['output']>;
2151
+ supplierReference?: Maybe<Scalars['String']['output']>;
2152
+ };
2153
+
2154
+ export type MtwFreightInvoiceFactsInput = {
2155
+ currency: MtwFreightCurrencyInput;
2156
+ /** An exact source date; unknown remains null. */
2157
+ invoiceDate?: InputMaybe<Scalars['String']['input']>;
2158
+ invoiceReference?: InputMaybe<Scalars['String']['input']>;
2159
+ rows: Array<MtwFreightInvoiceRowInput>;
2160
+ schemaVersion: Scalars['Int']['input'];
2161
+ sourceReference: Scalars['String']['input'];
2162
+ sourceRevision: Scalars['String']['input'];
2163
+ supplierLabel?: InputMaybe<Scalars['String']['input']>;
2164
+ supplierReference?: InputMaybe<Scalars['String']['input']>;
2165
+ };
2166
+
2167
+ export type MtwFreightInvoiceFlag =
2168
+ | 'AMOUNT_CHANGED'
2169
+ | 'CURRENCY_CHANGED'
2170
+ | 'DUPLICATE_MATCH'
2171
+ | 'EXCLUDED_CHARGE_APPEARED'
2172
+ | 'MATCHED'
2173
+ | 'MISSING_EXPECTED_LINE'
2174
+ | 'PAYER_CHANGED'
2175
+ | 'QUANTITY_CHANGED'
2176
+ | 'RATE_CHANGED'
2177
+ | 'UNKNOWN_COMPARISON'
2178
+ | 'UNMATCHED_INVOICE_LINE';
2179
+
2180
+ export type MtwFreightInvoiceOutcome = {
2181
+ __typename?: 'MtwFreightInvoiceOutcome';
2182
+ /** Only the explicit recorded comparison coverage, never all supplier charges or liability. */
2183
+ allLinesMatched: Scalars['Boolean']['output'];
2184
+ comparableSubtotals: Array<MtwFreightInvoiceComparableSubtotal>;
2185
+ flags: Array<MtwFreightInvoiceFlag>;
2186
+ missingExpectedLineIds: Array<Scalars['ID']['output']>;
2187
+ rows: Array<MtwFreightInvoiceRowComparison>;
2188
+ unknownExpectedCoverage: Array<MtwFreightInvoiceUnknownCoverage>;
2189
+ };
2190
+
2191
+ export type MtwFreightInvoicePreview = {
2192
+ __typename?: 'MtwFreightInvoicePreview';
2193
+ blockers: Array<MtwFreightInvoiceBlocker>;
2194
+ estimate: MtwFreightInvoiceEstimatePin;
2195
+ estimateDeclaredSubtotals: Array<MtwFreightSubtotal>;
2196
+ facts: MtwFreightInvoiceFacts;
2197
+ invoiceDeclaredSubtotals: Array<MtwFreightSubtotal>;
2198
+ methodVersion: Scalars['Int']['output'];
2199
+ outcome: MtwFreightInvoiceOutcome;
2200
+ recordable: Scalars['Boolean']['output'];
2201
+ };
2202
+
2203
+ export type MtwFreightInvoiceReason =
2204
+ | 'INCLUDED_CHILD_BILLED_SEPARATELY'
2205
+ | 'MISSING_AMOUNT'
2206
+ | 'MISSING_PAYER'
2207
+ | 'MISSING_QUANTITY'
2208
+ | 'MISSING_RATE'
2209
+ | 'MISSING_UNIT'
2210
+ | 'SCALE_MISMATCH'
2211
+ | 'UNIT_MISMATCH'
2212
+ | 'UNKNOWN_BASIS'
2213
+ | 'UNKNOWN_DISPOSITION'
2214
+ | 'UNKNOWN_EXPECTED_CHARGE_COVERAGE';
2215
+
2216
+ export type MtwFreightInvoiceRow = {
2217
+ __typename?: 'MtwFreightInvoiceRow';
2218
+ amountMinor?: Maybe<Scalars['String']['output']>;
2219
+ currency: MtwFreightCurrency;
2220
+ description: Scalars['String']['output'];
2221
+ estimateLineId?: Maybe<Scalars['ID']['output']>;
2222
+ id: Scalars['ID']['output'];
2223
+ payerLabel?: Maybe<Scalars['String']['output']>;
2224
+ payerReference?: Maybe<Scalars['String']['output']>;
2225
+ quantity?: Maybe<Scalars['String']['output']>;
2226
+ unit?: Maybe<Scalars['String']['output']>;
2227
+ unitRateMajor?: Maybe<Scalars['String']['output']>;
2228
+ zeroReason?: Maybe<Scalars['String']['output']>;
2229
+ };
2230
+
2231
+ export type MtwFreightInvoiceRowComparison = {
2232
+ __typename?: 'MtwFreightInvoiceRowComparison';
2233
+ deltaMinor?: Maybe<Scalars['String']['output']>;
2234
+ estimateLineId?: Maybe<Scalars['ID']['output']>;
2235
+ flags: Array<MtwFreightInvoiceFlag>;
2236
+ invoiceLineId: Scalars['ID']['output'];
2237
+ reasons: Array<MtwFreightInvoiceReason>;
2238
+ };
2239
+
2240
+ /** Manual reported invoice facts. This comparison does not establish liability or approve payment. */
2241
+ export type MtwFreightInvoiceRowInput = {
2242
+ amountMinor?: InputMaybe<Scalars['String']['input']>;
2243
+ currency: MtwFreightCurrencyInput;
2244
+ description: Scalars['String']['input'];
2245
+ estimateLineId?: InputMaybe<Scalars['ID']['input']>;
2246
+ id: Scalars['ID']['input'];
2247
+ payerLabel?: InputMaybe<Scalars['String']['input']>;
2248
+ payerReference?: InputMaybe<Scalars['String']['input']>;
2249
+ quantity?: InputMaybe<Scalars['String']['input']>;
2250
+ unit?: InputMaybe<Scalars['String']['input']>;
2251
+ unitRateMajor?: InputMaybe<Scalars['String']['input']>;
2252
+ zeroReason?: InputMaybe<Scalars['String']['input']>;
2253
+ };
2254
+
2255
+ export type MtwFreightInvoiceUnknownCoverage = {
2256
+ __typename?: 'MtwFreightInvoiceUnknownCoverage';
2257
+ estimateLineId: Scalars['ID']['output'];
2258
+ flag: MtwFreightInvoiceFlag;
2259
+ reason: MtwFreightInvoiceReason;
2260
+ };
2261
+
1722
2262
  export type MtwFreightKind =
1723
2263
  | 'ESTIMATE'
1724
2264
  | 'QUOTE';
@@ -1770,6 +2310,13 @@ export type MtwFreightLineTotal = {
1770
2310
  roundedToZero: Scalars['Boolean']['output'];
1771
2311
  };
1772
2312
 
2313
+ export type MtwFreightLocationKind =
2314
+ | 'ADDRESS_LABEL'
2315
+ | 'CUSTOM_LABEL'
2316
+ | 'PORT_LABEL'
2317
+ | 'POSTCODE_LABEL'
2318
+ | 'TERMINAL_LABEL';
2319
+
1773
2320
  /** Completeness applies only to the recorded required-charge declarations, not all possible charges. */
1774
2321
  export type MtwFreightPreview = {
1775
2322
  __typename?: 'MtwFreightPreview';
@@ -1845,6 +2392,142 @@ export type MtwFreightSubtotal = {
1845
2392
  totalAmountMinor?: Maybe<Scalars['String']['output']>;
1846
2393
  };
1847
2394
 
2395
+ export type MtwFreightVolumeUnit =
2396
+ | 'FT3'
2397
+ | 'M3';
2398
+
2399
+ export type MtwFreightWeightUnit =
2400
+ | 'KG'
2401
+ | 'LB'
2402
+ | 'TONNE';
2403
+
2404
+ export type MtwFuelDistanceObservation = {
2405
+ __typename?: 'MtwFuelDistanceObservation';
2406
+ basis: MtwUtilizationDistanceBasis;
2407
+ coverage: MtwTripUtilizationCoverage;
2408
+ intervalFrom: Scalars['String']['output'];
2409
+ intervalUntil: Scalars['String']['output'];
2410
+ metres?: Maybe<Scalars['Int']['output']>;
2411
+ sourceReference?: Maybe<Scalars['String']['output']>;
2412
+ sourceRevision?: Maybe<Scalars['String']['output']>;
2413
+ };
2414
+
2415
+ export type MtwFuelDistanceObservationInput = {
2416
+ basis: MtwUtilizationDistanceBasis;
2417
+ coverage: MtwTripUtilizationCoverage;
2418
+ intervalFrom: Scalars['String']['input'];
2419
+ intervalUntil: Scalars['String']['input'];
2420
+ metres?: InputMaybe<Scalars['Int']['input']>;
2421
+ sourceReference?: InputMaybe<Scalars['String']['input']>;
2422
+ sourceRevision?: InputMaybe<Scalars['String']['input']>;
2423
+ };
2424
+
2425
+ export type MtwFuelVolumeObservation = {
2426
+ __typename?: 'MtwFuelVolumeObservation';
2427
+ basis: MtwConsumedFuelBasis;
2428
+ coverage: MtwTripUtilizationCoverage;
2429
+ intervalFrom: Scalars['String']['output'];
2430
+ intervalUntil: Scalars['String']['output'];
2431
+ millilitres?: Maybe<Scalars['Int']['output']>;
2432
+ sourceReference?: Maybe<Scalars['String']['output']>;
2433
+ sourceRevision?: Maybe<Scalars['String']['output']>;
2434
+ };
2435
+
2436
+ export type MtwFuelVolumeObservationInput = {
2437
+ basis: MtwConsumedFuelBasis;
2438
+ coverage: MtwTripUtilizationCoverage;
2439
+ intervalFrom: Scalars['String']['input'];
2440
+ intervalUntil: Scalars['String']['input'];
2441
+ millilitres?: InputMaybe<Scalars['Int']['input']>;
2442
+ sourceReference?: InputMaybe<Scalars['String']['input']>;
2443
+ sourceRevision?: InputMaybe<Scalars['String']['input']>;
2444
+ };
2445
+
2446
+ export type MtwImportColumn = {
2447
+ __typename?: 'MtwImportColumn';
2448
+ allowedValues?: Maybe<Array<Scalars['String']['output']>>;
2449
+ description: Scalars['String']['output'];
2450
+ max?: Maybe<Scalars['Float']['output']>;
2451
+ maxLength?: Maybe<Scalars['Int']['output']>;
2452
+ min?: Maybe<Scalars['Float']['output']>;
2453
+ name: Scalars['String']['output'];
2454
+ required: Scalars['Boolean']['output'];
2455
+ type: MtwImportColumnType;
2456
+ };
2457
+
2458
+ export type MtwImportColumnType =
2459
+ | 'BOOLEAN'
2460
+ | 'DATE'
2461
+ | 'EMAIL'
2462
+ | 'ENUM'
2463
+ | 'INTEGER'
2464
+ | 'JSON'
2465
+ | 'NUMBER'
2466
+ | 'STRING';
2467
+
2468
+ export type MtwImportEntitySpec = {
2469
+ __typename?: 'MtwImportEntitySpec';
2470
+ columns: Array<MtwImportColumn>;
2471
+ entityType: MtwImportEntityType;
2472
+ /** Column that must be unique in the workspace, if any. */
2473
+ keyColumn?: Maybe<Scalars['String']['output']>;
2474
+ };
2475
+
2476
+ export type MtwImportEntityType =
2477
+ | 'CARGO_ITEM'
2478
+ | 'CUSTOMER'
2479
+ | 'DRIVER'
2480
+ | 'VEHICLE'
2481
+ | 'WAREHOUSE';
2482
+
2483
+ export type MtwImportFormat =
2484
+ | 'CSV'
2485
+ | 'JSON';
2486
+
2487
+ export type MtwImportInput = {
2488
+ /** Import the valid rows even when other rows are invalid. */
2489
+ allowPartial?: InputMaybe<Scalars['Boolean']['input']>;
2490
+ /** The CSV (with a header row) or JSON (array of objects) document, at most 2 MB and 1000 rows. */
2491
+ content: Scalars['String']['input'];
2492
+ /** Validate every row without writing anything. */
2493
+ dryRun?: InputMaybe<Scalars['Boolean']['input']>;
2494
+ format: MtwImportFormat;
2495
+ };
2496
+
2497
+ export type MtwImportResult = {
2498
+ __typename?: 'MtwImportResult';
2499
+ createdIds: Array<Scalars['ID']['output']>;
2500
+ dryRun: Scalars['Boolean']['output'];
2501
+ entityType: MtwImportEntityType;
2502
+ errors: Array<MtwImportRowError>;
2503
+ /** True when more row errors exist than are returned (the first 500 are returned). */
2504
+ errorsTruncated: Scalars['Boolean']['output'];
2505
+ failedRows: Scalars['Int']['output'];
2506
+ importedRows: Scalars['Int']['output'];
2507
+ status: MtwImportStatus;
2508
+ totalRows: Scalars['Int']['output'];
2509
+ validRows: Scalars['Int']['output'];
2510
+ };
2511
+
2512
+ export type MtwImportRowError = {
2513
+ __typename?: 'MtwImportRowError';
2514
+ field?: Maybe<Scalars['String']['output']>;
2515
+ message: Scalars['String']['output'];
2516
+ /** 1-based data row number (the CSV header is not counted). */
2517
+ row: Scalars['Int']['output'];
2518
+ };
2519
+
2520
+ /**
2521
+ * DRY_RUN: validated only, nothing written. COMPLETED: every row imported.
2522
+ * PARTIAL: allowPartial was set and some rows failed. REJECTED: some rows were
2523
+ * invalid and allowPartial was not set, so nothing was written.
2524
+ */
2525
+ export type MtwImportStatus =
2526
+ | 'COMPLETED'
2527
+ | 'DRY_RUN'
2528
+ | 'PARTIAL'
2529
+ | 'REJECTED';
2530
+
1848
2531
  /** A recorded manual issuer review; workspace privileges do not establish professional qualifications. */
1849
2532
  export type MtwInspectorQualification = {
1850
2533
  __typename?: 'MtwInspectorQualification';
@@ -2007,6 +2690,27 @@ export type MtwInventoryTransferResult = {
2007
2690
  source: MtwInventoryItem;
2008
2691
  };
2009
2692
 
2693
+ export type MtwMarketplaceStats = {
2694
+ __typename?: 'MtwMarketplaceStats';
2695
+ activeProviders: Scalars['Int']['output'];
2696
+ /** Average provider rating, or null when no provider has been rated. */
2697
+ avgRating?: Maybe<Scalars['Float']['output']>;
2698
+ offerings: Scalars['Int']['output'];
2699
+ providers: Scalars['Int']['output'];
2700
+ verifiedProviders: Scalars['Int']['output'];
2701
+ };
2702
+
2703
+ export type MtwMoveReviewSource = {
2704
+ __typename?: 'MtwMoveReviewSource';
2705
+ reference: Scalars['String']['output'];
2706
+ revision: Scalars['String']['output'];
2707
+ };
2708
+
2709
+ export type MtwMoveReviewSourceInput = {
2710
+ reference: Scalars['String']['input'];
2711
+ revision: Scalars['String']['input'];
2712
+ };
2713
+
2010
2714
  /** An estimate from the caller's own inputs — not a quote from anyone. */
2011
2715
  export type MtwOwnFleetEstimate = {
2012
2716
  __typename?: 'MtwOwnFleetEstimate';
@@ -2021,6 +2725,180 @@ export type MtwOwnFleetEstimate = {
2021
2725
  savingsVsCheapestCourier?: Maybe<Scalars['Float']['output']>;
2022
2726
  };
2023
2727
 
2728
+ export type MtwOwnedEpodShipmentStatus = {
2729
+ __typename?: 'MtwOwnedEpodShipmentStatus';
2730
+ id: Scalars['ID']['output'];
2731
+ status: ShipmentStatus;
2732
+ statusRevision: Scalars['Int']['output'];
2733
+ };
2734
+
2735
+ export type MtwPalletAdditionalPackingInput = {
2736
+ massG?: InputMaybe<Scalars['String']['input']>;
2737
+ source?: InputMaybe<MtwPalletMeasurementSourceInput>;
2738
+ };
2739
+
2740
+ export type MtwPalletBaseInput = {
2741
+ heightMm?: InputMaybe<Scalars['Int']['input']>;
2742
+ lengthMm?: InputMaybe<Scalars['Int']['input']>;
2743
+ maxPayloadMassG?: InputMaybe<Scalars['String']['input']>;
2744
+ source?: InputMaybe<MtwPalletMeasurementSourceInput>;
2745
+ tareMassG?: InputMaybe<Scalars['String']['input']>;
2746
+ widthMm?: InputMaybe<Scalars['Int']['input']>;
2747
+ };
2748
+
2749
+ export type MtwPalletBound = {
2750
+ __typename?: 'MtwPalletBound';
2751
+ reason: Scalars['String']['output'];
2752
+ status: MtwPalletBoundStatus;
2753
+ };
2754
+
2755
+ export type MtwPalletBoundStatus =
2756
+ | 'FAIL'
2757
+ | 'PASS'
2758
+ | 'UNKNOWN';
2759
+
2760
+ export type MtwPalletBounds = {
2761
+ __typename?: 'MtwPalletBounds';
2762
+ loadedPalletGrossMass: MtwPalletBound;
2763
+ palletFootprintWithinLoadEnvelope: MtwPalletBound;
2764
+ palletPayloadMass: MtwPalletBound;
2765
+ permittedUprightYaw: MtwPalletBound;
2766
+ placedContainment: MtwPalletBound;
2767
+ placedNonOverlap: MtwPalletBound;
2768
+ reportedSingleLayerHeight: MtwPalletBound;
2769
+ };
2770
+
2771
+ export type MtwPalletClassification =
2772
+ | 'GEOMETRIC_PROPOSAL_ONLY';
2773
+
2774
+ export type MtwPalletClearanceInput = {
2775
+ betweenPackagesMm?: InputMaybe<Scalars['Int']['input']>;
2776
+ perimeterMm?: InputMaybe<Scalars['Int']['input']>;
2777
+ source?: InputMaybe<MtwPalletMeasurementSourceInput>;
2778
+ topMm?: InputMaybe<Scalars['Int']['input']>;
2779
+ };
2780
+
2781
+ /** Read-only supplied-measurement geometry; no persistence, stock change or release authority. */
2782
+ export type MtwPalletGeometryPreview = {
2783
+ __typename?: 'MtwPalletGeometryPreview';
2784
+ bounds: MtwPalletBounds;
2785
+ classification: MtwPalletClassification;
2786
+ layoutStatus: MtwPalletLayoutStatus;
2787
+ method: MtwPalletMethod;
2788
+ placedQuantity: Scalars['Int']['output'];
2789
+ placements: Array<MtwPalletPlacement>;
2790
+ requestedGrossMassG?: Maybe<Scalars['String']['output']>;
2791
+ requestedPayloadMassG?: Maybe<Scalars['String']['output']>;
2792
+ requestedQuantity: Scalars['Int']['output'];
2793
+ sources: MtwPalletSources;
2794
+ units: MtwPalletUnits;
2795
+ unplaced: Array<MtwPalletUnplaced>;
2796
+ unsupported: MtwPalletUnsupported;
2797
+ };
2798
+
2799
+ export type MtwPalletGeometryPreviewInput = {
2800
+ additionalPacking: MtwPalletAdditionalPackingInput;
2801
+ clearance: MtwPalletClearanceInput;
2802
+ loadEnvelope?: InputMaybe<MtwPalletLoadEnvelopeInput>;
2803
+ mode: MtwPalletMode;
2804
+ packages: Array<MtwPalletPackageInput>;
2805
+ pallet: MtwPalletBaseInput;
2806
+ units: MtwPalletUnits;
2807
+ };
2808
+
2809
+ export type MtwPalletLayoutStatus =
2810
+ | 'NO_LAYOUT_FOUND_BY_METHOD'
2811
+ | 'PLACED_BY_METHOD'
2812
+ | 'UNKNOWN';
2813
+
2814
+ export type MtwPalletLoadEnvelopeInput = {
2815
+ lengthMm?: InputMaybe<Scalars['Int']['input']>;
2816
+ maxGrossMassG?: InputMaybe<Scalars['String']['input']>;
2817
+ maxHeightMm?: InputMaybe<Scalars['Int']['input']>;
2818
+ source?: InputMaybe<MtwPalletMeasurementSourceInput>;
2819
+ widthMm?: InputMaybe<Scalars['Int']['input']>;
2820
+ };
2821
+
2822
+ export type MtwPalletMeasurementSource = {
2823
+ __typename?: 'MtwPalletMeasurementSource';
2824
+ reference: Scalars['String']['output'];
2825
+ version: Scalars['String']['output'];
2826
+ };
2827
+
2828
+ export type MtwPalletMeasurementSourceInput = {
2829
+ reference: Scalars['String']['input'];
2830
+ version: Scalars['String']['input'];
2831
+ };
2832
+
2833
+ export type MtwPalletMethod =
2834
+ | 'DETERMINISTIC_SINGLE_LAYER_SHELF_V1';
2835
+
2836
+ export type MtwPalletMode =
2837
+ | 'UPRIGHT_SINGLE_LAYER';
2838
+
2839
+ export type MtwPalletPackageInput = {
2840
+ allowedYawDegrees?: InputMaybe<Array<Scalars['Int']['input']>>;
2841
+ grossMassG?: InputMaybe<Scalars['String']['input']>;
2842
+ heightMm?: InputMaybe<Scalars['Int']['input']>;
2843
+ id: Scalars['ID']['input'];
2844
+ lengthMm?: InputMaybe<Scalars['Int']['input']>;
2845
+ quantity: Scalars['Int']['input'];
2846
+ source?: InputMaybe<MtwPalletMeasurementSourceInput>;
2847
+ upright?: InputMaybe<Scalars['Boolean']['input']>;
2848
+ widthMm?: InputMaybe<Scalars['Int']['input']>;
2849
+ };
2850
+
2851
+ export type MtwPalletPackageSource = {
2852
+ __typename?: 'MtwPalletPackageSource';
2853
+ packageId: Scalars['ID']['output'];
2854
+ source?: Maybe<MtwPalletMeasurementSource>;
2855
+ };
2856
+
2857
+ export type MtwPalletPlacement = {
2858
+ __typename?: 'MtwPalletPlacement';
2859
+ heightMm?: Maybe<Scalars['Int']['output']>;
2860
+ lengthMm: Scalars['Int']['output'];
2861
+ packageId: Scalars['ID']['output'];
2862
+ unit: Scalars['Int']['output'];
2863
+ widthMm: Scalars['Int']['output'];
2864
+ xMm: Scalars['Int']['output'];
2865
+ yMm: Scalars['Int']['output'];
2866
+ yawDegrees: Scalars['Int']['output'];
2867
+ zMm?: Maybe<Scalars['Int']['output']>;
2868
+ };
2869
+
2870
+ export type MtwPalletSources = {
2871
+ __typename?: 'MtwPalletSources';
2872
+ additionalPacking?: Maybe<MtwPalletMeasurementSource>;
2873
+ clearance?: Maybe<MtwPalletMeasurementSource>;
2874
+ loadEnvelope?: Maybe<MtwPalletMeasurementSource>;
2875
+ packages: Array<MtwPalletPackageSource>;
2876
+ pallet?: Maybe<MtwPalletMeasurementSource>;
2877
+ };
2878
+
2879
+ export type MtwPalletUnits =
2880
+ | 'MM_G';
2881
+
2882
+ export type MtwPalletUnplaced = {
2883
+ __typename?: 'MtwPalletUnplaced';
2884
+ packageId: Scalars['ID']['output'];
2885
+ quantity: Scalars['Int']['output'];
2886
+ };
2887
+
2888
+ export type MtwPalletUnsupported = {
2889
+ __typename?: 'MtwPalletUnsupported';
2890
+ additionalPackingGeometry: MtwPalletUnsupportedStatus;
2891
+ centreOfGravityAndStability: MtwPalletUnsupportedStatus;
2892
+ handling: MtwPalletUnsupportedStatus;
2893
+ loadingAndUnloadingPath: MtwPalletUnsupportedStatus;
2894
+ securing: MtwPalletUnsupportedStatus;
2895
+ segregationAndCargoCompatibility: MtwPalletUnsupportedStatus;
2896
+ supportAndFloorContactLoads: MtwPalletUnsupportedStatus;
2897
+ };
2898
+
2899
+ export type MtwPalletUnsupportedStatus =
2900
+ | 'UNKNOWN';
2901
+
2024
2902
  export type MtwPickIntentLine = {
2025
2903
  __typename?: 'MtwPickIntentLine';
2026
2904
  applicableProfile?: Maybe<MtwPickIntentProfile>;
@@ -2085,6 +2963,62 @@ export type MtwPickPreparation = {
2085
2963
  source: MtwPickIntentLine;
2086
2964
  };
2087
2965
 
2966
+ /** Immutable human review only. It reserves no stock and confers no physical execution or qualification. */
2967
+ export type MtwPickReview = {
2968
+ __typename?: 'MtwPickReview';
2969
+ actions: Array<MtwPickReviewAction>;
2970
+ classification: Scalars['String']['output'];
2971
+ evidence: Array<MtwContainerEvidence>;
2972
+ handlingPolicy?: Maybe<MtwMoveReviewSource>;
2973
+ id: Scalars['ID']['output'];
2974
+ idempotencyKey: Scalars['String']['output'];
2975
+ intentHash: Scalars['String']['output'];
2976
+ kind: MtwPickReviewKind;
2977
+ note: Scalars['String']['output'];
2978
+ previousDecisionId?: Maybe<Scalars['ID']['output']>;
2979
+ quantityCeiling?: Maybe<Scalars['Int']['output']>;
2980
+ recordedAt: Scalars['DateTime']['output'];
2981
+ reviewerActorId: Scalars['ID']['output'];
2982
+ sop?: Maybe<MtwMoveReviewSource>;
2983
+ subjectActorId: Scalars['ID']['output'];
2984
+ taskId: Scalars['ID']['output'];
2985
+ validFrom?: Maybe<Scalars['DateTime']['output']>;
2986
+ validUntil?: Maybe<Scalars['DateTime']['output']>;
2987
+ version: Scalars['Int']['output'];
2988
+ };
2989
+
2990
+ export type MtwPickReviewAction =
2991
+ | 'RELEASE_STAGED_CUSTODY'
2992
+ | 'RELEASE_UNPICKED'
2993
+ | 'RESERVE'
2994
+ | 'SHORT_PICK'
2995
+ | 'STAGE';
2996
+
2997
+ export type MtwPickReviewKind =
2998
+ | 'APPROVE'
2999
+ | 'REJECT'
3000
+ | 'REVOKE';
3001
+
3002
+ export type MtwPickReviewPage = {
3003
+ __typename?: 'MtwPickReviewPage';
3004
+ evaluatedAt: Scalars['DateTime']['output'];
3005
+ hasMore: Scalars['Boolean']['output'];
3006
+ items: Array<MtwPickReview>;
3007
+ latestDecision?: Maybe<MtwPickReview>;
3008
+ limit: Scalars['Int']['output'];
3009
+ nextOffset?: Maybe<Scalars['Int']['output']>;
3010
+ offset: Scalars['Int']['output'];
3011
+ reviewState: MtwPickReviewState;
3012
+ total: Scalars['Int']['output'];
3013
+ };
3014
+
3015
+ export type MtwPickReviewState =
3016
+ | 'APPROVED_REVIEW_ONLY'
3017
+ | 'NOT_CURRENT'
3018
+ | 'REJECTED'
3019
+ | 'REVOKED'
3020
+ | 'UNREVIEWED';
3021
+
2088
3022
  /** Immutable reported planning intent. It reserves no stock and grants no execution authority. */
2089
3023
  export type MtwPickTask = {
2090
3024
  __typename?: 'MtwPickTask';
@@ -2583,6 +3517,69 @@ export type MtwRevenueMetrics = {
2583
3517
  totalRevenue: Scalars['Float']['output'];
2584
3518
  };
2585
3519
 
3520
+ /**
3521
+ * Deterministic delivery-risk forecast for a shipment, computed from its legs,
3522
+ * routes, tracking events, assigned vehicle and the carrier's recent history.
3523
+ */
3524
+ export type MtwRiskForecast = {
3525
+ __typename?: 'MtwRiskForecast';
3526
+ /** True when the promise is still in the future but predicted to be missed. */
3527
+ atRisk: Scalars['Boolean']['output'];
3528
+ /** True when the promised delivery has already passed without delivery. */
3529
+ breached: Scalars['Boolean']['output'];
3530
+ evaluatedAt: Scalars['DateTime']['output'];
3531
+ /** Forecasting method, e.g. DETERMINISTIC_V1. */
3532
+ method: Scalars['String']['output'];
3533
+ predictedDeliveryEarliest?: Maybe<Scalars['DateTime']['output']>;
3534
+ predictedDeliveryLatest?: Maybe<Scalars['DateTime']['output']>;
3535
+ predictedSlipMinutes: Scalars['Int']['output'];
3536
+ promisedDelivery?: Maybe<Scalars['DateTime']['output']>;
3537
+ recommendedAction: MtwRiskRecommendedAction;
3538
+ /** Name of the mutation that carries out the recommended action, if any. */
3539
+ recommendedMutation?: Maybe<Scalars['String']['output']>;
3540
+ riskLevel: MtwRiskLevel;
3541
+ riskScore: Scalars['Int']['output'];
3542
+ shipmentId: Scalars['ID']['output'];
3543
+ shipmentNumber: Scalars['String']['output'];
3544
+ signals: Array<MtwRiskSignal>;
3545
+ status: ShipmentStatus;
3546
+ };
3547
+
3548
+ export type MtwRiskLevel =
3549
+ | 'HIGH'
3550
+ | 'LOW'
3551
+ | 'MEDIUM'
3552
+ | 'NONE';
3553
+
3554
+ export type MtwRiskRecommendedAction =
3555
+ | 'MONITOR'
3556
+ | 'NONE'
3557
+ | 'REASSIGN_VEHICLE'
3558
+ | 'REPROMISE_DELIVERY'
3559
+ | 'REQUEST_TRACKING_UPDATE';
3560
+
3561
+ /**
3562
+ * One piece of evidence behind a risk forecast. `weight` is the number of risk
3563
+ * score points it contributed; `minutes` is the time behind plan (or without
3564
+ * tracking), `ratio` the carrier late-delivery rate.
3565
+ */
3566
+ export type MtwRiskSignal = {
3567
+ __typename?: 'MtwRiskSignal';
3568
+ code: MtwRiskSignalCode;
3569
+ minutes?: Maybe<Scalars['Int']['output']>;
3570
+ ratio?: Maybe<Scalars['Float']['output']>;
3571
+ weight: Scalars['Int']['output'];
3572
+ };
3573
+
3574
+ export type MtwRiskSignalCode =
3575
+ | 'CARRIER_LATE_HISTORY'
3576
+ | 'EXCESS_DWELL'
3577
+ | 'LEG_SLIP'
3578
+ | 'OPEN_LEG_OVERDUE'
3579
+ | 'ROUTE_DURATION_OVERRUN'
3580
+ | 'TRACKING_STALE'
3581
+ | 'VEHICLE_UNAVAILABLE';
3582
+
2586
3583
  export type MtwRoute = {
2587
3584
  __typename?: 'MtwRoute';
2588
3585
  actualDistance?: Maybe<Scalars['Float']['output']>;
@@ -2621,6 +3618,130 @@ export type MtwRouteStats = {
2621
3618
  totalDuration: Scalars['Float']['output'];
2622
3619
  };
2623
3620
 
3621
+ /** Whether the provider currently has capacity for an offering. */
3622
+ export type MtwServiceAvailability =
3623
+ | 'AVAILABLE'
3624
+ | 'LIMITED'
3625
+ | 'UNAVAILABLE';
3626
+
3627
+ /** A discoverable service a provider offers, with indicative price and availability. */
3628
+ export type MtwServiceOffering = {
3629
+ __typename?: 'MtwServiceOffering';
3630
+ availability: MtwServiceAvailability;
3631
+ category: MtwServiceOfferingCategory;
3632
+ createdAt: Scalars['DateTime']['output'];
3633
+ createdBy: Scalars['String']['output'];
3634
+ /** ISO 4217 currency code. */
3635
+ currency: Scalars['String']['output'];
3636
+ deletedAt?: Maybe<Scalars['DateTime']['output']>;
3637
+ description?: Maybe<Scalars['String']['output']>;
3638
+ id: Scalars['ID']['output'];
3639
+ isActive: Scalars['Boolean']['output'];
3640
+ name: Scalars['String']['output'];
3641
+ onBehalfOf?: Maybe<Scalars['String']['output']>;
3642
+ /** Indicative price in `currency`, per `pricingUnit`. Null when priced on request. */
3643
+ price?: Maybe<Scalars['Float']['output']>;
3644
+ /** What the price is charged per, for example "per km", "per pallet" or "per shipment". */
3645
+ pricingUnit?: Maybe<Scalars['String']['output']>;
3646
+ /** The provider offering this service. Resolves even if the provider was later deleted. */
3647
+ provider?: Maybe<MtwServiceProvider>;
3648
+ providerId: Scalars['ID']['output'];
3649
+ /** Typical door-to-door transit time in days. */
3650
+ transitDays?: Maybe<Scalars['Int']['output']>;
3651
+ updatedAt: Scalars['DateTime']['output'];
3652
+ updatedBy?: Maybe<Scalars['String']['output']>;
3653
+ workspaceId: Scalars['ID']['output'];
3654
+ };
3655
+
3656
+ /** What an offering provides. */
3657
+ export type MtwServiceOfferingCategory =
3658
+ | 'AIR_FREIGHT'
3659
+ | 'COLD_CHAIN'
3660
+ | 'CUSTOMS_CLEARANCE'
3661
+ | 'EXPRESS'
3662
+ | 'FULL_TRUCKLOAD'
3663
+ | 'LAST_MILE'
3664
+ | 'LESS_THAN_TRUCKLOAD'
3665
+ | 'OCEAN_FREIGHT'
3666
+ | 'OTHER'
3667
+ | 'RAIL_FREIGHT'
3668
+ | 'WAREHOUSING';
3669
+
3670
+ export type MtwServiceOfferingFilterInput = {
3671
+ availability?: InputMaybe<MtwServiceAvailability>;
3672
+ category?: InputMaybe<MtwServiceOfferingCategory>;
3673
+ isActive?: InputMaybe<Scalars['Boolean']['input']>;
3674
+ /** Only offerings at or below this price. */
3675
+ maxPrice?: InputMaybe<Scalars['Float']['input']>;
3676
+ providerId?: InputMaybe<Scalars['ID']['input']>;
3677
+ /** Case-insensitive match on name and description. */
3678
+ search?: InputMaybe<Scalars['String']['input']>;
3679
+ };
3680
+
3681
+ /**
3682
+ * A vetted service provider (carrier, 3PL, warehouse, specialist) in this workspace's marketplace
3683
+ * directory. A provider becomes a shipment's carrier through `assignShipmentServiceProvider`.
3684
+ */
3685
+ export type MtwServiceProvider = {
3686
+ __typename?: 'MtwServiceProvider';
3687
+ /** Free-form contact details (for example contactName, email, phone, website). */
3688
+ contactInfo?: Maybe<Scalars['JSON']['output']>;
3689
+ createdAt: Scalars['DateTime']['output'];
3690
+ createdBy: Scalars['String']['output'];
3691
+ deletedAt?: Maybe<Scalars['DateTime']['output']>;
3692
+ description?: Maybe<Scalars['String']['output']>;
3693
+ id: Scalars['ID']['output'];
3694
+ isActive: Scalars['Boolean']['output'];
3695
+ /** Set by the workspace once it has vetted the provider. */
3696
+ isVerified: Scalars['Boolean']['output'];
3697
+ name: Scalars['String']['output'];
3698
+ /** The provider's live (not deleted) offerings, newest first. */
3699
+ offerings: Array<MtwServiceOffering>;
3700
+ /** Number of live offerings. */
3701
+ offeringsCount: Scalars['Int']['output'];
3702
+ onBehalfOf?: Maybe<Scalars['String']['output']>;
3703
+ /** The workspace's own rating of this provider, 0 to 5. Null when not yet rated. */
3704
+ rating?: Maybe<Scalars['Float']['output']>;
3705
+ /** Regions, lanes or cities the provider covers. */
3706
+ serviceAreas: Array<Scalars['String']['output']>;
3707
+ /** Short service tags, for example "reefer" or "hazmat". */
3708
+ services: Array<Scalars['String']['output']>;
3709
+ type: MtwServiceProviderType;
3710
+ updatedAt: Scalars['DateTime']['output'];
3711
+ updatedBy?: Maybe<Scalars['String']['output']>;
3712
+ workspaceId: Scalars['ID']['output'];
3713
+ };
3714
+
3715
+
3716
+ /**
3717
+ * A vetted service provider (carrier, 3PL, warehouse, specialist) in this workspace's marketplace
3718
+ * directory. A provider becomes a shipment's carrier through `assignShipmentServiceProvider`.
3719
+ */
3720
+ export type MtwServiceProviderOfferingsArgs = {
3721
+ pagination?: InputMaybe<PaginationInput>;
3722
+ };
3723
+
3724
+ export type MtwServiceProviderFilterInput = {
3725
+ isActive?: InputMaybe<Scalars['Boolean']['input']>;
3726
+ isVerified?: InputMaybe<Scalars['Boolean']['input']>;
3727
+ /** Only providers with at least this rating. */
3728
+ minRating?: InputMaybe<Scalars['Float']['input']>;
3729
+ /** Case-insensitive match on name, description, services and service areas. */
3730
+ search?: InputMaybe<Scalars['String']['input']>;
3731
+ type?: InputMaybe<MtwServiceProviderType>;
3732
+ };
3733
+
3734
+ /** Kind of service provider in the workspace marketplace directory (BOFF-3988, MOV-UC-13). */
3735
+ export type MtwServiceProviderType =
3736
+ | 'CARRIER'
3737
+ | 'COURIER'
3738
+ | 'CUSTOMS_BROKER'
3739
+ | 'FREIGHT_FORWARDER'
3740
+ | 'LAST_MILE'
3741
+ | 'OTHER'
3742
+ | 'THIRD_PARTY_LOGISTICS'
3743
+ | 'WAREHOUSE';
3744
+
2624
3745
  export type MtwShipment = {
2625
3746
  __typename?: 'MtwShipment';
2626
3747
  actualDelivery?: Maybe<Scalars['DateTime']['output']>;
@@ -2633,17 +3754,30 @@ export type MtwShipment = {
2633
3754
  deletedAt?: Maybe<Scalars['DateTime']['output']>;
2634
3755
  deliveryJob?: Maybe<MtwDeliveryJob>;
2635
3756
  deliveryJobId?: Maybe<Scalars['ID']['output']>;
3757
+ designatedIntegrationId?: Maybe<Scalars['ID']['output']>;
2636
3758
  destination: Scalars['JSON']['output'];
2637
3759
  estimatedDelivery?: Maybe<Scalars['DateTime']['output']>;
2638
3760
  freightCurrency?: Maybe<Scalars['String']['output']>;
2639
3761
  id: Scalars['ID']['output'];
2640
3762
  isMultiModal: Scalars['Boolean']['output'];
2641
3763
  legs: Array<MtwShipmentLeg>;
3764
+ maxFutureSkewSeconds?: Maybe<Scalars['Int']['output']>;
3765
+ maxSourceAgeSeconds?: Maybe<Scalars['Int']['output']>;
2642
3766
  onBehalfOf: Scalars['String']['output'];
2643
3767
  origin: Scalars['JSON']['output'];
2644
3768
  primaryMode: TransportMode;
3769
+ /**
3770
+ * The marketplace provider this shipment's carrier points at, when `carrierId` references one.
3771
+ * Resolves even if the provider was later deleted, so historical shipments keep their carrier.
3772
+ */
3773
+ serviceProvider?: Maybe<MtwServiceProvider>;
2645
3774
  shipmentNumber: Scalars['String']['output'];
2646
3775
  status: ShipmentStatus;
3776
+ statusAuthority: ShipmentStatusAuthority;
3777
+ statusAuthorityEpoch: Scalars['Int']['output'];
3778
+ statusBasisEventId?: Maybe<Scalars['ID']['output']>;
3779
+ statusBasisSourceTime?: Maybe<Scalars['DateTime']['output']>;
3780
+ statusRevision: Scalars['Int']['output'];
2647
3781
  storeOrder?: Maybe<StoreOrder>;
2648
3782
  storeOrderId?: Maybe<Scalars['ID']['output']>;
2649
3783
  totalFreightCost?: Maybe<Scalars['Float']['output']>;
@@ -2705,6 +3839,27 @@ export type MtwShipmentLeg = {
2705
3839
  workspaceId: Scalars['ID']['output'];
2706
3840
  };
2707
3841
 
3842
+ export type MtwShipmentStatusDecision = {
3843
+ __typename?: 'MtwShipmentStatusDecision';
3844
+ authorityEpoch: Scalars['Int']['output'];
3845
+ configuredIntegrationId?: Maybe<Scalars['ID']['output']>;
3846
+ configuredMaxFutureSkewSeconds?: Maybe<Scalars['Int']['output']>;
3847
+ configuredMaxSourceAgeSeconds?: Maybe<Scalars['Int']['output']>;
3848
+ createdBy: Scalars['ID']['output'];
3849
+ heldReason?: Maybe<ShipmentStatusHeldReason>;
3850
+ id: Scalars['ID']['output'];
3851
+ observedRevision: Scalars['Int']['output'];
3852
+ origin: ShipmentStatusDecisionOrigin;
3853
+ outcome: ShipmentStatusDecisionOutcome;
3854
+ priorStatus: ShipmentStatus;
3855
+ proofId?: Maybe<Scalars['ID']['output']>;
3856
+ reason?: Maybe<Scalars['String']['output']>;
3857
+ recordedAt: Scalars['DateTime']['output'];
3858
+ resultRevision: Scalars['Int']['output'];
3859
+ resultStatus: ShipmentStatus;
3860
+ trackingEventId?: Maybe<Scalars['ID']['output']>;
3861
+ };
3862
+
2708
3863
  export type MtwShippingQuote = {
2709
3864
  __typename?: 'MtwShippingQuote';
2710
3865
  courierId: Scalars['String']['output'];
@@ -3051,14 +4206,53 @@ export type MtwStockObservationPage = {
3051
4206
  export type MtwStockObservationStatus =
3052
4207
  | 'UNRESOLVED';
3053
4208
 
4209
+ /**
4210
+ * A tracking alert. `alertType` is `DELAYED` once the promised delivery has
4211
+ * passed, or `AT_RISK` when the deterministic forecast predicts the promise will
4212
+ * be missed while it is still in the future. The risk fields are set only for
4213
+ * `AT_RISK` alerts.
4214
+ */
3054
4215
  export type MtwTrackingAlert = {
3055
4216
  __typename?: 'MtwTrackingAlert';
4217
+ /** True when an operator acknowledged this alert against the current promise. */
4218
+ acknowledged: Scalars['Boolean']['output'];
4219
+ acknowledgedAt?: Maybe<Scalars['DateTime']['output']>;
4220
+ acknowledgedBy?: Maybe<Scalars['ID']['output']>;
3056
4221
  alertType: Scalars['String']['output'];
4222
+ /** Stable alert id, `<shipmentId>:<alertType>`. */
4223
+ id: Scalars['ID']['output'];
3057
4224
  message: Scalars['String']['output'];
4225
+ predictedDelivery?: Maybe<Scalars['DateTime']['output']>;
4226
+ /** The shipment's promised delivery (estimatedDelivery) the alert was raised against. */
4227
+ promisedDelivery?: Maybe<Scalars['DateTime']['output']>;
4228
+ riskScore?: Maybe<Scalars['Int']['output']>;
3058
4229
  shipmentId: Scalars['ID']['output'];
3059
4230
  shipmentNumber: Scalars['String']['output'];
4231
+ signals?: Maybe<Array<MtwRiskSignalCode>>;
4232
+ };
4233
+
4234
+ /**
4235
+ * A persisted acknowledgement of a tracking alert. It holds while the shipment
4236
+ * keeps the promised delivery it was recorded against; re-promising the shipment
4237
+ * re-raises the alert.
4238
+ */
4239
+ export type MtwTrackingAlertAcknowledgement = {
4240
+ __typename?: 'MtwTrackingAlertAcknowledgement';
4241
+ acknowledged: Scalars['Boolean']['output'];
4242
+ acknowledgedAt: Scalars['DateTime']['output'];
4243
+ acknowledgedBy: Scalars['ID']['output'];
4244
+ alertType: MtwTrackingAlertType;
4245
+ /** Same id as the acknowledged `MtwTrackingAlert`. */
4246
+ id: Scalars['ID']['output'];
4247
+ promisedDelivery?: Maybe<Scalars['DateTime']['output']>;
4248
+ shipmentId: Scalars['ID']['output'];
3060
4249
  };
3061
4250
 
4251
+ /** Alert types `trackingAlerts` raises; used to acknowledge one. */
4252
+ export type MtwTrackingAlertType =
4253
+ | 'AT_RISK'
4254
+ | 'DELAYED';
4255
+
3062
4256
  export type MtwTrackingEvent = {
3063
4257
  __typename?: 'MtwTrackingEvent';
3064
4258
  context?: Maybe<OperationContext>;
@@ -3070,7 +4264,11 @@ export type MtwTrackingEvent = {
3070
4264
  id: Scalars['ID']['output'];
3071
4265
  location?: Maybe<Scalars['JSON']['output']>;
3072
4266
  onBehalfOf: Scalars['String']['output'];
4267
+ providerEventTime?: Maybe<Scalars['DateTime']['output']>;
4268
+ serverReceivedAt?: Maybe<Scalars['DateTime']['output']>;
3073
4269
  shipmentId: Scalars['ID']['output'];
4270
+ sourceIntegrationId?: Maybe<Scalars['ID']['output']>;
4271
+ sourceTimestampProvenance: TrackingSourceTimeProvenance;
3074
4272
  timestamp: Scalars['DateTime']['output'];
3075
4273
  updatedAt: Scalars['DateTime']['output'];
3076
4274
  updatedBy?: Maybe<Scalars['String']['output']>;
@@ -3161,6 +4359,30 @@ export type MtwTripUtilizationSummary = {
3161
4359
  unknownFactsSegmentCount: Scalars['Int']['output'];
3162
4360
  };
3163
4361
 
4362
+ export type MtwUpdateServiceOfferingInput = {
4363
+ availability?: InputMaybe<MtwServiceAvailability>;
4364
+ category?: InputMaybe<MtwServiceOfferingCategory>;
4365
+ currency?: InputMaybe<Scalars['String']['input']>;
4366
+ description?: InputMaybe<Scalars['String']['input']>;
4367
+ isActive?: InputMaybe<Scalars['Boolean']['input']>;
4368
+ name?: InputMaybe<Scalars['String']['input']>;
4369
+ price?: InputMaybe<Scalars['Float']['input']>;
4370
+ pricingUnit?: InputMaybe<Scalars['String']['input']>;
4371
+ transitDays?: InputMaybe<Scalars['Int']['input']>;
4372
+ };
4373
+
4374
+ export type MtwUpdateServiceProviderInput = {
4375
+ contactInfo?: InputMaybe<Scalars['JSON']['input']>;
4376
+ description?: InputMaybe<Scalars['String']['input']>;
4377
+ isActive?: InputMaybe<Scalars['Boolean']['input']>;
4378
+ isVerified?: InputMaybe<Scalars['Boolean']['input']>;
4379
+ name?: InputMaybe<Scalars['String']['input']>;
4380
+ rating?: InputMaybe<Scalars['Float']['input']>;
4381
+ serviceAreas?: InputMaybe<Array<Scalars['String']['input']>>;
4382
+ services?: InputMaybe<Array<Scalars['String']['input']>>;
4383
+ type?: InputMaybe<MtwServiceProviderType>;
4384
+ };
4385
+
3164
4386
  export type MtwUtilizationCapacityBasis =
3165
4387
  | 'MEASURED'
3166
4388
  | 'RATED';
@@ -3334,10 +4556,18 @@ export type Mutation = {
3334
4556
  __typename?: 'Mutation';
3335
4557
  _empty?: Maybe<Scalars['String']['output']>;
3336
4558
  acceptMtwReuseReservation: MtwReuseReservation;
4559
+ acknowledgeMtwTrackingAlert: MtwTrackingAlertAcknowledgement;
3337
4560
  addShipmentLeg: MtwShipmentLeg;
3338
4561
  addTrackingEvent: MtwTrackingEvent;
3339
4562
  adjustInventoryStock: MtwInventoryItem;
4563
+ approveMtwPickTask: MtwPickReview;
3340
4564
  assignDriverVehicle: MtwDriver;
4565
+ /**
4566
+ * Makes a marketplace provider the shipment's carrier (sets `carrierId`), or clears the carrier when
4567
+ * `providerId` is null. Inactive or unverified providers are allowed; the flags are surfaced so the
4568
+ * operator decides.
4569
+ */
4570
+ assignShipmentServiceProvider: MtwShipment;
3341
4571
  /**
3342
4572
  * Type B self-scoped capture: the calling actor must be the Driver assigned
3343
4573
  * to `input.deliveryJobId` (resolved via Driver.userId), enforced in the
@@ -3346,6 +4576,8 @@ export type Mutation = {
3346
4576
  */
3347
4577
  captureEpod: MtwProofOfDelivery;
3348
4578
  closeMtwContainerCycle: MtwContainerCycle;
4579
+ compareMtwFreightInvoice: MtwFreightInvoiceComparison;
4580
+ configureShipmentStatusSource: MtwShipment;
3349
4581
  createCargoItem: MtwCargoItem;
3350
4582
  createCustomer: MtwCustomer;
3351
4583
  createDeliveryJob: MtwDeliveryJob;
@@ -3355,6 +4587,8 @@ export type Mutation = {
3355
4587
  createInventoryTransaction: MtwInventoryTransaction;
3356
4588
  createMtwPickTaskIntent: MtwPickTask;
3357
4589
  createRoute: MtwRoute;
4590
+ createServiceOffering: MtwServiceOffering;
4591
+ createServiceProvider: MtwServiceProvider;
3358
4592
  createShipment: MtwShipment;
3359
4593
  createVehicle: MtwVehicle;
3360
4594
  createWarehouse: MtwWarehouse;
@@ -3366,11 +4600,19 @@ export type Mutation = {
3366
4600
  deleteIntegration: Scalars['Boolean']['output'];
3367
4601
  deleteInventoryItem: Scalars['Boolean']['output'];
3368
4602
  deleteRoute: Scalars['Boolean']['output'];
4603
+ deleteServiceOffering: Scalars['Boolean']['output'];
4604
+ /** Soft-deletes the provider and its offerings. Shipments that already reference it keep the reference. */
4605
+ deleteServiceProvider: Scalars['Boolean']['output'];
3369
4606
  deleteShipment: Scalars['Boolean']['output'];
3370
4607
  deleteVehicle: Scalars['Boolean']['output'];
3371
4608
  deleteWarehouse: Scalars['Boolean']['output'];
3372
4609
  exportMtwEntities: MtwExportJob;
3373
4610
  holdMtwContainer: MtwContainerHold;
4611
+ importMtwCargoItems: MtwImportResult;
4612
+ importMtwCustomers: MtwImportResult;
4613
+ importMtwDrivers: MtwImportResult;
4614
+ importMtwVehicles: MtwImportResult;
4615
+ importMtwWarehouses: MtwImportResult;
3374
4616
  openMtwContainerCycle: MtwContainerCycle;
3375
4617
  openMtwFreeTimeClock: MtwFreeTimeClock;
3376
4618
  optimizeRoute: MtwRoute;
@@ -3393,10 +4635,12 @@ export type Mutation = {
3393
4635
  recordMtwTripUtilizationReport: MtwTripUtilizationReport;
3394
4636
  recordVehicleService: MtwVehicle;
3395
4637
  registerMtwContainer: MtwContainer;
4638
+ rejectMtwPickTask: MtwPickReview;
3396
4639
  releaseMtwContainerHold: MtwContainerReleaseDecision;
3397
4640
  removeShipmentLeg: Scalars['Boolean']['output'];
3398
4641
  requestMtwFreeTimeExtension: MtwFreeTimeExtension;
3399
4642
  revokeMtwInspectorQualification: MtwInspectorQualification;
4643
+ revokeMtwPickTaskReview: MtwPickReview;
3400
4644
  revokeMtwProcedureDeviation: MtwProcedureDeviation;
3401
4645
  saveMtwConsolidationManifest: MtwConsolidationManifest;
3402
4646
  saveMtwConsolidationPlan: MtwConsolidationPlan;
@@ -3415,6 +4659,8 @@ export type Mutation = {
3415
4659
  updateIntegration: MtwIntegration;
3416
4660
  updateInventoryItem: MtwInventoryItem;
3417
4661
  updateRoute: MtwRoute;
4662
+ updateServiceOffering: MtwServiceOffering;
4663
+ updateServiceProvider: MtwServiceProvider;
3418
4664
  updateShipment: MtwShipment;
3419
4665
  updateVehicle: MtwVehicle;
3420
4666
  updateVehicleLocation: MtwVehicle;
@@ -3430,6 +4676,12 @@ export type MutationAcceptMtwReuseReservationArgs = {
3430
4676
  };
3431
4677
 
3432
4678
 
4679
+ export type MutationAcknowledgeMtwTrackingAlertArgs = {
4680
+ alertType: MtwTrackingAlertType;
4681
+ shipmentId: Scalars['ID']['input'];
4682
+ };
4683
+
4684
+
3433
4685
  export type MutationAddShipmentLegArgs = {
3434
4686
  input: CreateShipmentLegInput;
3435
4687
  shipmentId: Scalars['ID']['input'];
@@ -3446,12 +4698,23 @@ export type MutationAdjustInventoryStockArgs = {
3446
4698
  };
3447
4699
 
3448
4700
 
4701
+ export type MutationApproveMtwPickTaskArgs = {
4702
+ input: RecordMtwPickReviewInput;
4703
+ };
4704
+
4705
+
3449
4706
  export type MutationAssignDriverVehicleArgs = {
3450
4707
  id: Scalars['ID']['input'];
3451
4708
  vehicleId?: InputMaybe<Scalars['ID']['input']>;
3452
4709
  };
3453
4710
 
3454
4711
 
4712
+ export type MutationAssignShipmentServiceProviderArgs = {
4713
+ providerId?: InputMaybe<Scalars['ID']['input']>;
4714
+ shipmentId: Scalars['ID']['input'];
4715
+ };
4716
+
4717
+
3455
4718
  export type MutationCaptureEpodArgs = {
3456
4719
  input: CaptureEpodInput;
3457
4720
  };
@@ -3462,6 +4725,17 @@ export type MutationCloseMtwContainerCycleArgs = {
3462
4725
  };
3463
4726
 
3464
4727
 
4728
+ export type MutationCompareMtwFreightInvoiceArgs = {
4729
+ input: CompareMtwFreightInvoiceInput;
4730
+ };
4731
+
4732
+
4733
+ export type MutationConfigureShipmentStatusSourceArgs = {
4734
+ id: Scalars['ID']['input'];
4735
+ input: ConfigureShipmentStatusSourceInput;
4736
+ };
4737
+
4738
+
3465
4739
  export type MutationCreateCargoItemArgs = {
3466
4740
  input: CreateCargoItemInput;
3467
4741
  };
@@ -3507,6 +4781,16 @@ export type MutationCreateRouteArgs = {
3507
4781
  };
3508
4782
 
3509
4783
 
4784
+ export type MutationCreateServiceOfferingArgs = {
4785
+ input: MtwCreateServiceOfferingInput;
4786
+ };
4787
+
4788
+
4789
+ export type MutationCreateServiceProviderArgs = {
4790
+ input: MtwCreateServiceProviderInput;
4791
+ };
4792
+
4793
+
3510
4794
  export type MutationCreateShipmentArgs = {
3511
4795
  input: CreateShipmentInput;
3512
4796
  };
@@ -3562,6 +4846,16 @@ export type MutationDeleteRouteArgs = {
3562
4846
  };
3563
4847
 
3564
4848
 
4849
+ export type MutationDeleteServiceOfferingArgs = {
4850
+ id: Scalars['ID']['input'];
4851
+ };
4852
+
4853
+
4854
+ export type MutationDeleteServiceProviderArgs = {
4855
+ id: Scalars['ID']['input'];
4856
+ };
4857
+
4858
+
3565
4859
  export type MutationDeleteShipmentArgs = {
3566
4860
  id: Scalars['ID']['input'];
3567
4861
  };
@@ -3587,6 +4881,31 @@ export type MutationHoldMtwContainerArgs = {
3587
4881
  };
3588
4882
 
3589
4883
 
4884
+ export type MutationImportMtwCargoItemsArgs = {
4885
+ input: MtwImportInput;
4886
+ };
4887
+
4888
+
4889
+ export type MutationImportMtwCustomersArgs = {
4890
+ input: MtwImportInput;
4891
+ };
4892
+
4893
+
4894
+ export type MutationImportMtwDriversArgs = {
4895
+ input: MtwImportInput;
4896
+ };
4897
+
4898
+
4899
+ export type MutationImportMtwVehiclesArgs = {
4900
+ input: MtwImportInput;
4901
+ };
4902
+
4903
+
4904
+ export type MutationImportMtwWarehousesArgs = {
4905
+ input: MtwImportInput;
4906
+ };
4907
+
4908
+
3590
4909
  export type MutationOpenMtwContainerCycleArgs = {
3591
4910
  input: OpenMtwContainerCycleInput;
3592
4911
  };
@@ -3698,6 +5017,11 @@ export type MutationRegisterMtwContainerArgs = {
3698
5017
  };
3699
5018
 
3700
5019
 
5020
+ export type MutationRejectMtwPickTaskArgs = {
5021
+ input: RecordMtwPickReviewInput;
5022
+ };
5023
+
5024
+
3701
5025
  export type MutationReleaseMtwContainerHoldArgs = {
3702
5026
  input: ReleaseMtwContainerHoldInput;
3703
5027
  };
@@ -3718,6 +5042,11 @@ export type MutationRevokeMtwInspectorQualificationArgs = {
3718
5042
  };
3719
5043
 
3720
5044
 
5045
+ export type MutationRevokeMtwPickTaskReviewArgs = {
5046
+ input: RecordMtwPickReviewInput;
5047
+ };
5048
+
5049
+
3721
5050
  export type MutationRevokeMtwProcedureDeviationArgs = {
3722
5051
  input: RevokeMtwProcedureDeviationInput;
3723
5052
  };
@@ -3818,6 +5147,18 @@ export type MutationUpdateRouteArgs = {
3818
5147
  };
3819
5148
 
3820
5149
 
5150
+ export type MutationUpdateServiceOfferingArgs = {
5151
+ id: Scalars['ID']['input'];
5152
+ input: MtwUpdateServiceOfferingInput;
5153
+ };
5154
+
5155
+
5156
+ export type MutationUpdateServiceProviderArgs = {
5157
+ id: Scalars['ID']['input'];
5158
+ input: MtwUpdateServiceProviderInput;
5159
+ };
5160
+
5161
+
3821
5162
  export type MutationUpdateShipmentArgs = {
3822
5163
  id: Scalars['ID']['input'];
3823
5164
  input: UpdateShipmentInput;
@@ -3922,6 +5263,13 @@ export type PlanMultiModalShipmentInput = {
3922
5263
  storeOrderId?: InputMaybe<Scalars['ID']['input']>;
3923
5264
  };
3924
5265
 
5266
+ export type PreviewMtwFreightInvoiceInput = {
5267
+ estimateVersionId: Scalars['ID']['input'];
5268
+ evidence?: InputMaybe<Array<MtwContainerEvidenceInput>>;
5269
+ facts: MtwFreightInvoiceFactsInput;
5270
+ shipmentId: Scalars['ID']['input'];
5271
+ };
5272
+
3925
5273
  export type PublishMtwProcedureVersionInput = {
3926
5274
  effectiveAt: Scalars['DateTime']['input'];
3927
5275
  evidence: Array<MtwContainerEvidenceInput>;
@@ -3984,6 +5332,7 @@ export type Query = {
3984
5332
  inventoryStats: MtwInventoryStats;
3985
5333
  inventoryTransactions: Array<MtwInventoryTransaction>;
3986
5334
  inventoryTransactionsCount: Scalars['Int']['output'];
5335
+ marketplaceStats: MtwMarketplaceStats;
3987
5336
  mtwApplicableProcedures: MtwProcedureApplicability;
3988
5337
  mtwConsolidationManifest: MtwConsolidationManifest;
3989
5338
  mtwConsolidationManifestPage: MtwConsolidationManifestPage;
@@ -3991,6 +5340,7 @@ export type Query = {
3991
5340
  mtwConsolidationObservationPage: MtwConsolidationObservationPage;
3992
5341
  mtwConsolidationPlan: MtwConsolidationPlan;
3993
5342
  mtwConsolidationPlanPage: MtwConsolidationPlanPage;
5343
+ mtwConsumedFuelPreview: MtwConsumedFuelPreview;
3994
5344
  mtwContainer?: Maybe<MtwContainer>;
3995
5345
  mtwContainerCyclePage: MtwContainerCyclePage;
3996
5346
  mtwContainerCycles: Array<MtwContainerCycle>;
@@ -4014,7 +5364,21 @@ export type Query = {
4014
5364
  mtwFreeTimeExtensionPage: MtwFreeTimeExtensionPage;
4015
5365
  mtwFreightEstimatePage: MtwFreightEstimatePage;
4016
5366
  mtwFreightEstimateVersion: MtwFreightEstimateVersion;
5367
+ mtwFreightInvoiceComparison: MtwFreightInvoiceComparison;
5368
+ /** Null is not proof of no effect and never authorizes resubmission. Exact original actor/context only. */
5369
+ mtwFreightInvoiceComparisonByRequestKey?: Maybe<MtwFreightInvoiceComparison>;
5370
+ mtwFreightInvoiceComparisonPage: MtwFreightInvoiceComparisonPage;
5371
+ /**
5372
+ * Columns accepted by each import, for building templates and showing guidance.
5373
+ * This is static reference metadata with no workspace data in it, so it only
5374
+ * needs an authenticated caller; every import mutation enforces its own
5375
+ * entity create permission.
5376
+ */
5377
+ mtwImportSpec: Array<MtwImportEntitySpec>;
5378
+ mtwPalletGeometryPreview: MtwPalletGeometryPreview;
4017
5379
  mtwPickPreparation: MtwPickPreparation;
5380
+ mtwPickReview: MtwPickReview;
5381
+ mtwPickReviewPage: MtwPickReviewPage;
4018
5382
  mtwPickTask: MtwPickTask;
4019
5383
  mtwPickTaskPage: MtwPickTaskPage;
4020
5384
  mtwProcedureDeviationPage: MtwProcedureDeviationPage;
@@ -4027,11 +5391,13 @@ export type Query = {
4027
5391
  mtwReuseProposalPage: MtwReuseProposalPage;
4028
5392
  mtwReuseReservationPage: MtwReuseReservationPage;
4029
5393
  mtwReuseReservationTransitionPage: MtwReuseReservationTransitionPage;
5394
+ mtwShipmentRiskForecast: MtwRiskForecast;
4030
5395
  mtwStockBindingAssessment: MtwStockBindingAssessment;
4031
5396
  mtwStockBindingAssessmentPage: MtwStockBindingAssessmentPage;
4032
5397
  mtwStockObservation: MtwStockObservation;
4033
5398
  mtwStockObservationPage: MtwStockObservationPage;
4034
5399
  mtwTripUtilizationReportPage: MtwTripUtilizationReportPage;
5400
+ myEpodShipmentStatus?: Maybe<MtwOwnedEpodShipmentStatus>;
4035
5401
  /**
4036
5402
  * Type C self-list: delivery jobs assigned to the CALLING driver that are out
4037
5403
  * for delivery/in transit and still awaiting ePOD capture. Feeds the
@@ -4040,13 +5406,20 @@ export type Query = {
4040
5406
  myPendingEpodDeliveryJobs: Array<MtwDeliveryJob>;
4041
5407
  myPendingEpodDeliveryJobsCount: Scalars['Int']['output'];
4042
5408
  previewMtwConsolidationManifest: MtwConsolidationSnapshot;
5409
+ previewMtwFreightInvoice: MtwFreightInvoicePreview;
4043
5410
  previewMtwFreightTotal: MtwFreightPreview;
4044
5411
  route?: Maybe<MtwRoute>;
4045
5412
  routeStats: MtwRouteStats;
4046
5413
  routes: Array<MtwRoute>;
4047
5414
  routesCount: Scalars['Int']['output'];
5415
+ serviceOffering?: Maybe<MtwServiceOffering>;
5416
+ serviceOfferings: Array<MtwServiceOffering>;
5417
+ serviceProvider?: Maybe<MtwServiceProvider>;
5418
+ serviceProviders: Array<MtwServiceProvider>;
5419
+ serviceProvidersCount: Scalars['Int']['output'];
4048
5420
  shipment?: Maybe<MtwShipment>;
4049
5421
  shipmentLegs: Array<MtwShipmentLeg>;
5422
+ shipmentStatusDecisions: Array<MtwShipmentStatusDecision>;
4050
5423
  shipmentTracking: Array<MtwTrackingEvent>;
4051
5424
  shipments: Array<MtwShipment>;
4052
5425
  shipmentsCount: Scalars['Int']['output'];
@@ -4271,6 +5644,11 @@ export type QueryMtwConsolidationPlanPageArgs = {
4271
5644
  };
4272
5645
 
4273
5646
 
5647
+ export type QueryMtwConsumedFuelPreviewArgs = {
5648
+ input: MtwConsumedFuelPreviewInput;
5649
+ };
5650
+
5651
+
4274
5652
  export type QueryMtwContainerArgs = {
4275
5653
  id: Scalars['ID']['input'];
4276
5654
  };
@@ -4401,12 +5779,49 @@ export type QueryMtwFreightEstimateVersionArgs = {
4401
5779
  };
4402
5780
 
4403
5781
 
5782
+ export type QueryMtwFreightInvoiceComparisonArgs = {
5783
+ id: Scalars['ID']['input'];
5784
+ shipmentId: Scalars['ID']['input'];
5785
+ };
5786
+
5787
+
5788
+ export type QueryMtwFreightInvoiceComparisonByRequestKeyArgs = {
5789
+ requestKey: Scalars['String']['input'];
5790
+ shipmentId: Scalars['ID']['input'];
5791
+ };
5792
+
5793
+
5794
+ export type QueryMtwFreightInvoiceComparisonPageArgs = {
5795
+ invoiceIdentityId: Scalars['ID']['input'];
5796
+ pagination?: InputMaybe<MtwContainerPagination>;
5797
+ shipmentId: Scalars['ID']['input'];
5798
+ };
5799
+
5800
+
5801
+ export type QueryMtwPalletGeometryPreviewArgs = {
5802
+ input: MtwPalletGeometryPreviewInput;
5803
+ };
5804
+
5805
+
4404
5806
  export type QueryMtwPickPreparationArgs = {
4405
5807
  destinationInventoryItemId: Scalars['ID']['input'];
4406
5808
  sourceInventoryItemId: Scalars['ID']['input'];
4407
5809
  };
4408
5810
 
4409
5811
 
5812
+ export type QueryMtwPickReviewArgs = {
5813
+ id: Scalars['ID']['input'];
5814
+ taskId: Scalars['ID']['input'];
5815
+ };
5816
+
5817
+
5818
+ export type QueryMtwPickReviewPageArgs = {
5819
+ limit?: Scalars['Int']['input'];
5820
+ offset?: Scalars['Int']['input'];
5821
+ taskId: Scalars['ID']['input'];
5822
+ };
5823
+
5824
+
4410
5825
  export type QueryMtwPickTaskArgs = {
4411
5826
  id: Scalars['ID']['input'];
4412
5827
  };
@@ -4477,6 +5892,11 @@ export type QueryMtwReuseReservationTransitionPageArgs = {
4477
5892
  };
4478
5893
 
4479
5894
 
5895
+ export type QueryMtwShipmentRiskForecastArgs = {
5896
+ shipmentId: Scalars['ID']['input'];
5897
+ };
5898
+
5899
+
4480
5900
  export type QueryMtwStockBindingAssessmentArgs = {
4481
5901
  id: Scalars['ID']['input'];
4482
5902
  inventoryItemId: Scalars['ID']['input'];
@@ -4507,6 +5927,11 @@ export type QueryMtwTripUtilizationReportPageArgs = {
4507
5927
  };
4508
5928
 
4509
5929
 
5930
+ export type QueryMyEpodShipmentStatusArgs = {
5931
+ deliveryJobId: Scalars['ID']['input'];
5932
+ };
5933
+
5934
+
4510
5935
  export type QueryMyPendingEpodDeliveryJobsArgs = {
4511
5936
  pagination?: InputMaybe<PaginationInput>;
4512
5937
  };
@@ -4518,6 +5943,11 @@ export type QueryPreviewMtwConsolidationManifestArgs = {
4518
5943
  };
4519
5944
 
4520
5945
 
5946
+ export type QueryPreviewMtwFreightInvoiceArgs = {
5947
+ input: PreviewMtwFreightInvoiceInput;
5948
+ };
5949
+
5950
+
4521
5951
  export type QueryPreviewMtwFreightTotalArgs = {
4522
5952
  input: MtwFreightFactsInput;
4523
5953
  };
@@ -4539,6 +5969,33 @@ export type QueryRoutesCountArgs = {
4539
5969
  };
4540
5970
 
4541
5971
 
5972
+ export type QueryServiceOfferingArgs = {
5973
+ id: Scalars['ID']['input'];
5974
+ };
5975
+
5976
+
5977
+ export type QueryServiceOfferingsArgs = {
5978
+ filter?: InputMaybe<MtwServiceOfferingFilterInput>;
5979
+ pagination?: InputMaybe<PaginationInput>;
5980
+ };
5981
+
5982
+
5983
+ export type QueryServiceProviderArgs = {
5984
+ id: Scalars['ID']['input'];
5985
+ };
5986
+
5987
+
5988
+ export type QueryServiceProvidersArgs = {
5989
+ filter?: InputMaybe<MtwServiceProviderFilterInput>;
5990
+ pagination?: InputMaybe<PaginationInput>;
5991
+ };
5992
+
5993
+
5994
+ export type QueryServiceProvidersCountArgs = {
5995
+ filter?: InputMaybe<MtwServiceProviderFilterInput>;
5996
+ };
5997
+
5998
+
4542
5999
  export type QueryShipmentArgs = {
4543
6000
  id: Scalars['ID']['input'];
4544
6001
  };
@@ -4549,6 +6006,12 @@ export type QueryShipmentLegsArgs = {
4549
6006
  };
4550
6007
 
4551
6008
 
6009
+ export type QueryShipmentStatusDecisionsArgs = {
6010
+ pagination?: InputMaybe<PaginationInput>;
6011
+ shipmentId: Scalars['ID']['input'];
6012
+ };
6013
+
6014
+
4552
6015
  export type QueryShipmentTrackingArgs = {
4553
6016
  pagination?: InputMaybe<PaginationInput>;
4554
6017
  shipmentId: Scalars['ID']['input'];
@@ -4721,6 +6184,23 @@ export type RecordMtwFreeTimeExtensionDecisionInput = {
4721
6184
  sourceReference: Scalars['String']['input'];
4722
6185
  };
4723
6186
 
6187
+ export type RecordMtwPickReviewInput = {
6188
+ actions: Array<MtwPickReviewAction>;
6189
+ evidence: Array<MtwContainerEvidenceInput>;
6190
+ expectedPreviousDecisionId?: InputMaybe<Scalars['ID']['input']>;
6191
+ expectedVersion: Scalars['Int']['input'];
6192
+ handlingPolicy?: InputMaybe<MtwMoveReviewSourceInput>;
6193
+ idempotencyKey: Scalars['String']['input'];
6194
+ intentHash: Scalars['String']['input'];
6195
+ note: Scalars['String']['input'];
6196
+ quantityCeiling?: InputMaybe<Scalars['Int']['input']>;
6197
+ sop?: InputMaybe<MtwMoveReviewSourceInput>;
6198
+ subjectActorId: Scalars['ID']['input'];
6199
+ taskId: Scalars['ID']['input'];
6200
+ validFrom?: InputMaybe<Scalars['DateTime']['input']>;
6201
+ validUntil?: InputMaybe<Scalars['DateTime']['input']>;
6202
+ };
6203
+
4724
6204
  export type RecordMtwProcedureDeviationInput = {
4725
6205
  evidence: Array<MtwContainerEvidenceInput>;
4726
6206
  executionId: Scalars['ID']['input'];
@@ -4910,6 +6390,7 @@ export type SaveMtwConsolidationPlanInput = {
4910
6390
  };
4911
6391
 
4912
6392
  export type SaveMtwFreightEstimateInput = {
6393
+ commercialCapture?: InputMaybe<MtwFreightCommercialCaptureInput>;
4913
6394
  estimateReference: Scalars['String']['input'];
4914
6395
  evidence: Array<MtwContainerEvidenceInput>;
4915
6396
  expectedPreviousVersionId?: InputMaybe<Scalars['ID']['input']>;
@@ -4949,6 +6430,35 @@ export type ShipmentStatus =
4949
6430
  | 'PLANNED'
4950
6431
  | 'RETURNED';
4951
6432
 
6433
+ export type ShipmentStatusAuthority =
6434
+ | 'INTEGRATION_EVENT_TIME'
6435
+ | 'LEGACY_HOLD'
6436
+ | 'MANUAL_HOLD';
6437
+
6438
+ export type ShipmentStatusDecisionOrigin =
6439
+ | 'DIRECT_TRACKING'
6440
+ | 'EPOD'
6441
+ | 'INITIAL_CREATION'
6442
+ | 'INTEGRATION'
6443
+ | 'MANUAL'
6444
+ | 'SOURCE_CONFIGURATION';
6445
+
6446
+ export type ShipmentStatusDecisionOutcome =
6447
+ | 'APPLIED'
6448
+ | 'HELD';
6449
+
6450
+ export type ShipmentStatusHeldReason =
6451
+ | 'EQUAL_SOURCE_TIME'
6452
+ | 'LEGACY_AUTHORITY'
6453
+ | 'MANUAL_AUTHORITY'
6454
+ | 'NON_DESIGNATED_SOURCE'
6455
+ | 'OLDER_SOURCE_TIME'
6456
+ | 'SOURCE_TIME_IN_FUTURE'
6457
+ | 'SOURCE_TIME_TOO_OLD'
6458
+ | 'UNKNOWN_SOURCE_TIME'
6459
+ | 'UNMAPPED_EVENT_TYPE'
6460
+ | 'UNRECEIPTED_EVIDENCE';
6461
+
4952
6462
  export type ShippingQuoteInput = {
4953
6463
  /** Cash on delivery. */
4954
6464
  cod?: InputMaybe<Scalars['Boolean']['input']>;
@@ -5019,6 +6529,12 @@ export type TrackingEventType =
5019
6529
  | 'PICKED_UP'
5020
6530
  | 'RETURNED';
5021
6531
 
6532
+ export type TrackingSourceTimeProvenance =
6533
+ | 'LEGACY_UNKNOWN'
6534
+ | 'PROVIDER_TIME_UNVERIFIED'
6535
+ | 'PROVIDER_TIME_VALIDATED'
6536
+ | 'RECEIPT_TIME_FALLBACK';
6537
+
5022
6538
  export type TransferInventoryStockInput = {
5023
6539
  destinationInventoryItemId: Scalars['ID']['input'];
5024
6540
  quantity: Scalars['Int']['input'];
@@ -5155,8 +6671,10 @@ export type UpdateShipmentInput = {
5155
6671
  deliveryJobId?: InputMaybe<Scalars['ID']['input']>;
5156
6672
  destination?: InputMaybe<Scalars['JSON']['input']>;
5157
6673
  estimatedDelivery?: InputMaybe<Scalars['DateTime']['input']>;
6674
+ expectedStatusRevision?: InputMaybe<Scalars['Int']['input']>;
5158
6675
  origin?: InputMaybe<Scalars['JSON']['input']>;
5159
6676
  status?: InputMaybe<ShipmentStatus>;
6677
+ statusReason?: InputMaybe<Scalars['String']['input']>;
5160
6678
  storeOrderId?: InputMaybe<Scalars['ID']['input']>;
5161
6679
  trackingNumber?: InputMaybe<Scalars['String']['input']>;
5162
6680
  };