openapi: 3.0.3
info:
title: VRt.Universal [UV]
version: 6.14.2135
license:
name: Proprietary
url: https://veeroute.ru/
termsOfService: https://veeroute.ru/resources/terms_of_service
contact:
name: Veeroute Support Team
email: servicedesk@veeroute.com
x-logo:
url: ../images/universal.svg
backgroundColor: '#FAFAFA'
altText: VRt.Universal
description: '# Описание
Программный интерфейс для универсального планирования рейсов.
## Возможности
* Возможность забора груза из любой локации
* Возможность разгрузки в любой локации
* Парные заявки нескольких типов: `PICKUP` (погрузка), `DROP` (выгрузка)
* Одиночные заявки нескольких типов: `DROP_FROM_BOX` (выгрузка груза, который
уже находится в кузове), `PICKUP_TO_BOX` (забор груза в кузов без последующей
выгрузки), `WORK` (работа на локации без перемещения груза)
* Комплексный заказ может состоять из любого числа заявок любых типов
* Транспорт и исполнители разделены на разные сущности, при планирование происходит
оптимальное назначение исполнителя на транспорт
* У транспорта несколько отсеков - каждый из которых может вмещать груз и обладает
собственными характеристиками
* Учёт совместимости груза с транспортом по параметрам габарита груза (длина,
ширина, высота, дополнительные параметры вместимости)
* Учёт совместимостей груз-отсек транспорта (возможность учесть свойства отсека:
холодильник, термо-сумка, крепежи и т.п)
* Заявки-заменители, т.е. возможность выполнить одну из заявок-заменителей, выбор
которой происходит на основе её географического местоположения и временного окна
## Поддержка ограничений
Ограничения на **исполнителя**:
* Место старта/финиша
* Учет передвижения исполнителя до точки старта транспорта
* График доступности исполнителя - список временных окон, в которые исполнитель
может совершать перемещения и совершать работу на локациях
* Максимальная продолжительность работы исполнителя в течение заданного временного
периода
Ограничения на **транспорт**:
* Место старта/финиша
* График доступности транспорта - список временных окон, в которые транспорт может
совершать перемещения
* Максимальная протяженность маршрута
* Несколько отсеков в транспорте, каждый со своими параметрами
* Ограничение сверху на суммируемые вместимости (вес, объем, количество заказов,
количество заявок)
Ограничения на **заказ**:
* Жесткие временные окна
* Возможность указать разные допустимые окна работы локации и окна желаемого выполнения
заявки
* Учет порядка исполнения заявок в пределах маршрута
* Список желаемых временных окон выполнения с разными стоимостями для каждого
из них
## Используемые совместимости
Сущности являются совместимыми, если список свойств одной сущности полностью покрывает
список требований другой сущности (наоборот для `performer_blacklist` - списки
не должны пересекаться).
Поддерживаемые совместимости:
| Название | Требования | Свойства |
|-------------------------|----------------------------------|------------------------------|
| Заказ - Исполнитель | order.performer_restrictions | performer.performer_features
|
| Заказ - Не Исполнитель | order.performer_blacklist | performer.performer_features
|
| Груз - Отсек | order.cargo.box_restrictions | transport.box.box_features |
| Локация - Транспорт | location.transport_restrictions | transport.transport_features
|
| Транспорт - Исполнитель | transport.performer_restrictions | performer.performer_features
|
| Исполнитель - Транспорт | performer.transport_restrictions | transport.transport_features
|
| Заказ - Заказ | order.order_restrictions | order.order_features |
| Груз - Груз | cargo.cargo_restrictions | cargo.cargo_features |
Примеры бизнес правил:
| Название | Пример бизнес-правила |
|-------------------------|---------------------------------------------------------------------------------------|
| Заказ - Исполнитель | Для выполнения заказа водитель должен иметь особое
разрешение |
| Заказ - Не Исполнитель | Водитель в черном списке |
| Груз - Отсек | Для перевозки замороженной продукции необходим отсек
с особым температурным режимом |
| Локация - Транспорт | Ограничения на высоту транспорта |
| Транспорт - Исполнитель | Для грузового транспорта водитель должен иметь категорию
`C` |
| Исполнитель - Транспорт | Водителю разрешено работать только на определенном
транспорте |
| Заказ - Заказ | Нельзя перевозить рыбу и фрукты в одном отсеке |
| Груз - Груз | Два груза нельзя одновременно размещать в одном отсеке
транспорта, по очереди - можно |
## Назначения
Механизм назначений (`hardlinks`) необходим для указания требований по нахождению
заказов, исполнителя и транспорта в одном рейсе.
Назначение гарантирует нахождения сущностей в одном рейсе и не гарантирует факт
планирования сущности.
Например, если исполнитель не успевает выполнить заказ, то он не запланируется,
но назначится на рейс (попадет в `waitlist`).
Также назначение не отменяет указанные совместимости (и штрафы за нарушение совместимостей).
Например, если заказ не может быть выполнен исполнителем, он не запланируется,
но назначится на рейс (попадет в `waitlist`).
## Размещение грузов в кузове
Список способностей объекта вращаться (с шагом в 90 градусов):
* `ALL` - можно поворачивать по любой оси любое количество раз
* `YAW` - можно повернуть один раз по вертикальной оси (вокруг своей оси)
* `PITCH` - можно повернуть один раз по поперечной оси (поставить вертикально)
* `ROLL` - можно повернуть один раз по продольной оси (положить на бок)

## Модель рейса
Рейс описывается списком состояний исполнителя, при этом одновременно исполнитель
может находится в нескольких состояниях (например быть внутри рабочего временного
окна локации и выполнять заказ на этой же локации).
Возможные значения флагов, отвечающих за географическое положение:
* `AROUND_LOCATION` - исполнитель находится рядом с локацией - в процессе парковки
или выезда с нее.
* `INSIDE_LOCATION` - исполнитель находится на локации.
Возможные значения флагов, отвечающих за нахождения во временных окнах:
* `INSIDE_WORKING_WINDOW` - исполнитель находится внутри рабочего временного окна.
* `INSIDE_LOCATION_WINDOW` - исполнитель находится внутри времени работы локации.
* `INSIDE_EVENT_HARD_WINDOW` - исполнитель находится внутри жесткого временного
окна.
* `INSIDE_EVENT_SOFT_WINDOW` - исполнитель находится внутри мягкого временного
окна.
Возможные значения флагов, отвечающих за действия:
* `ON_DEMAND` - исполнитель работает над заявкой.
* `WAITING` - исполнитель находится в режиме ожидания.
* `RELOCATING` - исполнитель перемещается к следующей остановке.
* `BREAK` - исполнитель находится на перерыве.
### Пример маршрута с множеством состояний в каждый момент времени
| Время | Набор активных флагов |
Локация / Заказ / Заявка / Событие | Комментарий |
|:------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------|:----------------------------------------------------------------|
| 10:00 | INSIDE_LOCATION
AROUND_LOCATION |
2 / - / - / - | Стартовая локация |
| 10:10 | RELOCATING |
- / - / - / - | Едем к первому заказу |
| 10:20 | AROUND_LOCATION |
2 / - / - / - | Подъехали к первому заказу |
| 10:40 | AROUND_LOCATION
INSIDE_LOCATION
WAITING |
2 / - / - / - | Припарковались |
| 11:00 | AROUND_LOCATION
INSIDE_LOCATION
INSIDE_LOCATION_WINDOW
WAITING
INSIDE_EVENT_HARD_WINDOW |
2 / - / - / - | Дождались начала окна локации и одновременно
доступности заказа |
| 11:25 | AROUND_LOCATION
INSIDE_LOCATION
INSIDE_LOCATION_WINDOW
ON_DEMAND
INSIDE_WORKING_WINDOW
INSIDE_EVENT_HARD_WINDOW |
2 / 1 / 2 / 3 | Дождались смены исполнителя |
| 11:30 | AROUND_LOCATION
INSIDE_LOCATION
INSIDE_LOCATION_WINDOW
ON_DEMAND
INSIDE_WORKING_WINDOW
INSIDE_EVENT_HARD_WINDOW
INSIDE_EVENT_SOFT_WINDOW
| 2 / 1 / 2 / 3 | Пока работали - случилось мягкое окно |
| 11:40 | AROUND_LOCATION
INSIDE_LOCATION
INSIDE_LOCATION_WINDOW
INSIDE_WORKING_WINDOW |
2 / - / - / - | Закончили работать |
| 11:45 | AROUND_LOCATION
INSIDE_WORKING_WINDOW |
2 / - / - /- | Выехали с парковки |
| 11:45 | RELOCATING
INSIDE_WORKING_WINDOW |
- / - / - / - | Едем на следующий заказ |
## Конфигурация планирования
Для каждого планирования есть возможность указать конфигурацию планирования, которая
определяет целевую функцию, желаемое качество маршрутов и скорость расчета.
Название конфигурации планирования передается в поле `trips_settings.configuration`.
Основные конфигурации:
| Название | Задача |
|---------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **optimize_distance** | Расставить как можно больше заказов, затем
оптимизировать суммарный пробег (количество транспорта выбирается исходя из пробега),
используется по умолчанию |
| **optimize_transports** | Расставить как можно больше заказов, при этом
использовать как можно меньше транспорта, при прочих равных оптимизировать время
работы исполнителей |
| **optimize_locality_grouping** | Расставить как можно больше заказов, при этом
стремиться оптимизировать визуальную группировку маршрутов, но не их количество |
| **optimize_cars_then_distance** | Расставить как можно больше заказов, затем
оптимизировать количество транспорта, затем пробег |
| **optimize_time** | Расставить как можно больше заказов, затем
оптимизировать суммарное время работы исполнителей |
| **optimize_cars_then_time** | Расставить как можно больше заказов, затем
оптимизировать количество транспорта, затем суммарное время работы исполнителей |
| **optimize_money** | Оптимизировать величину "прибыль - затраты",
складывается из наград за заявки и расходов на исполнителей и транспорты (оптимизируемая
величина неотрицательна) |
Дополнительные конфигурации:
| Название | Задача |
|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **visual_grouping** | Расставить как можно
больше заказов, при этом использовать как можно меньше транспорта и маршруты должны
быть визуально сгруппированы |
| **optimize_visual_grouping** | Расставить как можно
больше заказов, затем равномерно распределить заказы с учетом зон транспортной
доступности (как visual_grouping, но визуальная группировка рассчитывается иначе)
|
| **optimize_cars_then_locality_grouping** | Расставить как можно
больше заказов, затем оптимизировать количество транспорта, затем визуальную группировку
маршрутов |
| **optimize_cars_then_single_location_grouping_sequenced** | Расставить как можно
больше заказов, затем оптимизировать количество машин, а затем надёжность |
В дополнение к существующим вариантам планирования возможно создание целевой функции
непосредственно под бизнес-процессы клиента ([запросить конфигурацию](mailto:servicedesk@veeroute.com)).
Для разработки рекомендуется использовать **optimize_cars_then_distance**, так
как данная конфигурация не требует детального подбора тарифов и стоимостей заказов.
## Валидация данных
Валидация входных данных состоит из нескольких этапов, которые описаны ниже.
### 1. Проверка по схеме
Если запрос не проходит по схеме, то планирование не запускается целиком и такая
ошибка возвращается вместе с кодом 400 в `schema_errors`.
Мы рекомендуем проверять запрос по схеме (или yaml-файлу) перед отправкой на сервер.
### 2. Проверка на логические ошибки, которые не позволяют продолжить планирование
Корректные по схеме данные проходят второй этап проверки на возможность запуска
планирования.
Пример ошибок на данном этапе - ключи, ведущие на пустые сущности, или если все
заказы несовместимы со всеми исполнителями, т.е. то, что делает задачу планирования
бессмысленной.
Данные ошибки возвращаются вместе с кодом 400 в `logical_errors`.
### 3. Проверка на логические ошибки, которые не позволяют продолжить планирование
На третьем этапе происходит проверка каждой сущности отдельно.
Все сущности, которые не прошли проверку - вырезаются из исходной задачи и не
отправляются на планирование.
В зависимости от настройки `treat_warnings_as_errors` результаты данного типа
проверки возвращаются в `warnings` вместе с кодом 400, либо вместе с результатом
планирования.
### 4. Проверки в процессе планирования
Часть проверок можно осуществить только в процессе планирования.
Например - что согласно указанным тарифам и по актуальному прогнозу пробок физически
невозможно доехать до определенной точки.
Результаты данных проверок возвращаются в `warnings` либо вместе с результатом
планирования.
## Диаграмма сущностей

# Xlsx
Описание формата VRt.Universal XLSX для импорта\экспорта данных.
Данный формат является полным отображением json-модели данных и используется для:
* исходных данных
* настроек процессов
* результатов расчета
* статистики по результату расчета
Ниже представлено описание каждого листа отдельно, **жирным** выделены ключи.
## Локации
Название листа `locations`.
Список локаций, которые используются в заказах и сменах.
| Название | Описание |
Примечание |
|---------------------------------------------|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------|
| **key** | Ключ локации, уникальный идентификатор |
Уникальный ключ в рамках расчета |
| departure_duration | Время на отъезд от локации, временной
промежуток | |
| geopoint.latitude | Географическая широта в градусах | |
| geopoint.longitude | Географическая долгота в градусах | |
| work_windows.from | Начало временного окна работы
локации | Обязательно, если указан `to`. Если список пустой
или не указан - локация работает без ограничений по времени. |
| work_windows.to | Окончание временного окна работы
локации | Обязательно, если указан `from`. Если список пустой
или не указан - локация работает без ограничений по времени. |
| compatibilities
.transport_restrictions | Список необходимых требований
к транспорту | Используется для проверки совместимости транспорта
локацией. |
| attributes.{key} | Атрибуты, используются для указания
служебной информации | `{key}` - ключ атрибута. Можно заводить несколько. Эти
данные не учитываются в планировании. |
Описываемый объект:
## Исполнители
Название листа `performers`.
Список доступных исполнителей.
| Название | Описание |
Примечание |
|------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
| **key** | Ключ
исполнителя, уникальный идентификатор | |
| own_transport_type | Тип
транспорта |
Если не указан, по умолчанию, проставляется `CAR`. |
| **shifts.key** | Ключ
смены, уникальный идентификатор | |
| shifts.start_location_key | Ключ
начальной локациями |
Если ключ не задан - то путь перформера начинается на первом заказе. |
| shifts.finish_location_key | Ключ
финальной локации |
Если ключ не задан - то путь перформера завершается на последнем заказе. |
| shifts.max_locations | Ограничение
количества уникальных локаций в одном рейсе, включая локации старта и финиша |
Если параметр не указан или указан как `null` - то количество локаций не ограничено. |
| shifts.max_stops | Ограничение
количества остановок в одном рейсе, включая локации старта и финиша |
Если параметр не указан или указан как `null` - то количество остановок не ограничено. |
| shifts.attributes.{key} | Атрибуты.
Используются для указания служебной информации |
`{key}` - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в
планировании. |
| shifts.availability_time.from | Начало
временного окна смены |
В которое исполнитель может выполнять работу на локациях и осуществлять перемещение
между локациями. |
| shifts.availability_time.to | Окончание
временного окна смены |
В которое исполнитель может выполнять работу на локациях и осуществлять перемещение
между локациями. |
| shifts.working_time.from | Начало
рабочего временного окна |
В которые исполнитель может выполнять работу на локациях, должно быть внутри временного
окна смены. |
| shifts.working_time.to | Окончание
рабочего временного окна |
В которые исполнитель может выполнять работу на локациях, должно быть внутри временного
окна смены. |
| shifts.tariff
.cost_per_shift | Цена
за использование смены, денежная единица |
По умолчанию: `0.001` |
| shifts.tariff
.max_penalty_cost | Максимальная
сумма штрафов, которую может получить исполнитель в рамках данной смены, денежная
единица. | Если сумма не задана или равна `null` - исполнитель не может нарушать
ограничения. |
| shifts.tariff
.constraints.stage_length | Длина
оплачиваемого периода, временной промежуток |
По умолчанию: `525960` |
| shifts.tariff
.constraints.cost_per_unit | Стоимость
внутри оплачиваемого периода, денежная единица за секунду работы |
По умолчанию: `0.001` |
| shifts.work_and_rest_rules
.first_break
.max_work_duration_sum | Суммарное
время работы, после которого необходимо сделать перерыв | |
| shifts.work_and_rest_rules
.first_break
.duration | Продолжительность
перерыва | |
| compatibilities
.performer_features | Список
свойств исполнителя |
Используется для проверки совместимости исполнителя с заказами и транспортом. |
| compatibilities
.transport_restrictions | Список
необходимых требований к транспорту |
Используется для проверки совместимости исполнителя с транспортом. |
| limits.max_work_shifts | Ограничение
на рабочую загрузку исполнителя |
Ограничение количества смен исполнителя в одном планировании. |
| attributes.{key} | Атрибуты,
используются для указания служебной информации |
`{key}` - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в
планировании. |
Описываемый объект:
## Транспорт
Название листа `transports`.
Список доступного транспорта.
| Название | Описание |
Примечание |
|---------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **key** | Ключ транспорта уникальный
идентификатор | |
| transport_type | Тип транспорта |
Если не указан, по умолчанию, проставляется `CAR` |
| **boxes.key** | Список отсеков транспорта,
которые могут вмещать груз |
Обязательно,если в задаче присутствуют заказы с демандами `PICKUP` и `DROP` |
| **shifts.key** | Ключ смены, уникальный идентификатор | |
| shifts.start_location_key | Ключ начальной локации. |
Если ключ не задан - то путь транспорта начинается на первом заказе |
| shifts.finish_location_key | Ключ финальной локации |
Если ключ не задан - то путь транспорта завершается на последнем заказе |
| shifts.attributes.{key} | Атрибуты. Используются для
указания служебной информации |
`{key}` - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в
планировании |
| shifts.availability_time.from | Начало временного окна смены |
В которое транспорт может осуществлять перемещение между локациями и использоваться
исполнителем в работах на локациях |
| shifts.availability_time.to | Окончание временного окна
смены |
В которое транспорт может осуществлять перемещение между локациями и использоваться
исполнителем в работах на локациях |
| shifts.working_time.from | Начало рабочего временного
окна |
В которые транспорт может использоваться исполнителем в работах на локациях, должно
быть внутри временного окна смены |
| shifts.working_time.to | Окончание рабочего временного
окна |
В которые транспорт может использоваться исполнителем в работах на локациях, должно
быть внутри временного окна смены |
| shifts.tariff
.cost_per_shift | Цена за использование смены,
денежная единица |
По умолчанию: `0.001` |
| shifts.tariff
.max_penalty_cost | Максимальная сумма штрафов |
По умолчанию: `0`. Которую может получить транспорт в рамках данной смены, денежная
единица. Если сумма не задана или равна null - транспорт не может нарушать ограничения. |
| shifts.tariff
.constraints.stage_length | Длина оплачиваемой части
пути, в метрах |
По умолчанию: `100000000` |
| shifts.tariff
.constraints.cost_per_unit | Стоимость внутри оплачиваемой
части пути |
Денежная единица за один метр. По умолчанию: `0.001` |
| shifts.tariff
.transportation_cost.mass | Стоимость перемещения 1
единицы массы груза на 1 метр |
В условных денежных единицах |
| shifts.tariff
.transportation_cost.volume | Стоимость перемещения 1
единицы объема груза на 1 метр |
В условных денежных единицах |
| shifts.tariff
.transportation_cost.capacity_a | Стоимость перемещения 1
единицы доп.параметра A груза на 1 метр |
В условных денежных единицах |
| shifts.tariff
.transportation_cost.capacity_b | Стоимость перемещения 1
единицы доп.параметра B груза на 1 метр |
В условных денежных единицах |
| shifts.tariff
.transportation_cost.capacity_c | Стоимость перемещения 1
единицы доп.параметра C груза на 1 метр |
В условных денежных единицах |
| compatibilities
.transport_features | Список свойств транспорта |
Используется для проверки совместимости транспорта с локациями и исполнителями |
| compatibilities
.performer_restrictions | Список требований транспорта
к исполнителю |
Используется для проверки совместимости с исполнителем |
| limits.max_boxes | Ограничение максимального
количества используемых отсеков транспорта в одном рейсе |
Если параметр не указан или указан как `null` - то количество отсеков не ограничено.
Ограничение не должно превышать количество отсеков |
| limits.max_capacity.mass | Параметр дополнительно ограничивает
максимально возможную загрузку транспорта по массе суммарно по всем отсекам |
Масса в килограммах, применимо только если у транспорта больше одного отсека,
параметр не должен быть меньше вместимости любого отсека. |
| limits.max_capacity.volume | Параметр дополнительно ограничивает
максимально возможную загрузку транспорта по объему суммарно по всем отсекам |
Объем в кубических метрах, применимо только если у транспорта больше одного отсека,
параметр не должен быть меньше вместимости любого отсека. |
| limits.max_capacity.capacity_a | Параметр дополнительно ограничивает
максимально возможную загрузку транспорта по доп.параметру A суммарно по всем
отсекам | Дополнительный параметр вместимости (A) для измерения грузов и отсеков
в альтернативных единицах измерения. Например, для учета грузов в штуках (у груза
данный параметр равен единице, у отсека - максимальному количеству вмещаемых грузов)
|
| limits.max_capacity.capacity_b | Параметр дополнительно ограничивает
максимально возможную загрузку транспорта по доп.параметру B суммарно по всем
отсекам | Дополнительный параметр вместимости (B) для измерения грузов и отсеков
в альтернативных единицах измерения. |
| limits.max_capacity.capacity_c | Параметр дополнительно ограничивает
максимально возможную загрузку транспорта по доп.параметру C суммарно по всем
отсекам | Дополнительный параметр вместимости (C) для измерения грузов и отсеков
в альтернативных единицах измерения. |
| attributes.{key} | Атрибуты, используются для
указания служебной информации |
`{key}` - ключ атрибута. Можно заводить несколько. Эти данные не учитываются в
планировании. |
Описываемый объект:
## Кузова
Название листа `transports.boxes`.
Список отсеков транспорта, которые могут вмещать груз.
Таблица обязательна, если в расчете есть заказы с заявками типов `PICKUP` и `DROP`.
В описании отсеков обязательны те поля, которые описывают грузы.
| Название | Описание |
Примечание |
|-----------------------------------------------|-----------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **key** | Ключ отсека |
Уникальный идентификатор, используется для идентификации размещения грузов по
отсекам. |
| capacity.mass | Масса, кг |
Ограничение по массе, которое может единовременно находиться в отсеке |
| capacity.volume | Объем, м3 |
Ограничение по объему, которое может единовременно находиться в отсеке |
| capacity.capacity_a | Дополнительный параметр вместимости
(A) | Для измерения грузов и отсеков в альтернативных единицах измерения. Например,
для учета грузов в штуках (у груза данный параметр равен единице, у отсека - максимальному
количеству вмещаемых грузов) |
| capacity.capacity_b | Дополнительный параметр вместимости
(B) | Для измерения грузов и отсеков в альтернативных единицах измерения. |
| capacity.capacity_c | Дополнительный параметр вместимости
(C) | Для измерения грузов и отсеков в альтернативных единицах измерения. |
| compatibilities
.width | Ширина в метрах | |
| compatibilities
.height | Высота в метрах | |
| compatibilities
.length | Длина в метрах | |
| compatibilities
.box_features | Список свойств отсека |
По оценивается возможность перевозки груза в данном отсеке |
| limits
.max_one_cargo_capacity.mass | Масса в килограммах |
Ограничение по полям `capacity` для одного груза |
| limits
.max_one_cargo_capacity.volume | Объем в кубических метрах |
Ограничение по полям `capacity` для одного груза |
| limits
.max_one_cargo_capacity.capacity_a | Дополнительный параметр вместимости
(A) | Ограничение по полям `capacity` для одного груза |
| limits
.max_one_cargo_capacity.capacity_b | Дополнительный параметр вместимости
(B) | Ограничение по полям `capacity` для одного груза |
| limits
.max_one_cargo_capacity.capacity_c | Дополнительный параметр вместимости
(C) | Ограничение по полям `capacity` для одного груза |
Описываемый объект:
## Заказы
Название листа `orders`.
Список заказов.
| Название | Описание |
Примечание |
|----------------------------------------------------|---------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
| **key** | Ключ заказа |
Повторяющийся ключ заказа означает заявки одного заказа |
| **cargos.key** | Список грузов |
Может содержать один груз для `DROP`, список для `PICKUP`, пустой для `WORK`. |
| **demands.key** | Ключ заявки, уникальный
идентификатор | |
| demands.demand_type | Тип заявки |
Загрузка - `PICKUP`, выгрузка - `DROP`, работа на локации - `WORK`. |
| demands.target_cargos | Список ключей грузов |
Для `PICKUP`, один ключ груза для `DROP`, пустой ключ для `WORK` |
| demands.precedence_in_trip | Приоритет внутри рейса |
0 - приоритет не учитывается. По умолчанию: `0`. |
| demands.precedence_in_order | Приоритет внутри заказа |
0 - приоритет не учитывается. По умолчанию: `0`. |
| demands
.possible_events.key | Ключ события, уникальный
идентификатор | Описание объекта временного окна и локаций,
в котором возможно выполнение заявки |
| demands
.possible_events.location_key | Ключ локации, в которой
возможно данное событие | |
| demands
.possible_events.duration | Время выполнения события | |
| demands
.possible_events.reward | Вознаграждение за выполнение
данного события | |
| demands
.possible_events.hard_time_window.from | Начало жесткого временного
окна | |
| demands
.possible_events.hard_time_window.to | Конец жесткого временного
окна | |
| demands
.possible_events.soft_time_window.from | Начало мягкого временного
окна | |
| demands
.possible_events.soft_time_window.to | Конец мягкого временного
окна | |
| demands
.attributes.{key} | Атрибуты. Используются
для указания служебной информации | `{key}` - ключ атрибута. Можно заводить
несколько. Эти данные не учитываются в планировании. |
| compatibilities
.order_features | Список свойств заказа | |
| compatibilities
.order_restrictions | Список требований к заказу,
выполняемому в этом же рейсе | |
| compatibilities
.performer_restrictions | Список необходимых требований
к исполнителю | Используется для проверки совместимости исполнителя
и заказа (работы). |
| compatibilities
.performer_blacklist | Список требований, наличие
которых у исполнителя не допустимо | Используется для проверки совместимости исполнителя
и заказа (работы). Данный список не должен пересекаться с `performer_restrictions`
|
| attributes.{key} | Атрибуты, используются
для указания служебной информации | `{key}` - ключ атрибута. Можно заводить
несколько. Эти данные не учитываются в планировании. |
Описываемый объект:
## Грузы
Название листа `orders.cargos`.
Список грузов. Может содержать один груз для `DROP`, список для `PICKUP`, пустой
для `WORK`.
Таблица не обязательна, если все заявки имеют тип `WORK`.
| Название | Описание |
Примечание |
|-----------------------------------------|-----------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **key** | Ключ груза, уникальный идентификатор | |
| capacity.mass | Масса в килограммах | |
| capacity.volume | Объем в кубических метрах | |
| capacity.capacity_a | Дополнительный параметр вместимости
(A) | Для измерения грузов и отсеков в альтернативных единицах измерения. Например,
для учета грузов в штуках (у груза данный параметр равен единице, у отсека - максимальному
количеству вмещаемых грузов). |
| capacity.capacity_b | Дополнительный параметр вместимости
(B) | |
| capacity.capacity_c | Дополнительный параметр вместимости
(C) | |
| compatibilities
.width | Ширина в метрах |
Используется для проверки вместимости в отсек транспорта по ширине. |
| compatibilities
.height | Высота в метрах |
Используется для проверки вместимости в отсек транспорта по высоте |
| compatibilities
.length | Длина в метрах |
Используется для проверки вместимости в отсек транспорта по длине |
| compatibilities
.rotation | Список способностей объекта вращаться |
Шаг вращения 90 градусов. Если список пустой - объект вращать запрещено. Доступные
значения: `ALL`, `YAW`, `PITCH`, `ROLL` |
| compatibilities
.box_restrictions | Список требования к отсеку транспорта | |
| compatibilities
.cargo_features | Список свойств груза |
Используется для проверки совместимости груза с другими грузами. Несовместимые
грузы не могу находится одновременно в одном отсеке транспорта |
| compatibilities
.cargo_restrictions | Список необходимых требований к грузу |
Используется для проверки совместимости груза с другими грузами. Несовместимые
грузы не могу находится одновременно в одном отсеке транспорта |
Описываемый объект:
## Назначения
Название листа `hardlinks`.
Список назначений.
Описываемый объект:
## Рейсы
Название листа `trips`.
Список рейсов.
Описываемый объект:
## Факты
Название листа `facts`.
Список фактов.
Описываемый объект:
## Настройки планирования
Название листа `plan_settings`.
Настройки планирования.
Описываемый объект:
## Настройки актуализации
Название листа `actualize_settings`.
Настройки актуализации.
Описываемый объект:
## Настройки перепланирования
Название листа `replan_settings`.
Настройки перепланирования.
Описываемый объект:
'
servers:
- url: https://api.edge.veeroute.tech
description: Окружение для интеграции и ознакомления с новой функциональностью
- url: https://api.prod.veeroute.com
description: Основное окружение
security:
- ApiKeyAuth: []
tags:
- name: Plan
description: 'Планирование - создание рейсов, которые учитывают все заданные ограничения,
на основе данных о заказах, исполнителях и транспорте.
Запросы на планирования возможно выполнять в синхронном (для тестирования) и асинхронном
(для основного использования) режимах.
'
- name: Actualize
description: 'Актуализация рейсов - обновление планового времени выполнения заказов
с учетом фактов и без изменения порядка обьезда.
Актуализация проходит в три этапа - проверка, применение фактов, обновление времен
у невыполненных состояний рейсов.
Чтобы получить результат применения фактов к исходной задаче воспользуйтесь [очисткой
данных для актуализации](#operation/run_actualize_refining).
Учет текущего времени `current_time`:
* Учитываются только те факты, которые произошли позже `current_time`.
* Минимальное время всех состояний вычисляемых рейсов берется из `current_time`.
Учет фактов о заказах:
* Если у заказа выполнены все заявки - он считается завершенным.
* Если заказ завершен или отменен - он, и сущности на которые ссылается только
он, удаляются из данных для актуализации.
* Если у заказа выполнена заявка с типом `PICKUP`, то соответствующая ей заявка
с типом `DROP` будет преобразована в заявку с типом `DROP_FROM_BOX`.
* Факт о заказе имеет больший приоритет, чем факты о заявках по этому заказу (если
факты о заявках противоречат факту о заказе - они не будут учтены).
* На каждый рейс разрешен только один незакрытый факт `DEMAND_START` (закрывается
фактом `DEMAND_DONE`) - так как исполнитель может в один момент времени выполнять
только одну заявку.
* Если есть факт о работе по заявке, которая противоречит плановому порядку в
указанном рейсе - будет сперва завершена эта заявка, затем продолжится выполнение
рейса согласно запланированному порядку.
Учет фактов об исполнителе:
* Список фактов о нахождении исполнителя в определенной локации.
* Если рейс начался (время факта позже планового времени начала рейса) - транспорт
считается в той же локации, что и исполнитель.
* При наличии нескольких фактов учитывается только самый поздний по полю `time`.
* Локация, на которую ссылается факт, должна находится в списке `locations`.
Учет существующих рейсов:
* Удаляются сущности, на которые не ссылаются входные рейсы - локации, исполнители,
транспорт, жесткие связи, заказы, заявки, события.
* Назначенные на рейс смены исполнителя и транспорта не могут использоваться в
других рейсах.
Полученные в результате актуализации рейсы содержат только те работы, которые
осталось выполнить.
'
- name: Replan
description: 'Перепланирование - создание новых рейсов на основе уже существующих
рейсов с учетом фактов.
Перепланирование проходит в три этапа - проверка, применение фактов и создание
ограничений для планирования на базе существующих рейсов, планирование.
Чтобы получить результат применения фактов к исходной задаче воспользуйтесь [очисткой
данных для перепланирования](#operation/run_replan_refining).
Учет текущего времени `current_time`:
* Учитываются только те факты, которые произошли позже `current_time`.
* Минимальное время всех состояний вычисляемых рейсов берется из `current_time`.
'
- name: Convert
description: 'Конвертация данных.
'
- name: System
description: 'Системные функции.
Вспомогательный функционал, общий для всех сервисов.
'
externalDocs:
description: Основной сайт
url: https://veeroute.ru/
paths:
/universal/plan/calculation:
post:
tags:
- Plan
summary: Планирование (SYNC)
description: 'Синхронный метод для создания рейсов.
Данный метод рекомендуется только для тестового использования и ручного запуска
расчетов на небольшом объеме данных.
Для боевой среды рекомендуется использовать [асинхронный метод](#operation/run_plan_calculation_async).
'
operationId: run_plan_calculation
requestBody:
description: Новый запрос на планирование.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/plan_task'
examples:
PlanTaskTokyo:
$ref: '#/components/examples/PlanTaskTokyo'
PlanTaskMoscow:
$ref: '#/components/examples/PlanTaskMoscow'
PlanTaskDenver:
$ref: '#/components/examples/PlanTaskDenver'
PlanTaskBerlin:
$ref: '#/components/examples/PlanTaskBerlin'
PlanTaskBeijing:
$ref: '#/components/examples/PlanTaskBeijing'
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
PlanResultTokyo:
$ref: '#/components/examples/PlanResultTokyo'
PlanResultMoscow:
$ref: '#/components/examples/PlanResultMoscow'
PlanResultDenver:
$ref: '#/components/examples/PlanResultDenver'
PlanResultBerlin:
$ref: '#/components/examples/PlanResultBerlin'
PlanResultBeijing:
$ref: '#/components/examples/PlanResultBeijing'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
x-codeSamples:
- lang: Python
source: 'from vrt_lss_universal import *
from vrt_lss_universal.apis import *
from vrt_lss_universal.models import *
# settings
HOST = ''https://api.edge.veeroute.tech'' # production env https://api.prod.veeroute.com''
TOKEN = ''PASTETOKENHERE''
# create client
configuration = Configuration()
configuration.host = HOST
configuration.access_token = TOKEN
client = ApiClient(configuration)
# create api instances
system_api = SystemApi(client)
plan_api = PlanApi(client)
# run check
check_response = system_api.check()
print(check_response)
# run sync calculation
task = PlanTask(...)
result = plan_api.run_plan_calculation(task)
print(result)'
/universal/plan/calculation_async:
post:
tags:
- Plan
summary: Планирование (ASYNC)
description: 'Создание рейсов.
Получение результата производится с помощью метода [result](#operation/read_plan_result),
а удаление - с помощью [delete](#operation/delete_plan_result).
'
operationId: run_plan_calculation_async
requestBody:
description: Запуск асинхронного планирования.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/plan_task'
examples:
PlanTaskTokyo:
$ref: '#/components/examples/PlanTaskTokyo'
PlanTaskMoscow:
$ref: '#/components/examples/PlanTaskMoscow'
PlanTaskDenver:
$ref: '#/components/examples/PlanTaskDenver'
PlanTaskBerlin:
$ref: '#/components/examples/PlanTaskBerlin'
PlanTaskBeijing:
$ref: '#/components/examples/PlanTaskBeijing'
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/calculation_async_result'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/plan/calculation_async/{id}:
parameters:
- $ref: '#/components/parameters/result_id'
get:
tags:
- Plan
summary: Состояние расчета
description: Получение состояния расчета по идентификатору расчета.
operationId: read_plan_calculation_state
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/calculation_state'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
delete:
tags:
- Plan
summary: Отмена расчета
description: Отмена процесса планирования по идентификатору расчета.
operationId: cancel_plan_calculation
responses:
'204':
description: Успешное выполнение - планирование отменено
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/plan/result/{id}:
parameters:
- $ref: '#/components/parameters/result_id'
get:
tags:
- Plan
summary: Получение результата
description: Получение результата планирования по идентификатору расчета.
operationId: read_plan_result
responses:
'200':
description: Успешное выполнение - планирование завершено.
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
PlanResultTokyo:
$ref: '#/components/examples/PlanResultTokyo'
PlanResultMoscow:
$ref: '#/components/examples/PlanResultMoscow'
PlanResultDenver:
$ref: '#/components/examples/PlanResultDenver'
PlanResultBerlin:
$ref: '#/components/examples/PlanResultBerlin'
PlanResultBeijing:
$ref: '#/components/examples/PlanResultBeijing'
'202':
description: Планирование в процессе.
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
delete:
tags:
- Plan
summary: Удаление результата
description: Удаление результата по идентификатору расчета.
operationId: delete_plan_result
responses:
'204':
description: Успешное выполнение - планирование удалено
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/plan/validation:
post:
tags:
- Plan
summary: Валидация данных
description: Проверка данных для планирования перед использованием.
operationId: run_plan_validation
requestBody:
description: Данные, которые необходимо проверить.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/plan_task'
examples:
PlanTaskTokyo:
$ref: '#/components/examples/PlanTaskTokyo'
PlanTaskMoscow:
$ref: '#/components/examples/PlanTaskMoscow'
PlanTaskDenver:
$ref: '#/components/examples/PlanTaskDenver'
PlanTaskBerlin:
$ref: '#/components/examples/PlanTaskBerlin'
PlanTaskBeijing:
$ref: '#/components/examples/PlanTaskBeijing'
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/validate_result'
examples:
ValidateResultExample:
$ref: '#/components/examples/ValidateResultExample'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/replan/calculation:
post:
tags:
- Replan
summary: Перепланирование (SYNC)
description: 'Перепланирование - создание рейсов на основе данных о заказах,
исполнителях и транспорте.
'
operationId: run_replan_calculation
requestBody:
description: Новый запрос на перепланирование.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/replan_task'
examples:
ReplanTaskMoscow:
$ref: '#/components/examples/ReplanTaskMoscow'
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
ReplanResultMoscow:
$ref: '#/components/examples/ReplanResultMoscow'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
x-codeSamples:
- lang: Python
source: 'from vrt_lss_universal import *
from vrt_lss_universal.apis import *
from vrt_lss_universal.models import *
# settings
HOST = ''https://api.edge.veeroute.tech'' # production env https://api.prod.veeroute.com''
TOKEN = ''PASTETOKENHERE''
# create client
configuration = Configuration()
configuration.host = HOST
configuration.access_token = TOKEN
client = ApiClient(configuration)
# create api instances
system_api = SystemApi(client)
plan_api = PlanApi(client)
# run check
check_response = system_api.check()
print(check_response)
# run sync calculation
task = ReplanTask(...)
result = plan_api.run_replan_calculation(task)
print(result)'
/universal/replan/calculation_async:
post:
tags:
- Replan
summary: Перепланирование (ASYNC)
description: 'Перепланирование - изменение существующих и создание новых рейсов
на основе произошедших фактов и данных о заказах, исполнителях и транспорте.
Получение результата производится с помощью метода [result](#operation/read_replan_result),
а удаление - с помощью [delete](#operation/delete_replan_result).
'
operationId: run_replan_calculation_async
requestBody:
description: Запуск асинхронного перепланирования.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/replan_task'
examples:
ReplanTaskMoscow:
$ref: '#/components/examples/ReplanTaskMoscow'
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/calculation_async_result'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/replan/calculation_async/{id}:
parameters:
- $ref: '#/components/parameters/result_id'
get:
tags:
- Replan
summary: Состояние расчета
description: Получение состояния расчета по идентификатору расчета.
operationId: read_replan_calculation_state
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/calculation_state'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
delete:
tags:
- Replan
summary: Отмена расчета
description: Отмена процесса планирования по идентификатору расчета.
operationId: cancel_replan_calculation_async
responses:
'204':
description: Успешное выполнение - расчет отменен
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/replan/result/{id}:
parameters:
- $ref: '#/components/parameters/result_id'
get:
tags:
- Replan
summary: Получение результата
description: Получение результата перепланирования по идентификатору расчета.
operationId: read_replan_result
responses:
'200':
description: Успешное выполнение - перепланирование завершено.
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
examples:
ReplanResultMoscow:
$ref: '#/components/examples/ReplanResultMoscow'
'202':
description: Планирование в процессе.
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
delete:
tags:
- Replan
summary: Удаление результата
description: Удаление результата перепланирования по идентификатору расчета.
operationId: delete_replan_result
responses:
'204':
description: Успешное выполнение - планирование удалено
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/replan/validation:
post:
tags:
- Replan
summary: Валидация данных
description: Проверка данных для перепланирования перед использованием.
operationId: run_replan_validation
requestBody:
description: Данные, которые необходимо проверить.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/replan_task'
examples:
ReplanTaskMoscow:
$ref: '#/components/examples/ReplanTaskMoscow'
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/validate_result'
examples:
ValidateResultExample:
$ref: '#/components/examples/ValidateResultExample'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/replan/refining:
post:
tags:
- Replan
summary: Очистка данных
description: Очистка данных для перепланирования перед планированием.
operationId: run_replan_refining
requestBody:
description: Данные, которые необходимо очистить.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/replan_task'
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/replan_task'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/actualize/calculation:
post:
tags:
- Actualize
summary: Актуализация (SYNC)
description: Актуализация ранее запланированных рейсов.
operationId: run_actualize_calculation
requestBody:
description: Новый запрос на актуализацию.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/actualize_task'
examples:
ActualizeTaskMoscow:
$ref: '#/components/examples/ActualizeTaskMoscow'
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/plan_result'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/actualize/validation:
post:
tags:
- Actualize
summary: Валидация данных
description: Проверка данных для актуализации перед использованием.
operationId: run_actualize_validation
requestBody:
description: Данные, которые необходимо проверить.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/actualize_task'
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/validate_result'
examples:
ValidateResultExample:
$ref: '#/components/examples/ValidateResultExample'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/actualize/refining:
post:
tags:
- Actualize
summary: Очистка данных
description: Очистка данных для актуализации перед планированием.
operationId: run_actualize_refining
requestBody:
description: Данные, которые необходимо очистить.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/actualize_task'
examples:
ActualizeTaskMoscow:
$ref: '#/components/examples/ActualizeTaskMoscow'
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/actualize_task'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/convert/json_to_xlsx:
post:
tags:
- Convert
summary: JSON >> XLSX
description: Используется для конвертации входных и выходных данных в формат
[VRt.Universal XLSX](#section/Xlsx).
operationId: run_convert_json_to_xlsx
requestBody:
description: Запрос на конвертацию в XLSX.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/universal_data'
examples:
ConvertTaskMoscow:
$ref: '#/components/examples/ConvertTaskMoscow'
responses:
'200':
description: Успешное выполнение
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/file_xlsx'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'403':
$ref: '#/components/responses/403'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/convert/xlsx_to_json:
post:
tags:
- Convert
summary: XLSX >> JSON
description: 'Используется для конвертации данных из формата [VRt.Universal
XLSX](#section/Xlsx) в формат VRt.Universal JSON.
'
operationId: run_convert_xlsx_to_json
requestBody:
description: Запрос на конвертацию в JSON.
required: true
content:
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
schema:
$ref: '#/components/schemas/file_xlsx'
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/universal_data'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'403':
$ref: '#/components/responses/403'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/convert/json_to_thrift:
post:
tags:
- Convert
summary: JSON >> THRIFT
description: Используется для конвертации входных данных в формат THRIFT.
operationId: run_convert_json_to_thrift
requestBody:
description: Запрос на конвертацию в THRIFT.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/universal_data'
examples:
ConvertTaskMoscow:
$ref: '#/components/examples/ConvertTaskMoscow'
responses:
'200':
description: Успешное выполнение
content:
text/plain:
schema:
$ref: '#/components/schemas/file_text'
'400':
$ref: '#/components/responses/400_with_errors_and_warnings'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'403':
$ref: '#/components/responses/403'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/system/check:
get:
tags:
- System
summary: Проверка доступности
description: Проверка доступности сервиса.
operationId: check
security: []
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/check_result'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/system/version:
get:
tags:
- System
summary: Получение версии сервиса
description: Получение версии сервиса.
operationId: version
security: []
responses:
'200':
description: Успешное выполнение
content:
application/json:
schema:
$ref: '#/components/schemas/version_result'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
/universal/file/{filename}:
parameters:
- $ref: '#/components/parameters/filename'
get:
tags:
- System
summary: Получение документации
description: Получение файла с документацией на этот сервис.
operationId: file
security: []
responses:
'200':
description: Успешное выполнение
content:
text/html:
schema:
$ref: '#/components/schemas/file_html'
text/plain:
schema:
$ref: '#/components/schemas/file_json'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'406':
$ref: '#/components/responses/406'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'502':
$ref: '#/components/responses/502'
'503':
$ref: '#/components/responses/503'
'504':
$ref: '#/components/responses/504'
default:
$ref: '#/components/responses/503'
components:
securitySchemes:
ApiKeyAuth:
description: "Для [аутентификации](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication)\
\ клиента \nиспользуется [JWT токен](https://ru.wikipedia.org/wiki/JSON_Web_Token),\
\ \nкоторый необходимо указывать в заголовке для каждого запроса в формате:\n\
\n`Authorization: Bearer `.\n\nУникальный токен для пользовательского\
\ аккаунта необходимо получить с помощью VRt.Account API.\n"
type: http
scheme: bearer
bearerFormat: JWT
schemas:
geopoint:
description: Географическая точка.
type: object
additionalProperties: false
properties:
latitude:
description: Широта в градусах.
type: number
format: double
minimum: -90
maximum: 90
example: 55.692789
longitude:
description: Долгота в градусах.
type: number
format: double
minimum: -180
maximum: 180
example: 37.554554
required:
- latitude
- longitude
time_duration:
description: 'Продолжительность временного отрезка в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
'
type: string
format: duration
x-custom-format: duration
pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$
minLength: 3
maxLength: 16
default: PT0S
example: P1Y1M1DT2H12M34.3S
time_window:
description: Временное окно.
type: object
additionalProperties: false
nullable: true
properties:
from:
description: 'Дата и время в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6).
'
type: string
format: date-time
example: '2023-10-21T09:30:00+03:00'
to:
description: 'Дата и время в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6).
'
type: string
format: date-time
example: '2023-10-21T19:45:00Z'
required:
- from
- to
transport_restrictions:
description: 'Список необходимых требований к транспорту. Используется для проверки
совместимости транспорта с исполнителем и локацией.
'
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
default: []
items:
description: Требование к транспорту.
type: string
minLength: 1
maxLength: 256
example:
- B1
location_compatibilities:
description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) локации
с транспортом.
'
type: object
additionalProperties: false
nullable: true
properties:
transport_restrictions:
$ref: '#/components/schemas/transport_restrictions'
attribute:
description: Атрибут.
type: object
additionalProperties: false
properties:
key:
description: Ключ атрибута.
type: string
minLength: 1
maxLength: 100
example: attribute_name
value:
description: Значение атрибута.
type: string
minLength: 0
maxLength: 1000
example: X51
required:
- key
- value
attributes:
description: Атрибуты. Используются для указания служебной информации.
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
default: []
items:
$ref: '#/components/schemas/attribute'
location:
description: 'Локация - уникальное географическое местоположение объекта с параметрами
доступности.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ локации, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: location01
geopoint:
$ref: '#/components/schemas/geopoint'
arrival_duration:
description: Время на подъезд (парковку) на локации, в формате [ISO 8601
duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
$ref: '#/components/schemas/time_duration'
departure_duration:
description: Время на отъезд от локации, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
$ref: '#/components/schemas/time_duration'
work_windows:
description: 'Список временных окон работы локации. Если список пустой или
не указан - локация работает без ограничений по времени.
'
type: array
uniqueItems: true
minItems: 0
maxItems: 100
default: []
items:
$ref: '#/components/schemas/time_window'
compatibilities:
$ref: '#/components/schemas/location_compatibilities'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- geopoint
demand_type:
description: "Тип заявки:\n * `PICKUP` - загрузка\n * `DROP` - выгрузка\n\
\ * `WORK` - работа на локации\n * `PICKUP_TO_BOX` - загрузка в кузов\n\
\ * `DROP_FROM_BOX` - выгрузка из кузова\n"
nullable: false
type: string
enum:
- PICKUP
- DROP
- WORK
- PICKUP_TO_BOX
- DROP_FROM_BOX
example: WORK
cargo_list:
description: "Список ключей грузов, зависит от типа заявки, в которой находятся\
\ грузы:\n * `PICKUP` - список ключей\n * `DROP` - один ключ\n * `WORK`\
\ - пустой список\n * `PICKUP_TO_BOX` - один ключ\n * `DROP_FROM_BOX` -\
\ один ключ\n"
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
items:
description: Ключ груза.
type: string
minLength: 1
maxLength: 1024
example:
- cargo01
possible_event:
description: 'Возможное событие. Объединяет географическую локацию и временное
окно, в которое возможно выполнение заявки.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ события, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: event_1
location_key:
description: Ключ локации, в которой возможно данное событие.
type: string
minLength: 1
maxLength: 1024
example: location01
duration:
description: Время выполнения события, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
$ref: '#/components/schemas/time_duration'
reward:
description: Вознаграждение за выполнение данного события.
type: number
format: double
minimum: 0
maximum: 1000000000
default: 1000.1
example: 199.9
hard_time_window:
$ref: '#/components/schemas/time_window'
soft_time_window:
$ref: '#/components/schemas/time_window'
required:
- key
- location_key
- hard_time_window
demand:
description: Заявка на единичное действие с грузом (загрузка / выгрузка) или
работу на локации.
type: object
additionalProperties: false
properties:
key:
description: Ключ заявки, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: demand_1
demand_type:
$ref: '#/components/schemas/demand_type'
target_cargos:
$ref: '#/components/schemas/cargo_list'
precedence_in_trip:
description: Приоритет внутри рейса, 0 - приоритет не учитывается.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 1
default: 0
precedence_in_order:
description: Приоритет внутри заказа, 0 - приоритет не учитывается.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 1
default: 0
possible_events:
description: Список временных окон и ключей локаций, в которых возможно
выполнение заявки.
type: array
uniqueItems: true
minItems: 1
maxItems: 25
items:
$ref: '#/components/schemas/possible_event'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- demand_type
- possible_events
capacity:
description: Характеритистики вместимости.
type: object
additionalProperties: false
nullable: true
properties:
mass:
description: Масса в килограммах.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 10
volume:
description: Объем в кубических метрах.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 2
capacity_a:
description: 'Дополнительный параметр (A) для измерения грузов и отсеков
в альтернативных единицах измерения. Например, для учета грузов в штуках
(у груза данный параметр равен единице, у отсека - максимальному количеству
вмещаемых грузов).
'
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 1
capacity_b:
description: 'Дополнительный параметр (B) для измерения грузов и отсеков
в альтернативных единицах измерения.
'
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 2
capacity_c:
description: 'Дополнительный параметр (C) для измерения грузов и отсеков
в альтернативных единицах измерения.
'
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 3
cargo_rotation_type:
description: "Способность груза вращаться с шагом в 90 градусов вокруг осей:\n\
\ * `ALL` - любых осей.\n * `YAW` - вокруг оси Z.\n * `PITCH` - вокруг\
\ оси Y.\n * `ROLL` - вокруг оси X.\n"
type: string
enum:
- ALL
- YAW
- PITCH
- ROLL
default: ALL
example: ALL
cargo_rotation:
description: "Список способностей объекта вращаться (с шагом в 90 градусов):\n\
\ * `ALL` - можно поворачивать по любой оси любое количество раз\n * `YAW`\
\ - можно повернуть один раз по вертикальной оси (вокруг своей оси)\n * `PITCH`\
\ - можно повернуть один раз по поперечной оси (поставить вертикально)\n \
\ * `ROLL` - можно повернуть один раз по продольной оси (положить на бок)\n\
\nЕсли список пустой - объект вращать запрещено.\n\nПодробнее про [размещение\
\ грузов в кузове](#section/Opisanie/Razmeshenie-gruzov-v-kuzove)."
type: array
minItems: 0
maxItems: 4
uniqueItems: true
default: []
items:
$ref: '#/components/schemas/cargo_rotation_type'
example:
- ALL
box_restrictions:
description: 'Список необходимых требований к отсеку транспорта, в котором может
перевозиться груз.
'
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
default: []
items:
description: Требование к отсеку.
type: string
minLength: 1
maxLength: 256
example:
- DRY
cargo_features:
description: 'Список свойств груза. Используется для проверки совместимости
груза с другими грузами. Несовместимые грузы не могу находится одновременно
в одном отсеке транспорта.
'
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
default: []
items:
description: Свойство груза.
type: string
minLength: 1
maxLength: 256
example:
- DRY
cargo_restrictions:
description: 'Список необходимых требований к грузу. Используется для проверки
совместимости груза с другими грузами. Несовместимые грузы не могу находится
одновременно в одном отсеке транспорта.
'
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
default: []
items:
description: Требование к грузу.
type: string
minLength: 1
maxLength: 256
example:
- DRY
cargo_compatibilities:
description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) груза
с отсеком транспорта и другими грузами.
'
type: object
additionalProperties: false
nullable: true
properties:
width:
description: Ширина в метрах, используется для проверки вместимости в отсек
транспорта.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 1
height:
description: Высота в метрах, используется для проверки вместимости в отсек
транспорта.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 0.3
length:
description: Длина в метрах, используется для проверки вместимости в отсек
транспорта.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 2.2
rotation:
$ref: '#/components/schemas/cargo_rotation'
box_restrictions:
$ref: '#/components/schemas/box_restrictions'
cargo_features:
$ref: '#/components/schemas/cargo_features'
cargo_restrictions:
$ref: '#/components/schemas/cargo_restrictions'
cargo:
description: Груз.
type: object
additionalProperties: false
properties:
key:
description: Ключ груза, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: cargo01
capacity:
$ref: '#/components/schemas/capacity'
description: Аддитивные меры груза.
compatibilities:
$ref: '#/components/schemas/cargo_compatibilities'
target_box_key:
description: 'Ключ отсека транспорта, в котором уже находится груз. Применимо
только для груза, который находится в заявке с типом `DROP_FROM_BOX`.
Для других типов заявок ключ должен быть пустым.
'
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: box01
required:
- key
order_features:
description: Список свойств заказа.
type: array
minItems: 0
maxItems: 15001
uniqueItems: true
default: []
items:
description: Свойство заказа.
type: string
minLength: 1
maxLength: 256
example:
- EXPRESS
order_restrictions:
description: Список требований к заказу, выполняемому в этом же рейсе.
type: array
minItems: 0
maxItems: 15001
uniqueItems: true
default: []
items:
description: Требование к заказу.
type: string
minLength: 1
maxLength: 256
example:
- EXPRESS
performer_restrictions:
description: 'Список необходимых требований к исполнителю. Используется для
проверки совместимости исполнителя и заказа (работы).
'
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
default: []
items:
description: Требование к исполнителю.
type: string
minLength: 1
maxLength: 256
example:
- EXPRESS
performer_blacklist:
description: 'Список требований, наличие которых у исполнителя не допустимо.
Используется для проверки совместимости исполнителя и заказа (работы). Данный
список не должен пересекаться с `performer_restrictions`.
'
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
default: []
items:
description: Запрещенное требование к исполнителю.
type: string
minLength: 1
maxLength: 256
example:
- A0
order_compatibilities:
description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) заказа
с исполнителями и другими заказами.
'
type: object
additionalProperties: false
nullable: true
properties:
order_features:
$ref: '#/components/schemas/order_features'
order_restrictions:
$ref: '#/components/schemas/order_restrictions'
performer_restrictions:
$ref: '#/components/schemas/performer_restrictions'
performer_blacklist:
$ref: '#/components/schemas/performer_blacklist'
order:
description: Заказ на перемещение груза, содержит список заявок.
type: object
additionalProperties: false
properties:
key:
description: Ключ заказа, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: order01
demands:
description: Список заявок.
type: array
uniqueItems: true
minItems: 1
maxItems: 1000
items:
$ref: '#/components/schemas/demand'
cargos:
description: 'Список грузов, на которые ссылаются заявки данного заказа.
Список должен быть пустой, если все заявки заказа имеют тип `WORK`.
'
type: array
uniqueItems: true
minItems: 0
maxItems: 1000
default: []
items:
$ref: '#/components/schemas/cargo'
compatibilities:
$ref: '#/components/schemas/order_compatibilities'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- demands
performer_tariff_constraint:
description: Оплачиваемый промежуток времени - составная часть тарифа.
type: object
additionalProperties: false
properties:
stage_length:
description: Длина оплачиваемого периода, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
type: string
format: duration
x-custom-format: duration
pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$
minLength: 3
maxLength: 16
default: PT24H
example: P1T8H30M20S
cost_per_unit:
description: 'Стоимость внутри оплачиваемого периода, денежная единица за
секунду работы.
'
type: number
format: double
minimum: 0.001
maximum: 10000
default: 0.001
example: 5.05
performer_tariff:
description: Тариф, определяет стоимость и временные ограничения смены.
type: object
additionalProperties: false
properties:
cost_per_shift:
description: Цена за использование смены, денежная единица.
type: number
format: double
minimum: 0.001
maximum: 1000000
default: 0.001
example: 2000
constraints:
description: Список составных частей тарифа.
type: array
minItems: 1
maxItems: 100
uniqueItems: false
items:
$ref: '#/components/schemas/performer_tariff_constraint'
default:
- stage_length: PT24H
cost_per_unit: 0.001
max_penalty_cost:
description: 'Максимальная сумма штрафов, которую может получить исполнитель
в рамках данной смены, денежная единица. Если параметр не указан или указан
как null - исполнитель может нарушать без ограничений.
'
type: number
format: double
nullable: true
default: null
minimum: 0
maximum: 1000000
example: 2000
break:
description: Условие наступления и характеристики перерыва.
type: object
additionalProperties: false
nullable: true
properties:
max_work_duration_sum:
description: Суммарное время работы, после которого необходимо сделать перерыв,
в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
$ref: '#/components/schemas/time_duration'
duration:
description: Продолжительность перерыва, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
$ref: '#/components/schemas/time_duration'
required:
- max_work_duration_sum
- duration
work_and_rest_rules:
description: 'Режим труда и отдыха.
'
type: object
additionalProperties: false
properties:
first_break:
$ref: '#/components/schemas/break'
description: 'Первый перерыв в простом виде - не позже чем через N секунд
от планового времени начала работы должен быть один перерыв длительностью
M секунд. Время ожидания не учитывается как рабочее время. Работа не может
быть прервана перерывом. Если много заказов в одной локации - то между
выполнением заказов может быть запланирован перерыв.
'
performer_shift:
description: 'Рабочая смена исполнителя, которая определяет доступность ресурса
для планирования внутри его временного окна доступности.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ смены, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: shift01
availability_time:
description: Временное окно смены, в которое исполнитель может выполнять
работу на локациях и осуществлять перемещение между локациями.
$ref: '#/components/schemas/time_window'
working_time:
description: Рабочее временное окно, в которые исполнитель может выполнять
работу на локациях, должно быть внутри временного окна смены.
$ref: '#/components/schemas/time_window'
start_location_key:
description: 'Ключ начальной локациями. Если ключ не задан - то рейс начинается
на первом заказе.
'
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: start_location01
finish_location_key:
description: 'Ключ финальной локации. Если ключ не задан - то рейс завершается
на последнем заказе.
'
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: finish_location01
max_locations:
description: 'Ограничение количества уникальных локаций в одном рейсе, включая
локации старта и финиша. Если параметр не указан или указан как null
- то количество локаций не ограничено.
'
type: integer
format: int32
minimum: 1
maximum: 1000
nullable: true
default: null
example: 15
max_stops:
description: 'Ограничение количества остановок в одном рейсе, включая локации
старта и финиша. Если параметр не указан или указан как null - то количество
остановок не ограничено.
'
type: integer
format: int32
minimum: 1
maximum: 1000
nullable: true
default: null
example: 15
tariff:
$ref: '#/components/schemas/performer_tariff'
work_and_rest_rules:
$ref: '#/components/schemas/work_and_rest_rules'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- availability_time
- working_time
transport_type:
description: "Типы транспорта:\n * `CAR` - легковой автомобиль\n * `TRUCK_1500`\
\ - грузовой автомобиль с разрешенной массой не более 1500 кг\n * `TRUCK_3000`\
\ - грузовой автомобиль с разрешенной массой не более 3000 кг\n * `TRUCK_5000`\
\ - грузовой автомобиль с разрешенной массой не более 5000 кг\n * `TRUCK_10000`\
\ - грузовой автомобиль с разрешенной массой не более 10000 кг\n * `TRUCK_20000`\
\ - грузовой автомобиль с разрешенной массой не более 20000 кг\n * `TRUCK_GARBAGE_1`\
\ - грузовой автомобиль для перевозки мусора (тип 1) \n * `TRUCK_GARBAGE_2`\
\ - грузовой автомобиль для перевозки мусора (тип 2)\n * `TUK_TUK` - моторикша\n\
\ * `BICYCLE` - велосипед\n * `PEDESTRIAN` - пешеход \n * `PUBLIC_TRANSPORT`\
\ - общественный транспорт\n\nРазрешенная масса - это масса снаряженного транспорта\
\ с грузом и водителем, установленная предприятием-изготовителем в качестве\
\ максимально допустимой.\n"
type: string
enum:
- CAR
- TRUCK_1500
- TRUCK_3000
- TRUCK_5000
- TRUCK_10000
- TRUCK_20000
- TRUCK_GARBAGE_1
- TRUCK_GARBAGE_2
- TUK_TUK
- BICYCLE
- PEDESTRIAN
- PUBLIC_TRANSPORT
default: CAR
example: CAR
performer_features:
description: 'Список свойств исполнителя. Используется для проверки совместимости
исполнителя с заказами.
'
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
default: []
items:
description: Свойство исполнителя.
type: string
minLength: 1
maxLength: 256
example:
- B1
- EXPRESS
performer_compatibilities:
description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) исполнителя
с транспортом и заказами.
'
type: object
additionalProperties: false
nullable: true
properties:
performer_features:
$ref: '#/components/schemas/performer_features'
transport_restrictions:
$ref: '#/components/schemas/transport_restrictions'
performer_limits:
description: 'Ограничение на рабочую загрузку исполнителя.
'
type: object
additionalProperties: false
nullable: true
properties:
max_work_shifts:
description: Ограничение количества смен исполнителя в одном планировании.
type: integer
format: int32
minimum: 1
maximum: 31
default: 31
example: 3
performer:
description: 'Исполнитель. Выполняет заказы, используя транспорт.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ исполнителя, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: performer0001
shifts:
description: Список рабочих смен исполнителя.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/performer_shift'
own_transport_type:
$ref: '#/components/schemas/transport_type'
compatibilities:
$ref: '#/components/schemas/performer_compatibilities'
limits:
$ref: '#/components/schemas/performer_limits'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- shifts
transport_tariff_constraint:
description: Оплачиваемый пробег - составная часть тарифа.
type: object
additionalProperties: false
properties:
stage_length:
description: Длина оплачиваемой части пути, в метрах.
type: integer
format: int32
minimum: 1
maximum: 100000000
default: 100000000
example: 200000
cost_per_unit:
description: 'Стоимость внутри оплачиваемой части пути, денежная единица
за один метр.
'
type: number
format: double
minimum: 0.001
maximum: 10000
default: 0.001
example: 5.05
transport_tariff:
description: Тариф, определяет стоимость работы транспорта и ограничения по
пробегу за смену.
type: object
additionalProperties: false
properties:
cost_per_shift:
description: Цена за использование смены, денежная единица.
type: number
format: double
minimum: 0.001
maximum: 1000000
default: 0.001
example: 2000
constraints:
description: Список составных частей тарифа.
type: array
minItems: 1
maxItems: 100
uniqueItems: false
items:
$ref: '#/components/schemas/transport_tariff_constraint'
default:
- stage_length: 100000000
cost_per_unit: 0.001
transportation_cost:
description: Стоимость перемещения 1 единицы меры груза на 1 метр (по каждому
полю capacity соответственно), в условных денежных единицах.
$ref: '#/components/schemas/capacity'
max_penalty_cost:
description: 'Максимальная сумма штрафов, которую может получить транспорт
в рамках данной смены, денежная единица.
'
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 2000
deprecated: true
transport_shift:
description: 'Рабочая смена транспорта. Определяет доступность транспорта для
планирования. Конец смены обнуляет оставшийся в кузове груз после выполнения
заявок типов `DROP_FROM_BOX` и `PICKUP_TO_BOX`.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ смены, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: shift01
availability_time:
description: Временное окно смены, в которое транспорт может осуществлять
перемещение между локациями и использоваться исполнителем в работах на
локациях.
$ref: '#/components/schemas/time_window'
working_time:
deprecated: true
description: Рабочее временное окно, в которые транспорт может использоваться
исполнителем в работах на локациях, должно быть внутри временного окна
смены.
$ref: '#/components/schemas/time_window'
start_location_key:
description: 'Ключ начальной локациями. Если ключ не задан - то путь транспорта
начинается на первом заказе.
'
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: start_location01
finish_location_key:
description: 'Ключ финальной локации. Если ключ не задан - то путь транспорта
завершается на последнем заказе.
'
type: string
minLength: 1
maxLength: 1024
nullable: true
default: null
example: finish_location01
tariff:
$ref: '#/components/schemas/transport_tariff'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- availability_time
- working_time
box_features:
description: 'Список свойств отсека, по которому определяется совместимость
с грузом.
'
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
default: []
items:
description: Свойства отсека.
type: string
minLength: 1
maxLength: 256
example:
- Freezer
box_compatibilities:
description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) отсека
транспорта.
'
type: object
additionalProperties: false
nullable: true
properties:
width:
description: Ширина в метрах.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 1
height:
description: Высота в метрах.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 3.1
length:
description: Длина в метрах.
type: number
format: double
minimum: 0
maximum: 1000000
default: 0
example: 2.1
box_features:
$ref: '#/components/schemas/box_features'
box_limits:
description: '`max_one_cargo_capacity` - ограничение по полям capacity для *одного*
груза.
'
type: object
additionalProperties: false
nullable: true
properties:
max_one_cargo_capacity:
$ref: '#/components/schemas/capacity'
box:
description: 'Отсек транспорта, который способен вмещать грузы.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ отсека, уникальный идентификатор, используется для идентификации
размещения грузов по отсекам.
type: string
minLength: 1
maxLength: 1024
example: box01
capacity:
description: Вместимость отсека, которая ограничивает максимальную сумму
по всем полям `capacity` у *всех* грузов.
$ref: '#/components/schemas/capacity'
compatibilities:
$ref: '#/components/schemas/box_compatibilities'
limits:
$ref: '#/components/schemas/box_limits'
required:
- key
transport_features:
description: 'Список свойств транспорта, используется для проверки совместимости
транспорта с локациями и исполнителями.
'
type: array
minItems: 0
maxItems: 1000
uniqueItems: true
default: []
items:
description: Свойство транспорта.
type: string
minLength: 1
maxLength: 256
example:
- 20T
transport_compatibilities:
description: '[Совместимости](#section/Opisanie/Ispolzuemye-sovmestimosti) транспорта
с исполнителями и локациями.
'
type: object
additionalProperties: false
nullable: true
properties:
transport_features:
$ref: '#/components/schemas/transport_features'
performer_restrictions:
$ref: '#/components/schemas/performer_restrictions'
transport_limits:
description: 'Ограничения на загрузку транспорт.
'
type: object
additionalProperties: false
nullable: true
properties:
max_boxes:
description: 'Ограничение максимального количества используемых отсеков
транспорта в одном рейсе. Если параметр не указан или указан как null
- то количество отсеков не ограничено. Ограничение не должно превышать
количество отсеков.
'
type: integer
format: int32
nullable: true
default: null
minimum: 0
maximum: 100
example: 2
max_capacity:
$ref: '#/components/schemas/capacity'
description: 'Параметр дополнительно ограничивает максимально возможную
загрузку транспорта в целом суммарно по всем отсекам. Если параметр не
задан - загрузка ограничивается только каждым отсеком. Применимо только
если у транспорта больше одного отсека. Параметр не должен быть меньше
вместимости любого отсека.
'
transport:
description: 'Транспорт. Исполнитель использует транспорт для перемещения и
перевозки грузов.
'
type: object
additionalProperties: false
properties:
key:
description: Ключ транспорта, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: transport001
shifts:
description: Список рабочих смен транспорта.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/transport_shift'
transport_type:
$ref: '#/components/schemas/transport_type'
boxes:
description: Список отсеков транспорта, которые могут вмещать груз.
type: array
minItems: 0
maxItems: 100
uniqueItems: true
default: []
items:
$ref: '#/components/schemas/box'
compatibilities:
$ref: '#/components/schemas/transport_compatibilities'
limits:
$ref: '#/components/schemas/transport_limits'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- shifts
hardlink_element_type:
description: 'Тип сущности-цели, которая связана назначением с другими сущностями.
Может быть заказом, сменой исполнителя, сменой транспорта.
'
type: string
enum:
- ORDER
- PERFORMER_SHIFT
- TRANSPORT_SHIFT
example: ORDER
hardlink_element:
description: Элемент группы назначения.
type: object
additionalProperties: false
properties:
type:
$ref: '#/components/schemas/hardlink_element_type'
entity_key:
description: Ключ сущности-цели (соответственно заказа или смены).
type: string
minLength: 1
maxLength: 1024
example: ord0001
required:
- type
- entity_key
hardlink:
description: "Назначение, необходимое чтобы связать сущности в одну группу.\
\ Может состоять из двух сущностей или более. Пример применения:\n * назначение\
\ водителя на транспорт (связь смен исполнителя и траспорта).\n * назначение\
\ заказа на исполнителя (связь заказа со сменой исполнителя).\n * указание\
\ необходимости выполнять несколько заказов в одном рейсе (связь заказов между\
\ собой).\n"
type: object
additionalProperties: false
properties:
key:
description: Ключ назначения.
type: string
minLength: 1
maxLength: 1024
example: group01
links:
description: Список элементов группы назначения.
type: array
minItems: 2
maxItems: 1000
items:
$ref: '#/components/schemas/hardlink_element'
required:
- key
- links
plan_configuration:
description: "Название конфигурации планирования.\nКонфигурация определяет цель\
\ и качество результата. \n[Перечень доступных](#section/Opisanie/Konfiguraciya-planirovaniya)\
\ конфигураций планирования."
type: string
minLength: 1
maxLength: 256
default: default
example: optimize_distance
trip_start_time_strategy:
description: "Стратегия выбора оптимального времени начала рейса:\n * `EARLIEST_FINISH`\
\ - оптимальное время начала рейса с целью пораньше завершить все заказы.\n\
\ * `LOWEST_COST` - оптимальное время рейса с целью увеличения процента попаданий\
\ в мягкие временные окна и минимизации общей стоимости рейса.\n"
type: string
enum:
- EARLIEST_FINISH
- LOWEST_COST
default: EARLIEST_FINISH
example: LOWEST_COST
transport_factor:
description: Коэффициент изменения скорости указанного типа транспорта.
type: object
additionalProperties: false
properties:
transport_type:
$ref: '#/components/schemas/transport_type'
speed:
description: Множитель средней скорости транспорта.
type: number
format: double
minimum: 0.1
maximum: 1000
example: 2.5
required:
- transport_type
- speed
capacity_factor:
description: 'Коэффициенты изменения вместимости указанного типа транспорта.
Умножает все соответствующие поля `capacity` у всех отсеков у всех транспортов
указанного типа.
'
type: object
additionalProperties: false
properties:
transport_type:
$ref: '#/components/schemas/transport_type'
capacity:
$ref: '#/components/schemas/capacity'
required:
- transport_type
- capacity
demand_extra_duration:
description: 'Дополнительное время выполнения заявки определенным исполнителем.
'
type: object
additionalProperties: false
properties:
demand_key:
description: Ключ заявки, для событий которой необходимо увеличить время
выполнения.
type: string
nullable: true
default: null
minLength: 1
maxLength: 1024
example: demand01.1
performer_key:
description: Ключ исполнителя.
type: string
minLength: 1
maxLength: 1024
example: performer0001
additional_duration:
description: 'Дополнительное время выполнения всех событий указанной заявки
для всех смен указанного исполнителя. В формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
'
$ref: '#/components/schemas/time_duration'
required:
- demand_key
- performer_key
- additional_duration
trip_assumptions:
description: 'Допущения при планировании. Предназначены для корректировки бизнес-логики
планирования и массового изменения входных данных.
'
type: object
additionalProperties: false
properties:
transport_factor:
description: Коэффициенты изменения скорости транспорта.
type: array
minItems: 0
maxItems: 12
default: []
uniqueItems: true
items:
$ref: '#/components/schemas/transport_factor'
capacity_factor:
description: 'Коэффициенты изменения вместимости транспорта. Изменяют параметры
`capacity` у всех отсеков и `max_capacity` у транспорта.
'
type: array
minItems: 0
maxItems: 12
default: []
uniqueItems: true
items:
$ref: '#/components/schemas/capacity_factor'
demands_extra_duration:
description: 'Список дополнительных времен выполнения заявки определенными
исполнителями. Действует для указанной пары исполнитель-заявка для всех
смен исполнителя и всех вариантов исполнения заявки.
'
type: array
minItems: 0
maxItems: 15001
default: []
uniqueItems: true
items:
$ref: '#/components/schemas/demand_extra_duration'
disable_compatibility:
description: 'Отключить учет совместимостей. Если указано `true` - все становится
совместимо со всем.
'
type: boolean
default: false
example: true
disable_capacity:
description: 'Отключить учет вместимостей. Если указано `true` - весь транспорт
вмещает неограниченное количество грузов.
'
type: boolean
default: false
example: true
same_order_time_window:
description: 'Использовать для расчетов одинаковое (указанное) временное
окно для заказов и заявок. Временное окно берется от начала самого раннего
до конца самого позднего окна из всех заказов и заявок.
'
type: boolean
default: false
example: true
expand_shift_time_window:
description: 'Расширить временное окно для смен исполнителей и транспорта. Левая
граница первой смены одной сущности расширяется до левой границы указанного
окна, правая до правой границы или начала следующего окна на эту же сущность.
Каждая следующая смена сдвигает правую границу до следующей смены или
до правой границы указанного окна.
'
type: boolean
default: false
example: true
compatibility_penalty:
description: 'Штраф за нарушение совместимости. При учете нарушения совместимости
с локацией штраф применяется за каждую остановку на локации.
'
type: object
additionalProperties: false
properties:
tag:
description: 'Тег, который указывается в списке [совместимостей](#section/Opisanie/Ispolzuemye-sovmestimosti).
'
type: string
minLength: 1
maxLength: 256
example: B1
penalty:
description: 'Штраф за нарушение совместимости по указанному тегу.
'
type: number
format: double
minimum: 0
maximum: 1000000
example: 2000
required:
- tag
- penalty
trip_penalties:
description: 'Штрафы при планировании - возможность нарушить часть бизнес-правил.
'
type: object
additionalProperties: false
properties:
compatibilities:
description: Штрафы за каждый факт нарушения совместимости.
type: array
uniqueItems: true
minItems: 0
maxItems: 1000000
default: []
items:
$ref: '#/components/schemas/compatibility_penalty'
trips_settings:
description: Настройки создания рейсов.
type: object
additionalProperties: false
properties:
configuration:
$ref: '#/components/schemas/plan_configuration'
trip_start_time_strategy:
$ref: '#/components/schemas/trip_start_time_strategy'
assumptions:
$ref: '#/components/schemas/trip_assumptions'
penalties:
$ref: '#/components/schemas/trip_penalties'
geo_settings:
description: 'Настройки использования гео-данных.
'
type: object
additionalProperties: false
properties:
geo_provider:
description: Поставщик гео-данных.
type: string
default: OSRM
minLength: 1
maxLength: 256
example: OSRM
toll_roads:
description: Использовать платные дороги.
type: boolean
default: true
example: false
ferry_crossing:
description: Использовать паромные переправы.
type: boolean
default: true
example: false
traffic_jams:
description: Учет пробок при планировании маршрутов.
type: boolean
default: true
example: false
flight_distance:
description: 'Использовать для расчетов расстояния по прямой. Если указано
`false` - расстояния рассчитываются по дорогам. При включении данного
параметра не используется поставщик гео-данных и автоматически выключается
учет пробок (`traffic_jams`).
'
type: boolean
default: false
example: true
restricted_zones:
description: 'Список зон, через которые запрещено проезжать.
'
type: array
deprecated: true
minItems: 0
maxItems: 5
uniqueItems: true
default: []
items:
description: Идентификатор зоны.
type: string
minLength: 1
maxLength: 256
example:
- ART_MOSCOW_MKAD_CARGO_FRAME
calculation_settings:
description: Настройки процесса расчета.
type: object
additionalProperties: false
properties:
max_calculation_time:
description: 'Максимальное время расчета. Старт отсчета начинается от времени
завершения загрузки данных на сервер и начала расчета.
'
type: string
format: duration
x-custom-format: duration
pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$
minLength: 3
maxLength: 16
default: PT20M
example: PT4M30S
max_waiting_time:
description: 'Максимальное время нахождения расчета в очереди. Старт отсчета
начинается от времени завершения загрузки данных на сервер.
'
type: string
format: duration
x-custom-format: duration
pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$
minLength: 3
maxLength: 16
default: PT20M
example: PT2H
result_ttl:
description: 'Время жизни результата расчета. Старт отсчета начинается от
времени завершения расчета.
'
type: string
format: duration
x-custom-format: duration
pattern: ^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$
minLength: 3
maxLength: 16
default: PT20M
example: PT4M30S
result_timezone:
description: 'Временная зона, в которой возвращается результат расчета.
'
type: integer
format: int32
minimum: -12
maximum: 12
default: 0
example: 3
treat_warnings_as_errors:
description: 'Относится к предупреждениям как к ошибкам и не запускать расчет
если хотя бы одна сущность содержит невалидные данные.
'
type: boolean
default: false
example: true
precision:
description: 'Указание точности полей типа double в порядковом номере знака
после запятой. По умолчанию 2, т.е. точность 0.01.
'
type: integer
format: int32
minimum: 0
maximum: 6
default: 2
example: 3
plan_settings:
description: Настройки планирования.
type: object
additionalProperties: false
properties:
trips_settings:
$ref: '#/components/schemas/trips_settings'
geo_settings:
$ref: '#/components/schemas/geo_settings'
calculation_settings:
$ref: '#/components/schemas/calculation_settings'
waypoint:
description: 'Точка пути.
'
type: object
additionalProperties: false
properties:
name:
description: Название точки, может использоваться как идентификатор.
type: string
nullable: true
default: null
minLength: 0
maxLength: 1024
example: central
geopoint:
$ref: '#/components/schemas/geopoint'
duration:
$ref: '#/components/schemas/time_duration'
description: Время остановки на точке, в формате [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
required:
- geopoint
routing_matrix_line:
description: Линия значений в матрице расстояний (в метрах) или продолжительностей
(в секундах) маршрутов между точками.
type: array
minItems: 2
maxItems: 15001
uniqueItems: false
items:
description: 'Расстояние (в метрах) или продолжительность (в секундах) маршрута
между точками. Отрицательное значение (-1) означает невозможность проезда
между указанными точками.
'
type: integer
format: int64
minimum: -1
maximum: 10000000
example: 1500
routing_matrix:
description: Матрица расстояний и времен.
type: object
additionalProperties: false
properties:
waypoints:
description: Массив географических точек, между которыми вычислены расстояния
и времена.
type: array
minItems: 2
maxItems: 15001
uniqueItems: false
items:
$ref: '#/components/schemas/waypoint'
distances:
description: 'Длины маршрутов между точками, в метрах. Значения
в массиве упорядочены в соответствии с порядком элементов в параметре
`waypoints`. Каждая строчка матрицы - массив расстояний из искомой точки
до каждой другой точки.
'
type: array
minItems: 2
maxItems: 15001
uniqueItems: false
items:
$ref: '#/components/schemas/routing_matrix_line'
durations:
description: 'Массив продолжительностей маршрутов между точками, в секундах.
Значения в массиве упорядочены в соответствии с порядком элементов в параметре
`waypoints`. Каждая строчка матрицы - массив времен перемещений из искомой
точки до каждой другой точки.
'
type: array
minItems: 2
maxItems: 15001
uniqueItems: false
items:
$ref: '#/components/schemas/routing_matrix_line'
required:
- waypoints
- distances
- durations
routing_transport_matrix:
description: Матрица времен и расстояний для определенного типа транспорта.
type: object
additionalProperties: false
properties:
transport_type:
$ref: '#/components/schemas/transport_type'
matrix:
$ref: '#/components/schemas/routing_matrix'
required:
- transport_type
- matrix
routing_transport_matrix_list:
description: 'Список матриц времен и расстояний для каждого типа транспорта,
которые указаны в данных. Матрица должна описывать все локации для каждого
типа транспорта из данных. При указании внешней матрицы маршрутизации `external_routing`
не учитываются параметры `geo_settings`.
'
type: array
uniqueItems: true
minItems: 0
maxItems: 12
default: []
items:
$ref: '#/components/schemas/routing_transport_matrix'
dataset_name:
description: 'Название датасета. Техническое поле, не влияющее на планирование.
'
type: string
minLength: 0
maxLength: 1000
default: ''
example: custom_dataset_one
plan_task:
description: Задача для планирования.
type: object
additionalProperties: false
properties:
locations:
description: Список локаций, которые используются в заказах и сменах.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/location'
orders:
description: Список заказов.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/order'
performers:
description: Список доступных исполнителей.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/performer'
transports:
description: Список доступного транспорта.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/transport'
hardlinks:
description: Список назначений.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
default: []
items:
$ref: '#/components/schemas/hardlink'
plan_settings:
$ref: '#/components/schemas/plan_settings'
external_routing:
$ref: '#/components/schemas/routing_transport_matrix_list'
dataset_name:
$ref: '#/components/schemas/dataset_name'
required:
- locations
- orders
- performers
- transports
service_name:
description: Название сервиса.
type: string
enum:
- UNIVERSAL
- ROUTING
- ACCOUNT
- ADMIN
- STUDIO
- PACKER
- AGRO
- STOCK
- LONGHAUL
- CLUSTER
- CARGOTIMETABLE
example: UNIVERSAL
operation_id:
description: Идентификатор операции.
type: string
minLength: 3
maxLength: 256
example: run_plan_calculation
tracedata:
description: Данные используемые для трассировки запросов.
type: object
additionalProperties: false
properties:
code:
description: 'Уникальный идентификатор процесса. Если запущен асинхронный
процесс, то код для него будет одинаковый, хотя другие поля могут отличаться.
'
type: string
format: uuid
example: 11111111-2222-3333-4444-555555555555
client:
description: 'Уникальный идентификатор клиента (`company_key` + `_|_` +
`username`), который совершил запрос.
'
type: string
pattern: \w+
minLength: 2
maxLength: 256
example: company_|_username
server:
description: Уникальный идентификатор сервера.
type: string
pattern: \w+
minLength: 2
maxLength: 256
example: server_name
service:
$ref: '#/components/schemas/service_name'
operation:
$ref: '#/components/schemas/operation_id'
time:
description: Дата и время вызова метода сервиса в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6).
type: string
format: date-time
example: '2023-10-21T09:30:00+03:00'
required:
- code
- client
- server
- service
- operation
- time
trip_name:
description: Краткое наименование рейса.
type: string
minLength: 0
maxLength: 64
default: ''
example: 1-ABC
assigned_performer:
description: Назначенная на определенное время (`shift_time`) смена исполнителя.
type: object
additionalProperties: false
properties:
performer_key:
description: Ключ исполнителя, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: performer0001
shift_key:
description: Ключ смены исполнителя.
type: string
minLength: 1
maxLength: 1024
example: performer0001_shift01
shift_time:
$ref: '#/components/schemas/time_window'
required:
- performer_key
- shift_key
- shift_time
assigned_transport:
description: Назначенная на определенное время (`shift_time`) смена транспорта.
type: object
additionalProperties: false
properties:
transport_key:
description: Ключ транспорта, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: transport001
shift_key:
description: Ключ смены транспорта.
type: string
minLength: 1
maxLength: 1024
example: performer01
shift_time:
$ref: '#/components/schemas/time_window'
required:
- transport_key
- shift_key
- shift_time
trip_state_flag:
description: 'Логический [флаг состояния](#section/Opisanie/Model-reisa) в рамках
рейса.
'
type: string
enum:
- AROUND_LOCATION
- INSIDE_LOCATION
- INSIDE_LOCATION_WINDOW
- INSIDE_WORKING_WINDOW
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_EVENT_SOFT_WINDOW
- ON_DEMAND
- WAITING
- RELOCATING
- BREAK
example: RELOCATING
cargo_placement:
description: Расположение одного груза в отсеке.
type: object
additionalProperties: false
properties:
box_key:
description: Ключ отсека.
type: string
minLength: 1
maxLength: 1024
example: box01
cargo_key:
description: Ключ груза.
type: string
minLength: 1
maxLength: 1024
example: cargo01
required:
- box_key
- cargo_key
cargo_placement_list:
description: Список расположений грузов в транспорте на начало состояния.
type: array
uniqueItems: true
minItems: 0
maxItems: 1000
default: []
items:
$ref: '#/components/schemas/cargo_placement'
trip_state:
description: Состояние рейса.
type: object
additionalProperties: false
properties:
time:
description: Время начала действия в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6).
type: string
format: date-time
example: '2023-10-21T09:30:00+03:00'
order_key:
description: Ключ заказа, с которым производится действие.
type: string
nullable: true
default: null
minLength: 1
maxLength: 1024
example: order01
demand_key:
description: Ключ заявки, с которой производится действие.
type: string
nullable: true
default: null
minLength: 1
maxLength: 1024
example: demand01.1
event_key:
description: Ключ события, с которым производится действие.
type: string
nullable: true
default: null
minLength: 1
maxLength: 1024
example: event01
location_key:
description: Ключ локации, в которой производится действие.
type: string
nullable: true
default: null
minLength: 1
maxLength: 1024
example: location01
flags:
description: "Список флагов, совокупность которых описывает текущее состояние.\n\
Возможные значения флагов, отвечающих за географическое положение:\n \
\ * `AROUND_LOCATION` - исполнитель находится рядом с локацией - в процессе\
\ парковки или выезда с нее.\n * `INSIDE_LOCATION` - исполнитель находится\
\ на локации.\n\nВозможные значения флагов, отвечающих за нахождения во\
\ временных окнах:\n * `INSIDE_WORKING_WINDOW` - исполнитель находится\
\ внутри рабочего временного окна.\n * `INSIDE_LOCATION_WINDOW` - исполнитель\
\ находится внутри времени работы локации.\n * `INSIDE_EVENT_HARD_WINDOW`\
\ - исполнитель находится внутри жесткого временного окна.\n * `INSIDE_EVENT_SOFT_WINDOW`\
\ - исполнитель находится внутри мягкого временного окна.\n\nВозможные\
\ значения флагов, отвечающих за действия:\n * `ON_DEMAND` - исполнитель\
\ работает над заявкой.\n * `WAITING` - исполнитель находится в режиме\
\ ожидания. \n * `RELOCATING` - исполнитель перемещается к следующей\
\ остановке.\n * `BREAK` - исполнитель находится на перерыве.\n"
type: array
uniqueItems: true
minItems: 0
maxItems: 9
default: []
items:
$ref: '#/components/schemas/trip_state_flag'
cargo_placements:
$ref: '#/components/schemas/cargo_placement_list'
attributes:
$ref: '#/components/schemas/attributes'
required:
- time
- flags
trip_waitlist:
description: Список ключей заказов, назначенных на исполнителя, но не запланированных
на определенное время.
type: array
minItems: 0
maxItems: 15001
uniqueItems: true
items:
description: Ключ заказа.
type: string
minLength: 1
maxLength: 1024
example:
- order02
trip:
description: 'Рейс - это совокупность работ, запланированных на выполнение конкретным
исполнителем на конкретном транспорте, выраженных через изменение состояний
исполнителя.
'
type: object
additionalProperties: false
properties:
key:
description: Уникальный идентификатор рейса.
type: string
minLength: 1
maxLength: 1024
example: 631988f0-9e27-11ed-a8fc-0242ac120002
name:
$ref: '#/components/schemas/trip_name'
performer:
$ref: '#/components/schemas/assigned_performer'
transport:
$ref: '#/components/schemas/assigned_transport'
states:
description: Список состояний исполнителя.
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/trip_state'
waitlist:
$ref: '#/components/schemas/trip_waitlist'
attributes:
$ref: '#/components/schemas/attributes'
required:
- key
- performer
- transport
- states
measurements:
description: 'Измерения времен и дистанций для работ на локации, отдельных рейсов
и планирования в целом.
'
type: object
additionalProperties: false
properties:
driving_time:
$ref: '#/components/schemas/time_duration'
waiting_time:
$ref: '#/components/schemas/time_duration'
break_time:
$ref: '#/components/schemas/time_duration'
working_time:
$ref: '#/components/schemas/time_duration'
arriving_time:
$ref: '#/components/schemas/time_duration'
departure_time:
$ref: '#/components/schemas/time_duration'
total_time:
$ref: '#/components/schemas/time_duration'
distance:
description: Расстояние в метрах.
type: integer
format: int32
minimum: 0
maximum: 4000000000
example: 5200
time_window:
$ref: '#/components/schemas/time_window'
required:
- driving_time
- waiting_time
- break_time
- working_time
- arriving_time
- departure_time
- total_time
- distance
- time_window
object_metrics:
description: Метрики объектов.
type: object
additionalProperties: false
properties:
keys:
description: Список ключей объектов.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
description: Ключ объекта.
type: string
minLength: 1
maxLength: 1024
example:
- obj1
count:
description: Суммарное количество объектов.
type: integer
format: int32
minimum: 0
default: 0
maximum: 15001
example: 1700
time_window_violations:
description: "Статистика по нарушениям временных окон. \n"
type: object
additionalProperties: false
properties:
before:
$ref: '#/components/schemas/object_metrics'
description: Количество и ключи заказов, у которые запланированы до наступления
разрешенного временного окна.
after:
$ref: '#/components/schemas/object_metrics'
description: Количество и ключи заказов, у которые запланированы после наступления
разрешенного временного окна.
quality_statistics:
description: 'Статистические показатели качества.
'
type: object
additionalProperties: false
properties:
soft_time_window_violations:
$ref: '#/components/schemas/time_window_violations'
description: Статистика по нарушению мягких временных окон.
hard_time_window_violations:
$ref: '#/components/schemas/time_window_violations'
description: Статистика по нарушению жестких временных окон.
statistics:
description: 'Общая статистика по одному либо совокупности рейсов.
'
type: object
additionalProperties: false
properties:
cost:
description: 'Суммарные затраты, которые считаются на базе тарифов исполнителей
и транспорта. Суммарная стоимость при этом равна разнице между суммарным
вознаграждением (`reward`) и расходами (`cost`).
'
type: number
format: double
minimum: 0
example: 1231.1
reward:
description: Суммарное вознаграждение за выполнение заказов.
type: number
format: double
minimum: 0
example: 2343.3
measurements:
$ref: '#/components/schemas/measurements'
description: "Измерения времен и дистанций для совокупности и отдельных\
\ рейсов:\n\n * `driving_time` - продолжительность времени вождения\n\
\ * `waiting_time` - суммарное время ожидания по всем локациям\n * `break_time`\
\ - суммарное время перерывов по всем локациям\n * `working_time` - суммарное\
\ время выполнения работ на всех локациях, входящих в рейс\n * `arriving_time`\
\ - суммарное время на подъезд/парковку на локациях\n * `departure_time`\
\ - суммарное время на отъезд от локаций\n * `time_window` - время начала\
\ первого рейса и время окончания последнего, если рейсов нет - возвращается\
\ время левой границы горизонта планирования, при этом поля from\\to имеют\
\ одинаковое значение\n * `total_time` - суммарное время, складывается\
\ из `driving_time` + `waiting_time` + `break_time` + `working_time` +\
\ `arriving_time` + `departure_time`\n * `distance` - суммарная протяжённость\
\ рейса/совокупности рейсов, в метрах\n"
trips_count:
description: Суммарное количество запланированных рейсов.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 250
performers_count:
description: Суммарное количество исполнителей, задействованных в выполнении
заказов.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 157
orders_count:
description: Суммарное количество запланированных и назначенных заказов.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 1700
plan_orders_count:
description: Суммарное количество запланированных заказов.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 1003
waitlist_orders_count:
description: Суммарное количество назначенных заказов.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 697
cargo_capacity_ratio:
$ref: '#/components/schemas/capacity'
description: 'Отношение суммарных аддитивных мер перевезенного груза к суммарной
вместимости отсеков. В долях единицы. Может быть больше единицы.
'
max_transport_load:
$ref: '#/components/schemas/capacity'
description: 'Отношение максимальной загрузки отсеков к суммарной вместимости
отсеков. В долях единицы. Не может быть больше единицы.
'
quality:
$ref: '#/components/schemas/quality_statistics'
required:
- cost
- reward
- measurements
- trips_count
- performers_count
- orders_count
- plan_orders_count
- waitlist_orders_count
- cargo_capacity_ratio
- max_transport_load
transport_load:
description: Загрузка транспорта.
type: object
additionalProperties: false
properties:
count:
description: Количество заказов.
type: integer
format: int32
minimum: 0
maximum: 15001
example: 1460
capacity:
$ref: '#/components/schemas/capacity'
required:
- count
- capacity
stop_statistics:
description: 'Статистика по конкретной остановке в рейсе.
'
type: object
additionalProperties: false
properties:
location_key:
description: Ключ локации, на которой происходит остановка.
type: string
minLength: 1
maxLength: 1024
example: location01
demand_ids:
description: Список ключей заявок выполненных на этой остановке.
type: array
minItems: 0
maxItems: 15001
uniqueItems: true
items:
description: 'Идентификатор заявки, получается по следующей формуле: идентификатор
заказа + ''#'' + идентификатор заявки.
'
type: string
minLength: 1
maxLength: 1024
example: demand01
stop_time_window:
description: 'Временное окно остановки - от начала парковки до полного отъезда
с локации. Продолжительность окна складывается из `waiting_time` + `break_time`
+ `working_time` + `arriving_time` + `departure_time`.
'
$ref: '#/components/schemas/time_window'
measurements:
$ref: '#/components/schemas/measurements'
description: "Измерения времен и дистанций для работ на остановке:\n\n \
\ * `driving_time` - время движения от предыдущей остановки до текущей\
\ локации\n * `waiting_time` - продолжительность ожидания исполнения\
\ работы на локации\n * `break_time` - продолжительность перерыва исполнителя\
\ на локации\n * `working_time` - время, затраченное на непосредственное\
\ выполнение работ на локации\n * `arriving_time` - время, затраченное\
\ на подъезд/парковку на локации\n * `departure_time` - время, затраченное\
\ на отъезд от локации\n * `time_window` - временное окно от начала движения\
\ к остановке до окончания отъезда с остановки\n * `total_time` - суммарное\
\ время на остановку, складывается из `driving_time` + `waiting_time`\
\ + `break_time` + `working_time` + `arriving_time` + `departure_time`\n\
\ * `distance` - расстояние от предыдущей остановки до текущей\n"
upload:
$ref: '#/components/schemas/transport_load'
description: Суммарная загрузка товаров в транспорт на этой остановке.
download:
$ref: '#/components/schemas/transport_load'
description: Суммарная выгрузка товаров из транспорта на этой остановке.
max_load:
$ref: '#/components/schemas/transport_load'
description: Максимальная загрузка транспорта в процессе загрузки/выгрузки
на остановке.
arrival_load:
$ref: '#/components/schemas/transport_load'
description: Загрузка транспорта в момент его прибытия в данную остановку.
departure_load:
$ref: '#/components/schemas/transport_load'
description: Загрузка транспорта в момент его отъезда от данной остановки.
required:
- location_key
- demand_ids
- stop_time_window
- measurements
- upload
- download
- max_load
- arrival_load
- departure_load
trip_statistics:
description: 'Статистика по конкретному рейсу.
'
type: object
additionalProperties: false
properties:
trip_key:
description: Ключ рейса, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: trip01
statistics:
$ref: '#/components/schemas/statistics'
stop_statistics:
description: Статистика по каждой остановке в рейсе.
type: array
minItems: 0
maxItems: 15001
uniqueItems: false
items:
$ref: '#/components/schemas/stop_statistics'
total_load:
$ref: '#/components/schemas/transport_load'
description: Суммарная загрузка транспорта за все время рейса.
max_load:
$ref: '#/components/schemas/transport_load'
description: Максимальная загрузка транспорта за все время рейса (по каждому
измерению) - и в движении и на точках погрузки\разгрузки.
max_transfer_load:
$ref: '#/components/schemas/transport_load'
description: Максимальная загрузка транспорта за все время рейса (по каждому
измерению) в движении.
required:
- trip_key
- statistics
- stop_statistics
- total_load
- max_load
- max_transfer_load
plan_statistics:
description: 'Общая статистика по запланированным рейсам.
'
type: object
additionalProperties: false
nullable: true
properties:
total_statistics:
$ref: '#/components/schemas/statistics'
description: Суммарная статистика по всем рейсам.
trips_statistics:
description: 'Список статистик по каждому запланированному рейсу отдельно.
'
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/trip_statistics'
required:
- total_statistics
- trips_statistics
entity_warning_type:
description: "Тип предупреждения:\n * `NO_AVAILABLE_TRANSPORT` - заказ не возможно\
\ выполнить, так как нет ни одного доступного (по ограничениям смен) транспорта\n\
\ * `NO_AVAILABLE_PERFORMER` - заказ не возможно выполнить, так как нет ни\
\ одного доступного (по ограничениям смен) исполнителя\n * `NO_COMPATIBLE_TRANSPORT`\
\ - заказ не возможно выполнить, так как нет ни одного совместимого (по вместимости\
\ и\\или тегам совместимости) транспорта\n * `NO_COMPATIBLE_PERFORMER` -\
\ заказ не возможно выполнить, так как нет ни одного совместимого (по тегам\
\ совместимости) исполнителя\n * `PICKUP_AND_DROP_VIOLATION` - для каждого\
\ груза в рамках заказа должна быть ровно одна погрузка и ровно одна выгрузка\
\ (кроме заявок `PICKUP_TO_BOX` и `DROP_FROM_BOX`)\n * `PICKUP_AND_DROP_VIOLATION_PRECEDENCE_IN_ORDER`\
\ - для каждого груза в рамках заказа должна погрузка должна идти перед выгрузкой\
\ (`precedence_in_order`)\n * `PICKUP_AND_DROP_VIOLATION_PRECEDENCE_IN_TRIP`\
\ - заданы противоречивые требования на порядок следования заявок (`precedence_in_trip`)\n\
\ * `VIOLATION_PRECEDENCE_IN_TRIP_AND_ORDER` - требования на порядок следования\
\ заявок в рейсе (`precedence_in_trip`) и в заказе (`precedence_in_order`)\
\ противоречат друг другу\n * `TIME_WINDOW_VIOLATION` - время начала временного\
\ окна позже времени окончания окна или временное окно превышает максимально\
\ допустимое\n * `ORDER_WINDOWS_INTERSECTION_VIOLATION` - мягкие окна не\
\ должны выходить за границы жесткого окна\n * `PERFORMER_SHIFTS_INTERSECTION_VIOLATION`\
\ - рабочие смены исполнителя не должны пересекаться \n * `TRANSPORT_SHIFTS_INTERSECTION_VIOLATION`\
\ - рабочие смены транспорта не должны пересекаться\n * `LOCATION_WINDOWS_INTERSECTION_VIOLATION`\
\ - временные диапазоны рабочих окон одной локации не должны пересекаться\n\
\ * `INVALID_LOCATION_DURATIONS` - у локации есть рабочее окно которое меньше\
\ суммы времен `arrival + departure`\n * `NO_TRANSPORT_BOXES` - если существуют\
\ заказы с грузом - то у транспорта должен быть хотя бы один отсек \n * `MAX_CAPACITY_VIOLATION`\
\ - ограничение `max_capacity` превышает суммарную вместимость всех отсеков\
\ или указывается для одного отсека или меньше вместимости какого-то отсека\n\
\ * `MAX_BOXES_VIOLATION` - ограничение `max_boxes` больше или равно суммарного\
\ количества отсеков или указывается для одного отсека или равно нулю\n *\
\ `TOO_MANY_CARGOS_FOR_DROP_VIOLATION` - количество грузов для заявки, имеющей\
\ тип `DROP` / `DROP_FROM_BOX`, должно быть не больше единицы\n * `EMPTY_CARGOES_LIST`\
\ - пустой список грузов у заявок, имеющих тип `DROP` / `DROP_FROM_BOX` /\
\ `PICKUP` / `PICKUP_TO_BOX`\n * `CARGO_WORK_VIOLATION` - у заявки типа `WORK`\
\ список грузов должен быть пустой\n * `GEODATA_TIME_WINDOW_VIOLATION` -\
\ горизонт планирования превышает максимально доступное значение\n * `SHIFT_RESTRICTIONS_COULD_BE_MORE_PRECISE`\
\ - рабочее окно `working_window` смены исполнителя не лежит полностью внутри\
\ окна доступности `availability_window`\n * `DURATION_DOES_NOT_FIT_INTO_HARD_WINDOW`\
\ - продолжительность события не помещается в жесткое временное окно\n *\
\ `DURATION_DOES_NOT_FIT_INTO_SOFT_WINDOW` - продолжительность события не\
\ помещается в мягкое временное окно\n * `MAX_CALCULATION_TIME_VIOLATION`\
\ - превышено максимальное допустимое время расчета\n * `MAX_WAITING_TIME_VIOLATION`\
\ - превышено максимальное допустимое время ожидания\n * `INVALID_HARDLINK`\
\ - связь невозможно учесть, нельзя назначать на транспорт заказ с заявками\
\ с типом `WORK`\n * `CARGO_BOX_VIOLATION` - для заявок всех типов кроме\
\ `DROP_FROM_BOX` ключ отсека, где находится груз, должен быть пустым\n *\
\ `CARGO_MULTIBOX_VIOLATION` - для заявки типа `DROP_FROM_BOX` указанные грузы\
\ находятся в отсеках разных транспортов\n * `CARGO_CAPACITY_VIOLATION` -\
\ указанный груз на борту превышает размеры отсека, в котором он находится\n"
type: string
enum:
- NO_AVAILABLE_TRANSPORT
- NO_AVAILABLE_PERFORMER
- NO_COMPATIBLE_TRANSPORT
- NO_COMPATIBLE_PERFORMER
- PICKUP_AND_DROP_VIOLATION
- PICKUP_AND_DROP_VIOLATION_PRECEDENCE_IN_ORDER
- PICKUP_AND_DROP_VIOLATION_PRECEDENCE_IN_TRIP
- VIOLATION_PRECEDENCE_IN_TRIP_AND_ORDER
- TIME_WINDOW_VIOLATION
- ORDER_WINDOWS_INTERSECTION_VIOLATION
- PERFORMER_SHIFTS_INTERSECTION_VIOLATION
- TRANSPORT_SHIFTS_INTERSECTION_VIOLATION
- LOCATION_WINDOWS_INTERSECTION_VIOLATION
- INVALID_LOCATION_DURATIONS
- NO_TRANSPORT_BOXES
- MAX_CAPACITY_VIOLATION
- MAX_BOXES_VIOLATION
- TOO_MANY_CARGOS_FOR_DROP_VIOLATION
- EMPTY_CARGOES_LIST
- CARGO_WORK_VIOLATION
- GEODATA_TIME_WINDOW_VIOLATION
- SHIFT_RESTRICTIONS_COULD_BE_MORE_PRECISE
- DURATION_DOES_NOT_FIT_INTO_HARD_WINDOW
- DURATION_DOES_NOT_FIT_INTO_SOFT_WINDOW
- MAX_CALCULATION_TIME_VIOLATION
- MAX_WAITING_TIME_VIOLATION
- INVALID_HARDLINK
- CARGO_BOX_VIOLATION
- CARGO_MULTIBOX_VIOLATION
- CARGO_CAPACITY_VIOLATION
example: TIME_WINDOW_VIOLATION
entity_type:
description: Тип сущности.
type: string
enum:
- TASK
- SETTINGS
- ORDER
- ORDER_LINK
- PERFORMER
- PERFORMER_LINK
- TRANSPORT
- TRANSPORT_LINK
- HARDLINK
- HARDLINK_LINK
- LOCATION
- LOCATION_LINK
- BOX
- BOX_LINK
- TRIP
- TRIP_LINK
- CARGO
- CARGO_LINK
- DEMAND
- DEMAND_LINK
- EVENT
- EVENT_LINK
- PERFORMER_SHIFT
- PERFORMER_SHIFT_LINK
- TRANSPORT_SHIFT
- TRANSPORT_SHIFT_LINK
example: ORDER
entity_path:
description: 'Описание сущности и путь до нее.
'
type: object
additionalProperties: false
nullable: true
properties:
entity_key:
description: Ключ целевой сущности.
type: string
nullable: true
maxLength: 1024
example: order_0001
entity_type:
$ref: '#/components/schemas/entity_type'
child_entity:
$ref: '#/components/schemas/entity_path'
required:
- entity_key
- entity_type
entity_warning:
description: Описание предупреждения.
type: object
additionalProperties: false
properties:
type:
$ref: '#/components/schemas/entity_warning_type'
info:
description: Информация о предупреждении.
type: string
nullable: true
minLength: 0
maxLength: 2048
example: entity warning
entities:
description: Список сущностей, которые относятся к предупреждению.
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/entity_path'
required:
- type
- entities
entity_warning_list:
description: Список предупреждений.
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/entity_warning'
example: []
unplanned_items:
description: Список незапланированных сущностей.
type: object
additionalProperties: false
properties:
order_keys:
description: Список ключей незапланированных заказов.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
description: Ключ, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: key_01
order_keys_count:
description: Количество незапланированных заказов.
type: integer
format: int32
minimum: 0
maximum: 15001
default: 0
example: 99
performer_keys:
description: Список ключей исполнителей, не участвующих ни в одном рейсе.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
description: Ключ, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: key_01
performer_keys_count:
description: Количество незапланированных исполнителей.
type: integer
format: int32
minimum: 0
maximum: 15001
default: 0
example: 99
transport_keys:
description: Список ключей транспорта, не участвующих ни в одном рейсе.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
description: Ключ, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: key_01
transport_keys_count:
description: Количество незапланированного транспорта.
type: integer
format: int32
minimum: 0
maximum: 15001
default: 0
example: 99
hardlink_keys:
description: Список ключей связей, не участвующих ни в одном рейсе.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
description: Ключ, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: key_01
hardlink_keys_count:
description: Количество незапланированных связей.
type: integer
format: int32
minimum: 0
maximum: 15001
default: 0
example: 99
calculation_progress:
description: 'Прогресс расчета в процентах. Прогресс отражает текущее количество
завершенных шагов.
'
type: integer
format: int32
default: 0
minimum: 0
maximum: 100
example: 52
calculation_status:
description: "Статус расчета:\n * `WAITING` - расчет ожидает запуска.\n *\
\ `IN_PROGRESS` - расчет в процессе.\n * `FINISHED_IN_TIME` - расчет завершился\
\ раньше указанного времени на планирование.\n * `FINISHED_OUT_OF_TIME` -\
\ расчет завершился, так как закончилось указанное время на планирование,\
\ при этом полученные маршруты могут не соответствовать целям планирования\
\ (при этом они гарантированно валидные).\n * `CANCELED` - расчет был отменен,\
\ так как была получена команда на отмену.\n * `CANCELED_BY_TIMEOUT` - расчет\
\ был отменен автоматически, так как превышено время ожидания в очереди.\n\
\ * `FAILED` - расчет завершился с ошибкой.\n"
type: string
enum:
- WAITING
- IN_PROGRESS
- FINISHED_IN_TIME
- FINISHED_OUT_OF_TIME
- CANCELED
- CANCELED_BY_TIMEOUT
- FAILED
example: FINISHED_IN_TIME
calculation_info:
description: Информация о расчете.
type: object
additionalProperties: false
properties:
status:
$ref: '#/components/schemas/calculation_status'
result_version:
description: Версия текущего результата расчета.
type: integer
format: int32
minimum: 0
maximum: 1000000
example: 133
preparing_time:
description: Время подготовки к расчету (конвертация данных), формат [ISO
8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
$ref: '#/components/schemas/time_duration'
business_validation_time:
description: Время бизнес-проверки данных, формат [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
$ref: '#/components/schemas/time_duration'
math_validation_time:
description: Время математической проверки данных, формат [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
$ref: '#/components/schemas/time_duration'
waiting_time:
description: Время ожидания расчета в очереди, формат [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
$ref: '#/components/schemas/time_duration'
calculation_time:
description: Время фактического расчета, формат [ISO 8601 duration](https://ru.wikipedia.org/wiki/ISO_8601#Durations).
$ref: '#/components/schemas/time_duration'
required:
- status
- result_version
- preparing_time
- business_validation_time
- math_validation_time
- waiting_time
- calculation_time
plan_result:
description: 'Результат планирования. Может быть промежуточным (в процессе расчета)
и полным (по завершению расчета).
'
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
trips:
description: Расписание рейсов, назначенных на исполнителей.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
default: []
items:
$ref: '#/components/schemas/trip'
statistics:
$ref: '#/components/schemas/plan_statistics'
warnings:
$ref: '#/components/schemas/entity_warning_list'
unplanned_items:
$ref: '#/components/schemas/unplanned_items'
progress:
$ref: '#/components/schemas/calculation_progress'
info:
$ref: '#/components/schemas/calculation_info'
required:
- tracedata
- trips
- statistics
- progress
- info
schema_error:
description: Ошибка по схеме.
type: object
additionalProperties: false
properties:
entity:
description: Идентификатор целевой сущности.
type: string
nullable: true
maxLength: 1024
example: order_0001
message:
description: Сообщение об ошибке.
type: string
example: bad input data
required:
- entity
- message
schema_error_list:
description: Список ошибок.
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/schema_error'
example: []
entity_error_type:
description: "Тип ошибки:\n * `INCONSISTENT_REFERENCE` - ссылка на несуществующую\
\ сущность\n * `UNIQUE_IDS_VIOLATION` - все идентификаторы должны быть уникальными\n\
\ * `INVALID_ROUTING_MATRIX` - проблема с размерностью матрицы гео-данных\n\
\ * `INVALID_GEO_PROVIDER` - проблема с указанным гео-провайдером\n * `COMPATIBILITY_CARGO_BOX`\
\ - ни один груз не совместим ни с одним отсеком\n * `COMPATIBILITY_TRANSPORT_PERFORMER`\
\ - ни один транспорт не совместим ни с одним исполнителем\n * `COMPATIBILITY_TRANSPORT_LOCATION`\
\ - ни один транспорт не совместим ни с одной локацией\n * `COMPATIBILITY_ORDER_PERFORMER`\
\ - ни один заказ не совместим ни с одним транспортом\n * `INCONSISTENT_HARDLINK`\
\ - ключ сущности должен находиться только в одной связи\n * `PLANNING_HORIZON_EXCEEDED`\
\ - превышен горизонт планирования (разница между самой ранней и самой поздней\
\ временными отметками)\n * `TOO_MANY_WARNINGS` - количество предупреждений\
\ (`warning`) больше 15 000\n"
type: string
enum:
- INCONSISTENT_REFERENCE
- UNIQUE_IDS_VIOLATION
- INVALID_ROUTING_MATRIX
- INVALID_GEO_PROVIDER
- COMPATIBILITY_CARGO_BOX
- COMPATIBILITY_TRANSPORT_PERFORMER
- COMPATIBILITY_TRANSPORT_LOCATION
- COMPATIBILITY_ORDER_PERFORMER
- INCONSISTENT_HARDLINK
- PLANNING_HORIZON_EXCEEDED
- TOO_MANY_WARNINGS
example: INCONSISTENT_REFERENCE
entity_error:
description: Описание ошибки во входных данных.
type: object
additionalProperties: false
properties:
type:
$ref: '#/components/schemas/entity_error_type'
info:
description: Информация об ошибке.
type: string
nullable: true
minLength: 0
maxLength: 2048
example: entity error
entities:
description: Список сущностей, которые вызвали ошибку.
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/entity_path'
required:
- type
- entities
entity_error_list:
description: 'Список ошибок в исходных данных, из-за которых запуск расчета
невозможен.
'
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/entity_error'
custom_400_with_errors_and_warnings:
description: Детализация по ошибке 400.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
message:
description: Сообщение об ошибке.
type: string
nullable: true
example: bad task data
schema_errors:
$ref: '#/components/schemas/schema_error_list'
logical_errors:
$ref: '#/components/schemas/entity_error_list'
warnings:
$ref: '#/components/schemas/entity_warning_list'
required:
- tracedata
general_401:
description: Детализация по ошибке 401.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
message:
description: Сообщение об ошибке.
type: string
nullable: true
example: Unauthorized
required:
- tracedata
general_402:
description: Детализация по ошибке 402.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
message:
description: Сообщение об ошибке.
type: string
nullable: true
example: Payment Required
required:
- tracedata
general_404:
description: Детализация по ошибке 404.
type: object
additionalProperties: false
properties:
resource_id:
description: Идентификатор ресурса.
type: string
nullable: true
default: null
example: resource_id
detail:
description: Детализация по ресурсу.
type: object
additionalProperties: false
nullable: true
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
required:
- tracedata
general_429:
description: Детализация по ошибке 429.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
message:
description: Сообщение об ошибке.
type: string
nullable: true
example: Too many requests
required:
- tracedata
general_500:
description: Детализация по ошибке 500.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
message:
description: Сообщение об ошибке.
type: string
nullable: true
example: Internal Server Error
required:
- tracedata
calculation_id:
description: Идентификатор расчета.
type: string
format: uuid
example: 11111111-2222-3333-4444-555555555555
calculation_async_result:
description: Результат запуска асинхронного расчета.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
id:
$ref: '#/components/schemas/calculation_id'
required:
- id
- tracedata
calculation_state:
description: Текущее состояние расчета.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
progress:
$ref: '#/components/schemas/calculation_progress'
info:
$ref: '#/components/schemas/calculation_info'
required:
- tracedata
- progress
- info
validate_result:
description: Результат проверки данных.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
warnings:
$ref: '#/components/schemas/entity_warning_list'
required:
- tracedata
- warnings
fact_time:
description: Дата и время создания факта в формате [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6).
type: string
format: date-time
example: '2023-10-21T09:30:00+03:00'
order_fact_type:
description: "Возможные типы факта о заказе (заявке):\n * `ORDER_DONE` - исполнитель\
\ закончил выполнять заказ, связанный с заказом груз более не находится в\
\ отсеках транспорта\n * `ORDER_CANCEL` - заказ был отменен, поведение аналогично\
\ `ORDER_DONE`\n * `DEMAND_START` - исполнитель начал выполнять заявку \n\
\ * `DEMAND_DONE` - исполнитель закончил выполнять заявку\n"
type: string
enum:
- ORDER_DONE
- ORDER_CANCEL
- DEMAND_START
- DEMAND_DONE
example: ORDER_DONE
order_fact:
description: 'Факт о заказе - совершенное действие с заказом или его частью
(заявкой).
'
type: object
additionalProperties: false
properties:
key:
description: Ключ факта.
type: string
minLength: 1
maxLength: 1024
example: fact_01
time:
$ref: '#/components/schemas/fact_time'
type:
$ref: '#/components/schemas/order_fact_type'
order_key:
description: Ключ заказа.
type: string
minLength: 1
maxLength: 1024
example: order_01
demand_key:
description: Ключ заявки, обязателен для фактов с типом `DEMAND_DONE` и
`DEMAND_START`.
type: string
nullable: true
minLength: 1
maxLength: 1024
example: order_01_demand_01
default: null
required:
- key
- time
- type
- order_key
performer_fact:
description: Факт о нахождении исполнителя в определенной локации.
type: object
additionalProperties: false
properties:
key:
description: Ключ факта.
type: string
minLength: 1
maxLength: 1024
example: fact_01
time:
$ref: '#/components/schemas/fact_time'
performer_key:
description: Ключ исполнителя.
type: string
minLength: 1
maxLength: 1024
example: performer_01
location_key:
description: Ключ локации, уникальный идентификатор.
type: string
minLength: 1
maxLength: 1024
example: location01
required:
- key
- time
- performer_key
- location_key
facts:
description: 'Произошедшие события.
'
type: object
additionalProperties: false
properties:
order_facts:
description: 'Список фактов по заказам - совершенных действий с заказами
или его частями (заявками).
'
type: array
uniqueItems: false
minItems: 0
maxItems: 50001
items:
$ref: '#/components/schemas/order_fact'
performer_facts:
description: 'Список фактов о нахождении исполнителя в определенной локации.
При наличии нескольких фактов учитывается только самый поздний по полю
`time`.
Локация, на которую ссылается факт, должна находится в списке `locations`.
'
type: array
uniqueItems: false
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/performer_fact'
replan_strategy:
description: Стратегия перепланирования.
type: object
additionalProperties: false
properties:
reorder:
description: Возможность изменять существующий порядок выполнения заказов.
type: boolean
default: false
example: true
plan_new_orders:
description: Возможность планировать новые заказы в существующие или новые
(если включена опция `create_new_trips`) рейсы.
type: boolean
default: false
example: true
create_new_trips:
description: Возможность создавать новые рейсы.
type: boolean
default: false
example: true
replan_settings:
description: Настройки перепланирования.
type: object
additionalProperties: false
properties:
replan_strategy:
$ref: '#/components/schemas/replan_strategy'
trips_settings:
$ref: '#/components/schemas/trips_settings'
geo_settings:
$ref: '#/components/schemas/geo_settings'
calculation_settings:
$ref: '#/components/schemas/calculation_settings'
replan_task:
description: Задача для перепланирования.
type: object
additionalProperties: false
properties:
locations:
description: Список локаций, которые используются в заказах и сменах.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/location'
orders:
description: Список заказов.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/order'
performers:
description: Список доступных исполнителей.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/performer'
transports:
description: Список доступного транспорта.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/transport'
hardlinks:
description: Список назначений.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
default: []
items:
$ref: '#/components/schemas/hardlink'
trips:
description: Существующие рейсы.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/trip'
facts:
$ref: '#/components/schemas/facts'
external_routing:
$ref: '#/components/schemas/routing_transport_matrix_list'
replan_settings:
$ref: '#/components/schemas/replan_settings'
dataset_name:
$ref: '#/components/schemas/dataset_name'
required:
- locations
- orders
- performers
- transports
- trips
actualize_settings:
description: 'Настройки актуализации.
'
type: object
additionalProperties: false
properties:
current_time:
description: 'Указание даты и времени, которое для актуализации будет являться
текущим, в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6). Если
не указано - берется текущее время получения запроса сервером.
'
type: string
format: date-time
nullable: true
example: '2023-10-21T09:30:00+03:00'
geo_settings:
$ref: '#/components/schemas/geo_settings'
calculation_settings:
$ref: '#/components/schemas/calculation_settings'
actualize_task:
description: 'Задача на актуализацию рейсов.
'
type: object
additionalProperties: false
properties:
locations:
description: Список локаций, которые используются в заказах и сменах.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/location'
orders:
description: Список заказов.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/order'
performers:
description: Список доступных исполнителей.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/performer'
transports:
description: Список доступного транспорта.
type: array
uniqueItems: true
minItems: 1
maxItems: 15001
items:
$ref: '#/components/schemas/transport'
hardlinks:
description: Список назначений.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/hardlink'
trips:
description: Существующие рейсы.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/trip'
facts:
$ref: '#/components/schemas/facts'
external_routing:
$ref: '#/components/schemas/routing_transport_matrix_list'
actualize_settings:
$ref: '#/components/schemas/actualize_settings'
dataset_name:
$ref: '#/components/schemas/dataset_name'
required:
- locations
- orders
- performers
- transports
- trips
universal_data:
description: 'Формат VRt.Universal JSON. Общий список данных и настроек, объединяет
все данные для планирования, перепланирования и актуализации.
'
type: object
additionalProperties: false
properties:
locations:
description: Список локаций, которые используются в заказах и сменах.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/location'
orders:
description: Список заказов.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/order'
performers:
description: Список доступных исполнителей.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/performer'
transports:
description: Список доступного транспорта.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/transport'
hardlinks:
description: Список назначений.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/hardlink'
trips:
description: Существующие рейсы.
type: array
uniqueItems: true
minItems: 0
maxItems: 15001
items:
$ref: '#/components/schemas/trip'
facts:
$ref: '#/components/schemas/facts'
statistics:
$ref: '#/components/schemas/plan_statistics'
external_routing:
$ref: '#/components/schemas/routing_transport_matrix_list'
plan_settings:
$ref: '#/components/schemas/plan_settings'
replan_settings:
$ref: '#/components/schemas/replan_settings'
actualize_settings:
$ref: '#/components/schemas/actualize_settings'
dataset_name:
$ref: '#/components/schemas/dataset_name'
file_xlsx:
description: Файл с данными в формате [XLSX](https://ru.wikipedia.org/wiki/Microsoft_Excel).
type: string
format: byte
general_403:
description: Детализация по ошибке 403.
type: object
additionalProperties: false
properties:
tracedata:
$ref: '#/components/schemas/tracedata'
message:
description: Сообщение об ошибке.
type: string
nullable: true
example: Forbidden
required:
- tracedata
file_text:
description: Файл с данными в текстовом формате.
type: string
check_result:
description: Результат проверки работоспособности сервиса.
type: object
additionalProperties: false
properties:
health:
description: "Текущий показатель здоровья сервиса. \n0 означает неготовность\
\ сервиса выполнять задачи. \n1 означает полную готовность сервиса\
\ для выполнения задач.\n"
type: number
format: double
minimum: 0
maximum: 1
example: 0.999
required:
- health
version_result:
description: Версия сервиса.
type: object
additionalProperties: false
properties:
major:
description: "Версия продукта.\nВ рамках одной версии гарантируется совместимость\
\ общих структур данных между сервисами. \nИзменение версии указывает\
\ на несовместимые с предыдущими версиями продукта (и, соответственно,\
\ всех сервисов) изменения.\n"
type: integer
format: int32
minimum: 1
maximum: 100
example: 4
minor:
description: 'Минорная версия сервиса.
Изменение версии указывает на новую функциональность.
Обновление имеет обратную совместимость в рамках мажорной версии сервиса.
'
type: integer
format: int32
minimum: 0
maximum: 111
example: 4
build:
description: "Версия сборки. \nИзменяется при обновлении документации\
\ и исправлении ошибок.\n"
type: string
minLength: 1
maxLength: 64
example: 1754RC
required:
- major
- minor
- build
file_html:
description: Файл с данными в формате [HTML](https://html.spec.whatwg.org/).
type: string
file_json:
description: Файл с данными в формате [JSON](https://www.json.org/).
type: string
examples:
PlanTaskTokyo:
summary: Токио
value:
locations:
- key: location_client_1
geopoint:
latitude: 35.7048259
longitude: 139.7297071
- key: location_client_2
geopoint:
latitude: 35.71861
longitude: 139.7190533
- key: location_client_3
geopoint:
latitude: 35.7099049
longitude: 139.7265958
- key: location_storage
geopoint:
latitude: 35.7042346
longitude: 139.6531996
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
plan_settings:
trips_settings:
configuration: optimize_distance
geo_settings:
toll_roads: true
traffic_jams: false
PlanTaskMoscow:
summary: Москва
value:
locations:
- key: location_client_1
geopoint:
latitude: 55.713699
longitude: 37.621839
- key: location_client_2
geopoint:
latitude: 55.630721
longitude: 37.62493
- key: location_client_3
geopoint:
latitude: 55.722801
longitude: 37.674984
- key: location_storage
geopoint:
latitude: 55.685853
longitude: 37.43181
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
plan_settings:
trips_settings:
configuration: optimize_distance
geo_settings:
toll_roads: true
traffic_jams: false
PlanTaskDenver:
summary: Денвер
value:
locations:
- key: location_client_1
geopoint:
latitude: 39.7116126
longitude: -104.9145664
- key: location_client_2
geopoint:
latitude: 39.7851755
longitude: -104.9285619
- key: location_client_3
geopoint:
latitude: 39.745829
longitude: -105.0013897
- key: location_storage
geopoint:
latitude: 39.82519
longitude: -105.1185757
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
plan_settings:
trips_settings:
configuration: optimize_distance
geo_settings:
toll_roads: true
traffic_jams: false
PlanTaskBerlin:
summary: Берлин
value:
locations:
- key: location_client_1
geopoint:
latitude: 52.431792
longitude: 13.3383233
- key: location_client_2
geopoint:
latitude: 52.458667
longitude: 13.3772083
- key: location_client_3
geopoint:
latitude: 52.437161
longitude: 13.4654563
- key: location_storage
geopoint:
latitude: 52.532906
longitude: 13.3431423
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
plan_settings:
trips_settings:
configuration: optimize_distance
geo_settings:
toll_roads: true
traffic_jams: false
PlanTaskBeijing:
summary: Пекин
value:
locations:
- key: location_client_1
geopoint:
latitude: 39.873105
longitude: 116.3563913
- key: location_client_2
geopoint:
latitude: 39.929733
longitude: 116.3203273
- key: location_client_3
geopoint:
latitude: 39.9227559
longitude: 116.3260136
- key: location_storage
geopoint:
latitude: 39.904054
longitude: 116.2568843
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
plan_settings:
trips_settings:
configuration: optimize_distance
geo_settings:
toll_roads: true
traffic_jams: false
PlanResultTokyo:
summary: Токио
value:
tracedata:
code: 861c8e0a-2651-444e-b426-71cdccc31423
client: veeroute_|_example
server: Universal:leo
service: UNIVERSAL
operation: runPlanCalculation
time: '2023-10-01T11:50:15.123Z'
trips:
- key: performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2023-10-08T04:48:15Z'
to: '2023-10-08T05:40:56Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2023-10-08T04:48:15Z'
to: '2023-10-08T05:40:56Z'
states:
- time: '2023-10-08T04:48:15Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:48:15Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:48:15Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T04:48:15Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T04:48:15Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T04:48:15Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:12:04Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:12:04Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:27:04Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:27:04Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:30:56Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:30:56Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:40:56Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements: []
attributes: []
waitlist: []
attributes: []
statistics:
total_statistics:
cost: 2176.933
reward: 3000.3
measurements:
driving_time: PT52M41S
waiting_time: PT0S
break_time: PT0S
working_time: PT35M
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H27M41S
distance: 31306
time_window:
from: '2023-10-08T04:48:15Z'
to: '2023-10-08T05:40:56Z'
performers_count: 1
trips_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
cargo_capacity_ratio:
mass: 0.01
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transport_load:
mass: 0.006
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
quality:
soft_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
hard_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
trips_statistics:
- trip_key: performer_1_shift
statistics:
cost: 2176.9333333333334
reward: 3000.3
measurements:
driving_time: PT52M41S
waiting_time: PT0S
break_time: PT0S
working_time: PT35M
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H27M41S
distance: 31306
time_window:
from: '2023-10-08T04:48:15Z'
to: '2023-10-08T05:40:56Z'
performers_count: 1
trips_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
cargo_capacity_ratio:
mass: 0.01
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
max_transport_load:
mass: 0.006
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
quality:
soft_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
hard_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
stop_statistics:
- location_key: location_storage
demand_ids:
- demand_2_pickup
- demand_1_pickup
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT0S
waiting_time: PT0S
working_time: PT0S
break_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT0S
distance: 0
time_window:
from: '2023-10-08T04:48:15Z'
to: '2023-10-08T04:48:15Z'
upload:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_1
demand_ids:
- demand_1_drop
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT21M45S
waiting_time: PT0S
break_time: PT0S
working_time: PT10M
arriving_time: PT0S
departure_time: PT0S
total_time: PT31M45S
distance: 8878
time_window:
from: '2023-10-08T04:48:15Z'
to: '2023-10-08T05:10:00Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_3
demand_ids:
- demand_3_work
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT17M4S
waiting_time: PT0S
break_time: PT0S
working_time: PT15M
arriving_time: PT0S
departure_time: PT0S
total_time: PT32M4S
distance: 10003
time_window:
from: '2023-10-08T05:10:00Z'
to: '2023-10-08T05:27:04Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_2
demand_ids:
- demand_2_drop
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT13M52S
waiting_time: PT0S
break_time: PT0S
working_time: PT10M
arriving_time: PT0S
departure_time: PT0S
total_time: PT23M52S
distance: 12425
time_window:
from: '2023-10-08T05:27:04Z'
to: '2023-10-08T05:40:56Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
total_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transfer_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
progress: 100
info:
status: FINISHED_IN_TIME
result_version: 108
preparing_time: PT1M10S
business_validation_time: PT1M10S
math_validation_time: PT1M10S
waiting_time: PT15S
calculation_time: PT1M10S
warnings: []
unplanned_items:
order_keys: []
performer_keys: []
transport_keys: []
hardlink_keys: []
PlanResultMoscow:
summary: Москва
value:
tracedata:
code: 861c8e0a-2651-444e-b426-71cdccc31423
client: veeroute_|_example
server: Universal:leo
service: UNIVERSAL
operation: runPlanCalculation
time: '2023-10-01T11:50:15.123Z'
trips:
- key: performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
states:
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:20:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:20:52Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:30:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements: []
attributes: []
- time: '2023-10-08T05:30:52Z'
flags:
- RELOCATING
cargo_placements: []
attributes: []
- time: '2023-10-08T05:38:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements: []
attributes: []
- time: '2023-10-08T05:38:39Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_placements: []
attributes: []
- time: '2023-10-08T05:53:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements: []
attributes: []
waitlist: []
attributes: []
statistics:
total_statistics:
cost: 2415.263
reward: 3000.3
measurements:
driving_time: PT1H15M5S
waiting_time: PT0S
break_time: PT0S
working_time: PT35M
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H50M5S
distance: 78117
time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
performers_count: 1
trips_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
cargo_capacity_ratio:
mass: 0.01
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transport_load:
mass: 0.006
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
quality:
soft_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
hard_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
trips_statistics:
- trip_key: performer_1_shift
statistics:
cost: 2415.2633333333333
reward: 3000.3
measurements:
driving_time: PT1H15M5S
waiting_time: PT0S
break_time: PT0S
working_time: PT35M
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H50M5S
distance: 78117
time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
performers_count: 1
trips_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
cargo_capacity_ratio:
mass: 0.01
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
max_transport_load:
mass: 0.006
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
quality:
soft_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
hard_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
stop_statistics:
- location_key: location_storage
demand_ids:
- demand_2_pickup
- demand_1_pickup
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT0S
waiting_time: PT0S
break_time: PT0S
working_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT0S
distance: 0
time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
upload:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_2
demand_ids:
- demand_2_drop
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT31M26S
waiting_time: PT0S
break_time: PT0S
working_time: PT10M
arriving_time: PT0S
departure_time: PT0S
total_time: PT41M26S
distance: 17108
time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:10:00Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_1
demand_ids:
- demand_1_drop
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT20M52S
waiting_time: PT0S
break_time: PT0S
working_time: PT10M
arriving_time: PT0S
departure_time: PT0S
total_time: PT30M52S
distance: 26991
time_window:
from: '2023-10-08T05:10:00Z'
to: '2023-10-08T05:30:52Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_3
demand_ids:
- demand_3_work
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT22M47S
waiting_time: PT0S
break_time: PT0S
working_time: PT15M
arriving_time: PT0S
departure_time: PT0S
total_time: PT37M47S
distance: 34018
time_window:
from: '2023-10-08T05:30:52Z'
to: '2023-10-08T05:53:39Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
total_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transfer_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
progress: 100
info:
status: FINISHED_IN_TIME
result_version: 108
preparing_time: PT1M10S
business_validation_time: PT1M10S
math_validation_time: PT1M10S
waiting_time: PT15S
calculation_time: PT1M10S
warnings: []
unplanned_items:
order_keys: []
performer_keys: []
transport_keys: []
hardlink_keys: []
PlanResultDenver:
summary: Денвер
value:
tracedata:
code: 861c8e0a-2651-444e-b426-71cdccc31423
client: veeroute_|_example
server: Universal:leo
service: UNIVERSAL
operation: runPlanCalculation
time: '2023-10-01T11:50:15.123Z'
trips:
- key: performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2023-10-08T04:45:18Z'
to: '2023-10-08T05:54:57Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2023-10-08T04:45:18Z'
to: '2023-10-08T05:54:57Z'
states:
- time: '2023-10-08T04:45:18Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:45:18Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:45:18Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:45:18Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:45:18Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:45:18Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:15:49Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:15:49Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:25:49Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements: []
attributes: []
- time: '2023-10-08T05:25:49Z'
flags:
- RELOCATING
cargo_placements: []
attributes: []
- time: '2023-10-08T05:39:57Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements: []
attributes: []
- time: '2023-10-08T05:39:57Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_placements: []
attributes: []
- time: '2023-10-08T05:54:57Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements: []
attributes: []
waitlist: []
attributes: []
statistics:
total_statistics:
cost: 2320.68
reward: 3000.3
measurements:
driving_time: PT1H9M39S
waiting_time: PT0S
break_time: PT0S
working_time: PT35M
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H44M39S
distance: 50270
time_window:
from: '2023-10-08T04:45:18Z'
to: '2023-10-08T05:54:57Z'
performers_count: 1
trips_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
cargo_capacity_ratio:
mass: 0.01
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transport_load:
mass: 0.006
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
quality:
soft_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
hard_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
trips_statistics:
- trip_key: performer_1_shift
statistics:
cost: 2320.6800000000003
reward: 3000.3
measurements:
driving_time: PT1H9M39S
waiting_time: PT0S
break_time: PT0S
working_time: PT35M
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H44M39S
distance: 50270
time_window:
from: '2023-10-08T04:45:18Z'
to: '2023-10-08T05:54:57Z'
performers_count: 1
trips_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
cargo_capacity_ratio:
mass: 0.01
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
max_transport_load:
mass: 0.006
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
quality:
soft_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
hard_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
stop_statistics:
- location_key: location_storage
demand_ids:
- demand_2_pickup
- demand_1_pickup
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT0S
waiting_time: PT0S
break_time: PT0S
working_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT0S
distance: 0
time_window:
from: '2023-10-08T04:45:18Z'
to: '2023-10-08T04:45:18Z'
upload:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_2
demand_ids:
- demand_2_drop
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT24M42S
waiting_time: PT0S
break_time: PT0S
working_time: PT10M
arriving_time: PT0S
departure_time: PT0S
total_time: PT34M42S
distance: 10478
time_window:
from: '2023-10-08T04:45:18Z'
to: '2023-10-08T05:10:00Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_1
demand_ids:
- demand_1_drop
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT15M49S
waiting_time: PT0S
break_time: PT0S
working_time: PT10M
arriving_time: PT0S
departure_time: PT0S
total_time: PT25M49S
distance: 14689
time_window:
from: '2023-10-08T05:10:00Z'
to: '2023-10-08T05:25:49Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_3
demand_ids:
- demand_3_work
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT29M8S
waiting_time: PT0S
break_time: PT0S
working_time: PT15M
arriving_time: PT0S
departure_time: PT0S
total_time: PT44M8S
distance: 25103
time_window:
from: '2023-10-08T05:25:49Z'
to: '2023-10-08T05:54:57Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
total_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transfer_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
progress: 100
info:
status: FINISHED_IN_TIME
result_version: 108
preparing_time: PT1M10S
business_validation_time: PT1M10S
math_validation_time: PT1M10S
waiting_time: PT15S
calculation_time: PT1M10S
warnings: []
unplanned_items:
order_keys: []
performer_keys: []
transport_keys: []
hardlink_keys: []
PlanResultBerlin:
summary: Берлин
value:
tracedata:
code: 861c8e0a-2651-444e-b426-71cdccc31423
client: veeroute_|_example
server: Universal:leo
service: UNIVERSAL
operation: runPlanCalculation
time: '2023-10-01T11:50:15.123Z'
trips:
- key: performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2023-10-08T04:48:15Z'
to: '2023-10-08T05:40:56Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2023-10-08T04:48:15Z'
to: '2023-10-08T05:40:56Z'
states:
- time: '2023-10-08T04:48:15Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:48:15Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:48:15Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T04:48:15Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T04:48:15Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T04:48:15Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:12:04Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:12:04Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:27:04Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:27:04Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:30:56Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:30:56Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:40:56Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements: []
attributes: []
waitlist: []
attributes: []
statistics:
total_statistics:
cost: 2176.933
reward: 3000.3
measurements:
driving_time: PT52M41S
waiting_time: PT0S
break_time: PT0S
working_time: PT35M
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H27M41S
distance: 31306
time_window:
from: '2023-10-08T04:48:15Z'
to: '2023-10-08T05:40:56Z'
performers_count: 1
trips_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
cargo_capacity_ratio:
mass: 0.01
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transport_load:
mass: 0.006
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
quality:
soft_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
hard_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
trips_statistics:
- trip_key: performer_1_shift
statistics:
cost: 2176.9333333333334
reward: 3000.3
measurements:
driving_time: PT52M41S
waiting_time: PT0S
break_time: PT0S
working_time: PT35M
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H27M41S
distance: 31306
time_window:
from: '2023-10-08T04:48:15Z'
to: '2023-10-08T05:40:56Z'
performers_count: 1
trips_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
cargo_capacity_ratio:
mass: 0.01
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
max_transport_load:
mass: 0.006
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
quality:
soft_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
hard_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
stop_statistics:
- location_key: location_storage
demand_ids:
- demand_2_pickup
- demand_1_pickup
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT0S
waiting_time: PT0S
break_time: PT0S
working_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT0S
distance: 0
time_window:
from: '2023-10-08T04:48:15Z'
to: '2023-10-08T04:48:15Z'
upload:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_1
demand_ids:
- demand_1_drop
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT21M45S
waiting_time: PT0S
break_time: PT0S
working_time: PT10M
arriving_time: PT0S
departure_time: PT0S
total_time: PT31M45S
distance: 8878
time_window:
from: '2023-10-08T04:48:15Z'
to: '2023-10-08T05:10:00Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_3
demand_ids:
- demand_3_work
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT17M4S
waiting_time: PT0S
break_time: PT0S
working_time: PT15M
arriving_time: PT0S
departure_time: PT0S
total_time: PT32M4S
distance: 10003
time_window:
from: '2023-10-08T05:10:00Z'
to: '2023-10-08T05:27:04Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_2
demand_ids:
- demand_2_drop
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT13M52S
waiting_time: PT0S
break_time: PT0S
working_time: PT10M
arriving_time: PT0S
departure_time: PT0S
total_time: PT23M52S
distance: 12425
time_window:
from: '2023-10-08T05:27:04Z'
to: '2023-10-08T05:40:56Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
total_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transfer_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
progress: 100
info:
status: FINISHED_IN_TIME
result_version: 108
preparing_time: PT1M10S
business_validation_time: PT1M10S
math_validation_time: PT1M10S
waiting_time: PT15S
calculation_time: PT1M10S
warnings: []
unplanned_items:
order_keys: []
performer_keys: []
transport_keys: []
hardlink_keys: []
PlanResultBeijing:
summary: Пекин
value:
tracedata:
code: 861c8e0a-2651-444e-b426-71cdccc31423
client: veeroute_|_example
server: Universal:leo
service: UNIVERSAL
operation: runPlanCalculation
time: '2023-10-01T11:50:15.123Z'
trips:
- key: performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2023-10-08T04:50:28Z'
to: '2023-10-08T05:47:33Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2023-10-08T04:50:28Z'
to: '2023-10-08T05:47:33Z'
states:
- time: '2023-10-08T04:50:28Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:50:28Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:50:28Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:50:28Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:50:28Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:50:28Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:15:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:15:00Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:16:45Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:16:45Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:26:45Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:26:45Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:37:33Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:37:33Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:47:33Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements: []
attributes: []
waitlist: []
attributes: []
statistics:
total_statistics:
cost: 2256.053
reward: 3000.3
measurements:
driving_time: PT57M5S
waiting_time: PT0S
break_time: PT0S
working_time: PT35M
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H32M5S
distance: 38666
time_window:
from: '2023-10-08T04:50:28Z'
to: '2023-10-08T05:47:33Z'
performers_count: 1
trips_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
cargo_capacity_ratio:
mass: 0.01
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transport_load:
mass: 0.006
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
quality:
soft_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
hard_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
trips_statistics:
- trip_key: performer_1_shift
statistics:
cost: 2256.0533333333333
reward: 3000.3
measurements:
driving_time: PT57M5S
waiting_time: PT0S
break_time: PT0S
working_time: PT35M
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H32M5S
distance: 38666
time_window:
from: '2023-10-08T04:50:28Z'
to: '2023-10-08T05:47:33Z'
performers_count: 1
trips_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
cargo_capacity_ratio:
mass: 0.01
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
max_transport_load:
mass: 0.006
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
quality:
soft_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
hard_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
stop_statistics:
- location_key: location_storage
demand_ids:
- demand_2_pickup
- demand_1_pickup
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT0S
waiting_time: PT0S
break_time: PT0S
working_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT0S
distance: 0
time_window:
from: '2023-10-08T04:50:28Z'
to: '2023-10-08T04:50:28Z'
upload:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_3
demand_ids:
- demand_3_work
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT24M32S
waiting_time: PT0S
break_time: PT0S
working_time: PT15M
arriving_time: PT0S
departure_time: PT0S
total_time: PT39M32S
distance: 8647
time_window:
from: '2023-10-08T04:50:28Z'
to: '2023-10-08T05:15:00Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_2
demand_ids:
- demand_2_drop
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT11M45S
waiting_time: PT0S
break_time: PT0S
working_time: PT10M
arriving_time: PT0S
departure_time: PT0S
total_time: PT21M45S
distance: 10122
time_window:
from: '2023-10-08T05:15:00Z'
to: '2023-10-08T05:26:45Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_1
demand_ids:
- demand_1_drop
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT20M48S
waiting_time: PT0S
break_time: PT0S
working_time: PT10M
arriving_time: PT0S
departure_time: PT0S
total_time: PT30M48S
distance: 19897
time_window:
from: '2023-10-08T05:26:45Z'
to: '2023-10-08T05:47:33Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
total_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transfer_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
progress: 100
info:
status: FINISHED_IN_TIME
result_version: 108
preparing_time: PT1M10S
business_validation_time: PT1M10S
math_validation_time: PT1M10S
waiting_time: PT15S
calculation_time: PT1M10S
warnings: []
unplanned_items:
order_keys: []
performer_keys: []
transport_keys: []
hardlink_keys: []
Result400:
summary: Ошибка в данных
value:
tracedata:
code: 11111111-2222-3333-4444-555555555555
client: company_|_username
server: server_name
service: UNIVERSAL
operation: run_plan_calculation
time: '2023-10-21T09:30:00+03:00'
message: bad task data
schema_errors: []
logical_errors: []
warnings: []
ValidateResultExample:
summary: Пример валидации
value:
tracedata:
code: 87d0c1a7-375b-412e-9ab8-8f4be24d0456
client: veeroute_|_example
server: Universal:leo
service: UNIVERSAL
operation: runValidation
time: '2023-10-01T11:50:15.123Z'
warnings:
- type: NO_AVAILABLE_TRANSPORT
entities:
- entity_key: ord0001
entity_type: ORDER
ReplanTaskMoscow:
summary: Москва
value:
locations:
- key: location_client_1
geopoint:
latitude: 55.713699
longitude: 37.621839
- key: location_client_2
geopoint:
latitude: 55.630721
longitude: 37.62493
- key: location_client_3
geopoint:
latitude: 55.722801
longitude: 37.674984
- key: location_storage
geopoint:
latitude: 55.685853
longitude: 37.43181
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
trips:
- key: performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
states:
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:20:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:20:52Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:30:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements: []
attributes: []
- time: '2023-10-08T05:30:52Z'
flags:
- RELOCATING
cargo_placements: []
attributes: []
- time: '2023-10-08T05:38:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements: []
attributes: []
- time: '2023-10-08T05:38:39Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_placements: []
attributes: []
- time: '2023-10-08T05:53:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements: []
attributes: []
waitlist: []
attributes: []
ReplanResultMoscow:
summary: Москва
value:
tracedata:
code: 861c8e0a-2651-444e-b426-71cdccc31423
client: veeroute_|_example
server: Universal:leo
service: UNIVERSAL
operation: runReplanCalculation
time: '2023-10-01T11:50:15.123Z'
trips:
- key: performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
states:
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:20:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:20:52Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:30:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements: []
attributes: []
- time: '2023-10-08T05:30:52Z'
flags:
- RELOCATING
cargo_placements: []
attributes: []
- time: '2023-10-08T05:38:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements: []
attributes: []
- time: '2023-10-08T05:38:39Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_placements: []
attributes: []
- time: '2023-10-08T05:53:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements: []
attributes: []
waitlist: []
attributes: []
statistics:
total_statistics:
cost: 2415.263
reward: 3000.3
measurements:
driving_time: PT1H15M5S
waiting_time: PT0S
break_time: PT0S
working_time: PT35M
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H50M5S
distance: 78117
time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
performers_count: 1
trips_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
cargo_capacity_ratio:
mass: 0.01
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transport_load:
mass: 0.006
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
quality:
soft_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
hard_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
trips_statistics:
- trip_key: performer_1_shift
statistics:
cost: 2415.2633333333333
reward: 3000.3
measurements:
driving_time: PT1H15M5S
waiting_time: PT0S
break_time: PT0S
working_time: PT35M
arriving_time: PT0S
departure_time: PT0S
total_time: PT1H50M5S
distance: 78117
time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
performers_count: 1
trips_count: 1
orders_count: 3
plan_orders_count: 3
waitlist_orders_count: 0
cargo_capacity_ratio:
mass: 0.01
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
max_transport_load:
mass: 0.006
volume: 1
capacity_a: 1
capacity_b: 1
capacity_c: 1
quality:
soft_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
hard_time_window_violations:
before:
keys: []
count: 0
after:
keys: []
count: 0
stop_statistics:
- location_key: location_storage
demand_ids:
- demand_2_pickup
- demand_1_pickup
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT0S
waiting_time: PT0S
break_time: PT0S
working_time: PT0S
arriving_time: PT0S
departure_time: PT0S
total_time: PT0S
distance: 0
time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
upload:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_2
demand_ids:
- demand_2_drop
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT31M26S
waiting_time: PT0S
break_time: PT0S
working_time: PT10M
arriving_time: PT0S
departure_time: PT0S
total_time: PT41M26S
distance: 17108
time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:10:00Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_1
demand_ids:
- demand_1_drop
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT20M52S
waiting_time: PT0S
break_time: PT0S
working_time: PT10M
arriving_time: PT0S
departure_time: PT0S
total_time: PT30M52S
distance: 26991
time_window:
from: '2023-10-08T05:10:00Z'
to: '2023-10-08T05:30:52Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
- location_key: location_client_3
demand_ids:
- demand_3_work
stop_time_window:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T04:38:34Z'
measurements:
driving_time: PT22M47S
waiting_time: PT0S
break_time: PT0S
working_time: PT15M
arriving_time: PT0S
departure_time: PT0S
total_time: PT37M47S
distance: 34018
time_window:
from: '2023-10-08T05:30:52Z'
to: '2023-10-08T05:53:39Z'
upload:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
download:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
arrival_load:
count: 1
capacity:
mass: 1
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
departure_load:
count: 0
capacity:
mass: 0
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
total_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
max_transfer_load:
count: 2
capacity:
mass: 2
volume: 0
capacity_a: 0
capacity_b: 0
capacity_c: 0
progress: 100
info:
status: FINISHED_IN_TIME
result_version: 108
preparing_time: PT1M10S
business_validation_time: PT1M10S
math_validation_time: PT1M10S
waiting_time: PT15S
calculation_time: PT1M10S
warnings: []
unplanned_items:
order_keys: []
performer_keys: []
transport_keys: []
hardlink_keys: []
ActualizeTaskMoscow:
summary: Москва
value:
locations:
- key: location_client_1
geopoint:
latitude: 55.713699
longitude: 37.621839
- key: location_client_2
geopoint:
latitude: 55.630721
longitude: 37.62493
- key: location_client_3
geopoint:
latitude: 55.722801
longitude: 37.674984
- key: location_storage
geopoint:
latitude: 55.685853
longitude: 37.43181
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
trips:
- key: performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
states:
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:20:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:20:52Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:30:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements: []
attributes: []
- time: '2023-10-08T05:30:52Z'
flags:
- RELOCATING
cargo_placements: []
attributes: []
- time: '2023-10-08T05:38:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements: []
attributes: []
- time: '2023-10-08T05:38:39Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_placements: []
attributes: []
- time: '2023-10-08T05:53:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements: []
attributes: []
waitlist: []
attributes: []
ConvertTaskMoscow:
summary: Москва
value:
locations:
- key: location_client_1
geopoint:
latitude: 55.713699
longitude: 37.621839
- key: location_client_2
geopoint:
latitude: 55.630721
longitude: 37.62493
- key: location_client_3
geopoint:
latitude: 55.722801
longitude: 37.674984
- key: location_storage
geopoint:
latitude: 55.685853
longitude: 37.43181
orders:
- key: order_1
demands:
- key: demand_1_drop
demand_type: DROP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_drop_event
location_key: location_client_1
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_1_pickup
demand_type: PICKUP
target_cargos:
- order_1_cargos
possible_events:
- key: demand_1_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_1_cargos
capacity:
mass: 1
- key: order_2
demands:
- key: demand_2_drop
demand_type: DROP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_drop_event
location_key: location_client_2
duration: PT10M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
- key: demand_2_pickup
demand_type: PICKUP
target_cargos:
- order_2_cargos
possible_events:
- key: demand_2_pickup_event
location_key: location_storage
duration: P0D
reward: 0
hard_time_window:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
cargos:
- key: order_2_cargos
capacity:
mass: 1
- key: order_3
demands:
- key: demand_3_work
demand_type: WORK
possible_events:
- key: demand_3_work_event
location_key: location_client_3
duration: PT15M
hard_time_window:
from: '2023-10-08T05:00:00+00:00'
to: '2023-10-08T07:00:00+00:00'
performers:
- key: performer_1
shifts:
- key: performer_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: PT10H
cost_per_unit: 1
transports:
- key: transport_1
shifts:
- key: transport_1_shift
availability_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
working_time:
from: '2023-10-07T21:00:00+00:00'
to: '2023-10-08T20:59:59+00:00'
tariff:
cost_per_shift: 1000
constraints:
- stage_length: 1000000
cost_per_unit: 0.01
transport_type: CAR
boxes:
- key: box_1
capacity:
mass: 300
trips:
- key: performer_1_shift
performer:
performer_key: performer_1
shift_key: performer_1_shift
shift_time:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
transport:
transport_key: transport_1
shift_key: transport_1_shift
shift_time:
from: '2023-10-08T04:38:34Z'
to: '2023-10-08T05:53:39Z'
states:
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_pickup
event_key: demand_2_pickup_event
location_key: location_storage
cargo_placements: []
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_pickup
event_key: demand_1_pickup_event
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_storage
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T04:38:34Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:00:00Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_2
demand_key: demand_2_drop
event_key: demand_2_drop_event
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
- box_key: box_1
cargo_key: order_2_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_2
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:10:00Z'
flags:
- RELOCATING
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:20:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:20:52Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_1
demand_key: demand_1_drop
event_key: demand_1_drop_event
location_key: location_client_1
cargo_placements:
- box_key: box_1
cargo_key: order_1_cargos
attributes: []
- time: '2023-10-08T05:30:52Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_1
cargo_placements: []
attributes: []
- time: '2023-10-08T05:30:52Z'
flags:
- RELOCATING
cargo_placements: []
attributes: []
- time: '2023-10-08T05:38:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements: []
attributes: []
- time: '2023-10-08T05:38:39Z'
flags:
- ON_DEMAND
- INSIDE_EVENT_HARD_WINDOW
- INSIDE_LOCATION_WINDOW
- INSIDE_LOCATION
- AROUND_LOCATION
order_key: order_3
demand_key: demand_3_work
event_key: demand_3_work_event
location_key: location_client_3
cargo_placements: []
attributes: []
- time: '2023-10-08T05:53:39Z'
flags:
- INSIDE_LOCATION
- AROUND_LOCATION
location_key: location_client_3
cargo_placements: []
attributes: []
waitlist: []
attributes: []
responses:
'401':
description: 'Ошибка доступа - токен отсутствует или невалиден
'
content:
application/json:
schema:
$ref: '#/components/schemas/general_401'
'402':
description: Необходима оплата
content:
application/json:
schema:
$ref: '#/components/schemas/general_402'
'403':
description: 'Действие запрещено - уровень прав доступа не позволяет совершить
данное действие
'
content:
application/json:
schema:
$ref: '#/components/schemas/general_403'
'404':
description: Запрашиваемая сущность не найдена
content:
application/json:
schema:
$ref: '#/components/schemas/general_404'
'405':
description: 'Метод запрещен для данного ресурса, проверьте указанный метод
(POST, GET, ...)
'
'406':
description: 'Клиент не способен обработать формат ответа, проверьте заголовки
'
'415':
description: 'Неприемлемый формат запроса, проверьте заголовки
'
'429':
description: Превышено количество запросов
content:
application/json:
schema:
$ref: '#/components/schemas/general_429'
'500':
description: Внутренняя ошибка сервера
content:
application/json:
schema:
$ref: '#/components/schemas/general_500'
'501':
description: Функциональность не доступна для использования
'502':
description: Неверный шлюз
'503':
description: Сервис не доступен
'504':
description: Шлюз не отвечает
400_with_errors_and_warnings:
description: Неверный запрос - данные содержат ошибки
content:
application/json:
schema:
$ref: '#/components/schemas/custom_400_with_errors_and_warnings'
examples:
Result400:
$ref: '#/components/examples/Result400'
parameters:
result_id:
name: id
in: path
description: Идентификатор расчета.
required: true
schema:
$ref: '#/components/schemas/calculation_id'
filename:
name: filename
description: Название файла.
in: path
required: true
schema:
description: Название файла.
type: string
minLength: 6
maxLength: 128
example: file_en.html