Last updated

Ocean Shipment Schema Overview

Ocean Tracking uses Project44's Unified Shipment Tracking Schema to provide visibility into ocean shipments. This schema includes various identifiers and data points that help in tracking and managing ocean shipments effectively.


TrackedShipmentHistory($)

The basic structure of the unified shipment schema can be understood by looking at the Get Full Tracking History API response (shown below). Further sections of this page delve into more detailed explanation of the schema, particularly focusing on ocean shipment tracking.

shipmentobject(TrackedShipment)

Shipment tracking model used to initiate a shipment.

statesArray of objects(TrackedShipmentState)

All states that the shipment was or currently is in. Order is not guaranteed.

eventsArray of objects(TrackedShipmentEvent)

All events that occurred for this shipment. Will always be in ascending order by the date the event occurred.

costsArray of objects(TrackedShipmentCost)

All costs incurred for this shipment and the assets contained within.

sharingContextobject(SharingContext)

This model is populated when the data is shared across tenants, it conditionally describes which tenant(s) are involved with the shared data using tenant name and tenant UUID.

exceptionsArray of objects(ShipmentException)

${ShipmentEventHistory.apiModel.exceptions.value}

contentsArray of objects(ShipmentContent)

Contents of the shipment, including product categories and set points for temperature sensitive shipments.

sensorContextobject(SensorContext)

${ShipmentEventHistory.apiModel.sensorContext.value}

positionsArray of objects(TrackedShipmentPosition)

Locations where this shipment has been recorded. Data may be down-sampled. Will always be in ascending order by the date that the shipment was at that position.

This schema is used to represent the full tracking history of a shipment, including all events and position history. Whereas Get Shipment Event History API and Get Shipment Position History API response schemas only represent the events and positions for a specific shipment respectively. Both the schemas have the same structure, but the TrackedShipmentHistory schema is a superset of the other two.


$.shipment.identifiers

Identifiers are typically used to identify a shipment. They can be used while creating a shipment to initiate tracking. P44 ocean tracking system also adds identifiers to the shipment as they are received from various data sources.

typestring(LogisticsIdentifierTypeEnum)required

The standard which defines who assigns the identifier and what it identifies. Required field.

Enum"AIR_WAYBILL""BILL_OF_LADING""HOUSE_BILL_OF_LADING""BOOKING_NUMBER""CARRIER_IATA""CARRIER_ICAO""CARRIER_NAME""CARRIER_SCAC""FFW_SCAC""NVOCC_SCAC"
valuestringnon-emptyrequired

The value of this identifier. Required field.

$.shipment.identifiers[].type

.typeDescription
BILL_OF_LADINGA unique document issued by the carrier, serving as a contract of carriage and receipt of goods
BOOKING_NUMBERThe reference number assigned by the carrier or forwarder to the shipment reservation for tracking and management purposes
HOUSE_BILL_OF_LADINGA bill of lading issued by a freight forwarder or NVOCC, not the ocean carrier, documenting the agreement between shipper and forwarder
TRACKING_NUMBERA code assigned by the carrier or forwarder to track the movement and status of the shipment through its journey
CONTAINER_IDThe unique alphanumeric identifier assigned to an individual shipping container, registered and standardized globally
CONTAINER_TYPEThe specific code or designation indicating the type and size of the container (e.g., 20DC, 40HC)
CARRIER_SCACThe Standard Carrier Alpha Code—a four-letter code uniquely identifying an ocean carrier, used in tracking
CARRIER_NAMEThe standard name of the ocean carrier used in tracking, as defined in P44 system
CARRIER_MASTER_IDThe unique identifier assinged to the carrier by Project44
FFW_SCACThe SCAC (Standard Carrier Alpha Code) for a freight forwarder, identifying the forwarder in transportation and logistics documents
FFW_NAMEThe name of the freight forwarder used in tracking, as defined in P44 system
FFW_MASTER_IDThe unique identifier assigned to the freight forwarder by Project44
NVOCC_SCACThe SCAC for a Non-Vessel Operating Common Carrier (NVOCC), used to identify the NVOCC in transactions and documents
NVOCC_NAMEThe name of the NVOCC used in tracking, as defined in P44 system
NVOCC_MASTER_IDThe unique identifier assigned to the NVOCC by Project44
POL_QUALITY_CONTROL_PROVIDERThe SCAC of the quality control provider for the Port of Loading, in context of RoRo shipments
POD_QUALITY_CONTROL_PROVIDERThe SCAC of the quality control provider for the Port of Discharge, in context of RoRo shipments
EXPORT_CUSTOMS_BROKERThe SCAC of the customs broker handling export clearance for the shipment, if applicable
IMPORT_CUSTOMS_BROKERThe SCAC of the customs broker handling import clearance for the shipment, if applicable

$.shipment.routeInfo.stops

Stops represent the various locations where the ocean shipment or a container passes through during its journey. There may be 0 stops while we are still acquiring data for this shipment.

idstring(uuid)

The id of this stop. Will always be populated on response.

typestring

The type of stop.

Enum"UNKNOWN""ORIGIN""DESTINATION""TRANSFER""OTHER""PORT_OF_LOADING""TRANSSHIPMENT_PORT""PORT_OF_DISCHARGE""PICKUP""DELIVERY"
locationobject(TrackedShipmentStopLocation)

The location of the stop.

$.shipment.routeInfo.stops[].type

.typeDescription
ORIGINThe initial point where the shipment begins, typically the shipper
DESTINATIONThe final point where the shipment is intended to be delivered
PORT_OF_LOADINGThe port where the cargo / container is loaded onto the vessel
PORT_OF_DISCHARGEThe port where the cargo / container is unloaded from the vessel
TRANSSHIPMENT_PORTA port where the cargo is transferred from one vessel to another
PICKUPThe location where empty container is picked up by the shipper or forwarder
RETURNThe location where the empty container is returned after unloading
ORIGIN_CFSThe Container Freight Station at the origin where cargo is consolidated into a container
DESTINATION_CFSThe Container Freight Station at the destination where cargo is deconsolidated into a container
TRANSFERA stop where the cargo is transferred between different modes of transport, typically a Rail Ramp, Container Yard or Barge Dock

$.shipment.routeInfo.stops[].location.identifiers[].type

.location.identifiers[].typeDescription
PORT_UN_LOCODEThe UN Location Code (UN/LOCODE) for the port, a five-character code used to identify locations globally.
LOCODEThe UN Location Code (UN/LOCODE) for any location, a five-character code used to identify locations globally.
FACILITY_IDA unique identifier for the facility, such as a terminal or container depot or CFS, where the stop occurs.

$.shipment.routeInfo.routeSegments

The route segments represent the various transportation modes and segments of the ocean shipment's journey. They contain information about how the shipment moved from each stop to the next.

idstring(uuid)

The id of this route segment. Will always be populated on response. Should not be populated by the client - the ID is automatically generated based on from- and to- stops.

fromStopIdstring(uuid)required

The starting stop of this route segment. Will always be populated on response.

toStopIdstring(uuid)required

The ending stop of this route segment. Will always be populated on response.

transportationModestring

The mode of transportation on which the shipment was traveling. Will always be populated on response.

Enum"AIR""OCEAN""RAIL""UNKNOWN""TRUCKLOAD""PARCEL""LTL""BARGE"
identifiersArray of objects(LogisticsIdentifier)

Identifiers that are not part of the overall shipment but are relevant to this route segment.

emissionsobject(EmissionData)

Describes emission data.

$.shipment.routeInfo.routeSegments[].transportationMode

.transportationModeDescription
OCEANIndicates that shipment is being transported by sea. This is the primary mode for ocean shipments.
RAILIndicates that shipment is being transported by rail, often used for intermodal transport.
TRUCKIndicates that shipment is being transported by truck, typically for last-mile delivery or inland transport.
BARGEIndicates that shipment is being transported by barge, often used for inland waterways.
UNKNOWNIndicates that the transportation mode is not specified or unknown. This can happen if the data is incomplete or not provided by the data provider.

$.shipment.routeInfo.routeSegments[].identifiers[].type

.identifiers[].typeDescription
VESSEL_NAMEThe name of the vessel used for the ocean transport,
VESSEL_IMOThe International Maritime Organization (IMO) number, also known as Lloyd’s code, a unique identifier for the vessel.
VESSEL_MMSIThe Maritime Mobile Service Identity (MMSI) number, a unique nine-digit number used to identify the vessel in maritime communication.
VESSEL_CALL_SIGNThe call sign of the vessel, used for radio communication and identification.
VOYAGE_NUMBERThe voyage number assigned to the specific journey of the vessel, used for tracking and scheduling purposes.
CARRIER_SCACThe SCAC of the Ocean Carrier responsible for this segment of the shipment.
VESSEL_P44_IDThe unique identifier for the vessel in Project44's system, used for internal tracking and management.
CONTAINER_IDContainer ID associated with this segment, applicable if its an LCL shipment.

$.shipment.plan

expectedTransportationModesArray of strings

${ShipmentPlan.apiModel.expectedTransportationModes.value}

Items Enum"AIR""OCEAN""RAIL""UNKNOWN""TRUCKLOAD""PARCEL""LTL""BARGE"
exclusionsArray of objects(Exclusion)

${ShipmentPlan.apiModel.exclusions.value}

vesselTrackingobject(VesselTrackingConfig)

Configuration for vessel tracking on a shipment.


$.events

Events represent significant occurrences in the lifecycle of an ocean shipment. They are used to track the progress of the shipment and provide visibility into its status and milestones.

dateTimestring(date-time)

The time when this event occurred. If relevant, the offset will be relative to where the event occurred, otherwise will be in UTC. Will only be populated for events that have already happened.

receivedDateTimestring(date-time)

The time when project44 received or calculated this event. Will only be populated for events that have already happened.

idstring(uuid)

The unique identifier of the event. Might not be provided for shipments created in 2024 and earlier.

typestring

The type of event that occurred. Will always be populated.

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"
descriptionstring

A human readable description of this event. Optional response field.

stopIdstring(uuid)

If relevant, this will be populated with the id of the stop to which this event relates.

routeSegmentIdstring(uuid)

If relevant, this will be populated with the id of a route segment on which this event occurred. This can be used to associate the event with a specific vehicle.

estimateDateTimestring(date-time)

The estimated time that this event is likely to occur. Only populated if event has not occurred yet.

estimateLastCalculatedDateTimestring(date-time)

The time when project44 last calculated the estimate for this event. Only populated if event has not occurred yet.

plannedDateTimestring(date-time)

The planned time when this event is scheduled to occur. If plannedEndDateTime is set, this is the start of the planned window of time for the event.

plannedEndDateTimestring(date-time)

The end of the planned window of time for the event.

dateTimesArray of objects(TrackedShipmentDateTime)

A list of times retrieved from different sources.

detailsobject(TrackedShipmentEventDetails)

Optional extended details of an event.

$.events[].details.ocean.code

stopType = $.shipment.routeInfo.stops[id=.stopId].type

The stopType column in the following tables indicates the type of stop where the event occurred. It can be determined by matching the stopId in the event with the id of the list of stops in the shipment routeInfo.


Routing Milestones

.details.ocean.code.typestopTypeDescription
GATE_OUT_EMPTY_CONTAINER_AT_TERMINALGATE_OUT_EMPTYPICKUPEmpty container leaves terminal for positioning to an exporter, forwarder, or shipper.
ARRIVAL_OF_EMPTY_CONTAINER_AT_ORIGINARRIVAL_AT_STOP, GATE_IN_EMPTYORIGINEmpty container arrives at shipper’s or origin facility, ready for loading.
READY_FOR_PICK_UP_AT_ORIGINSTUFFORIGINLoaded cargo is ready and awaiting pickup from shipper’s premises or warehouse.
PICKED_UP_AT_ORIGINPICKED_UP, GATE_OUT_FULLORIGINLoaded cargo is picked up from shipper/origin and is en route to the next stop.
ARRIVAL_AT_INLAND_EXPORT_TERMINALARRIVAL_AT_STOP, GATE_IN_FULLTRANSFERLoaded cargo arrives at an inland terminal to be transferred onto another mode.
DISCHARGE_AT_INLAND_EXPORT_TERMINALDISCHARGETRANSFERCargo is unloaded from a vehicle or train at the inland export terminal.
LOAD_AT_INLAND_EXPORT_TERMINALLOADTRANSFERCargo is loaded onto a vehicle or train for onward movement, typically to the port.
DEPARTURE_FROM_INLAND_EXPORT_TERMINALDEPARTURE_FROM_STOP, GATE_OUT_FULLTRANSFERLoaded cargo departs the inland export terminal on its way to the port or next stop.
GATE_IN_FULL_AT_PORT_OF_LOADINGGATE_IN_FULL, ARRIVAL_AT_STOPPORT_OF_LOADINGLoaded cargo arrives and registers entry at the port of loading terminal.
SHORT_SHIPPED_AT_PORT_OF_LOADINGPORT_OF_LOADINGCargo was scheduled for a vessel but did not get loaded, usually due to space constraints.
CONTAINER_ROLLED_AT_PORT_OF_LOADINGROLLED_OVERPORT_OF_LOADINGCargo was rolled to a later vessel at the port of loading, missing its scheduled voyage.
LOAD_ONTO_VESSEL_AT_PORT_OF_LOADINGLOADPORT_OF_LOADINGCargo is physically loaded onto the booked vessel at the port of loading.
VESSEL_DEPARTURE_FROM_PORT_OF_LOADINGDEPARTURE_FROM_STOPPORT_OF_LOADINGVessel with loaded cargo departs from the port of loading, starting the ocean voyage.
VESSEL_ARRIVAL_AT_TRANSSHIPMENT_PORTARRIVAL_AT_STOPTRANSSHIPMENT_PORTVessel arrives at a transshipment port where cargo may be shifted to another vessel.
DISCHARGE_FROM_VESSEL_AT_TRANSSHIPMENT_PORTDISCHARGETRANSSHIPMENT_PORTCargo is unloaded from the vessel at the transshipment port for onward transit.
SHORT_SHIPPED_AT_TRANSSHIPMENT_PORTTRANSSHIPMENT_PORTCargo did not get loaded onto the next vessel at the transshipment port.
CONTAINER_ROLLED_AT_TRANSSHIPMENT_PORTROLLED_OVERTRANSSHIPMENT_PORTCargo’s movement was postponed to a subsequent vessel at the transshipment port.
LOAD_ONTO_VESSEL_AT_TRANSSHIPMENT_PORTLOADTRANSSHIPMENT_PORTCargo is loaded onto the outbound vessel at the transshipment port.
VESSEL_DEPARTURE_FROM_TRANSSHIPMENT_PORTDEPARTURE_FROM_STOPTRANSSHIPMENT_PORTVessel departs from the transshipment port.
VESSEL_ARRIVAL_AT_PORT_OF_DISCHARGEARRIVAL_AT_STOPPORT_OF_DISCHARGEVessel arrives at the port of discharge where the cargo will be unloaded.
DISCHARGE_FROM_VESSEL_AT_PORT_OF_DISCHARGEDISCHARGEPORT_OF_DISCHARGECargo is unloaded from the vessel at the port of discharge.
SHORT_SHIPPED_AT_PORT_OF_DISCHARGEPORT_OF_DISCHARGECargo was not unloaded as originally planned at the port of discharge.
GATE_OUT_FULL_AT_PORT_OF_DISCHARGEGATE_OUT_FULL, DEPARTURE_FROM_STOPPORT_OF_DISCHARGEFull cargo leaves the port terminal for delivery to a consignee or inland point.
HANDOVER_TO_THIRD_PARTYHANDOVERPORT_OF_DISCHARGECarrier transfers custody of the cargo to a third-party agent.
ARRIVAL_AT_INLAND_IMPORT_TERMINALARRIVAL_AT_STOP, GATE_IN_FULLTRANSFERCargo arrives at an inland import terminal for intermodal transfer or further delivery.
DISCHARGE_AT_INLAND_IMPORT_TERMINALDISCHARGETRANSFERCargo is unloaded from a vehicle or train at the inland import terminal.
LOAD_AT_INLAND_IMPORT_TERMINALLOADTRANSFERCargo is loaded onto a delivery vehicle at the import terminal for final delivery.
DEPARTURE_FROM_INLAND_IMPORT_TERMINALDEPARTURE_FROM_STOP, GATE_OUT_FULLTRANSFERFull cargo departs from the terminal to its final destination.
ARRIVAL_OF_FULL_CONTAINER_AT_CONSIGNEEARRIVAL_AT_STOPDESTINATIONCargo arrives at the consignee’s facility, ready for unloading.
PROOF_OF_DELIVERYDELIVERYDESTINATIONDocumented confirmation that cargo has been delivered to the consignee.
READY_FOR_PICKUP_EMPTY_CONTAINER_AT_CONSIGNEE_LOCATIONSTRIPDESTINATIONAfter unloading, empty container is available at the consignee location for pickup/return.
PICKED_UP_EMPTY_CONTAINER_FROM_CONSIGNEEDEPARTURE_FROM_STOPDESTINATIONEmpty container is picked up from the consignee’s facility, starting the return journey.
GATE_IN_EMPTY_CONTAINER_AT_TERMINALGATE_IN_EMPTYRETURNEmpty container is returned and gated in at the container terminal or depot.

LCL Specific Milestones

.details.ocean.code.typestopTypeDescription
ARRIVAL_AT_ORIGIN_CFS_OR_WAREHOUSEARRIVAL_AT_STOPORIGIN, ORIGIN_CFSThe cargo arrives at the origin Container Freight Station (CFS) or warehouse, ready to be prepared for export. This is where consolidation of shipments typically occurs before container loading.
LOAD_AT_ORIGIN_CFS_OR_WAREHOUSELOADORIGIN, ORIGIN_CFSThe cargo is loaded (stuffed) into the container at the origin CFS or warehouse. This marks the point when the cargo is physically secured inside the container, ready for further transport.
DEPARTURE_FROM_ORIGIN_CFS_OR_WAREHOUSEDEPARTURE_FROM_STOPORIGIN, ORIGIN_CFSThe loaded container departs from the origin CFS or warehouse, beginning its journey to the port or next logistics facility.
ARRIVAL_AT_TRANSSHIPMENT_CFSARRIVAL_AT_STOPTRANSSHIPMENT_PORTThe container or cargo arrives at an intermediate CFS located at a transshipment port, where cargo may be transferred to another container or vessel for onward transport.
DISCHARGE_AT_TRANSSHIPMENT_CFSDISCHARGETRANSSHIPMENT_PORTThe cargo is unloaded (stripped) at the transshipment CFS, usually for reconsolidation or transfer to a different transport mode or vessel.
LOAD_INTO_CONTAINER_AT_TRANSSHIPMENT_CFSLOADTRANSSHIPMENT_PORTThe cargo is reloaded (stuffed) into a new container at the transshipment CFS for continuation of its journey, often as part of a vessel or mode change.
DEPARTURE_FROM_TRANSSHIPMENT_CFSDEPARTURE_FROM_STOPTRANSSHIPMENT_PORTThe container or cargo departs the transshipment CFS, proceeding on to the destination or next transfer point in the supply chain.
ARRIVAL_AT_DESTINATION_CFS_OR_WAREHOUSEARRIVAL_AT_STOPDESTINATION, DESTINATION_CFSThe container or cargo arrives at the destination CFS or warehouse, where it will be unpacked or destuffed for final delivery.
STRIP_AT_DESTINATION_CFS_OR_WAREHOUSESTRIPDESTINATION, DESTINATION_CFSThe cargo is stripped (unloaded) from the container at the destination CFS or warehouse, making it available for pickup by the final consignee.
DEPARTURE_FROM_DESTINATION_CFS_OR_WAREHOUSEDEPARTURE_FROM_STOPDESTINATION, DESTINATION_CFSThe cargo departs the destination CFS or warehouse for final mile delivery to the consignee, completing the LCL ocean shipment process.

Informational Milestones

.details.ocean.code.typestopTypeDescription
BOOKING_CONFIRMED_BY_FFWINFOORIGINConfirmation received from the freight forwarder that the cargo booking has been arranged and is accepted for shipment.
BOOKING_CONFIRMED_BY_OCEAN_CARRIERINFOORIGINConfirmation received from the ocean carrier that the space booking for the container or cargo on the vessel is secured and accepted.
BOOKING_CANCELLEDINFOORIGINNotification that a previously confirmed booking for shipment has been cancelled, either by the shipper, forwarder, or carrier.
EXPORT_CUSTOMS_DOCS_FILINGCUSTOMS_DOCS_FILINGORIGIN, PORT_OF_LOADING, TRANSFERFiling of necessary export documents with customs authorities at the origin, port of loading, or transfer point to begin the clearance process.
EXPORT_CUSTOMS_HOLDCUSTOMS_HOLDTRANSFERThe cargo or shipment has been placed on hold by export customs authorities during transfer possibly due to review, inspection, or documentation issues.
EXPORT_CUSTOMS_CLEARANCECUSTOMS_CLEARANCEORIGIN, PORT_OF_LOADING, TRANSFERThe cargo has successfully cleared export customs formalities at the relevant location, authorizing it for onward shipment.
IMPORT_CUSTOMS_DOCS_FILINGCUSTOMS_DOCS_FILINGPORT_OF_DISCHARGE, DESTINATION, TRANSFERRequired import documentation is filed with customs authorities at the port of discharge, final destination, or a transfer point to initiate import clearance.
IMPORT_CUSTOMS_HOLDCUSTOMS_HOLDTRANSFERThe incoming cargo is detained by customs at a transfer facility pending additional review, possibly due to incomplete paperwork or inspection requirements.
IMPORT_CUSTOMS_CLEARANCECUSTOMS_CLEARANCEPORT_OF_DISCHARGE, DESTINATION, TRANSFERImport customs authorities have granted clearance for the shipment, allowing onward delivery or final release to the consignee.
CARRIER_HOLD_AT_PORT_OF_DISCHARGECARRIER_HOLDPORT_OF_DISCHARGECargo is placed on hold by the carrier at the port of discharge, often because of pending freight payment, missing documents, or regulatory holds.
CARRIER_RELEASE_AT_PORT_OF_DISCHARGERECEIVE_FROM_CARRIERPORT_OF_DISCHARGEThe carrier has released the cargo at the port of discharge, typically after all holds are resolved and obligations are met, making it available for pickup.
CONSIGNEE_NOTIFYCONSIGNEE_NOTIFYTRANSFERNotice has been sent to the consignee or their agent that the shipment is available or has arrived at a transfer point, port, or terminal.
EXPORT_HOLDHELDPORT_OF_LOADINGShipment is held at the port of loading possibly due to export restrictions, pending paperwork, regulatory issues, or operational reasons.
EXPORT_AVAILABLEAVAILABLEPORT_OF_LOADINGShipment is fully cleared and available at the port of loading, ready for loading onto the vessel.
IMPORT_HOLDHELDPORT_OF_DISCHARGECargo is held at the port of discharge, possibly due to customs, compliance, unpaid charges, or incomplete delivery arrangements.
IMPORT_AVAILABLEAVAILABLEPORT_OF_DISCHARGEShipment is available at the port of discharge, having cleared customs and resolved all holds, and can now proceed to the consignee.

$.events[].type

Events Without Ocean Code

.typestopTypeDescription
REMOVED_FROM_BOOKING-Indicates that the container has been removed from the booking, typically due to cancellation or changes in plans. This event does not have a specific stop type associated with it.
CUSTOMS_TRANSIT_DOCS_ISSUED-Customs transit documents have been issued, allowing cargo to be transported from the port/airport to another location for final import customs clearance.
CUSTOMS_TRANSIT_DOCS_CLOSED-Customs transit is complete and documents are closed, indicating that the shipment has completed its transit and actual import customs clearance can begin.

P44 Generated Events

The .dateTimes[].source field for these events is typically P44, indicating that they are generated by Project44's internal systems.

.typeDescription
TRACKING_INITIATEIndicates that tracking has been initiated for the shipment.
TRACKING_STARTIndicates that tracking has started for the shipment, typically after receiving the first update from the data provider.
TRACKING_STOPIndicates that tracking has stopped for the shipment, either due to completion or manual intervention.
TRACKING_END_BY_USERIndicates that tracking has been manually ended by the user for the shipment using API or Movement UI.
TRACKING_END_DUE_TO_TIMEOUTIndicates that tracking has ended due to a timeout, typically when no updates are received for a certain period.

$.events[].dateTimes

Each ocean event can be retrieved from various ocean data sources or providers, and the most reliable source is chosen by Project44 based on certain rules and heuristics. The dateTimes field in the event schema contains a list of entries for the event, each with a source field indicating the source of the event. The selected field indicates which source was preferred for that event by Project44.

typestringnon-emptyrequired

The type of the dateTime provided.<br><br>PLANNED - Denotes that a dateTime is planned or scheduled to occur.<br>ACTUAL - Denotes that a dateTime actually occurred.<br>ESTIMATE - Denotes that a dateTime is a calculated estimate.

Enum"UNKNOWN""PLANNED""ACTUAL""ESTIMATE"
dateTimestring(date-time)non-emptyrequired

The time that this event occurred or will occur. If accompanied by endDateTime, this value denotes the start time of the resulting window.

endDateTimestring(date-time)

The end time of the window in which the event occurred or will occur.

lastModifiedDateTimestring(date-time)

Denotes when the provided dateTime was last modified.

sourcestring

The source of the provided dateTime.<br><br>UNKNOWN - The source of the provided dateTime is unknown.<br>CARRIER -The dateTime is provided by CARRIER.<br>BROKER - The dateTime is provided by BROKER.<br>FFW - The dateTime is provided by FFW.<br>USER - The dateTime is provided by USER. Can only provide this value in POST/PUT. <br>CONTRACT - Contractually defined dateTime. <br>GEOFENCE - The dateTime is provided by GEOFENCE logic.<br>FACILITY - The dateTime is provided by a facility (e.g. terminal, airport, container depot, cross-dock station).<br>P44 - The dateTime is calculated by other P44 services.

Enum"UNKNOWN""CARRIER""BROKER""FFW""USER""CONTRACT""GEOFENCE""FACILITY""P44""NVOCC"
sourceIdentifiersArray of objects(LogisticsIdentifier)

An optional list of standardized 3rd party identifiers which provide more detail about the source of this dateTime. Can indicate a specific device, vehicle, carrier, or other freight entity.

selectedboolean

Denotes whether this dateTime is the one used as the top level dateTime of the event.

sequenceinteger(int32)

A number that indicates the order in which dateTimes of the same type and source were received.

$.events[].dateTimes[].source

.dateTimes[].sourceDescription
CARRIERThe event was retrieved from an ocean carrier connection
FFWThe event was retrieved from a freight forwarder connection
NVOCCThe event was retrieved from a Non-Vessel Operating Common Carrier (NVOCC) connection
GEOFENCEThe event was retrieved from Project44's AIS vessel detection system
BROKERThe event was retrieved from a customs broker connection
FACILITYThe event was retrieved from a facility connection, such as a port, terminal or depot
P44The event was generated by Project44's internal systems

$.events[].details.qualityControl.code

.details.qualityControl.code.typeDescription
SURVEYSURVEYShipment is surveyed by quality control.
HELDHELDShipment is held by quality control.
DAMAGE_HELDHELDShipment is held by quality control due to damage.
PLANT_HELDHELDShipment is held by quality control due to plant request.
QUALITY_CAMPAIGN_HELDHELDShipment is held by quality control due to quality campaign.
CUSTOMS_HELDHELDShipment is held by customs.
POWER_WASH_HELDHELDShipment is held by quality control for power washing.
OTHER_HELDHELDShipmen is held by quality control for other reasons.
QUALITY_CONTROL_HELDHELDShipment is held by quality control due to quality control.
IMPORT_HELDHELDShipment is held by quality control due to import hold.
RELEASERELEASEShipment is released from hold by quality control.
AVAILABLEAVAILABLEShipment is available for pickup.
EXPORT_SURVEYSURVEYShipment is finally surveyed before export.

$.states

States represent the status of the ocean shipment. The list contains all states that the shipment was or currently is in.

typestring

The specific type of state that the shipment was in. Will always be populated.

Enum"UNKNOWN""AT_STOP""IN_TRANSIT_AIRCRAFT""IN_TRANSIT_VESSEL""IN_TRANSIT_RAIL""CUSTOMS_HOLD""IN_TRANSIT""COMPLETED""SCHEDULED""IDLE"
startDateTimestring(date-time)

The time that this state began. May not be populated if the shipment is not yet in this state or if we do not have data for when this state began.

endDateTimestring(date-time)

The time that this state ended. May not be populated if the shipment is still in this state.

stopIdstring(uuid)

If relevant, this will be populated with the id of the stop to which this state relates

routeSegmentIdstring(uuid)

If relevant, this will be populated with the id of a route segment on which this state occurred.

$.states[].type

.typeDescription
AT_STOPIndicates that the shipment is currently at a specific stop, such as a port or terminal. This state is used when the shipment is not in transit but has not yet reached its final destination.
IN_TRANSITIndicates that the shipment is currently in transit, moving from one location to another. This state is used when the shipment is actively being transported, such as on a vessel or truck.
COMPLETEDIndicates that the shipment has reached its final destination and all necessary actions have been completed.
SCHEDULEDIndicates that the shipment is scheduled for a future date or time, but has not yet started its journey or has not yet started tracking.

$.costs

Costs represent the various charges associated with the ocean shipment and the assets contained within.

typestringrequired

The type of cost or fee that occurred. Will always be populated.

Enum"UNKNOWN""EXPORT_DEMURRAGE""EXPORT_DETENTION""IMPORT_DEMURRAGE""IMPORT_DETENTION"
identifiersArray of objects(LogisticsIdentifier)[ 0 .. 25 ] items

A list of identifiers that specify the asset to which this cost or fee pertains.

totalCostobject(MonetaryValue)required

A monetary value expressing amount and currency type.

totalCost.​currencystring(enum)(Currency)required

The currency of the shipment value

Enum"USD""CAD""MXN""EUR"
totalCost.​amountnumberrequired

The value of the shipment

tierstring

The current tier that is applied to calculate the costs.

Enum"UNKNOWN""FREE_PERIOD""FIRST_PERIOD""SECOND_PERIOD""THEREAFTER_PERIOD"

$.costs[].type

.typeDescription
EXPORT_DEMURRAGETypically, a fee charged by the port or terminal when a loaded export container remains within the terminal beyond the allotted free time, waiting to be loaded onto a vessel. This is usually charged to the cargo owner or exporter for using the port’s space beyond the free period.
EXPORT_DETENTIONTypically, a charge incurred when the exporter holds onto the carrier’s empty container outside the port (for loading) beyond the agreed free time, before returning it for export stuffing or shipping.
IMPORT_DEMURRAGETypically, a fee levied by the port or terminal when an import container (usually full) stays at the terminal longer than the permitted free period, after vessel discharge and before removal from the port. This is usually charged to the consignee or importer.
IMPORT_DETENTIONTypically, a charge imposed by the shipping line when the consignee keeps the carrier’s empty container outside the port beyond the free allowed time after it has been picked up and emptied, before returning the container.

$.costs[].tier

.tierDescription
FREE_PERIODThe initial grace period during which no demurrage or detention charges apply. Containers may remain at the terminal or in possession of shipper/consignee without penalty.
FIRST_PERIODThe first tier of chargeable days occurring immediately after the free period. Daily demurrage or detention rates are levied at the lowest chargeable level specified in the contract.
SECOND_PERIODThe next chargeable period following the first period. Demurrage or detention rates per day increase to a higher level, providing a greater financial incentive to move or return containers promptly.
THEREAFTER_PERIODThe final and highest charge tier, applied after the second period. The daily charge typically reaches its maximum rate and remains in effect until the container is removed from the terminal or returned to the carrier.