Формирование маршрутов на день

Схема процесса импорта планирований в Мониторинг доступна по ссылке.

Перед началом рабочего дня компания, выполняющая доставку, должна загрузить информацию о маршрутах и заказах в базу данных Мониторинга. Сформированный маршрут автоматически передается в приложение Яндекс Курьер. При построении маршрута последовательность заказов курьера выстраивается автоматически с учетом данных об интервалах доставки и прогноза дорожной ситуации.

Примечание

Для работы с 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
  }
]
Написать в службу поддержки