Cargotime

SeaRates

Переход с SeaRates на Cargotime API v2: ключи доступа, запросы и обработка ответов

Руководство описывает переход с SeaRates Container Tracking API v3 на Cargotime API v2. Для старых методов /container, /reference и /apiv2 отдельно указаны отличия параметров.

Открытая документация SeaRates сейчас недоступна. Перед переходом уточните используемую версию API и параметры вашей интеграции в личном кабинете или у поддержки SeaRates. Таблицы ниже относятся к версии v3, если не указано иное.

Общий порядок переноса номеров и настройки уведомлений приведён в порядке перехода. Полные схемы Cargotime — в справочнике API.

Аутентификация

SeaRates передаёт ключ в параметре URL api_key. Базовый адрес SeaRates — https://tracking.searates.com.

Для перехода на Cargotime:

  1. Создайте ключ в личном кабинете Cargotime.
  2. Замените базовый адрес на https://tracking.cargotime.ru/v2. Например, полный адрес запроса отслеживания — https://tracking.cargotime.ru/v2/tracking.
  3. Передавайте новый ключ в параметре URL api_key каждого запроса, включая пакетные задачи и управление вебхуками. Ключи и токены прежнего сервиса не подходят.

Правила использования ключа и ограничения запросов — в разделе аутентификации.

Отслеживания и идентификаторы

SeaRatesCargotimeЧто изменить
metadata.number + metadata.typerequest.track_numberБерите исходный номер и его тип из metadata. В новом ответе они находятся в request.track_number.
containers[]data.containers[]Обрабатывайте каждый элемент data.containers[]. При поиске по коносаменту или букингу ответ может содержать несколько контейнеров.
metadata.statusdata.shipment_statusПолучайте состояние перевозки из data.shipment_status. Поле status на верхнем уровне сообщает результат запроса.

Соответствие операций

SeaRatesCargotimeЧто изменить
GET /trackingGET /v2/trackingПередайте номер, тип и перевозчика. Для нескольких номеров используйте POST /v2/tracking/batch.
GET /info/sealinesGET /v2/companiesНайдите перевозчика в новом справочнике. Используйте его scac и проверьте поддержку нужного типа номера в cn, bl или bk.
GET /routeGET /v2/tracking?need_route=trueДобавьте need_route=true к запросу отслеживания. Для сохранённых данных используйте GET /v2/shipments?need_route=true.
GET /history, GET /history?id=…Нет прямого аналогаВыгрузите нужные прошлые ответы SeaRates до отключения сервиса. Список отслеживаний содержит текущие данные, а не архив этих ответов.
GET /container, /reference, /apiv2GET /v2/trackingСначала определите используемую версию SeaRates. Замените числовой sealine на SCAC из GET /v2/companies.

Параметры запроса

SeaRatesCargotimeЧто изменить
numbervalueПередайте значение number в параметре URL value без изменения номера.
type: CT / BL / BKtype: container / bl / bkЗамените CT на container, BL на bl, BK на bk. Передавайте type в каждом запросе.
sealinecompanyПередайте SCAC перевозчика в company. Проверьте его через GET /v2/companies. Значение AUTO доступно только для номеров контейнеров.
route / aisneed_routeДля получения маршрута передайте need_route=true. Параметр ais удалите из запроса. Отдельного переключателя AIS нет.
force_updateforce_updateПередавайте force_update=true, только когда требуется обновить данные у перевозчика. Учитывайте ограничения запросов.

Поля ответа

В этой таблице пути указаны от корня ответа GET /v2/tracking. В списке /v2/shipments данные перевозки находятся внутри каждой записи в tracked_item.data.data. Формат вебхуков описан в отдельном разделе.

SeaRatesCargotimeКак обработать ответ
data.metadata.numberrequest.track_number.valueПолучайте запрошенный номер из request.track_number.value. Номера контейнеров в результате находятся в data.containers[].number.
data.metadata.sealinedata.summary.company.scacs[]Обрабатывайте scacs как массив строк. Не сравнивайте его с одним кодом как со строкой.
data.metadata.statusdata.shipment_statusПереведите условия обработки на значения shipment_status. Прибытие судна, выгрузка контейнера и доставка — разные этапы.
data.containers[].events[]data.containers[].events[]Получайте текст события из status, код из status_code, дату из date, признак фактического события из actual. Место события найдите по location в data.locations.
data.routedata.route_infoПолучайте линию маршрута из route_info.route[].path, текущую точку из route_info.current_position. Порядок координат — [широта, долгота].
metadata.api_calls / unique_shipmentsGET /v2/apikeyЗапрашивайте остаток доступных отслеживаний через GET /v2/apikey. Счётчики и остаток SeaRates в новый аккаунт не переносятся.

Примеры ответов

В каждой паре подписаны ответы прежнего сервиса и Cargotime. Большие JSON-примеры можно раскрыть отдельно от таблиц сопоставления. Это сокращённые примеры с условными данными. Над каждым JSON указан путь к показанной части ответа. Пути в следующей таблице начинаются от этой части.

Номер, тип отслеживания и состояние перевозки

Как сопоставить

SeaRatesCargotimeЧто изменить
data.metadata.number = "MSCU1234567"request.track_number.value = "MSCU1234567"Номер остаётся MSCU1234567. В новом ответе получайте его из request.track_number.value.
data.metadata.type = "CT"request.track_number.type = "container"Значению CT в SeaRates соответствует container. Используйте это значение при формировании запроса.
data.metadata.sealine = "MSCU"data.summary.company.scacs = ["MEDU","MSCU"]Вместо одного кода обрабатывайте массив scacs. В примере MSC представлен кодами MEDU и MSCU.
data.metadata.status = "IN_TRANSIT"data.shipment_status = "IN_TRANSIT"Состояние перевозки здесь — IN_TRANSIT. Значение ACTIVE в tracking_metadata.status означает действующую подписку на отслеживание.
data.containers[0].size_type = "40' High Cube Dry"data.containers[0].type = "40' High Cube Dry"Получайте описание размера и типа контейнера из containers[].type вместо size_type.
data.containers[0].iso_code = "45G1"Нет прямого аналогаОтдельного поля с ISO-кодом нет. Если код нужен вашей системе, сохраните исходное значение отдельно.

События, места и судно

Как сопоставить

SeaRatesCargotimeЧто изменить
containers[0].events[0].description = "Loaded"containers[0].events[1].status = "Loaded"Текст события находится в status. Замените обращение к description.
containers[0].events[0].status = "CLL"containers[0].events[1].status_code = "CLL"Код события находится в status_code. В примере CLL обозначает погрузку в порту отправления, VAD — прибытие судна.
containers[0].events[1].actual = falsecontainers[0].events[0].actual = falseСохраните проверку actual: true означает фактическое событие, false — плановое.
containers[0].events[0].location = 10containers[0].events[1].location = 0По event.location найдите объект с таким же id в locations. Числовые ID из SeaRates не используйте для поиска в новом ответе.
containers[0].events[0].vessel = 5containers[0].events[1].vessel = "EXAMPLE VESSEL"Получайте название судна прямо из event.vessel. Поиск в отдельном массиве судов больше не нужен.
containers[0].events[0].date = "2026-10-01 12:00:00"containers[0].events[1].date = "2026-10-01T12:00:00"Разбирайте дату с разделителем T. Если смещение часового пояса отсутствует, не добавляйте Z и не считайте время UTC.

Что сохранить отдельно

Перед отключением SeaRates выгрузите нужные прошлые ответы и историю координат. Маршрут Cargotime может содержать текущую точку и участки пути, но не заменяет архив AIS или историю запросов SeaRates.

Обновлено