import {z} from 'zod' export type GetApiApiV4ShipmentsShipmentIdEventhistoryArgs = {shipmentId: string, includeRouteInfo?: boolean | undefined}; export type GetApiApiV4ShipmentsShipmentIdEventhistoryOptions = {baseUrl?: string | undefined, oAuth2?: string | undefined, fetch?: typeof fetch | undefined}; export const logisticsIdentifierTypeEnum = z.enum(["AIR_WAYBILL", "BILL_OF_LADING", "HOUSE_BILL_OF_LADING", "BOOKING_NUMBER", "CARRIER_IATA", "CARRIER_ICAO", "CARRIER_NAME", "CARRIER_SCAC", "FFW_SCAC", "NVOCC_SCAC", "NVOCC_NAME", "FFW_NAME", "FFW_MASTER_ID", "NVOCC_MASTER_ID", "CONTAINER_ID", "CUSTOMER_REFERENCE", "DELIVERY_NUMBER", "EXTERNAL", "FLIGHT_NUMBER", "ORDER", "PICKUP", "PRO", "PURCHASE_ORDER", "RAIL_CAR_ID", "RAIL_WAYBILL", "TRACKING_NUMBER", "TRAILER_ID", "UNKNOWN", "VESSEL_IMO", "VESSEL_NAME", "WAYBILL", "VESSEL_CALL_SIGN", "VESSEL_MMSI", "CARRIER_US_DOT_NUMBER", "CARRIER_MC_NUMBER", "SUBSCRIPTION_ID", "HOUSE_AIR_WAYBILL", "SALES_ORDER", "WAREHOUSE_MOVEMENT_ORDER", "ADVANCED_SHIPMENT_NOTICE", "DRIVER_MOBILE_PHONE_NUMBER", "VEHICLE_ID", "LICENSE_PLATE", "TRAILER_LICENSE_PLATE", "SENSITECH_DEVICE_ID", "EMERSON_DEVICE_ID", "TIVE_DEVICE_ID", "ZILLION_DEVICE_ID", "VOYAGE_NUMBER", "CARRIER_MASTER_ID", "CARRIER_NMC_ID", "CONTAINER_TYPE", "TRAIN_NUMBER", "WAGON_ID", "TRAIN_ID", "CAPACITY_PROVIDER_ACCOUNT_GROUP", "CAPACITY_PROVIDER_ACCOUNT_CODE", "SERIAL_NUMBER", "VEHICLE_IDENTIFICATION_NUMBER", "REFERENCE_NUMBER", "CONTAINER_PIN", "VESSEL_P44_ID", "EXPORT_CUSTOMS_BROKER", "IMPORT_CUSTOMS_BROKER", "POL_QUALITY_CONTROL_PROVIDER", "POD_QUALITY_CONTROL_PROVIDER", "AIRCRAFT_ICAO", "AIRLINE_NAME", "SEAL_NUMBER", "DRAYAGE_CARRIER_SCAC", "EXPORT_DRAYAGE_CARRIER_SCAC", "IMPORT_DRAYAGE_CARRIER_SCAC", "INBOUND_VOYAGE_NUMBER"]); export const logisticsIdentifier = z.object({type: logisticsIdentifierTypeEnum.optional(), value: z.string().min(1).optional()}); export const currency = z.enum(["USD", "CAD", "MXN", "EUR"]); export const monetaryValue = z.object({amount: z.number().optional(), currency: currency.optional()}); export const trackedShipmentCost = z.object({identifiers: z.array(logisticsIdentifier).optional(), type: z.enum(["UNKNOWN", "EXPORT_DEMURRAGE", "EXPORT_DETENTION", "IMPORT_DEMURRAGE", "IMPORT_DETENTION"]).optional(), totalCost: monetaryValue.optional(), tier: z.enum(["UNKNOWN", "FREE_PERIOD", "FIRST_PERIOD", "SECOND_PERIOD", "THEREAFTER_PERIOD"]).optional()}); export const shipmentContent = z.object({minTemperatureThreshold: z.number().optional(), maxTemperatureThreshold: z.number().optional(), productCategory: z.enum(["UNKNOWN", "FROZEN_FOOD", "REFRIGERATED_FOOD", "HOT_PREPARED_FOODS", "FRESH_MEAT_AND_POULTRY", "FROZEN_MEAT_AND_SEAFOOD", "FRESH_SEAFOOD", "DAIRY_PRODUCTS", "FROZEN_DAIRY", "FRESH_PRODUCE", "TROPICAL_FRUITS_AND_VEGETABLES", "ROOT_VEGETABLES", "WATERMELONS_AND_CUCUMBERS", "VACCINES_AND_BIOLOGICS", "ULTRA_COLD_STORAGE_VACCINES", "BLOOD_AND_PLASMA_PRODUCTS", "STERILE_INJECTABLE_MEDICATIONS", "DIAGNOSTIC_KITS_AND_MEDICAL_TESTING_EQUIPMENT", "LITHIUM_ION_BATTERIES", "SEMICONDUCTORS_AND_MICROCHIPS", "RUBBER_AND_POLYMER_BASED_AUTO_PARTS", "FRESH_CUT_FLOWERS", "TROPICAL_FLOWERS"]).optional(), shipperTemperatureSetPoint: z.number().optional(), truckloadZones: z.array(z.enum(["UNKNOWN", "ZONE1", "ZONE2", "ZONE3", "ZONE4"])).optional(), thresholdDurationMinutes: z.number().int().optional()}); export const trackedShipmentDateTime = z.object({dateTime: z.string().min(1).optional(), endDateTime: z.string().optional(), id: z.string().optional(), lastModifiedDateTime: z.string().optional(), source: z.enum(["UNKNOWN", "CARRIER", "BROKER", "FFW", "USER", "CONTRACT", "GEOFENCE", "FACILITY", "P44", "NVOCC"]).optional(), sourceIdentifiers: z.array(logisticsIdentifier).optional(), selected: z.boolean().optional(), sequence: z.number().int().optional(), type: z.enum(["UNKNOWN", "PLANNED", "ACTUAL", "ESTIMATE"]).min(1).optional()}); export const documentEventDetails = z.object({documentType: z.enum(["UNKNOWN", "BILL_OF_LADING", "HOUSE_BILL_OF_LADING", "AIRWAY_BILL", "COMMERCIAL_INVOICE", "CUSTOMS_DOCUMENTS", "PACKING_SLIP", "PACK_SLIP", "CERTIFICATE_OF_ORIGIN", "PROOF_OF_DELIVERY", "DELIVERY_RECEIPT", "ECMR", "WEIGHT_CERTIFICATE", "INSPECTION_CERTIFICATE", "LETTER_OF_AUTHORIZATION", "LUMPER_CERTIFICATE", "INVOICE", "HAZMAT_DOCUMENT", "SHIPPING_LABEL", "OTHER", "MISCELLANEOUS"]).optional(), fileFormat: z.enum(["UNKNOWN", "PDF", "TIF", "PNG", "GIF", "JPEG"]).optional(), scope: z.enum(["UNKNOWN", "SHIPPER", "CARRIER", "DRIVER"]).optional(), url: z.string().optional(), version: z.number().int().optional()}); export const mobileTrackingEventDetails = z.object({code: z.enum(["UNKNOWN", "DRIVER_ACCEPTED_TERMS_AND_CONDITIONS", "DRIVER_INITIATED_APP_SIGNUP", "DRIVER_LOADED_ASSIGNED_SHIPMENT_IN_APP", "DRIVER_DELETED_ACCOUNT", "DRIVER_CLAIMED_SHIPMENT", "SHIPMENT_ASSIGNED_INVALID_PHONE_NUMBER", "DRIVER_OPENED_INVITATION_LINK", "DRIVER_ENTERED_INVALID_VERIFICATION_CODE", "DRIVER_CONFIRMED_PHONE_NUMBER", "DRIVER_COMPLETED_SHIPMENT_MANUALLY", "DRIVER_REJECTED_SHIPMENT_MANUALLY", "DRIVER_COMPLETED_SETUP", "DRIVER_PROVIDED_INSUFFICIENT_LOCATION_PERMISSION", "SHIPMENT_ASSIGNED_VOIP_NUMBER"]).optional()}); export const oceanEventDetails = z.object({code: z.enum(["UNKNOWN", "GATE_OUT_EMPTY_CONTAINER_AT_TERMINAL", "BOOKING_CONFIRMED_BY_FFW", "BOOKING_CONFIRMED_BY_OCEAN_CARRIER", "BOOKING_CANCELLED", "ARRIVAL_OF_EMPTY_CONTAINER_AT_ORIGIN", "FULL_CONTAINER_READY_FOR_PICK_UP_AT_ORIGIN", "PICKED_UP_FULL_CONTAINER_AT_ORIGIN", "ARRIVAL_AT_EXPORT_WAREHOUSE", "PICKED_UP_AT_ORIGIN", "DEPARTURE_FROM_EXPORT_WAREHOUSE", "ARRIVAL_AT_ORIGIN_CFS", "LOAD_INTO_CONTAINER_AT_ORIGIN_CFS", "DEPARTURE_OF_CONTAINER_FROM_ORIGIN_CFS", "ARRIVAL_OF_FULL_CONTAINER_AT_INLAND_EXPORT_TERMINAL", "DISCHARGE_FULL_CONTAINER_AT_INLAND_EXPORT_TERMINAL", "LOAD_FULL_CONTAINER_AT_INLAND_EXPORT_TERMINAL", "DEPARTURE_FULL_CONTAINER_FROM_INLAND_EXPORT_TERMINAL", "GATE_IN_FULL_CONTAINER_AT_PORT_OF_LOADING", "EXPORT_CUSTOMS_DOCS_FILING", "EXPORT_CUSTOMS_HOLD", "EXPORT_CUSTOMS_CLEARANCE", "LOAD_FULL_CONTAINER_ONTO_VESSEL_AT_PORT_OF_LOADING", "VESSEL_DEPARTURE_FROM_PORT_OF_LOADING", "SHORT_SHIPPED_AT_PORT_OF_LOADING", "VESSEL_ARRIVAL_AT_TRANSSHIPMENT_PORT", "DISCHARGE_FULL_CONTAINER_FROM_VESSEL_AT_TRANSSHIPMENT_PORT", "LOAD_FULL_CONTAINER_ONTO_VESSEL_AT_TRANSSHIPMENT_PORT", "VESSEL_DEPARTURE_FROM_TRANSSHIPMENT_PORT", "SHORT_SHIPPED_AT_TRANSSHIPMENT_PORT", "ARRIVAL_AT_TRANSSHIPMENT_CFS", "DISCHARGE_AT_TRANSSHIPMENT_CFS", "LOAD_INTO_CONTAINER_AT_TRANSSHIPMENT_CFS", "DEPARTURE_FROM_TRANSSHIPMENT_CFS", "VESSEL_ARRIVAL_AT_PORT_OF_DISCHARGE", "DISCHARGE_FULL_CONTAINER_FROM_VESSEL_AT_PORT_OF_DISCHARGE", "CARRIER_HOLD_AT_PORT_OF_DISCHARGE", "CARRIER_RELEASE_AT_PORT_OF_DISCHARGE", "SHORT_SHIPPED_AT_PORT_OF_DISCHARGE", "IMPORT_CUSTOMS_DOCS_FILING", "IMPORT_CUSTOMS_HOLD", "IMPORT_CUSTOMS_CLEARANCE", "GATE_OUT_FULL_CONTAINER_AT_PORT_OF_DISCHARGE", "ARRIVAL_FULL_CONTAINER_AT_INLAND_IMPORT_TERMINAL", "DEPARTURE_OF_FULL_CONTAINER_FROM_INLAND_IMPORT_TERMINAL", "DISCHARGE_FULL_CONTAINER_AT_INLAND_IMPORT_TERMINAL", "LOAD_FULL_CONTAINER_AT_INLAND_IMPORT_TERMINAL", "ARRIVAL_OF_FULL_CONTAINER_AT_INLAND_IMPORT_TERMINAL", "ARRIVAL_AT_DESTINATION_CFS", "STRIP_AT_DESTINATION_CFS", "DEPARTURE_FROM_DESTINATION_CFS", "ARRIVAL_AT_IMPORT_WAREHOUSE", "DEPARTURE_FROM_IMPORT_WAREHOUSE", "PROOF_OF_DELIVERY", "GATE_OUT_EMPTY_CONTAINER_AT_DESTINATION", "ARRIVAL_OF_FULL_CONTAINER_AT_CONSIGNEE", "HANDOVER_TO_THIRD_PARTY", "READY_FOR_PICKUP_EMPTY_CONTAINER_AT_CONSIGNEE_LOCATION", "PICKED_UP_EMPTY_CONTAINER_FROM_CONSIGNEE", "GATE_IN_EMPTY_CONTAINER_AT_TERMINAL", "CONTAINER_ROLLED_AT_PORT_OF_LOADING", "CONTAINER_ROLLED_AT_TRANSSHIPMENT_PORT", "CONSIGNEE_NOTIFY", "EXPORT_HOLD", "EXPORT_AVAILABLE", "IMPORT_HOLD", "IMPORT_AVAILABLE", "PENDING_UPDATE", "SCHEDULED", "READY_FOR_PICK_UP_AT_ORIGIN", "ARRIVAL_AT_ORIGIN_CFS_OR_WAREHOUSE", "LOAD_AT_ORIGIN_CFS_OR_WAREHOUSE", "DEPARTURE_FROM_ORIGIN_CFS_OR_WAREHOUSE", "ARRIVAL_AT_INLAND_EXPORT_TERMINAL", "DISCHARGE_AT_INLAND_EXPORT_TERMINAL", "LOAD_AT_INLAND_EXPORT_TERMINAL", "DEPARTURE_FROM_INLAND_EXPORT_TERMINAL", "GATE_IN_FULL_AT_PORT_OF_LOADING", "LOAD_ONTO_VESSEL_AT_PORT_OF_LOADING", "DISCHARGE_FROM_VESSEL_AT_TRANSSHIPMENT_PORT", "LOAD_ONTO_VESSEL_AT_TRANSSHIPMENT_PORT", "DISCHARGE_FROM_VESSEL_AT_PORT_OF_DISCHARGE", "GATE_OUT_FULL_AT_PORT_OF_DISCHARGE", "ARRIVAL_AT_INLAND_IMPORT_TERMINAL", "DISCHARGE_AT_INLAND_IMPORT_TERMINAL", "LOAD_AT_INLAND_IMPORT_TERMINAL", "DEPARTURE_FROM_INLAND_IMPORT_TERMINAL", "ARRIVAL_AT_DESTINATION_CFS_OR_WAREHOUSE", "STRIP_AT_DESTINATION_CFS_OR_WAREHOUSE", "DEPARTURE_FROM_DESTINATION_CFS_OR_WAREHOUSE"]).optional()}); export const qualityControlEventDetails = z.object({code: z.enum(["UNKNOWN", "SURVEY", "HELD", "DAMAGE_HELD", "PLANT_HELD", "QUALITY_CAMPAIGN_HELD", "CUSTOMS_HELD", "POWER_WASH_HELD", "OTHER_HELD", "QUALITY_CONTROL_HELD", "IMPORT_HELD", "RELEASE", "AVAILABLE", "EXPORT_SURVEY"]).optional()}); export const rolloverDetails = z.object({}); export const trackedShipmentEventDetails = z.object({documentDetails: documentEventDetails.optional(), mobileTracking: mobileTrackingEventDetails.optional(), ocean: oceanEventDetails.optional(), qualityControl: qualityControlEventDetails.optional(), rolloverDetails: rolloverDetails.optional()}); export const trackedShipmentEvent = z.object({dateTime: z.string().optional(), description: z.string().optional(), dateTimes: z.array(trackedShipmentDateTime).optional(), details: trackedShipmentEventDetails.optional(), estimateDateTime: z.string().optional(), estimateLastCalculatedDateTime: z.string().optional(), id: z.string().optional(), plannedDateTime: z.string().optional(), plannedEndDateTime: z.string().optional(), receivedDateTime: z.string().optional(), routeSegmentId: z.string().optional(), stopId: z.string().optional(), type: z.enum(["UNKNOWN", "TRACKING_INITIATE", "TRACKING_START", "ARRIVAL_AT_STOP", "DEPARTURE_FROM_STOP", "LOAD_ONTO_VEHICLE", "UNLOAD_FROM_VEHICLE", "TRACKING_END_DUE_TO_TIMEOUT", "TRACKING_END_BY_USER", "TRACKING_COMPLETE", "GATE_IN", "GATE_OUT", "FLIGHT_BOOKING", "MANIFEST", "RECEIVE_FROM_SHIPPER", "CONSIGNEE_NOTIFY", "DELIVERY", "WARNING", "EXCEPTION", "TRACKING_STOP", "EXCEPTION_LATE_DEPARTURE", "EXCEPTION_MISSED_CONNECTION", "GATE_IN_FULL", "GATE_IN_EMPTY", "GATE_OUT_EMPTY", "GATE_OUT_FULL", "LOAD", "DISCHARGE", "EXCEPTION_DELAYED", "EXCEPTION_DELIVERY_MISSED", "EXCEPTION_HELD", "EXCEPTION_PICKUP_MISSED", "AVAILABLE", "ENTERED_GEOFENCE", "EXITED_GEOFENCE", "INFO", "OUT_FOR_DELIVERY", "PICKED_UP", "RETURN_TO_SENDER", "TRACKING_FAILED", "UNAUTHORIZED", "PICKUP_MISSED", "SURVEY", "HELD", "CLEAN_TRUCK_FEE_CLEARANCE", "CLEAN_TRUCK_FEE_HOLD", "OTHER_HOLD", "OTHER_HOLD_CLEARANCE", "TERMINAL_CLEARANCE", "TERMINAL_HOLD", "TRAFFIC_MITIGATION_FEE_CLEARANCE", "TRAFFIC_MITIGATION_FEE_HOLD", "RELEASE", "DELAYED", "DELIVERY_MISSED", "ENTERED_INNER_GEOFENCE", "EXITED_INNER_GEOFENCE", "ENTERED_OUTER_GEOFENCE", "EXITED_OUTER_GEOFENCE", "ENTERED_FINAL_GEOFENCE", "EXITED_FINAL_GEOFENCE", "IDLE", "DRIVER_DENY_TRACKING", "UNKNOWN_EQUIPMENT_IDENTIFIER", "MISSING_EQUIPMENT_IDENTIFIER", "DISPATCH", "CUSTOMS_HOLD", "CUSTOMS_CLEARANCE", "CUSTOMS_DOCS_FILING", "CUSTOMS_TRANSIT_DOCS_ISSUED", "CUSTOMS_TRANSIT_DOCS_CLOSED", "CARRIER_HOLD", "RECEIVE_FROM_CARRIER", "ISSUE_FREIGHT_BILL", "FREIGHT_ON_HAND", "READY_FOR_CARRIAGE", "LAST_FREE_DAY", "MISSING_CARRIER", "STUFF", "STRIP", "SEAL_INSPECTION", "SEAL_REMOVAL", "SEAL_RESEAL", "HANDOVER", "DOCUMENT_ADD", "DOCUMENT_REMOVE", "REMOVE_FROM_BOOKING", "COST_UPDATE", "SHARING_STOPPED", "ROLLED_OVER", "BAD_ORDER", "BAD_ORDER_RELEASE"]).optional()}); export const flightInformation = z.object({flightNumber: z.string().optional()}); export const airFlightDetails = z.object({flightDetails: z.array(flightInformation).optional()}); export const previousOceanBooking = z.object({bookingNumber: z.string().optional(), lastSeenDateTime: z.string().optional()}); export const oceanBookingUpdateDetails = z.object({numberOfPreviousOceanBookings: z.number().int().optional(), previousOceanBookings: z.array(previousOceanBooking).optional()}); export const productCategoryBreachDetails = z.object({breachStartDateTime: z.string().optional(), productCategory: z.enum(["UNKNOWN", "FROZEN_FOOD", "REFRIGERATED_FOOD", "HOT_PREPARED_FOODS", "FRESH_MEAT_AND_POULTRY", "FROZEN_MEAT_AND_SEAFOOD", "FRESH_SEAFOOD", "DAIRY_PRODUCTS", "FROZEN_DAIRY", "FRESH_PRODUCE", "TROPICAL_FRUITS_AND_VEGETABLES", "ROOT_VEGETABLES", "WATERMELONS_AND_CUCUMBERS", "VACCINES_AND_BIOLOGICS", "ULTRA_COLD_STORAGE_VACCINES", "BLOOD_AND_PLASMA_PRODUCTS", "STERILE_INJECTABLE_MEDICATIONS", "DIAGNOSTIC_KITS_AND_MEDICAL_TESTING_EQUIPMENT", "LITHIUM_ION_BATTERIES", "SEMICONDUCTORS_AND_MICROCHIPS", "RUBBER_AND_POLYMER_BASED_AUTO_PARTS", "FRESH_CUT_FLOWERS", "TROPICAL_FLOWERS"]).optional()}); export const temperatureSensorDetails = z.object({productCategoryBreachDetails: z.array(productCategoryBreachDetails).optional()}); export const exceptionDetail = z.object({airFlightDetails: airFlightDetails.optional(), oceanBookingUpdateDetails: oceanBookingUpdateDetails.optional(), temperatureSensorDetails: temperatureSensorDetails.optional()}); export const shipmentExceptionInstance = z.object({description: z.string().optional(), detail: exceptionDetail.optional(), endDateTime: z.string().optional(), id: z.string().optional(), startDateTime: z.string().optional()}); export const shipmentException = z.object({category: z.enum(["UNKNOWN", "NO_TRACKING_METHOD", "RUNNING_LATE", "HOLD", "ROUTING", "ASSET", "DELIVERY", "TRACKING", "VISIBILITY_FREIGHT_FORWARDER", "VISIBILITY_AIRLINE", "VISIBILITY_GEOPOSITION_AGGREGATOR", "SENSOR", "TRANSPORTATION", "WEATHER", "NATURAL_DISASTER", "REGULATION", "STRIKE", "PUBLIC_SAFETY", "ACCIDENT", "CYBER", "INFRASTRUCTURE", "HAZARD", "GEOPOLITICAL", "WAR", "HEALTH", "HOLIDAYS", "PRODUCTION", "VISIBILITY_NO_TRACKING_METHODS", "VISIBILITY_API_PUSH", "VISIBILITY_API_PULL", "VISIBILITY_TELEMATICS", "VISIBILITY_APP", "DWELL", "TRANSIT_TIME"]).optional(), definitionId: z.string().optional(), namespace: z.enum(["UNKNOWN", "TRUCKLOAD_TRACKING", "P44_DETECTED", "CARRIER_REPORTED", "ROOT_CAUSE_ANALYSIS", "DISRUPTION"]).optional(), reason: z.enum(["UNKNOWN", "MISSING_EQUIPMENT_IDENTIFIER", "TRACKING_METHOD_IDENTIFIER_MISMATCH", "UNKNOWN_VEHICLE_IDENTIFIER", "INVALID_EQUIPMENT_IDENTIFIER", "INVALID_PHONE_NUMBER", "ALL_SHORT", "REFUSED_DELIVERY", "BAD_ORDER", "CONTAINER_ROLLED", "SPLIT_FLIGHT", "SHIPMENT_HELD", "LATE_TO_CARRIER_PLANNED", "BOOKING_UPDATED", "MISSED_CONNECTION", "UNKNOWN_EQUIPMENT_IDENTIFIER", "FFW_NOT_SUPPORTED", "FFW_AUTHENTICATION_ERROR", "FFW_API_UNAVAILABLE", "UNSUPPORTED_AIRLINE", "INVALID_FLIGHT_NUMBER", "UNABLE_TO_SELECT_FLIGHT", "NO_POSITION_DATA_FOR_FLIGHT", "MULTIHOP_FLIGHT_UNKNOWN_LOCATION", "NO_DATA_FOR_AWB", "INVALID_HAWB", "FFW_NOT_ENABLED_FOR_TENANT", "TEMPERATURE_BREACHED", "TRANSPORTATION_RISK", "WEATHER_ALERT", "NATURAL_DISASTER_ALERT", "REGULATORY_RISK", "WORKER_STRIKE", "PUBLIC_SAFETY_RISK", "ACCIDENT_ALERT", "CYBER_RISK", "INFRA_RISK", "FIRE_AND_HAZARD", "POLITICAL_RISK", "WAR_RISK", "HEALTH_AND_DISEASE", "HOLIDAY_DELAYS", "SHUTDOWN_RISK", "CARRIER_DOES_NOT_HAVE_CONFIGURED_TRACKING_METHODS", "MISSING_PHONE_NUMBER", "SHIPMENT_INITIATION_FAILED", "CARRIER_NOT_ONBOARDED_FOR_TENANT", "DRIVER_ONBOARDING_INCOMPLETE", "UNSUCCESSFUL_SHIPMENT_FETCH_USING_APP", "LOCATION_ACCESS_INSUFFICIENT", "ONBOARDING_VERIFICATION_SMS_FAILED", "SHIPMENT_INVITE_SMS_FAILED", "VOIP_PHONE_NUMBER_ASSIGNED", "DRIVER_DENIED_TERMS_AND_CONDITIONS", "DRIVER_UNSUBSCRIBED_SMS_NOTIFICATION", "DRIVER_DENIED_LOCATION_ACCESS", "APP_CONFIRM_CODE_INVALID", "DWELL_AT_STOP", "VEHICLE_NEVER_ENTERED_GEOFENCE", "VEHICLE_NOT_FOUND", "NO_STATUS_UPDATES", "NO_TRACKING_DATA_FROM_VEHICLE", "IDENTIFIER_TYPE_MISMATCH_FOR_ONBOARDED_CARRIER", "NO_HISTORICAL_CARRIER_TRACKING", "NO_CARRIER_TRACKING_USING_API_FOR_TENANT", "NO_CARRIER_TRACKING_USING_API", "IMPORT_DWELL_TIME", "IMPORT_DEMURRAGE_RISK", "IMPORT_DETENTION_RISK"]).optional(), status: z.string().optional(), transportationMode: z.enum(["AIR", "OCEAN", "RAIL", "UNKNOWN", "TRUCKLOAD", "PARCEL", "LTL", "BARGE"]).optional(), timeline: z.array(shipmentExceptionInstance).optional()}); export const customAttribute = z.object({name: z.string().min(1).max(255).optional(), value: z.string().min(1).max(255).optional(), values: z.array(z.string().min(1).max(255)).optional()}); export const accessGroup = z.object({id: z.string().optional()}); export const exclusion = z.object({}); export const plannedVesselRouteSegment = z.object({fromStopId: z.string().optional(), toStopId: z.string().optional(), transportationMode: z.enum(["AIR", "OCEAN", "RAIL", "UNKNOWN", "TRUCKLOAD", "PARCEL", "LTL", "BARGE"]).optional(), vesselName: z.string().optional(), vesselImo: z.string().optional(), vesselMmsi: z.string().optional()}); export const vesselTrackingConfig = z.object({enabled: z.boolean().optional(), plannedVesselRouteSegments: z.array(plannedVesselRouteSegment).optional()}); export const shipmentPlan = z.object({expectedTransportationModes: z.array(z.enum(["AIR", "OCEAN", "RAIL", "UNKNOWN", "TRUCKLOAD", "PARCEL", "LTL", "BARGE"])).optional(), exclusions: z.array(exclusion).optional(), vesselTracking: vesselTrackingConfig.optional()}); export const weightUnit = z.enum(["LB", "KG"]); export const weightMeasurement = z.object({unit: weightUnit.optional(), value: z.number().optional()}); export const weightPerDistanceUnit = z.literal("KG_PER_KM"); export const weightPerDistanceMeasurement = z.object({unit: weightPerDistanceUnit.optional(), value: z.number().optional()}); export const distanceUnit = z.enum(["FT", "M", "MI", "KM"]); export const distanceMeasurement = z.object({unit: distanceUnit.optional(), value: z.number().optional()}); export const vehicleType = z.object({enumValue: z.enum(["UNKNOWN", "AIR_FREIGHTER", "AIR_BELLY_FREIGHT", "AIR_UNKNOWN", "INLAND_WATERWAY_MOTOR_VESSEL_LT_650T", "INLAND_WATERWAY_MOTOR_VESSEL_650T_TO_1000T", "INLAND_WATERWAY_MOTOR_VESSEL_1000T_TO_2000T", "INLAND_WATERWAY_MOTOR_VESSEL_2000T_TO_3000T", "INLAND_WATERWAY_COUPLED_CONVOY", "INLAND_WATERWAY_PUSHED_CONVOY_2_TO_3_BARGES", "INLAND_WATERWAY_PUSHED_CONVOY_4_TO_5_BARGES", "INLAND_WATERWAY_PUSHED_CONVOY_6_BARGES", "INLAND_WATERWAY_TANKER_VESSELS", "INLAND_WATERWAY_CONTAINER_VESSELS_110M", "INLAND_WATERWAY_CONTAINER_VESSELS_135M", "INLAND_WATERWAY_CONTAINER_VESSELS_COUPLED_CONVOY", "RAIL_AVERAGE_MIXED", "RAIL_CONTAINER", "RAIL_CARS", "RAIL_CHEMICALS", "RAIL_COAL_STEEL", "RAIL_BUILDING_MATERIALS", "RAIL_MANUFACTURED_PRODUCTS", "RAIL_CEREALS", "RAIL_TRUCK_AND_TRAILER", "RAIL_TRAILER_ONLY", "ROAD_NA_VAN", "ROAD_NA_GENERAL", "ROAD_NA_AUTO_CARRIER", "ROAD_NA_DRAY", "ROAD_NA_EXPEDITED", "ROAD_NA_FLATBED", "ROAD_NA_HEAVY_BULK", "ROAD_NA_LTL_DRY_VAN", "ROAD_NA_MIXED", "ROAD_NA_MOVING", "ROAD_NA_PACKAGE", "ROAD_NA_REFRIGERATED", "ROAD_NA_SPECIALIZED", "ROAD_NA_TANKER", "ROAD_NA_TL_DRY_VAN", "ROAD_GLOBAL_VAN_LT_3500KG", "ROAD_GLOBAL_RIGID_TRUCK_3500KG_TO_7500KG", "ROAD_GLOBAL_RIGID_TRUCK_7500KG_TO_12T_GVW", "ROAD_GLOBAL_RIGID_TRUCK_12T_20T_GVW", "ROAD_GLOBAL_RIGID_TRUCK_20T_TO_26T_GVW", "ROAD_GLOBAL_RIGID_TRUCK_26T_TO_32T_GVW", "ROAD_GLOBAL_ARTIC_TRUCK_UP_TO_34T_GVW", "ROAD_GLOBAL_ARTIC_TRUCK_UP_TO_40T_GVW", "ROAD_GLOBAL_ARTIC_TRUCK_UP_TO_40T_GVW_SI_ENGINE", "ROAD_GLOBAL_ARTIC_TRUCK_UP_TO_40T_GVW_HPDI", "ROAD_GLOBAL_ARTIC_TRUCK_40T_GVW_LIGHTWEIGHT_TRAILER", "ROAD_GLOBAL_ARTIC_TRUCK_UP_TO_44T_GVW", "ROAD_GLOBAL_ARTIC_TRUCK_UP_TO_60T_GVW", "ROAD_GLOBAL_ARTIC_TRUCK_UP_TO_72T_GVW", "OCEAN_BULK_CARRIER_0_TO_9999_DWT", "OCEAN_BULK_CARRIER_10000_TO_34999_DWT", "OCEAN_BULK_CARRIER_35000_TO_59999_DWT", "OCEAN_BULK_CARRIER_60000_TO_99999_DWT", "OCEAN_BULK_CARRIER_100000_TO_199999_DWT", "OCEAN_BULK_CARRIER_200000_AND_UP_DWT", "OCEAN_CHEMICAL_TANKER_0_TO_4999_DWT", "OCEAN_CHEMICAL_TANKER_5000_TO_9999_DWT", "OCEAN_CHEMICAL_TANKER_10000_TO_19999_DWT", "OCEAN_CHEMICAL_TANKER_20000_TO_39999_DWT", "OCEAN_CHEMICAL_TANKER_40000_AND_UP_DWT", "OCEAN_GENERAL_CARGO_0_TO_4999_DWT", "OCEAN_GENERAL_CARGO_5000_TO_9999_DWT", "OCEAN_GENERAL_CARGO_10000_TO_19999_DWT", "OCEAN_GENERAL_CARGO_20000_AND_UP_DWT", "OCEAN_LNG_TANKER_0_TO_49999_CBM", "OCEAN_LNG_TANKER_50000_TO_99999_CBM", "OCEAN_LNG_TANKER_100000_TO_199999_CBM", "OCEAN_LNG_TANKER_200000_AND_UP_CBM", "OCEAN_OIL_TANKER_0_TO_4999_DWT", "OCEAN_OIL_TANKER_5000_TO_9999_DWT", "OCEAN_OIL_TANKER_10000_TO_19999_DWT", "OCEAN_OIL_TANKER_20000_TO_59999_DWT", "OCEAN_OIL_TANKER_60000_TO_79999_DWT", "OCEAN_OIL_TANKER_80000_TO_119999_DWT", "OCEAN_OIL_TANKER_120000_TO_199999_DWT", "OCEAN_OIL_TANKER_200000_AND_UP_DWT", "OCEAN_OTHER_LIQUIDS_TANKER_0_TO_999_DWT", "OCEAN_OTHER_LIQUIDS_TANKER_1000_AND_UP_DWT", "OCEAN_FERRY_ROPAX_0_TO_1999_GT", "OCEAN_FERRY_ROPAX_2000_TO_4999_GT", "OCEAN_FERRY_ROPAX_5000_TO_9999_GT", "OCEAN_FERRY_ROPAX_10000_TO_19999_GT", "OCEAN_FERRY_ROPAX_20000_AND_UP_GT", "OCEAN_REFRIGERATED_BULK_0_TO_1999_DWT", "OCEAN_REFRIGERATED_BULK_2000_TO_5999_DWT", "OCEAN_REFRIGERATED_BULK_6000_TO_9999_DWT", "OCEAN_REFRIGERATED_BULK_10000_AND_UP_DWT", "OCEAN_CONTAINER_AVERAGE"]).optional()}); export const vehicleInfo = z.object({type: vehicleType.optional(), weight: weightMeasurement.optional()}); export const emissionData = z.object({cargoWeight: weightMeasurement.optional(), co2EmissionIntensity: weightPerDistanceMeasurement.optional(), distance: distanceMeasurement.optional(), loadFactor: z.number().optional(), totalCO2Emissions: weightMeasurement.optional(), vehicleInfo: vehicleInfo.optional()}); export const trackedShipmentRouteSegment = z.object({emissions: emissionData.optional(), fromStopId: z.string().optional(), id: z.string().optional(), identifiers: z.array(logisticsIdentifier).optional(), toStopId: z.string().optional(), transportationMode: z.enum(["AIR", "OCEAN", "RAIL", "UNKNOWN", "TRUCKLOAD", "PARCEL", "LTL", "BARGE"]).optional()}); export const countryCode = z.enum(["US", "CA", "MX", "AG", "BB", "BS", "BZ", "CR", "CU", "DM", "DO", "GD", "GT", "HN", "HT", "JM", "KN", "LC", "NI", "PA", "SV", "TT", "VC", "AI", "AW", "BL", "BM", "BQ", "CW", "GL", "GP", "KY", "MF", "MQ", "MS", "PM", "PR", "SX", "TC", "UM", "VG", "VI", "AT", "BE", "BG", "CY", "CZ", "DK", "DE", "EE", "ES", "FI", "FR", "GB", "GR", "HR", "HU", "IE", "IT", "LT", "LU", "LV", "MT", "NL", "PL", "PT", "RO", "SE", "SK", "SI", "CH", "IS", "LI", "NO", "AL", "ME", "MK", "RS", "TR", "AD", "AX", "BA", "BV", "BY", "FO", "GG", "GI", "IM", "IO", "JE", "MC", "MD", "SJ", "SM", "TF", "UA", "VA", "AE", "AF", "AM", "AZ", "BD", "BH", "BN", "BT", "CN", "GE", "HK", "ID", "IL", "IN", "IQ", "IR", "JO", "JP", "KG", "KH", "KP", "KR", "KW", "KZ", "LA", "LB", "LK", "MM", "MN", "MO", "MV", "MY", "NP", "OM", "PH", "PK", "PS", "QA", "RU", "SA", "SG", "SY", "TH", "TJ", "TL", "TM", "TW", "UZ", "VN", "YE", "AO", "BF", "BI", "BJ", "BW", "CD", "CF", "CG", "CI", "CM", "CV", "DJ", "DZ", "EG", "EH", "ER", "ET", "GA", "GH", "GM", "GN", "GQ", "GW", "HM", "KE", "KM", "LR", "LS", "LY", "MA", "MG", "ML", "MR", "MU", "MW", "MZ", "NA", "NE", "NG", "RE", "RW", "SC", "SD", "SH", "SL", "SN", "SO", "SS", "ST", "SZ", "TD", "TG", "TN", "TZ", "UG", "YT", "ZA", "ZM", "ZW", "AR", "BO", "BR", "CL", "CO", "EC", "FK", "GF", "GS", "GY", "PE", "PY", "SR", "UY", "VE", "AS", "AU", "CC", "CK", "CX", "FJ", "FM", "GU", "KI", "MH", "MP", "NC", "NF", "NR", "NU", "NZ", "PF", "PG", "PN", "PW", "SB", "TK", "TO", "TV", "VU", "WF", "WS", "AQ", "EL", "UK", "XK", "XS", "XI"]); export const address = z.object({addressLines: z.array(z.string()).optional(), city: z.string().optional(), country: countryCode.optional(), postalCode: z.string().optional(), state: z.string().optional()}); export const geoCoordinates = z.object({latitude: z.number().optional(), longitude: z.number().optional()}); export const trackedShipmentStopLocationIdentifier = z.object({type: z.enum(["AIRPORT_IATA", "AIRPORT_ICAO", "EXTERNAL", "LOCODE", "NAME", "PORT_UN_LOCODE", "FACILITY_ID", "RAIL_SPLC", "RAIL_UIC", "RAIL_EU_PLC", "UNKNOWN"]).optional(), value: z.string().min(1).optional()}); export const trackedShipmentStopLocation = z.object({address: address.optional(), coordinates: geoCoordinates.optional(), id: z.string().optional(), identifiers: z.array(trackedShipmentStopLocationIdentifier).optional(), masterLocationId: z.string().optional(), name: z.string().min(1).optional(), timeZone: z.string().optional()}); export const trackedShipmentStop = z.object({id: z.string().optional(), location: trackedShipmentStopLocation.optional(), type: z.enum(["UNKNOWN", "ORIGIN", "DESTINATION", "TRANSFER", "OTHER", "PORT_OF_LOADING", "TRANSSHIPMENT_PORT", "PORT_OF_DISCHARGE", "PICKUP", "DELIVERY", "RETURN", "WAREHOUSE", "HUB", "AIRPORT", "ORIGIN_CFS", "DESTINATION_CFS"]).optional()}); export const shipmentRouteInfo = z.object({routeSegments: z.array(trackedShipmentRouteSegment).optional(), stops: z.array(trackedShipmentStop).optional()}); export const simpleTrackedShipment = z.object({attributes: z.array(customAttribute).optional(), accessGroups: z.array(accessGroup).optional(), createdDateTime: z.string().optional(), id: z.string().optional(), identifiers: z.array(logisticsIdentifier).optional(), lastModifiedDateTime: z.string().optional(), plan: shipmentPlan.optional(), shipmentShareLink: z.string().optional()}); export const trackedShipment = z.object({attributes: z.array(customAttribute).optional(), accessGroups: z.array(accessGroup).optional(), createdDateTime: z.string().optional(), id: z.string().optional(), identifiers: z.array(logisticsIdentifier).optional(), lastModifiedDateTime: z.string().optional(), plan: shipmentPlan.optional(), routeInfo: shipmentRouteInfo.optional(), relatedShipments: z.array(simpleTrackedShipment).optional(), shipmentShareLink: z.string().optional()}); export const trackedShipmentState = z.object({endDateTime: z.string().optional(), routeSegmentId: z.string().optional(), startDateTime: z.string().optional(), stopId: z.string().optional(), type: z.enum(["UNKNOWN", "AT_STOP", "IN_TRANSIT_AIRCRAFT", "IN_TRANSIT_VESSEL", "IN_TRANSIT_RAIL", "CUSTOMS_HOLD", "IN_TRANSIT", "COMPLETED", "SCHEDULED", "IDLE", "ACTION_REQUIRED"]).optional()}); export const dataOriginator = z.object({tenantUuid: z.string().optional(), tenantName: z.string().optional(), tenantId: z.number().int().optional(), tenantRegion: z.enum(["NA12", "EU12"]).optional()}); export const dataRecipient = z.object({tenantUuid: z.string().optional(), tenantName: z.string().optional(), tenantId: z.number().int().optional(), tenantRegion: z.enum(["NA12", "EU12"]).optional()}); export const sharingContext = z.object({dataOriginators: z.array(dataOriginator).optional(), recipients: z.array(dataRecipient).optional()}); export const sensorReadingTypeWithUnit = z.object({sensorReadingType: z.enum(["UNKNOWN", "ZONE1_DOOR", "ZONE2_DOOR", "ZONE3_DOOR", "ZONE4_DOOR", "ZONE1_RETURN_AIR_TEMPERATURE", "ZONE2_RETURN_AIR_TEMPERATURE", "ZONE3_RETURN_AIR_TEMPERATURE", "ZONE4_RETURN_AIR_TEMPERATURE", "ZONE1_AMBIENT_AIR_TEMPERATURE", "ZONE2_AMBIENT_AIR_TEMPERATURE", "ZONE3_AMBIENT_AIR_TEMPERATURE", "ZONE4_AMBIENT_AIR_TEMPERATURE", "ZONE1_SETPOINT_TEMPERATURE", "ZONE2_SETPOINT_TEMPERATURE", "ZONE3_SETPOINT_TEMPERATURE", "ZONE4_SETPOINT_TEMPERATURE"]).optional(), unit: z.enum(["UNKNOWN", "CELSIUS", "NO_UNIT"]).optional()}); export const sensorContext = z.object({availableSensorTypesWithUnits: z.array(sensorReadingTypeWithUnit).optional()}); export const shipmentEventHistory = z.object({costs: z.array(trackedShipmentCost).optional(), contents: z.array(shipmentContent).optional(), events: z.array(trackedShipmentEvent).optional(), exceptions: z.array(shipmentException).optional(), shipment: trackedShipment.optional(), states: z.array(trackedShipmentState).optional(), sharingContext: sharingContext.optional(), sensorContext: sensorContext.optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Fetch the event history for a shipment. * * GET /api/v4/shipments/{shipmentId}/eventhistory */ export const getApiApiV4ShipmentsShipmentIdEventhistory = async (args: GetApiApiV4ShipmentsShipmentIdEventhistoryArgs, options?: GetApiApiV4ShipmentsShipmentIdEventhistoryOptions) => { const {baseUrl = "https://na12.api.project44.com", fetch: fetchFn = fetch, oAuth2} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.includeRouteInfo != null) query.append("includeRouteInfo", String(args.includeRouteInfo)) if (oAuth2 !== undefined) headers.set('authorization', `Bearer ${oAuth2}`) const url = `${baseUrl.replace(/\/+$/, '')}/api/v4/shipments/${encodeURIComponent(String(args.shipmentId))}/eventhistory${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(shipmentEventHistory, await res.json()) };