Особенности работы и ограничения
Политика опроса API
- Таймаут ответа API составляет 60 секунд.
- Один batch-запрос не должен содержать больше тысячи объектов. Если требуется передать больше данных, разделите их на несколько запросов.
- В редких случаях (менее одного процента запросов) API возвращает ошибку 504 Gateway Timeout. При получении такой ошибки отправляйте повторные запросы с растущей задержкой. Подробнее см. в разделе Ошибки сервиса.
Ограничения API
-
Точность геокодирования адресов заказов не проверяется. Адрес в текстовом виде (задается параметром address) и координаты заказа (задаются параметрами lat и lon) должны соответствовать друг другу.
Для построения маршрута используются геокоординаты. При недостаточной точности геолокации приложение может привести курьера не в ту точку, которая указана в приложении текстом. Распространенная ошибка в данных: адрес указан до дома, а геокоординаты указывают на середину улицы.
-
Каскадное удаление сущностей не поддерживается. Лишние сущности с зависимостями от других сущностей можно не удалять, они не мешают работе.
Изменения в заказах
- При переносе отмененного заказа на другой день нужно присвоить ему статус
new
. В противном случае заказ добавится в маршрут на новый день в статусеcancelled
. - При изменении заказа необходимо обновлять только измененные атрибуты. В противном случае данные, полученные от курьера, будут перезаписаны. Например, курьер уже доставил заказ, а учетная система вернула заказу статус
new
при обновлении другого поля. - После загрузки заказов нужно проверить их с помощью ресурса verification. Это позволяет убедиться в отсутствии ошибок. В противном случае курьер может не получить часть заказов. Такая проверка должна производиться ежедневно и в автономном режиме до выезда первого курьера.
- Значение
route_number
должно быть уникальным в рамках всего периода использования API. - Поля с типом
number
иinteger
отправляются без кавычек, поля с типомstring
отправляются в кавычках. Поля с типомstring
должны передаваться в кодировке UTF-8.
Формат номера телефона
- Телефон нужно указывать в формате, который поддерживается терминалом мобильного сотрудника. Например, ряд терминалов не поддерживают номера телефонов, которые начинаются на 7. На такой телефон курьер не сможет позвонить из приложения. Рекомендуется начинать телефоны с +7 или 8.
Порядок загрузки данных
Рекомендуется следующий порядок загрузки данных:
- Склады.
- Курьеры.
- Маршруты.
- Заказы.
Другой порядок загрузки может привести к ошибкам при обращении к объектам, которые еще не загружены.
Рекомендованный способ загрузки данных
Для загрузки и обновления данных рекомендуется использовать batch
-запросы, загружающие массив данных: depots-batch, couriers-batch, routes-batch, orders-batch.
Каждому загружаемому объекту присваивается:
- Уникальный номер, используемый в запросах к API Мониторинга. Записывается в полях с постфиксом
_id
, напримерdepot_id
. - Уникальный номер, совпадающий с номером в базе данных компании, выполняющей доставку. Записывается в полях с постфиксом
_number
, напримерdepot_number
.
Существующие данные при batch-загрузке обновляются.
Примечание
Каждый вызов является ACID-транзакцией. Ошибка в вызове batch-ресурса приводит к отмене всех изменений, вносимых в этом вызове.
Потери можно минимизировать, разбив данные на несколько пакетов. В этом случае будут потеряны только изменения в пакете с ошибкой.
Срок хранения данных
Данные хранятся на серверах Яндекса ограниченное время:
- Треки движения курьеров: 1 месяц от даты маршрута.
- Фотографии, присланные курьерами для подтверждения доставки: 3 месяца от даты добавления фотографии.
- Данные мониторинга (заказы, маршруты): 1 год после окончания оплачиваемого периода или периода тестирования.
- Данные для построения отчетов План / Факт: 18 месяцев.
После окончания срока хранения данные могут быть удалены без возможности восстановления.