Этот документ описывает порядок синхронизации данных между внешней системой (1С/ERP/WMS) и CARGO.RUN.
Синхронизация одинакова для обоих сценариев интеграции: когда заявка создаётся в CARGO.RUN и когда она создаётся во внешней системе.
Синхронизация выполняется через REST API CARGO.RUN по протоколу HTTPS с использованием токена авторизации.
Каждый объект (водитель, машина, прицеп, контрагент, организация, заявка):
id в CARGO.RUN;id, который должен быть сохранён во внешней системе;updatedAt, отражающее дату и время последнего изменения.Поле updatedAt используется как основа для инкрементальной синхронизации.
Эти справочники всегда считаются первичными во внешней системе:
Для них внешний идентификатор является источником истины, а CARGO.RUN — получателем.
Синхронизация выполняется через методы:
/api/Driver/Apply, /api/Driver/Delete, /api/Driver/Restore, /api/Driver/GetList/api/Car/Apply, /api/Car/Delete, /api/Car/GetList, /api/Car/GetForEdit/api/Trailer/Apply, /api/Trailer/Delete, /api/Trailer/GetList/api/CargoOwnerDictionary/Apply, /api/CargoOwnerDictionary/Delete, /api/CargoOwnerDictionary/Get/api/LegalPersons/Apply, /api/LegalPersons/Delete, /api/LegalPersons/GetListРекомендуемая частота синхронизации: не больше чем раз в 1 минуту.
При удалении объектов-справочников (водителей, машин, прицепов) действуют бизнес-ограничения.
Система не позволяет удалить объект, если он используется в актуальных данных, например:
В этих случаях:
Рекомендуется при интеграции:
PaymentType)NDSType)CargoType)CarType)TrailerType)CarBrandType)TrailerBrandType)Получение выполняется методом:
GET /api/catalogs/getSimple
Метод поддерживает OData-фильтры.
Поля, заканчивающиеся на TypeId (например, paymentTypeId, ndsTypeId, typeId, brandTypeId) должны заполняться значениями из общих справочников.
Некорректные идентификаторы приведут к ошибке валидации.
Заявка — основной объект интеграции.
Синхронизация выполняется по полю:
updatedAt
Существует два направления синхронизации:
Внешняя система → CARGO.RUN
(создание/обновление через /api/TruckingBids/Apply или /api/TruckingBids/Patch)
CARGO.RUN → внешняя система
(получение обновлений через /api/bids/GetListForExternal)
updatedAtПри сохранении заявки внешней системе необходимо:
updatedAt у себя;updatedAt больше сохранённого значения;updatedAt в 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
Запрос возвращает заявки:
24.01.2024 00:00 МСК23.01.2024 21:00:00 UTC);25.01.2024 23:59 МСК25.01.2024 20:59:59 UTC);30.09.2022 (если требуется ограничение);$top), начиная с 0 ($skip);$orderby=updatedAt).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
При конфликте обновлений возможны режимы:
Приоритет задаётся настройками:
Внешняя система должна поддерживать разрешение конфликтов пользователем.