Этот сценарий описывает процесс, в котором внешняя система (1С, ERP, WMS или другая учетная система) является источником создания заявок. CARGO.RUN принимает данные, формирует рейсы, управляет маршрутом, контролирует исполнение и возвращает статусы во внешнюю систему.
Процесс включает следующие этапы:
New (Черновик).Перед тем как создать заявку в CARGO.RUN, внешняя система должна убедиться:
cargoOwnerId,paymentTypeId,ndsTypeId,carId,driverId,bidPoints.xxxId) существуют в системе.Если справочники не синхронизированы, система вернет ошибку валидации.
Обычно внешняя система формирует заявку на основе внутренних процессов:
После формирования заявки данные приводятся к структуре JSON, соответствующей требованиям API CARGO.RUN.
Отправка выполняется запросом:
POST /api/TruckingBids/Apply
Content-Type: application/json
Authorization: Bearer <token>
Для корректности адресов рекомендуется использовать геокодер CARGO.RUN:
POST /api/Map/GetAddresses
Тело запроса:
{
"address": "<string>"
}
Метод возвращает структурированные данные:
Рекомендуется всегда использовать результаты геокодера для bidPoints.geozone.
{
"id": 0,
"cargoOwnerId": 12345,
"cargoOwnerDictionaryItemId": 10638021,
"paymentTypeId": 41,
"ndsTypeId": 40,
"price": "234000",
"cargos": [
{
"name": "ТНП",
"typeId": 707,
"extendedProperties": []
}
],
"typeOptions": [
{
"entityOptionId": 14655740,
"id": 14655282
}
],
"bidPoints": [
{
"order": 0,
"type": "LoadPoint",
"planEnterDate": "2021-01-07 04:33",
"geozone": {
"location": {
"type": "Point",
"coordinates": [
52.41153359413148,
55.71049164294613
]
},
"address": "Россия, Республика Татарстан, Набережные Челны, Транспортный проезд, 15",
"city": "Набережные Челны",
"state": "Республика Татарстан",
"county": "городской округ Набережные Челны",
"street": "Транспортный проезд",
"houseNumber": "15",
"federalDistrict": "Приволжский федеральный округ",
"radius": 0
}
},
{
"order": 1,
"type": "UnloadPoint",
"planEnterDate": "2021-01-07 13:33",
"geozone": {
"location": {
"type": "Point",
"coordinates": [
48.39303731918335,
54.30654645200388
]
},
"address": "Россия, Ульяновск, улица Минаева, 48Б",
"city": "Ульяновск",
"state": "Ульяновская область",
"county": "городской округ Ульяновск",
"street": "улица Минаева",
"houseNumber": "48Б",
"federalDistrict": "Приволжский федеральный округ",
"radius": 0
},
"cargoOwnerDictionaryItemId": null
}
],
"driver": {
"id": 16309296
},
"carOption": {
"carId": 10483431
},
"trailerOption": {
"trailerId": 17758587
}
}
id должно быть равно 0."externalId": "string"
{
"emptyMileageBid": {
"logisticReasonTypeId": 0,
"technicalReason": "string"
}
}
При порожней заявке:
После создания черновика необходимо запустить заявку:
POST /api/TruckingBids/SetStatus
Тело запроса:
{
"bidId": 0,
"status": "Started"
}
Для инкрементальной синхронизации с внешней системой используется метод:
GET /api/bids/GetListForExternal
Метод возвращает HTTP-статус 200 и массив заявок.
У каждой заявки в CARGO.RUN есть поле:
updatedAt
Это дата последнего обновления заявки.
В процессе синхронизации используется следующий алгоритм:
updatedAt попадает в заданный интервал.updatedAt.updatedAt в CARGO.RUN и внешней системе сравниваются:
http://app.cargorun.ru/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 (если необходимо ограничение по дате создания);50 заявок (параметр $top), начиная с 0 ($skip=0);updatedAt.Типовые причины ошибок при создании и обновлении заявок:
bidPoints;Рекомендуется:
Для обновления заявки поддерживаются два подхода.
POST /api/TruckingBids/Apply
Правила:
id указывается фактический идентификатор существующей заявки;POST /api/TruckingBids/Patch
Правила:
bidPoints) не поддерживается;bidPoints, включая неизменённые точки.Для отмены заявки используется:
POST /api/bids/cancel
Тело запроса:
{
"bidId": 0
}
Заявка переходит в статус «Отменена».
Для возврата активной, выполненной или отменённой заявки в статус черновика используется:
POST /api/TruckingBids/Revert
Тело запроса:
{
"bidId": 0
}
Этот шаг часто используется перед удалением заявки.
Для удаления заявки используется метод:
POST /api/bids/delete
Тело запроса:
{
"bidId": 0
}
Рекомендуемый сценарий:
/api/TruckingBids/Revert./api/bids/delete.Для восстановления ранее удалённой заявки используется:
POST /api/bids/Restore
Тело запроса:
{
"bidId": 0
}
Для принудительного закрытия заявки (в том числе с указанием факта выполнения и пробега) используется метод:
POST /api/truckingbids/forceComplete
Тело запроса:
{
"bidId": 0,
"reason": "string",
"mileage": 0,
"useOdometerMileage": true,
"bidPoints": [
{
"id": 0,
"enteredAtByLogist": "2025-05-07T07:15:04.555Z",
"loadUnloadedAtByLogist": "2025-05-07T07:15:04.555Z",
"loadUnloadStatus": "AtLoading"
}
]
}
Требуется передавать фактические данные по точкам заявки.
Для дальнейшей настройки интеграции рекомендуется: