openapi: 3.0.0 info: title: API Container Tracking version: 2.8.0 description: "Welcome to the documentation of the Container Tracking API

Compatibility guidelines

The HTTP API is versioned with a single number, which is currently 2

This number symbolizes the major version number. New features can be added to the API in the same version number if there is no breaking change.

The version number is present in the url, for instance /container-tracking/api/v2 for the current version.

Documentation, Pricing and Key generation

You can find the complete documentation for our API at Developers Platform.

Create an account to receive your FREE key in under a minute!

Additionally, explore our pricing plans, access support, view detailed documentation, and follow our comprehensive tutorials.

Authentication

Every endpoints of this API require authentication using an API key.

If you don't have an API Key and you need to use the Container Tracking API, you need to ask Sinay to have one.

To use the API Key, you must add a header named API_KEY with your API Key as a value.

Test the API with Swagger-ui

To test the API using Swagger-ui, you must click on the button Authorize and then fill the apiKey field and click on Authorize.

Swagger-ui will then use the api key automatically in each request.

On every endpoints, you can click on Try it out, you can modify the body and then click on Execute

You will be able to see the response.

Release note

2.8.0

2.1.0

2.0.2

2.0.0

1.5.0

1.4.0

1.3.0

1.2.0

1.1.0

1.0.0

" servers: - url: 'https://api.sinay.ai/container-tracking/api/v2' security: - ApiKey: [] tags: - name: Shipment description:

Track any container using CT, BL or BK number.

Get data from over 170 global shipping lines in one single endpoint. Retrieve list of locations, dates and events associated with each container journey.

- name: Shipment Format description:

Retrieve the same shipment tracking data in a format compatible with a competitor's API, to ease migration and simplify data comparison.

- name: Sealine description: Endpoint that allows you to retrieve information about supported sea lines, the corresponding scacodes, their restriction and maintenance. - name: Usage description: Endpoint that allows you to retrieve information about your usage paths: /shipment: get: tags: - Shipment operationId: getShipmentDetail parameters: - name: shipmentNumber description: Bill of Lading Number, Booking number or Container Tracking Number in: query required: true example: "ZZZZ0000000" schema: type: string - name: sealine description:

Sealine 4 letters scac code. Find the code corresponding to your sealine using the GET /sealines endpoint

This parameter is strongly recommended to improve response time and avoid wrong sealine detection

in: query required: false example: "ONEY" schema: type: string - name: shipmentType description: Shipment type. CT for container, BL for Booking and BL for Bill of Lading in: query required: false example: "CT" schema: type: string enum: - CT - BL - BK - name: route description:

Set this to true if you wish to receive the route segments or AIS data

Using this option will increase the response time

in: query required: false schema: type: boolean default: true - name: ais description:

Set this to true if you wish to receive AIS data - will only work if route is also set to true

Using this option will increase the response time

in: query required: false schema: type: boolean default: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ShipmentDetails' example: metadata: shipmentType: CT shipmentNumber: MSKU0496560 sealine: MAEU sealineName: Maersk shippingStatus: IN_TRANSIT updatedAt: '2023-11-28T11:24:59Z' locations: - name: Houston state: Texas country: United States countryCode: US locode: USHOU coordinates: lat: 29.76328 lng: -95.36327 timezone: America/Chicago - name: Bremerhaven state: Bremen country: Germany countryCode: DE locode: DEBRV coordinates: lat: 53.53615 lng: 8.59298 timezone: Europe/Berlin route: prepol: location: name: Houston state: Texas country: United States countryCode: US locode: USHOU coordinates: lat: 29.76328 lng: -95.36327 timezone: America/Chicago date: '2023-11-07T11:16:00Z' actual: true predictiveEta: null pol: location: name: Houston state: Texas country: United States countryCode: US locode: USHOU coordinates: lat: 29.76328 lng: -95.36327 timezone: America/Chicago date: '2023-11-07T12:46:00Z' actual: true predictiveEta: null pod: location: name: Bremerhaven state: Bremen country: Germany countryCode: DE locode: DEBRV coordinates: lat: 53.53615 lng: 8.59298 timezone: Europe/Berlin date: '2023-12-01T22:00:00Z' actual: false predictiveEta: null postpod: location: name: Bremerhaven state: Bremen country: Germany countryCode: DE locode: DEBRV coordinates: lat: 53.53615 lng: 8.59298 timezone: Europe/Berlin date: '2023-12-01T22:00:00Z' actual: false predictiveEta: null vessels: - name: MAERSK OHIO imo: 9298698 callSign: KABP mmsi: 367775000 flag: US facilities: - name: Houston Barbours Cut Terminal countryCode: US locode: USUQF bicCode: USUQFGDQQ smdgCode: null coordinates: lat: null lng: null - name: MSC Gate Bremerhaven Gmbh & Co. KG countryCode: DE locode: null bicCode: null smdgCode: null coordinates: lat: null lng: null containers: - number: MSKU0496560 isoCode: 45G1 sizeType: 40' High Cube Dry status: IN_TRANSIT events: - location: name: Houston state: Texas country: United States countryCode: US locode: USHOU coordinates: lat: 29.76328 lng: -95.36327 timezone: America/Chicago facility: name: Houston Barbours Cut Terminal countryCode: US locode: USUQF bicCode: USUQFGDQQ smdgCode: null coordinates: lat: null lng: null description: Gate out eventType: EQUIPMENT eventCode: GTOT status: CEP date: '2023-11-07T11:16:00Z' isActual: true isAdditionalEvent: false routeType: LAND transportType: null vessel: null voyage: null - location: name: Houston state: Texas country: United States countryCode: US locode: USHOU coordinates: lat: 29.76328 lng: -95.36327 timezone: America/Chicago facility: null description: Gate in eventType: EQUIPMENT eventCode: GTIN status: CGI date: '2023-11-07T12:46:00Z' isActual: true isAdditionalEvent: false routeType: LAND transportType: null vessel: null voyage: null - location: name: Houston state: Texas country: United States countryCode: US locode: USHOU coordinates: lat: 29.76328 lng: -95.36327 timezone: America/Chicago facility: null description: Load eventType: EQUIPMENT eventCode: LOAD status: CLL date: '2023-11-11T04:57:00Z' isActual: true isAdditionalEvent: false routeType: SEA transportType: null vessel: name: MAERSK OHIO imo: 9298698 callSign: KABP mmsi: 367775000 flag: US voyage: 344E - location: name: Houston state: Texas country: United States countryCode: US locode: USHOU coordinates: lat: 29.76328 lng: -95.36327 timezone: America/Chicago facility: null description: Vessel departure eventType: TRANSPORT eventCode: DEPA status: VDL date: '2023-11-11T07:09:00Z' isActual: true isAdditionalEvent: false routeType: SEA transportType: VESSEL vessel: name: MAERSK OHIO imo: 9298698 callSign: KABP mmsi: 367775000 flag: US voyage: 344E - location: name: Bremerhaven state: Bremen country: Germany countryCode: DE locode: DEBRV coordinates: lat: 53.53615 lng: 8.59298 timezone: Europe/Berlin facility: name: MSC Gate Bremerhaven Gmbh & Co. KG countryCode: DE locode: null bicCode: null smdgCode: null coordinates: lat: null lng: null description: Vessel arrival eventType: TRANSPORT eventCode: ARRI status: VAD date: '2023-12-01T22:00:00Z' isActual: false isAdditionalEvent: false routeType: SEA transportType: VESSEL vessel: name: MAERSK OHIO imo: 9298698 callSign: KABP mmsi: 367775000 flag: US voyage: 344E routeData: routeSegments: - path: - lat: 29.76328 lng: -95.36327 - lat: 29.75212 lng: -95.30827 - lat: 29.700035 lng: -95.05164 - lat: 29.688875 lng: -94.99665 - lat: 29.69268 lng: -94.99588 - lat: 29.710443 lng: -94.99227 - lat: 29.71425 lng: -94.9915 - lat: 29.661234 lng: -94.9585 - lat: 29.413822 lng: -94.8045 - lat: 29.360806 lng: -94.7715 - lat: 28.69987 lng: -92.64078 - lat: 25.615494 lng: -82.697395 - lat: 24.954556 lng: -80.566666 - lat: 25.089743 lng: -80.05885 - lat: 25.72062 lng: -77.689064 - lat: 25.855806 lng: -77.18125 - lat: 29.65043 lng: -65.394936 - lat: 47.08643 lng: -11.237754 - lat: 47.35868 lng: -10.392122 - lat: 51.153305 lng: 1.394194 - lat: 51.42554 lng: 1.9012278 - lat: 52.695972 lng: 4.267386 - lat: 52.96821 lng: 4.77442 - lat: 53.032413 lng: 4.9400067 - lat: 53.332043 lng: 5.712746 - lat: 53.39625 lng: 5.878333 - lat: 53.439404 lng: 6.111904 - lat: 53.640785 lng: 7.201904 - lat: 53.68394 lng: 7.435475 - lat: 53.685673 lng: 7.4788346 - lat: 53.693768 lng: 7.681179 - lat: 53.695503 lng: 7.7245383 - lat: 53.665535 lng: 7.8185787 - lat: 53.52569 lng: 8.257433 - lat: 53.49572 lng: 8.351473 - lat: 53.51669 lng: 8.365631 - lat: 53.614532 lng: 8.431703 - lat: 53.635498 lng: 8.445861 - lat: 53.620594 lng: 8.467929 - lat: 53.551052 lng: 8.570912 - lat: 53.53615 lng: 8.59298 routeType: SEA coordinates: lat: 47.08643 lng: -11.237754 ais: status: OK data: lastEvent: description: Vessel departure date: '2023-11-11T07:09:00Z' voyage: 344E dischargePort: null vessel: name: MAERSK OHIO imo: 9298698 callSign: KABP mmsi: 367775000 flag: US lastVesselPosition: lat: 51.28157 lng: 4.253457 updatedAt: '2023-11-28T10:28:00Z' departurePort: name: Bremerhaven countryCode: DE code: BRV date: '2023-12-01T22:00:00Z' dateLabel: ETA arrivalPort: name: null countryCode: BE code: ANR date: '2023-11-27T13:02:00Z' dateLabel: ATA updatedAt: '2023-11-28T10:34:39Z' /shipment-format/searates: get: tags: - Shipment Format operationId: getShipmentSearatesFormat summary: Retrieve shipment tracking data in a Searates-compatible format description:

Returns the same tracking data as GET /shipment, formatted to be compatible with the Searates "Tracking by any number" response.

Enables a field-by-field comparison with Searates formatted data.

By default the payload follows the Searates format. Set safecubeFields=true to additionally expose SafeCube-specific fields (currently metadata.warnings); those fields are omitted from the response when null.

parameters: - name: shipmentNumber description: Bill of Lading Number, Booking number or Container Tracking Number in: query required: true example: "ZZZZ0000000" schema: type: string - name: sealine description:

Sealine 4 letters scac code. Find the code corresponding to your sealine using the GET /sealines endpoint

This parameter is strongly recommended to improve response time and avoid wrong sealine detection

in: query required: false example: "ONEY" schema: type: string - name: shipmentType description: Shipment type. CT for container, BL for Booking and BL for Bill of Lading in: query required: false example: "CT" schema: type: string enum: - CT - BL - BK - name: route description:

Set this to true if you wish to receive the route segments or AIS data

Using this option will increase the response time

in: query required: false schema: type: boolean default: true - name: ais description:

Set this to true if you wish to receive AIS data - will only work if route is also set to true

Using this option will increase the response time

in: query required: false schema: type: boolean default: true - name: safecubeFields description:

Set to true to include SafeCube-specific fields in addition to the Searates-compatible format.

These fields have no equivalent in the native Searates response (currently metadata.warnings) and are omitted when null.

in: query required: false schema: type: boolean default: false responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SearatesShipmentFormat' '400': description: Bad request - the required API_KEY header is missing content: application/json: schema: $ref: '#/components/schemas/errorInfo' '404': description: Shipment not found content: application/json: schema: $ref: '#/components/schemas/errorInfo' /sealines: get: tags: - Sealine operationId: getSeaLineDetails responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SealineDetails' example: sealines: - name: AC Container Line active: true activeTypes: ct: true bl: true bk: true maintenance: false scacCodes: - ALRB prefixes: [ ] - name: Admiral Container Lines active: true activeTypes: ct: true bl: true bk: true maintenance: false scacCodes: - ADMU prefixes: - BLS - ADM '401': $ref: '#/components/responses/unauthorized' '500': $ref: '#/components/responses/internalServerError' default: $ref: '#/components/responses/default' /usages: get: parameters: - $ref: '#/components/parameters/usageStartTime' - $ref: '#/components/parameters/usageEndTime' operationId: retrieveUsages summary: Retrieve your monthly usages description:

The endpoint allows you to retrieve your monthly usages of the API

tags: - Usage responses: '200': description: The monthly usages content: application/json: schema: $ref: '#/components/schemas/usagesResponse' '401': $ref: '#/components/responses/unauthorized' '500': $ref: '#/components/responses/internalServerError' default: $ref: '#/components/responses/default' /shipment-usage: get: tags: - Usage operationId: retrieveShipmentUsages summary: Retrieve list of shipments called with the API, that usages have a minimum resolution of a month (you cant select the usage for one week for example, the usage will automatically be for the month of the week provided) parameters: - in: query name: startTime required: false schema: type: string format: date-time description: Start time at which usages must be found - in: query name: endTime required: false schema: type: string format: date-time description: End time at which usages must be found - in: query name: periodicity required: false schema: enum: - DAILY - MONTHLY responses: '200': description: Usage has been recovered content: application/json: schema: $ref: '#/components/schemas/ShipmentCustomUsages' '401': $ref: '#/components/responses/unauthorized' '500': $ref: '#/components/responses/internalServerError' default: $ref: '#/components/responses/default' components: securitySchemes: ApiKey: type: apiKey in: header name: API_KEY parameters: usageStartTime: in: query name: startTime required: false schema: type: string format: date-time description: Start time at which usages must be found usageEndTime: in: query name: endTime required: false schema: type: string format: date-time description: End time at which usages must be found schemas: ShipmentCustomUsages: type: object properties: apis: $ref: '#/components/schemas/ShipmentCustomUsagesApis' ShipmentCustomUsagesApis: type: object additionalProperties: $ref: '#/components/schemas/ShipmentCustomUsagesApi' ShipmentCustomUsagesApi: type: object properties: periodicUsages: $ref: '#/components/schemas/PeriodicCustomUsages' PeriodicCustomUsages: type: object additionalProperties: $ref: '#/components/schemas/customUsage' customUsage: type: object required: - consumedShipment - consumedShipmentList properties: consumedShipment: type: integer format: int32 consumedShipmentList: type: array items: type: string errorInfo: type: object required: - errorCode - message - details - time properties: errorCode: type: integer format: int32 message: type: string details: type: array items: type: string time: type: string format: date-time numberOfCalls: type: integer format: int64 periodicUsage: type: object required: - allCalls - successCalls - clientErrorCalls - serverErrorCalls - consumedApiUnits properties: allCalls: $ref: '#/components/schemas/numberOfCalls' successCalls: $ref: '#/components/schemas/numberOfCalls' clientErrorCalls: $ref: '#/components/schemas/numberOfCalls' serverErrorCalls: $ref: '#/components/schemas/numberOfCalls' consumedApiUnits: $ref: '#/components/schemas/numberOfCalls' periodicUsages: type: object additionalProperties: $ref: '#/components/schemas/periodicUsage' usagesResponse: type: object required: - allCalls - successCalls - clientErrorCalls - serverErrorCalls - consumedApiUnits properties: allCalls: $ref: '#/components/schemas/numberOfCalls' successCalls: $ref: '#/components/schemas/numberOfCalls' clientErrorCalls: $ref: '#/components/schemas/numberOfCalls' serverErrorCalls: $ref: '#/components/schemas/numberOfCalls' consumedApiUnits: $ref: '#/components/schemas/numberOfCalls' periodicUsages: $ref: '#/components/schemas/periodicUsages' example: allCalls: 15 successCalls: 13 clientErrorCalls: 1 serverErrorCalls: 1 consumedApiUnits: 25 periodicUsages: 2022-05: allCalls: 15 successCalls: 13 clientErrorCalls: 1 serverErrorCalls: 1 consumedApiUnits: 25 Metadata: type: object description:

Additional data on the shipment

properties: shipmentType: description:

Shipment type (CT for Container, BK for booking number, BL for bill of lading, DC for document (if we could not recognize between a booking or bill of lading)

If this parameter is not present in the request, it will be autodetected.

type: string enum: - CT - BL - BK - DC shipmentNumber: description:

Shipment reference entered as input.

type: string sealine: description:

Shipping line SCAC code. If this parameter is not present in the request, it will be autodetected.

type: string sealineName: description:

Name of the shipping line in full.

type: string shippingStatus: description:

Short status of the shipment.

If no event dates are available, status is `PLANNED`, if event dates are still in the future status is `IN_TRANSIT` and if all dates are in the past and delivery has been confirmed by sealine, status is `DELIVERED`.

type: string enum: - PLANNED - IN_TRANSIT - DELIVERED - UNKNOWN updatedAt: description:

Timestamp from when data was last received from the carrier.

type: string format: date-time warnings: description: | Warnings on data quality or discrepancies in data received from carrier. Possible values. - `MISSING_DATES` at least one of the event dates is null - `OBSOLETE_DATA` timestamp from `updatedAt` is older than 24 hours - `NO_POL` no Port of Loading received from carrier - `NO_POD` no Port of Discharge received from carrier - `STATUS_MISMATCH` shipment status is in conflict with event dates - `NO_EVENTS` carrier provided information on containers, but not on events - `NO_CONTAINERS` no container information received from carrier - `SPLIT_BL` the bl has been detected as split type: array items: type: string enum: - OBSOLETE_DATA - NO_POL - NO_POD - MISSING_DATE - STATUS_MISMATCH - NO_EVENTS - NO_CONTAINERS - SPLIT_BL AisCoordinates: type: object properties: lat: type: number format: float lng: type: number format: float updatedAt: type: string format: date-time Coordinates: type: object properties: lat: type: number format: float lng: type: number format: float Location: type: object description: Ordered list of the locations your shipment will transit by. properties: name: description: Location name (as in UNECE database) type: string state: description: Location state if provided. type: string country: description: Country of the location. type: string countryCode: description: Country code of the location (2 letters, as in UNECE database) type: string locode: description: UN/Locode of the location type: string coordinates: $ref: '#/components/schemas/Coordinates' timezone: description: Location timezone type: string RouteInfo: type: object properties: location: $ref: '#/components/schemas/Location' date: description: Date of the first event at this location. For POL usually date of Gate In, for POD usually date of Vessel arrival. type: string format: date-time actual: description: True if the date is actual, false if it is estimated. type: boolean predictiveEta: description: Available only for POD and when the shipment is within 3 days of its arrival at POD. Sinay calculation based on historical AIS data, live port congestion and wheather. type: string Route: type: object properties: prepol: description: Place of dispatch $ref: '#/components/schemas/RouteInfo' pol: description: Port of Loading $ref: '#/components/schemas/RouteInfo' pod: description: Port of Discharge $ref: '#/components/schemas/RouteInfo' postpod: description: Destination $ref: '#/components/schemas/RouteInfo' Vessel: description: Ordered list of vessels involved in the shipment transportation. type: object properties: name: description: Vessel Name type: string imo: description: Unique IMO identifier of the vessel. type: integer format: int32 callSign: description: Call sign of the vessel when provided. type: string mmsi: description: Maritime Mobile Service Identity number. type: integer format: int32 flag: description: 2 letters country code (as in UNECE database) type: string Facility: description: List of facilities your shipment will transit by. type: object properties: name: description: Facility name type: string countryCode: description: 2 letters country code. type: string locode: description: UN/Locode of the facility type: string bicCode: type: string smdgCode: type: string coordinates: $ref: '#/components/schemas/Coordinates' Event: type: object description: Container event description and date. properties: location: $ref: '#/components/schemas/Location' facility: $ref: '#/components/schemas/Facility' description: description: Event description type: string eventType: description: Event Type as in DCSA standard (if applicable) type: string enum: - SHIPMENT - TRANSPORT - EQUIPMENT eventCode: description: Event Code as in DCSA standard (if applicable) type: string enum: - ARRI - DEPA - LOAD - DISC - GTIN - GTOT - STUF - STRP - PICK - AVPU - DROP - AVDO - INSP - RSEA - RMVD - CUSS - CUSI - CUSR - CROS - RECE - DRFT - PENA - PENU - PENC - CONF - REJE - APPR - ISSU - SURR - SUBM - VOID - REQS - CMPL - HOLD - RELS - CANC status: description: 3 characters event identifier type: string enum: - CEP - CPS - CGI - CLL - VDL - VAT - CDT - TSD - CLT - VDT - VAD - CDD - CGO - CDC - CER - LTS - BTS - UNK date: description: Event date in localtime type: string format: date-time isActual: description: True if the date is actual, false if estimated/ type: boolean isAdditionalEvent: type: boolean description: False if the event data comes from the shipping line, true if it's calculated by Sinay from other sources routeType: type: string enum: - SEA - LAND transportType: type: string enum: - VESSEL - BARGE - FEEDER - TRUCK - RAIL - AIR vessel: $ref: '#/components/schemas/Vessel' voyage: description: Voyage identifier if applicable. type: string Container: type: object properties: number: type: string isoCode: type: string sizeType: type: string status: type: string enum: - PLANNED - IN_TRANSIT - DELIVERED - UNKNOWN events: type: array items: $ref: '#/components/schemas/Event' RouteSegment: type: object description: List of paths object to draw the possible route between locations. properties: path: type: array items: $ref: '#/components/schemas/Coordinates' routeType: type: string enum: - SEA - LAND AisDataEvent: description: Last event provided by the shipping line for the vessel type: object properties: description: type: string date: type: string format: date-time voyage: type: string AisDataPort: type: object properties: name: type: string countryCode: type: string code: type: string date: type: string format: date-time dateLabel: type: string enum: - ETA - ATA - ETD - ATD AisDataPortWithoutName: type: object properties: countryCode: type: string code: type: string date: type: string format: date-time dateLabel: type: string enum: - ETA - ATA - ETD - ATD AisData: type: object properties: lastEvent: $ref: '#/components/schemas/AisDataEvent' dischargePort: $ref: '#/components/schemas/AisDataPort' vessel: $ref: '#/components/schemas/Vessel' lastVesselPosition: $ref: '#/components/schemas/AisCoordinates' departurePort: $ref: '#/components/schemas/AisDataPortWithoutName' arrivalPort: $ref: '#/components/schemas/AisDataPortWithoutName' updatedAt: type: string format: date-time Ais: type: object properties: status: type: string enum: - OK - NOT_ON_BOARD - NO_AIS_DATA data: $ref: '#/components/schemas/AisData' RouteData: type: object properties: routeSegments: type: array items: $ref: '#/components/schemas/RouteSegment' coordinates: description: Coordinates of your shipments. AIS coordinates of the vessel if your shipment is onboard a vessel, else last location coordinates. $ref: '#/components/schemas/Coordinates' ais: $ref: '#/components/schemas/Ais' ShipmentDetails: type: object properties: metadata: $ref: '#/components/schemas/Metadata' locations: type: array items: $ref: '#/components/schemas/Location' route: $ref: '#/components/schemas/Route' vessels: type: array items: $ref: '#/components/schemas/Vessel' facilities: type: array items: $ref: '#/components/schemas/Facility' containers: type: array items: $ref: '#/components/schemas/Container' routeData: $ref: '#/components/schemas/RouteData' ActiveTypes: type: object properties: ct: type: boolean bl: type: boolean bk: type: boolean Sealine: type: object properties: name: type: string active: type: boolean activeTypes: $ref: '#/components/schemas/ActiveTypes' maintenance: type: boolean scacCodes: type: array items: type: string prefixes: type: array items: type: string SealineDetails: type: object properties: sealines: type: array items: $ref: '#/components/schemas/Sealine' SearatesShipmentFormat: type: object description: Shipment tracking data formatted to be compatible with the Searates "Tracking by any number" response. properties: status: $ref: '#/components/schemas/SearatesRequestStatus' message: type: string description: Request status description (see Searates request statuses) enum: - OK - SEALINE_HASNT_PROVIDE_INFO - NO_CONTAINERS - NO_EVENTS - WRONG_PARAMETERS - WRONG_NUMBER - WRONG_SEALINE - WRONG_TYPE - SEALINE_NO_RESPONSE - SEALINE_NOT_SUPPORTED - SEALINE_TEMPORARY_DISABLED - SEALINE_UNDER_MAINTENANCE - AUTO_CANT_DETECT_SEALINE - AUTO_CANT_DETECT_TYPE - AUTO_CANT_FIND_INFO - SEALINE_CANCELED_SHIPMENT - UNEXPECTED_ERROR data: $ref: '#/components/schemas/SearatesShipmentData' SearatesRequestStatus: type: string description: Request status (success on completion, error otherwise) enum: - success - error SearatesShipmentData: type: object description: Data on request properties: metadata: $ref: '#/components/schemas/SearatesMetadata' locations: type: array nullable: true items: $ref: '#/components/schemas/SearatesLocation' route: $ref: '#/components/schemas/SearatesRoute' vessels: type: array nullable: true items: $ref: '#/components/schemas/SearatesVessel' containers: type: array nullable: true items: $ref: '#/components/schemas/SearatesContainer' facilities: type: array nullable: true items: $ref: '#/components/schemas/SearatesFacility' route_data: $ref: '#/components/schemas/SearatesRouteData' SearatesMetadata: type: object description: Additional data on request properties: type: type: string enum: - CT - BL - BK number: type: string description: Shipment number sealine: type: string description: Standard Carrier Alpha Code (SCAC) nullable: true sealine_name: type: string description: Carrier name nullable: true status: $ref: '#/components/schemas/SearatesShippingStatus' updated_at: type: string description: The date the data was received from the carrier (UTC), format 'yyyy-MM-dd HH:mm:ss' nullable: true example: '2023-06-06 08:15:15' api_calls: $ref: '#/components/schemas/SearatesApiCalls' unique_shipments: $ref: '#/components/schemas/SearatesUniqueShipments' warnings: description: >- SafeCube-specific field, not part of the native Searates format. Data-quality warnings computed by SafeCube. Present only when safecubeFields=true; omitted from the response when null. type: array nullable: true x-safecube: true items: type: string enum: - OBSOLETE_DATA - NO_POL - NO_POD - MISSING_DATE - STATUS_MISMATCH - NO_EVENTS - NO_CONTAINERS - SPLIT_BL SearatesShippingStatus: type: string description: Shipping status default: UNKNOWN enum: - PLANNED - IN_TRANSIT - DELIVERED - UNKNOWN - CANCELLED SearatesApiCalls: type: object description: Data on the number of api calls (Searates account metrics, not populated by SafeCube) properties: total: type: integer format: int32 nullable: true used: type: integer format: int32 nullable: true remaining: type: integer format: int32 nullable: true SearatesUniqueShipments: type: object description: Data on the number of unique shipments (Searates account metrics, not populated by SafeCube) properties: total: type: integer format: int32 nullable: true used: type: integer format: int32 nullable: true remaining: type: integer format: int32 nullable: true SearatesLocation: type: object properties: id: type: integer format: int32 description: Unique identifier referenced by events and route name: type: string state: type: string nullable: true country: type: string nullable: true country_code: type: string nullable: true locode: type: string nullable: true lat: type: number format: float nullable: true lng: type: number format: float nullable: true timezone: type: string nullable: true SearatesFacility: type: object properties: id: type: integer format: int32 description: Unique identifier referenced by events name: type: string country_code: type: string nullable: true locode: type: string nullable: true bic_code: type: string nullable: true smdg_code: type: string nullable: true lat: type: number format: float nullable: true lng: type: number format: float nullable: true SearatesVessel: type: object properties: id: type: integer format: int32 description: Unique identifier referenced by events name: type: string imo: type: integer format: int32 nullable: true call_sign: type: string nullable: true mmsi: type: integer format: int32 nullable: true flag: type: string nullable: true SearatesRoute: type: object description: Information on the route properties: prepol: $ref: '#/components/schemas/SearatesRoutePoint' pol: $ref: '#/components/schemas/SearatesRoutePoint' pod: $ref: '#/components/schemas/SearatesRoutePod' postpod: $ref: '#/components/schemas/SearatesRoutePoint' SearatesRoutePoint: type: object properties: location: type: integer format: int32 description: Unique identifier (id) from the locations array nullable: true date: type: string nullable: true example: '2023-05-24 13:25:00' actual: type: boolean nullable: true SearatesRoutePod: type: object properties: location: type: integer format: int32 description: Unique identifier (id) from the locations array nullable: true date: type: string nullable: true example: '2023-07-09 22:30:00' actual: type: boolean nullable: true predictive_eta: type: string description: If the carrier did not provide an arrival date, SafeCube may calculate it nullable: true SearatesContainer: type: object properties: number: type: string iso_code: type: string nullable: true size_type: type: string nullable: true status: $ref: '#/components/schemas/SearatesShippingStatus' events: type: array nullable: true items: $ref: '#/components/schemas/SearatesEvent' SearatesEvent: type: object properties: order_id: type: integer format: int32 description: The sequence number of the event location: type: integer format: int32 description: Unique identifier (id) from the locations array nullable: true facility: type: integer format: int32 description: Unique identifier (id) from the facilities array nullable: true description: type: string event_type: type: string nullable: true enum: - SHIPMENT - TRANSPORT - EQUIPMENT event_code: type: string nullable: true enum: - ARRI - DEPA - LOAD - DISC - GTIN - GTOT - STUF - STRP - PICK - AVPU - DROP - AVDO - INSP - RSEA - RMVD - CUSS - CUSI - CUSR - CROS - RECE - DRFT - PENA - PENU - PENC - CONF - REJE - APPR - ISSU - SURR - SUBM - VOID - REQS - CMPL - HOLD - RELS - CANC status: type: string default: UNK enum: - CEP - CPS - CGI - CLL - VDL - VAT - CDT - TSD - CLT - VDT - VAD - CDD - CGO - CDC - CER - LTS - BTS - UNK date: type: string description: Event date, format 'yyyy-MM-dd HH:mm:ss' example: '2023-05-24 13:25:00' actual: type: boolean nullable: true is_additional_event: type: boolean description: True if the event was calculated by SafeCube rather than provided by the carrier type: type: string description: sea for sea-related events, land for land-related events enum: - sea - land transport_type: type: string nullable: true enum: - VESSEL - BARGE - FEEDER - TRUCK - RAIL - AIR vessel: type: integer format: int32 description: Unique identifier (id) from the vessels array nullable: true voyage: type: string nullable: true SearatesRouteData: type: object nullable: true properties: route: type: array nullable: true description: Array of route segments items: $ref: '#/components/schemas/SearatesRouteItem' pin: type: array description: Current container position [latitude, longitude] nullable: true minItems: 2 maxItems: 2 items: type: number format: float ais: $ref: '#/components/schemas/SearatesAis' SearatesRouteItem: type: object properties: path: type: array description: Array of route coordinates, each item being a [latitude, longitude] pair items: type: array minItems: 2 maxItems: 2 items: type: number format: float type: type: string enum: - SEA - LAND SearatesAis: type: object properties: status: type: string enum: - OK - NOT_ON_BOARD - NO_AIS_DATA data: $ref: '#/components/schemas/SearatesAisData' SearatesAisData: type: object nullable: true properties: last_event: $ref: '#/components/schemas/SearatesAisLastEvent' discharge_port: $ref: '#/components/schemas/SearatesAisDischargePort' vessel: $ref: '#/components/schemas/SearatesAisVessel' last_vessel_position: $ref: '#/components/schemas/SearatesAisVesselPosition' departure_port: $ref: '#/components/schemas/SearatesAisDeparturePort' arrival_port: $ref: '#/components/schemas/SearatesAisArrivalPort' updated_at: type: string nullable: true SearatesAisLastEvent: type: object description: The latest event provided by the shipping line properties: description: type: string date: type: string voyage: type: string SearatesAisDischargePort: type: object properties: name: type: string nullable: true country_code: type: string nullable: true code: type: string nullable: true date: type: string nullable: true date_label: type: string nullable: true enum: - ETA - ATA SearatesAisVessel: type: object properties: name: type: string imo: type: integer format: int32 nullable: true call_sign: type: string nullable: true mmsi: type: integer format: int32 nullable: true flag: type: string nullable: true SearatesAisVesselPosition: type: object description: AIS data of the vessel position properties: lat: type: number format: float nullable: true lng: type: number format: float nullable: true updated_at: type: string nullable: true SearatesAisDeparturePort: type: object properties: country_code: type: string nullable: true code: type: string nullable: true date: type: string nullable: true date_label: type: string nullable: true enum: - ETD - ATD SearatesAisArrivalPort: type: object properties: country_code: type: string nullable: true code: type: string nullable: true date: type: string nullable: true date_label: type: string nullable: true enum: - ETA - ATA responses: default: description: default content: application/json: schema: $ref: '#/components/schemas/errorInfo' unauthorized: description: The authentication failed content: application/json: schema: $ref: '#/components/schemas/errorInfo' internalServerError: description: An error occurred on server side content: application/json: schema: $ref: '#/components/schemas/errorInfo'