openapi: 3.0.3 info: title: VRt.Monitor [MT] version: 6.20.2289 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/monitor.svg backgroundColor: '#FAFAFA' altText: VRt.Monitor description: 'Программный интерфейс для инструмента Veeroute Monitor. # Описание Серверная часть Veeroute Monitor. ## Диаграмма сущностей ![erd](../uml/monitor.svg)' servers: - url: https://api.edge.veeroute.tech description: Окружение для интеграции и ознакомления с новой функциональностью - url: https://api.prod.veeroute.com description: Основное окружение security: - ApiKeyAuth: [] tags: - name: Trips description: 'Управление рейсами. ' - name: System description: 'Системные функции. Вспомогательный функционал, общий для всех сервисов. ' externalDocs: description: Основной сайт url: https://veeroute.ru/ paths: /monitor/trips/{essence_key}: parameters: - $ref: '#/components/parameters/essence_key' get: tags: - Trips summary: Чтение рейса description: Получение информации о рейсе по его ключу. operationId: read_trip responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/web_trip' '400': $ref: '#/components/responses/400_with_errors_and_warnings' '401': $ref: '#/components/responses/401' '402': $ref: '#/components/responses/402' '403': $ref: '#/components/responses/403' '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' /monitor/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' /monitor/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' /monitor/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: basic_essence_key: description: Ключ, уникальный идентификатор. type: string nullable: true default: null minLength: 1 maxLength: 1024 example: key01 trip_name: description: Краткое наименование рейса. type: string minLength: 0 maxLength: 64 default: '' example: 1-ABC 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: '2024-02-21T09:30:00+03:00' to: description: 'Дата и время в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6). ' type: string format: date-time example: '2024-02-21T19:45:00Z' required: - from - to 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' 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: 2000 example: X51 required: - key - value attributes: description: Атрибуты. Используются для указания служебной информации. type: array minItems: 0 maxItems: 1000 uniqueItems: true default: [] items: $ref: '#/components/schemas/attribute' 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: '2024-02-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 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 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 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 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 basic_enabled: description: Использование сущности в расчете. type: boolean default: true example: false readOnly: false basic_pristine: description: 'Флаг, показывающий производились ли изменения сущности относительно исходных данных. `true` - означает что данные исходные и не изменялись. ' type: boolean default: true example: false readOnly: true basic_attributes: description: Атрибуты. type: string minLength: 0 maxLength: 1000000 default: '' example: key1:value1, key2:value2 basic_time_window: description: Временное окно. type: object additionalProperties: false nullable: true properties: from: description: "Дата и время в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6).\n\ Для левой границы временного окна выбирается самое ранее из левых границ\ \ временных окон дочерних сущностей. \n" type: string format: date-time nullable: true example: '2024-02-21T08:45:00+03:00' to: description: 'Дата и время в соответствии с [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6). Для правой границы временного окна выбирается самое позднее из правых границ временных окон дочерних сущностей. ' type: string format: date-time nullable: true example: '2024-02-21T19:45:00+03:00' table_trip_fields: description: Табличные поля рейса и остановок. type: object additionalProperties: false readOnly: true properties: essence_key: $ref: '#/components/schemas/basic_essence_key' essence_type: description: Тип сущности. type: string nullable: false enum: - TRIP - STOP default: TRIP example: TRIP enabled: $ref: '#/components/schemas/basic_enabled' pristine: $ref: '#/components/schemas/basic_pristine' trip_name: $ref: '#/components/schemas/trip_name' attributes: $ref: '#/components/schemas/basic_attributes' cost: description: 'Суммарные затраты, которые считаются на базе тарифов исполнителей и транспорта. Суммарная стоимость при этом равна разнице между суммарным вознаграждением (`reward`) и расходами (`cost`). ' type: number format: double minimum: 0 example: 1231.1 default: 0 reward: description: Суммарное вознаграждение за выполнение заказов. type: number format: double minimum: 0 example: 2343.3 default: 0 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 default: 0 time_window: $ref: '#/components/schemas/basic_time_window' orders_count: description: Суммарное количество запланированных и назначенных заказов. type: integer format: int32 minimum: 0 maximum: 15001 example: 1700 default: 0 plan_orders_count: description: Суммарное количество запланированных заказов. type: integer format: int32 minimum: 0 maximum: 15001 example: 1003 default: 0 waitlist_orders_count: description: Суммарное количество назначенных заказов. type: integer format: int32 minimum: 0 maximum: 15001 example: 697 default: 0 stops_count: description: Суммарное количество остановок (неуникальных локаций). type: integer format: int32 minimum: 0 maximum: 15001 example: 87 default: 0 locations_count: description: Суммарное количество уникальный локаций в рамках одного рейса. type: integer format: int32 minimum: 0 maximum: 15001 example: 45 default: 0 cargo_capacity_ratio_mass: description: Отношение суммарных аддитивных мер перевезенного груза к суммарной вместимости отсеков (по массе). type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 10 cargo_capacity_ratio_volume: description: Отношение суммарных аддитивных мер перевезенного груза к суммарной вместимости отсеков (по обьему). type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 2 cargo_capacity_ratio_capacity_a: description: Отношение суммарных аддитивных мер перевезенного груза к суммарной вместимости отсеков (по параметру A). type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 1 cargo_capacity_ratio_capacity_b: description: Отношение суммарных аддитивных мер перевезенного груза к суммарной вместимости отсеков (по параметру B). type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 2 cargo_capacity_ratio_capacity_c: description: Отношение суммарных аддитивных мер перевезенного груза к суммарной вместимости отсеков (по параметру C). type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 3 max_transport_load_mass: description: Отношение максимальной загрузки отсеков к суммарной вместимости отсеков (по массе). type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 0.1 max_transport_load_volume: description: Отношение максимальной загрузки отсеков к суммарной вместимости отсеков (по обьему). type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 0.1 max_transport_load_capacity_a: description: Отношение максимальной загрузки отсеков к суммарной вместимости отсеков (по параметру A). type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 0.1 max_transport_load_capacity_b: description: Отношение максимальной загрузки отсеков к суммарной вместимости отсеков (по параметру B). type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 0.1 max_transport_load_capacity_c: description: Отношение максимальной загрузки отсеков к суммарной вместимости отсеков (по параметру C). type: number format: double minimum: 0 maximum: 1000000 default: 0 example: 0.1 linked_essence: description: Ссылка на связанную сущность. type: object additionalProperties: false properties: essence_key: $ref: '#/components/schemas/basic_essence_key' essence_type: description: Тип сущности. type: string nullable: false enum: - LOCATION - ORDER - ASSIGNED_ORDER - PERFORMER - TRANSPORT - HARDLINK - TRIP - FACT example: LOCATION required: - essence_key - essence_type linked_essence_list: description: Список связанных сущностей. type: array uniqueItems: false minItems: 0 maxItems: 15001 items: $ref: '#/components/schemas/linked_essence' web_trip: description: Web Trip. type: object additionalProperties: false properties: trip: $ref: '#/components/schemas/trip' trip_statistics: $ref: '#/components/schemas/trip_statistics' fields: $ref: '#/components/schemas/table_trip_fields' linked_essences: $ref: '#/components/schemas/linked_essence_list' required: - trip - trip_statistics service_name: description: Название сервиса. type: string enum: - UNIVERSAL - ROUTING - ACCOUNT - ADMIN - STUDIO - MONITOR - 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: '2024-02-21T09:30:00+03:00' required: - code - client - server - service - operation - time 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_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_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' 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 * `DURATION_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 * `EXTRA_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 * `CARGO_ORDER_VIOLATION` - указанный\ \ в заказе груз не присутствует в заявках\n * `FEATURE_LIFETIME_VIOLATION`\ \ - окна свойств пересекаются между собой или рабочее окно `working_window`\ \ смены исполнителя или транспорта не пересекается с временным окном свойства\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 - DURATION_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 - EXTRA_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 - CARGO_ORDER_VIOLATION - FEATURE_LIFETIME_VIOLATION example: TIME_WINDOW_VIOLATION 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: [] 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_403: description: Детализация по ошибке 403. type: object additionalProperties: false properties: tracedata: $ref: '#/components/schemas/tracedata' message: description: Сообщение об ошибке. type: string nullable: true example: Forbidden 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 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 parameters: essence_key: name: essence_key description: Ключ. in: path required: true schema: $ref: '#/components/schemas/basic_essence_key' filename: name: filename description: Название файла. in: path required: true schema: description: Название файла. type: string minLength: 6 maxLength: 128 example: file_en.html 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' examples: Result400: summary: Ошибка в данных value: tracedata: code: 215b87e0-4407-4e0f-b2cc-8540f8f0cad7 client: veeroute_|_example server: edge service: UNIVERSAL operation: run_plan_calculation time: '2024-02-28T17:13:27.945583194Z' message: logical schema_errors: [] logical_errors: - type: UNIQUE_IDS_VIOLATION entities: - entity_key: order_1 entity_type: ORDER warnings: []