Формирование маршрутов на день
Схема процесса импорта планирований в Мониторинг доступна по ссылке.
Перед началом рабочего дня компания, выполняющая доставку, должна загрузить информацию о маршрутах и заказах в базу данных Мониторинга. Сформированный маршрут автоматически передается в приложение Яндекс Курьер. При построении маршрута последовательность заказов курьера выстраивается автоматически с учетом данных об интервалах доставки и прогноза дорожной ситуации.
Примечание
Для работы с API Мониторинга нужно использовать ID компании. Если у вас нет ID, напишите нам.
Создание маршрутов
В API маршрут присваивается курьеру на определенную дату.
Отправьте запрос к ресурсу routes-batch. В запросе укажите информацию о заказах.
Для отправки API-запросов через Postman вы можете использовать коллекцию Routing API.
Внимание
В спецификации указаны обязательные поля для уже существующих объектов, для новых этот список шире. При добавлении новых объектов через запрос к ресурсу routes-batch
заполните поля, указанные как обязательные при запросе к ресурсу routes.
Запрос:
cURL
curl -H "Content-Type: application/json" -H "Authorization: OAuth <ваш-токен>" -X POST -d @<Путь_до_файла_в_кодировке_UTF-8> https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/routes-batch
Файл
[
{
"courier_number":"222",
"number":"23423-2000",
"date": "2017-08-08",
"depot_number":"111"
},
{
"courier_number":"224",
"number":"23423-2001",
"date": "2017-08-08",
"depot_number":"112"
}
]
cURL
curl -H "Content-Type: application/json" -H "Authorization: OAuth <ваш-OAuth-токен>" -X POST -d '[{"courier_number":"222", "number":"23423-2000", "date": "2017-08-08", "depot_number":"111"}, {"courier_number":"224", "number":"23423-2001", "date": "2017-08-08", "depot_number":"112"}]' https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/routes-batch
Результат:
{
"inserted": 2,
"updated": 0
}
Наполнение базы данных заказами
Заказы в API присваиваются маршруту. Заказы в маршруте организуются в порядке добавления. При необходимости, порядок можно изменить с помощью запроса к ресурсу orders-sequence.
Отправьте запрос к ресурсу orders-batch. В запросе укажите информацию о заказах.
Внимание
В спецификации указаны обязательные поля для уже существующих объектов, для новых этот список шире. При добавлении новых объектов через запрос к ресурсу orders-batch
заполните поля, указанные как обязательные при запросе к ресурсу orders.
Запрос:
cURL
curl -H "Content-Type: application/json" -H "Authorization: OAuth <ваш-токен>" -X POST -d @<Путь_до_файла_в_кодировке_UTF-8> https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/orders-batch
Файл
[
{
"number":"222239",
"route_number":"23423-2000",
"address":"ул. Льва Толстого, 16",
"lat": 55.7447,
"lon": 37.6728,
"customer_name": "Игорь",
"phone": "+712345678",
"status":"new",
"time_interval":"11-12"
},
{
"number":"222241",
"route_number":"23423-2001",
"address":"ул. Льва Толстого, 17",
"lat": 55.7448,
"lon": 37.6729,
"customer_name": "Ольга",
"phone": "+712345679",
"status":"new",
"time_interval":"10:00 - 11:00"
}
]
cURL
curl -H "Content-Type: application/json" -H "Authorization: OAuth <ваш-OAuth-токен>" -X POST -d '[{"number":"222239", "route_number":"23423-2000", "address":"ул. Льва Толстого, 16", "lat": 55.7447, "lon": 37.6728, "customer_name": "Игорь", "phone": "+712345678", "status":"new", "time_interval":"11-12"}, {"number":"222241", "route_number":"23423-2001", "address":"ул. Льва Толстого, 17", "lat": 55.7448, "lon": 37.6729, "customer_name": "Ольга", "phone": "+712345679", "status":"new", "time_interval":"10:00 - 11:00"}]' https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/orders-batch
Результат:
{
"inserted": 2,
"updated": 0
}
Привязка заказов к складу или другому заказу
Чтобы обозначить, где нужно забрать или куда доставить заказ, привяжите этот заказ к складу или другому заказу с помощью запроса к ресурсу nodes. Возможность привязки доступна только через API.
Для отправки API-запросов через Postman вы можете использовать коллекцию Routing API.
Заказы, которые нужно привязать, указываются в массиве value.related_orders
.
Возможны следующие типы связей:
- Заказ с типом
pickup
нужно доставить на склад. Для склада указываетсяnumber
= <номер заказа с типомpickup
> иaction
=delivery
. - Заказ с типом
delivery
нужно забрать со склада (чтобы доставить на точкуdrop_off
). Для склада указываетсяnumber
= <номер заказа с типомdelivery
> иaction
=pickup
. - Заказ с типом
delivery
нужно забрать с точкиpickup
. Для заказа с типомpickup
указываетсяnumber
= <номер заказа с типомdelivery
> иaction
=pickup
. - Заказ с типом
pickup
нужно доставить в точкуdrop-off
. Для заказа с типомdrop_off
указываетсяnumber
= <номер заказа с типомpickup
> иaction
=delivery
.
Важно
Добавлять связи можно, только если у заказов указаны соответствующие типы: pickup
, delivery
или drop_off
.
Запрос:
cURL
curl -H "Content-Type: application/json" -H "Authorization: OAuth <ваш-OAuth-токен>" -X POST "https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/routes/<id-маршрута>/nodes"
Файл
[
{
"type": "depot",
"value": {
"number": "200",
"related_orders": [
{
"number": "20 2024-03-26",
"action": "pickup"
}
]
}
},
{
"type": "depot",
"value": {
"number": "100",
"related_orders": [
{
"number": "19 2024-03-26",
"action": "pickup"
}
]
}
},
{
"type": "order",
"value": {
"address": "Москва, 3-я Рыбинская улица, 18с2",
"lat": 55.790514,
"lon": 37.660153,
"number": "19 2024-03-26",
"time_interval": "08:00:00-23:00:00"
}
},
{
"type": "order",
"value": {
"address": "Москва, Пятницкое шоссе, 23к2",
"lat": 55.847285,
"lon": 37.367544,
"number": "20 2024-03-26",
"time_interval": "08:00:00-23:00:00"
}
},
{
"type": "order",
"value": {
"address": "Московская область, Реутов, Транспортная улица, 11",
"lat": 55.768182,
"lon": 37.881291,
"number": "21 2024-03-26",
"time_interval": "08:00:00-23:00:00",
"type": "pickup",
"related_orders": [
{
"number": "22 2024-03-26",
"action": "pickup"
}
]
}
},
{
"type": "order",
"value": {
"address": "Октябрьская ул., 103, Москва, Россия, 127521",
"lat": 55.798859,
"lon": 37.61218,
"number": "22 2024-03-26",
"time_interval": "08:00:00-23:00:00",
"type": "delivery"
}
}
]
cURL
curl -H "Content-Type: application/json" -H "Authorization: OAuth <ваш-OAuth-токен>" -X POST -d '[{"type":"depot","value":{"number":"200","related_orders":[{"number":"20 2024-03-26","action":"pickup"}]}},{"type":"depot","value":{"number":"100","related_orders":[{"number":"19 2024-03-26","action":"pickup"}]}},{"type":"order","value":{"address":"Москва, 3-я Рыбинская улица,18 с2","lat":55.790514,"lon":37.660153,"number":"19 2024-03-26","time_interval":"08:00:00-23:00:00"}},{"type":"order","value":{"address":"Москва, Пятницкое шоссе, 23 к2","lat":55.847285,"lon":37.367544,"number":"20 2024-03-26","time_interval":"08:00:00-23:00:00"}},{"type":"order","value":{"address":"Московская область ,Реутов, Транспортная улица, 11","lat":55.768182,"lon":37.881291,"number":"21 2024-03-26","time_interval":"08:00:00-23:00:00","type":"pickup","related_orders":[{"number":"22 2024-03-26","action":"pickup"}]}},{"type":"order","value":{"address":"Октябрьская ул.,103, Москва, Россия, 127521","lat":55.798859,"lon":37.61218,"number":"22 2024-03-26","time_interval":"08:00:00-23:00:00","type":"delivery"}}]' "https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/routes/<id-маршрута>/nodes"
Результат:
{}
Чтобы посмотреть, какие связи заказов и складов созданы, отправьте запрос к ресурсу route-info.
Проверка загруженных данных
Чтобы проверить, что все данные загружены успешно, отправьте запрос к ресурсу verification. Ответ от сервера содержит информацию о всех заказах на указанную дату. Полученную информацию можно сравнить с информацией в базе данных компании, выполняющей доставку.
Запрос:
curl -H "Authorization: OAuth <ваш-OAuth-токен>" -X GET https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/verification?date=2018-01-01
Результат:
[
{
"order_id": "20170513-713",
"time_interval": "12-23",
"route_number": "23423-2000",
"courier_id": "номер-вашего-курьера",
"status": "finished",
"phone": "+712345678",
"address": "ул. Льва Толстого, 16",
"lat": 55.7448,
"lon": 37.6729
},
{
"order_id": "20170513-329",
"time_interval": "12-52",
"route_number": "23423-2001",
"courier_id": "8272",
"status": "finished",
"phone": "+712345679",
"address": "ул. Льва Толстого, 17",
"lat": 55.7448,
"lon": 37.6729
}
]