cargo.run-api-docs

Синхронизация справочников и заявок

Этот документ описывает порядок синхронизации данных между внешней системой (1С/ERP/WMS) и CARGO.RUN.
Синхронизация одинакова для обоих сценариев интеграции: когда заявка создаётся в CARGO.RUN и когда она создаётся во внешней системе.


1. Общие принципы синхронизации

Синхронизация выполняется через REST API CARGO.RUN по протоколу HTTPS с использованием токена авторизации.

Каждый объект (водитель, машина, прицеп, контрагент, организация, заявка):

Поле updatedAt используется как основа для инкрементальной синхронизации.


2. Справочники, подлежащие синхронизации

2.1. Справочники, данные которых поступают из внешней системы

Эти справочники всегда считаются первичными во внешней системе:

Для них внешний идентификатор является источником истины, а CARGO.RUN — получателем.

Синхронизация выполняется через методы:

Рекомендуемая частота синхронизации: не больше чем раз в 1 минуту.


2.2. Ограничения на удаление водителей, машин и прицепов

При удалении объектов-справочников (водителей, машин, прицепов) действуют бизнес-ограничения.

Система не позволяет удалить объект, если он используется в актуальных данных, например:

В этих случаях:

Рекомендуется при интеграции:


2.3. Справочники, данные которых поступают из CARGO.RUN

Получение выполняется методом:

GET /api/catalogs/getSimple

Метод поддерживает OData-фильтры.


3. Использование справочников при создании заявок

Поля, заканчивающиеся на TypeId (например, paymentTypeId, ndsTypeId, typeId, brandTypeId) должны заполняться значениями из общих справочников.

Некорректные идентификаторы приведут к ошибке валидации.


4. Синхронизация заявок (Bid)

Заявка — основной объект интеграции.
Синхронизация выполняется по полю:

updatedAt

Существует два направления синхронизации:

  1. Внешняя система → CARGO.RUN
    (создание/обновление через /api/TruckingBids/Apply или /api/TruckingBids/Patch)

  2. CARGO.RUN → внешняя система
    (получение обновлений через /api/bids/GetListForExternal)


5. Обработка updatedAt

При сохранении заявки внешней системе необходимо:

  1. сохранить значение updatedAt у себя;
  2. при следующей синхронизации запрашивать заявки, у которых updatedAt больше сохранённого значения;
  3. если updatedAt в CARGO.RUN отличается от сохранённого — заявка изменилась, и её нужно обновить.

6. Получение списка заявок из CARGO.RUN

Основной метод для инкрементальной синхронизации:

GET /api/bids/GetListForExternal

Пример запроса

/api/bids/GetListForExternal
?$filter=updatedAt ge 2024-01-23T21:00:00Z
        and updatedAt le 2024-01-25T20:59:59Z
        and createdAt ge 2022-09-30T21:00:00Z
&$top=50
&$orderby=updatedAt
&$skip=0

Запрос возвращает заявки:


7. Обратная синхронизация: внешняя система → CARGO.RUN

Полное создание/обновление заявки

POST /api/truckingbids/Apply

Частичное обновление

POST /api/truckingbids/Patch

Запуск заявки в работу

POST /api/truckingbids/SetStatus

Отмена заявки

POST /api/bids/cancel

Возврат в черновик

POST /api/truckingbids/Revert

Удаление заявки

POST /api/bids/delete

Восстановление удалённой заявки

POST /api/bids/Restore

Принудительное закрытие заявки вручную

POST /api/truckingbids/forceComplete

8. Рекомендуемые интервалы синхронизации


9. Конфликты данных

При конфликте обновлений возможны режимы:

9.1. Автоматический

Приоритет задаётся настройками:

9.2. Ручной

Внешняя система должна поддерживать разрешение конфликтов пользователем.


10. Связанные документы