openapi: 3.0.3 info: title: VRt.Packer [PC] version: 6.20.2289 license: name: Proprietary url: https://veeroute.ru/ contact: name: Veeroute Support Team email: servicedesk@veeroute.com x-logo: url: ../images/packer.svg backgroundColor: '#FAFAFA' altText: VRt.Packer description: "Программный интерфейс для Veeroute Packer.\n\n# Описание\n\nСервис\ \ предназначен для расчета размещения товаров внутри заданных упаковок.\n\n##\ \ Виды упаковок\n\n### Поддон\n\n![pallet](../images/packer_pallet.svg)\n\n*Моно-поддон*\n\ \nЕсли поддон полностью укомплектован одинаковым товаром, то такой поддон называется\ \ **моно-поддон**,\nтакой поддон имеет следующие правила загрузки:\n\n1. Учитывается\ \ максимально допустимая высота поддона с уложенным на него товаром.\n1. Учитывается\ \ максимально допустимый вес загруженного поддона.\n1. Упаковки товара могут укладываться\ \ только параллельно стенкам поддона.\n1. Допускается поворачивать упаковки вокруг\ \ вертикальной оси Z и только под прямым углом.\n1. Чтобы выровнять высоту между\ \ позициями (для размещения еще одного поддона сверху), в укладку по слоям могут\ \ добавляться пустые места.\n\n*Разделенный на зоны поддон*\n\nПосле формирования\ \ моно-поддонов оставшаяся часть товаров того же артикула размещается на на следующем\ \ поддоне,\nкоторый делится при помощи картонной перегородки на зоны таким образом,\ \ чтобы в каждой зоне был размещен товар только одного артикула,\nпри этом зоны\ \ имеют следующие ограничения:\n\n1. Зоны прямоугольные.\n1. Соотношение между\ \ сторонами зон может быть любое.\n1. Одна из сторон любой зоны всегда соприкасается\ \ с краем поддоны.\n1. Допустимое количество зон на поддоне: от 2 до 6.\n1. Каждая\ \ зона заполняется по правилам заполнения моно-поддона.\n1. Высота укладки всех\ \ товаров не превышает 50 мм, чтобы сверху такого поддона можно было поставить\ \ еще один поддон.\n1. Допускается формировать поддоны с разной высотой укладки\ \ для разных позиций (разница высот больше 50 мм), если это будут верхние поддоны\ \ в стопке.\n\n### Миксбокс\n\n![mixbox](../images/packer_mixbox.svg)\n\nЕсли\ \ на описанных выше этапах не удается разместить номенклатуру таким образом,\n\ чтобы поддон был необходимой высоты или веса, используются миксбоксы:\n\n1. Миксбокс\ \ можно класть только в один слой.\n1. В одном миксбоксе могут находится разные\ \ товары, в этом случае он делится перегородками аналогично поддону (единственно\ \ отличие - не выравнивается высота упакованного товара).\n1. Миксбоксы можно\ \ смешивать с товарными позициями на одной палете.\n1. Один товар может быть упакован\ \ в разные миксбокс.\n\n### Слот\n\n![slot](../images/packer_slot.svg)\n\nЗагруженные\ \ поддоны укладываются в стопки друг на друга, слот - это место установки стопки\ \ поддонов.\nУ слота нет физического тела - поэтому размеры `body` слота нулевые.\n\ \n## Система координат\n\n![coordinates](../images/packer_coordinates.svg)\n\n\ Для указания местоположение упаковок и товаров используется локальная система\ \ координат, \nв которой координаты конкретного объекта указываются относительно\ \ ближнего левого нижнего угла родительского объекта, при этом:\n\n* Горизонтальная\ \ плоскость - оси **X**, **Y**\n* Вертикальная - ось **Z**\n\nСоотношение осей\ \ товаров и упаковок:\n\n* Ширина - по оси **X**\n* Длина - по оси **Y**\n* Высота\ \ - по оси **Z**\n\n## Диаграмма сущностей\n\n![erd](../uml/packer.svg)" servers: - url: https://api.edge.veeroute.tech description: Окружение для интеграции и ознакомления с новой функциональностью - url: https://api.prod.veeroute.com description: Основное окружение security: - ApiKeyAuth: [] tags: - name: Pack description: "Расчет размещения товаров внутри упаковок. \n" - name: System description: 'Системные функции. Вспомогательный функционал, общий для всех сервисов. ' externalDocs: description: Основной сайт url: https://veeroute.ru/ paths: /packer/pack/calculation: post: tags: - Pack summary: Упаковка (SYNC) description: Планирование оптимального размещения. operationId: run_pack_calculation requestBody: description: Данные для расчета. required: true content: application/json: schema: $ref: '#/components/schemas/pack_task' examples: PackTaskSmall: $ref: '#/components/examples/PackTaskSmall' PackTaskBig: $ref: '#/components/examples/PackTaskBig' responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/pack_result' examples: PackResultSmall: $ref: '#/components/examples/PackResultSmall' PackResultBig: $ref: '#/components/examples/PackResultBig' '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_packer import * from vrt_lss_packer.apis import * from vrt_lss_packer.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) packer_api = PackApi(client) # run check check_response = system_api.check() print(check_response) # run sync calculation task = PackTask(...) result = packer_api.pack(task) print(result)' /packer/pack/calculation_async: post: tags: - Pack summary: Упаковка (ASYNC) description: 'Получение результата производится с помощью метода [result](#operation/read_pack_result), а удаление - с помощью [delete](#operation/delete_pack_result). ' operationId: run_pack_calculation_async requestBody: description: Данные для расчета. required: true content: application/json: schema: $ref: '#/components/schemas/pack_task' examples: PackTaskSmall: $ref: '#/components/examples/PackTaskSmall' PackTaskBig: $ref: '#/components/examples/PackTaskBig' 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' /packer/pack/calculation_async/{id}: parameters: - $ref: '#/components/parameters/result_id' get: tags: - Pack summary: Состояние расчета description: Получение состояния расчета по идентификатору расчета. operationId: read_pack_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: - Pack summary: Отмена расчета description: Отмена процесса планирования по идентификатору расчета. operationId: cancel_pack_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' /packer/pack/result/{id}: parameters: - $ref: '#/components/parameters/result_id' get: tags: - Pack summary: Получение результата description: Получение результата расчета по идентификатору расчета. operationId: read_pack_result responses: '200': description: Успешное выполнение - расчет завершен. content: application/json: schema: $ref: '#/components/schemas/pack_result' examples: PackResultSmall: $ref: '#/components/examples/PackResultSmall' PackResultBig: $ref: '#/components/examples/PackResultBig' '202': description: Расчет в процессе. content: application/json: schema: $ref: '#/components/schemas/pack_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: - Pack summary: Удаление результата description: Удаление результата по идентификатору расчета. operationId: delete_pack_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' /packer/pack/validation: post: tags: - Pack summary: Валидация данных description: Проверка данных перед отправкой на расчет. operationId: run_pack_validation requestBody: description: Данные для расчета. required: true content: application/json: schema: $ref: '#/components/schemas/pack_task' examples: PackTaskSmall: $ref: '#/components/examples/PackTaskSmall' PackTaskBig: $ref: '#/components/examples/PackTaskBig' responses: '200': description: Успешное выполнение content: application/json: schema: $ref: '#/components/schemas/validate_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' /packer/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' /packer/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' /packer/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: dimensions: description: Габаритные характеристики (Д-Ш-В) и масса. type: object additionalProperties: false properties: length: description: Длина в миллиметрах. type: integer format: int32 minimum: 0 maximum: 100000 example: 1000 width: description: Ширина в миллиметрах. type: integer format: int32 minimum: 0 maximum: 100000 example: 1000 height: description: Высота в миллиметрах. type: integer format: int32 minimum: 0 maximum: 100000 example: 1000 mass: description: Масса в граммах. type: integer format: int32 minimum: 0 maximum: 1000000 example: 1000 required: - length - width - height - mass 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' product: description: 'Товар. Можно вращать на 90 градусов вокруг вертикальной оси. ' type: object additionalProperties: false properties: key: description: Ключ товара, уникальный идентификатор (SKU). type: string minLength: 1 maxLength: 1024 example: pallet_type_1 count: description: Количество товаров. type: integer format: int32 minimum: 1 maximum: 70001 default: 1 example: 1460 dimensions: $ref: '#/components/schemas/dimensions' description: Внешние размеры и масса одного товара. max_pressure: description: Максимально допустимая нагрузка сверху, которую выдержит данный товар, в кг/м2. type: integer format: int32 minimum: 0 maximum: 100000 example: 2 default: 100000 compatible_package_keys: description: 'Список ключей совместимых упаковок. Если список пустой - то все упаковки считаются совместимыми. Список должен быть либо пустой, либо в нем должны быть перечислены ключи всех миксбоксов. ' type: array minItems: 0 maxItems: 11 uniqueItems: true default: [] items: description: Ключ упаковки. type: string minLength: 1 maxLength: 1024 example: - pallet_type_1 attributes: $ref: '#/components/schemas/attributes' required: - key - dimensions package_type: description: "Типы [упаковки](#section/Opisanie/Process-upakovki):\n * `SLOT`\ \ - место в кузове транспорта под стопку поддонов, высота ограничивает стопку\ \ поддонов\n * `PALLET` - поддон, товары складывается сверху на поддон, с\ \ помощью картонной перегородки может делится на 2 - 6 частей, в каждой из\ \ которой размещаются одинаковые товары\n * `MIXBOX` - mix-короб, товар складывается\ \ внутрь короба\n" type: string enum: - SLOT - PALLET - MIXBOX example: MIXBOX coordinates: description: Локальные [координаты](#section/Opisanie/Sistema-koordinat). type: object additionalProperties: false properties: x: description: Локальная координата по оси X, в миллиметрах. type: integer format: int32 minimum: 0 maximum: 100000 example: 1000 y: description: Локальная координата по оси Y, в миллиметрах. type: integer format: int32 minimum: 0 maximum: 100000 example: 2000 z: description: Локальная координата по оси Z, в миллиметрах. type: integer format: int32 minimum: 0 maximum: 100000 example: 3000 required: - x - y - z package: description: Упаковка. type: object additionalProperties: false properties: key: description: Ключ упаковки, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: pallet_type_1 type: $ref: '#/components/schemas/package_type' body_dimensions: $ref: '#/components/schemas/dimensions' description: Габаритные размеры и масса основного тела упаковки. container_dimensions: $ref: '#/components/schemas/dimensions' description: Размеры и максимально допустимая масса контейнера — полезного пространства для расположения товара. container_coordinates: $ref: '#/components/schemas/coordinates' description: Смещение дальнего левого нижнего угла контейнера относительно основного тела. attributes: $ref: '#/components/schemas/attributes' required: - key - type - body_dimensions - container_dimensions - container_coordinates 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 pack_settings: description: Настройки упаковки. type: object additionalProperties: false properties: calculation_settings: $ref: '#/components/schemas/calculation_settings' pack_task: description: Исходная задача. type: object additionalProperties: false properties: products: description: Список товаров, которые необходимо упаковать. type: array uniqueItems: true minItems: 1 maxItems: 70001 nullable: false items: $ref: '#/components/schemas/product' packages: description: 'Список доступных упаковок. Обязательно наличие хотя бы одной упаковки каждого типа (SLOT, PALLET, MIXBOX). ' type: array uniqueItems: true minItems: 1 maxItems: 11 nullable: false items: $ref: '#/components/schemas/package' pack_settings: $ref: '#/components/schemas/pack_settings' required: - products - packages 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 product_layout: description: Расположение товара в упаковке. type: object additionalProperties: false properties: product_key: description: Ключ товара, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: pallet_type_1 coordinates: $ref: '#/components/schemas/coordinates' dimensions: $ref: '#/components/schemas/dimensions' description: Габаритные размеры и масса товара. required: - product_key - coordinates - dimensions product_group_layout: description: 'Расположение группы одинакового (по ключу) товара в упаковке. Группа товара - виртуальная упаковка, которая объединяет одинаковые (по ключу) товары внутри другой упаковки. ' type: object additionalProperties: false properties: product_key: description: Ключ товара, который находится в данной группе. type: string minLength: 1 maxLength: 1024 example: pallet_type_1 coordinates: $ref: '#/components/schemas/coordinates' dimensions: $ref: '#/components/schemas/dimensions' description: Габаритные размеры и суммарная масса группы товара. product_layouts: description: Список запланированных расположений товаров. type: array uniqueItems: false minItems: 0 maxItems: 70001 nullable: false items: $ref: '#/components/schemas/product_layout' required: - product_key - coordinates - dimensions - product_layouts package_layout: description: 'Расположение товара или других упаковок в упаковке. ' type: object additionalProperties: false properties: package_key: description: Ключ упаковки, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: pallet_type_1 coordinates: $ref: '#/components/schemas/coordinates' description: Координаты нижнего левого дальнего угла упаковки относительно нижнего левого дальнего угла родительской упаковки. dimensions: $ref: '#/components/schemas/dimensions' description: Габаритные размеры и масса загруженной упаковки. product_group_layouts: description: Список запланированных расположений групп одинаковых товаров. type: array uniqueItems: false minItems: 0 maxItems: 70001 nullable: false items: $ref: '#/components/schemas/product_group_layout' package_layouts: description: Список запланированных расположений упаковок. type: array uniqueItems: false minItems: 0 maxItems: 70001 nullable: false items: $ref: '#/components/schemas/package_layout' required: - package_key - coordinates - dimensions - product_group_layouts - package_layouts blueprint: description: 'План размещения товаров в виде списка расположений упаковок. На первом уровне находится список стопок поддонов. ' type: array uniqueItems: false minItems: 0 maxItems: 70001 items: $ref: '#/components/schemas/package_layout' example: - package_key: slot_1 coordinates: x: 0 y: 0 z: 0 dimensions: length: 1200 width: 800 height: 250 mass: 70000 package_layouts: - package_key: pallet_1 coordinates: x: 0 y: 0 z: 0 dimensions: length: 1200 width: 800 height: 250 mass: 70000 package_layouts: [] product_group_layouts: - product_key: product_1 coordinates: x: 0 y: 0 z: 150 dimensions: length: 1000 width: 500 height: 100 mass: 60000 product_layouts: - product_key: product_1 coordinates: x: 0 y: 0 z: 150 dimensions: length: 1000 width: 500 height: 100 mass: 60000 product_group_layouts: [] package_statistics: description: Статистика по упаковке. type: object additionalProperties: false properties: package_key: description: Ключ упаковки, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: pallet_type_1 package_type: $ref: '#/components/schemas/package_type' count: description: Количество упаковок. type: integer format: int32 minimum: 0 maximum: 700001 example: 1700 max_container_mass: description: Максимальная масса товаров, которую вмещает данная упаковка (суммарно по всем упаковкам указанного ключа и типа), в килограммах. type: number format: double minimum: 0 maximum: 1000000 example: 2144.69 max_container_volume: description: Максимальный объем товаров, который вмещает данная упаковка (суммарно по всем упаковкам указанного ключа и типа), в кубических метрах. type: number format: double minimum: 0 maximum: 1000000 example: 100 utilization_by_mass: description: Утилизация по массе (в долях) - отношение загруженной массы к максимально возможной (без учета массы упаковок). type: number format: double minimum: 0 maximum: 1 example: 0.98 utilization_by_volume: description: Утилизация по обьему (в долях) - отношение загруженного объема к максимально возможному (без учета объема упаковок). type: number format: double minimum: 0 maximum: 1 example: 0.91 required: - package_key - package_type - count - max_container_mass - max_container_volume - utilization_by_mass - utilization_by_volume pack_statistics: description: 'Общая статистика по схеме упаковки. ' type: object additionalProperties: false properties: products_count: description: Суммарное количество упакованных товаров (с учетом количества товара в одной группе). type: integer format: int32 minimum: 0 maximum: 700001 example: 257 packages_count: description: Количество использованных упаковок. type: integer format: int32 minimum: 0 maximum: 700001 example: 1700 total_mass: description: Суммарная масса всех товаров в килограммах. type: number format: double minimum: 0 maximum: 1000000 example: 2144.69 total_volume: description: Суммарный объем всех упакованных товаров в кубических метрах. type: number format: double minimum: 0 maximum: 1000000 example: 100 package_statistics: description: Статистика по использованным упаковкам. type: array uniqueItems: true minItems: 0 maxItems: 11 nullable: false items: $ref: '#/components/schemas/package_statistics' required: - products_count - packages_count - total_mass - total_volume - package_statistics entity_warning_type: description: "Тип предупреждения:\n * `INVALID_PALLET_SLOT_FIT` - поддон без\ \ поворотов должен помещаться в слот с учётом максимальной загрузки по размерам\ \ и массе\n * `INVALID_MIXBOX_PALLET_FIT` - любой миксбокс должен помещаться\ \ в поддон с учётом максимальной загрузки, любые 4 миксбокса одного типа в\ \ конфигурации 2×2 без поворотов должны помещаться по габаритным размерам\ \ и массе тела упаковки body_dimensions на любой поддон\n * `INVALID_PRODUCT_PACKAGE_FIT`\ \ - товар должен помещаться или на поддон или во все миксбоксы (при наличии\ \ совместимостей только с миксбоксами)\n * `INVALID_PRODUCT_COMPATIBILITY`\ \ - товар должен быть совместим либо со всеми упаковками (кроме слота), либо\ \ только со всеми миксбоксами\n" type: string enum: - INVALID_PALLET_SLOT_FIT - INVALID_MIXBOX_PALLET_FIT - INVALID_PRODUCT_PACKAGE_FIT - INVALID_PRODUCT_COMPATIBILITY example: INVALID_PRODUCT_PACKAGE_FIT entity_type: description: Тип сущности. type: string enum: - TASK - SETTINGS - PRODUCT - PACKAGE example: TASK 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: 70001 items: $ref: '#/components/schemas/entity_path' required: - type - entities entity_warning_list: description: "Список предупреждений. В зависимости от флага `calculation_settings.treat_warnings_as_errors`\ \ - сработавшие проверки интерпретируются как ошибки или приводят к удалению\ \ некорректных данных из расчета. \n" type: array uniqueItems: false minItems: 0 maxItems: 70001 items: $ref: '#/components/schemas/entity_warning' example: [] unpacked_items: description: Список неупакованных товаров и не используемых упаковок. type: object additionalProperties: false properties: product_keys: description: Список ключей товаров, которые не удалось упаковать. type: array uniqueItems: true minItems: 0 maxItems: 70001 items: description: Ключ, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: product_01 package_keys: description: Список ключей неиспользованных упаковок. type: array uniqueItems: true minItems: 0 maxItems: 11 items: description: Ключ, уникальный идентификатор. type: string minLength: 1 maxLength: 1024 example: package_01 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 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 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 pack_result: description: Результат упаковки. type: object additionalProperties: false properties: tracedata: $ref: '#/components/schemas/tracedata' blueprint: $ref: '#/components/schemas/blueprint' statistics: $ref: '#/components/schemas/pack_statistics' warnings: $ref: '#/components/schemas/entity_warning_list' unpacked_items: $ref: '#/components/schemas/unpacked_items' progress: $ref: '#/components/schemas/calculation_progress' info: $ref: '#/components/schemas/calculation_info' required: - tracedata - blueprint - 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 * `UNIQUE_IDS_VIOLATION` - все идентификаторы должны\ \ быть уникальными\n * `INCONSISTENT_REFERENCE` - ссылка на несуществующую\ \ сущность\n * `INVALID_SLOTS_COUNT` - должна присутствовать ровна одна упаковка\ \ типа SLOT\n * `INVALID_SLOT_CONTAINER` - у слота container_coordinates\ \ должны быть нулевыми\n * `INVALID_SLOT_BODY` - у слота body_dimensions\ \ должны быть нулевыми\n * `INVALID_PALLETS_COUNT` - должна присутствовать\ \ ровно одна упаковка типа PALLET\n * `INVALID_PALLET_CONTAINER_DIMENSIONS`\ \ - у поддона длина и ширина container_dimensions не должна быть больше соответствующих\ \ измерений body_dimensions\n * `INVALID_PALLET_CONTAINER` - контейнер поддона\ \ не должен выходить за границы тела поддона по длине и ширине\n * `INVALID_MIXBOX_CONTAINER`\ \ - контейнер миксбокса должен находиться внутри тела с учётом смещения container_coordinates\n\ \ * `INVALID_MIXBOX_COUNT` - должна присутствовать хотя бы одна валидная\ \ упаковка типа MIXBOX\n * `INVALID_PRODUCT_DIMENSIONS` - длина, ширина и\ \ высота товара должны быть не меньше 1 миллиметра, масса — не меньше 1 грамма\n\ \ * `INVALID_PRODUCT_COUNT` - должен присутствовать хотя бы один валидный\ \ товар\n" type: string enum: - UNIQUE_IDS_VIOLATION - INCONSISTENT_REFERENCE - INVALID_SLOTS_COUNT - INVALID_SLOT_CONTAINER - INVALID_SLOT_BODY - INVALID_PALLETS_COUNT - INVALID_PALLET_CONTAINER_DIMENSIONS - INVALID_PALLET_CONTAINER - INVALID_MIXBOX_CONTAINER - INVALID_MIXBOX_COUNT - INVALID_PRODUCT_DIMENSIONS - INVALID_PRODUCT_COUNT example: UNIQUE_IDS_VIOLATION 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: 70001 items: $ref: '#/components/schemas/entity_path' required: - type - entities entity_error_list: description: 'Список ошибок в исходных данных, из-за которых запуск расчета невозможен. ' type: array uniqueItems: false minItems: 0 maxItems: 70001 items: $ref: '#/components/schemas/entity_error' custom_400_with_errors_and_warnings: description: Детализация по ошибке. 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 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: PackTaskSmall: summary: 1 Товар value: products: - key: product_1 count: 1 dimensions: length: 1200 width: 800 height: 150 mass: 60000 packages: - key: slot_default type: SLOT body_dimensions: length: 0 width: 0 height: 0 mass: 0 container_dimensions: length: 1200 width: 800 height: 1800 mass: 1000000 container_coordinates: x: 0 y: 0 z: 0 - key: pallet_default type: PALLET body_dimensions: length: 1200 width: 800 height: 150 mass: 10000 container_dimensions: length: 1200 width: 800 height: 1650 mass: 650000 container_coordinates: x: 0 y: 0 z: 150 - key: mixbox_default type: MIXBOX body_dimensions: length: 580 width: 380 height: 200 mass: 0 container_dimensions: length: 580 width: 380 height: 200 mass: 60000 container_coordinates: x: 0 y: 0 z: 0 pack_settings: calculation_settings: max_calculation_time: PT10M max_waiting_time: PT10M result_ttl: PT10M treat_warnings_as_errors: false PackTaskBig: summary: 132 Товара value: products: - key: product_type_1 count: 12 dimensions: length: 400 width: 400 height: 300 mass: 1500 max_pressure: 2 - key: product_type_2.1 count: 20 dimensions: length: 100 width: 100 height: 100 mass: 1000 - key: product_type_2.2 count: 20 dimensions: length: 100 width: 100 height: 100 mass: 1000 - key: product_type_2.3 count: 20 dimensions: length: 100 width: 100 height: 100 mass: 1000 - key: product_type_3.1 count: 20 dimensions: length: 100 width: 100 height: 100 mass: 1000 - key: product_type_3.2 count: 20 dimensions: length: 100 width: 100 height: 100 mass: 1000 - key: product_type_3.3 count: 20 dimensions: length: 100 width: 100 height: 100 mass: 1000 packages: - key: slot_default type: SLOT body_dimensions: length: 0 width: 0 height: 0 mass: 0 container_dimensions: length: 1200 width: 800 height: 1800 mass: 1000000 container_coordinates: x: 0 y: 0 z: 0 - key: pallet_default type: PALLET body_dimensions: length: 1200 width: 800 height: 150 mass: 10000 container_dimensions: length: 1200 width: 800 height: 1650 mass: 650000 container_coordinates: x: 0 y: 0 z: 150 - key: mixbox_type_1 type: MIXBOX body_dimensions: length: 580 width: 380 height: 400 mass: 500 container_dimensions: length: 576 width: 376 height: 396 mass: 250000 container_coordinates: x: 2 y: 2 z: 2 - key: mixbox_type_2 type: MIXBOX body_dimensions: length: 580 width: 380 height: 200 mass: 250 container_dimensions: length: 576 width: 376 height: 196 mass: 150000 container_coordinates: x: 2 y: 2 z: 2 pack_settings: calculation_settings: max_calculation_time: PT30M max_waiting_time: PT10M result_ttl: PT10M treat_warnings_as_errors: false PackResultSmall: summary: 1 Товар value: tracedata: code: 69c507e4-7c2a-46fd-a862-a503cf27b1a3 client: veeroute_|_example server: Packer:leo service: PACKER operation: runPackCalculation time: '2024-02-21T16:55:35.370332Z' blueprint: - package_key: slot_default coordinates: x: 0 y: 0 z: 0 dimensions: length: 1200 width: 800 height: 300 mass: 70000 product_group_layouts: [] package_layouts: - package_key: pallet_default coordinates: x: 0 y: 0 z: 0 dimensions: length: 1200 width: 800 height: 300 mass: 70000 product_group_layouts: - product_key: product_1 coordinates: x: 0 y: 0 z: 150 dimensions: length: 1200 width: 800 height: 150 mass: 60000 product_layouts: - product_key: product_1 coordinates: x: 0 y: 0 z: 0 dimensions: length: 1200 width: 800 height: 150 mass: 60000 package_layouts: [] statistics: products_count: 1 packages_count: 2 total_mass: 60 total_volume: 0.144 package_statistics: - package_key: slot_default package_type: SLOT count: 1 max_container_mass: 60 max_container_volume: 0.144 utilization_by_mass: 0.06 utilization_by_volume: 0.0833 - package_key: pallet_default package_type: PALLET count: 1 max_container_mass: 60 max_container_volume: 0.144 utilization_by_mass: 0.0923 utilization_by_volume: 0.0909 progress: 100 info: status: FINISHED_IN_TIME result_version: 1 preparing_time: PT1M10S business_validation_time: PT1M10S math_validation_time: PT1M10S waiting_time: PT15S calculation_time: PT1M10S warnings: [] unpacked_items: product_keys: [] package_keys: - mixbox_default PackResultBig: summary: 132 Товара value: tracedata: code: 69c507e4-7c2a-46fd-a862-a503cf27b1a3 client: veeroute_|_example server: Packer:leo service: PACKER operation: runPackCalculation time: '2024-02-21T17:00:58.018418Z' blueprint: - package_key: slot_default coordinates: x: 0 y: 0 z: 0 dimensions: length: 1200 width: 800 height: 1050 mass: 108000 product_group_layouts: [] package_layouts: - package_key: pallet_default coordinates: x: 0 y: 0 z: 0 dimensions: length: 1200 width: 800 height: 1050 mass: 108000 product_group_layouts: - product_key: product_type_3.2 coordinates: x: 0 y: 800 z: 150 dimensions: length: 100 width: 800 height: 300 mass: 20000 product_layouts: - product_key: product_type_3.2 coordinates: x: 600 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 400 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 200 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 0 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 600 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 400 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 100 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 200 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 500 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 200 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 500 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 300 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 100 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 700 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 300 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 100 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 0 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 300 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 0 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.2 coordinates: x: 700 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 0 y: 900 z: 150 dimensions: length: 100 width: 800 height: 300 mass: 20000 product_layouts: - product_key: product_type_2.3 coordinates: x: 700 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 100 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 500 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 300 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 100 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 300 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 0 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 700 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 0 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 300 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 400 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 200 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 0 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 600 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 400 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 600 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 100 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 200 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 200 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.3 coordinates: x: 500 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 0 y: 1000 z: 150 dimensions: length: 100 width: 800 height: 300 mass: 20000 product_layouts: - product_key: product_type_2.1 coordinates: x: 500 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 300 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 700 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 100 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 300 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 100 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 0 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 0 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 300 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 700 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 0 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 600 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 400 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 200 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 600 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 400 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 100 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 200 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 500 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.1 coordinates: x: 200 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 0 y: 1100 z: 150 dimensions: length: 100 width: 800 height: 300 mass: 20000 product_layouts: - product_key: product_type_3.1 coordinates: x: 200 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 400 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 600 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 400 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 600 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 0 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 200 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 100 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 200 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 500 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 700 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 100 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 300 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 500 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 100 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 300 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 300 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 0 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 700 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.1 coordinates: x: 0 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_1 coordinates: x: 0 y: 0 z: 150 dimensions: length: 800 width: 800 height: 900 mass: 18000 product_layouts: - product_key: product_type_1 coordinates: x: 0 y: 0 z: 0 dimensions: length: 400 width: 400 height: 300 mass: 1500 - product_key: product_type_1 coordinates: x: 400 y: 0 z: 300 dimensions: length: 400 width: 400 height: 300 mass: 1500 - product_key: product_type_1 coordinates: x: 0 y: 400 z: 300 dimensions: length: 400 width: 400 height: 300 mass: 1500 - product_key: product_type_1 coordinates: x: 400 y: 400 z: 0 dimensions: length: 400 width: 400 height: 300 mass: 1500 - product_key: product_type_1 coordinates: x: 400 y: 0 z: 600 dimensions: length: 400 width: 400 height: 300 mass: 1500 - product_key: product_type_1 coordinates: x: 0 y: 400 z: 600 dimensions: length: 400 width: 400 height: 300 mass: 1500 - product_key: product_type_1 coordinates: x: 400 y: 400 z: 300 dimensions: length: 400 width: 400 height: 300 mass: 1500 - product_key: product_type_1 coordinates: x: 0 y: 0 z: 600 dimensions: length: 400 width: 400 height: 300 mass: 1500 - product_key: product_type_1 coordinates: x: 0 y: 0 z: 300 dimensions: length: 400 width: 400 height: 300 mass: 1500 - product_key: product_type_1 coordinates: x: 400 y: 400 z: 600 dimensions: length: 400 width: 400 height: 300 mass: 1500 - product_key: product_type_1 coordinates: x: 400 y: 0 z: 0 dimensions: length: 400 width: 400 height: 300 mass: 1500 - product_key: product_type_1 coordinates: x: 0 y: 400 z: 0 dimensions: length: 400 width: 400 height: 300 mass: 1500 package_layouts: [] - package_key: slot_default coordinates: x: 0 y: 0 z: 0 dimensions: length: 1200 width: 800 height: 450 mass: 50000 product_group_layouts: [] package_layouts: - package_key: pallet_default coordinates: x: 0 y: 0 z: 0 dimensions: length: 1200 width: 800 height: 450 mass: 50000 product_group_layouts: - product_key: product_type_3.3 coordinates: x: 0 y: 100 z: 150 dimensions: length: 100 width: 800 height: 300 mass: 20000 product_layouts: - product_key: product_type_3.3 coordinates: x: 600 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 200 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 400 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 600 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 0 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 400 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 200 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 100 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 500 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 200 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 300 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 500 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 700 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 100 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 300 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 100 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 300 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 0 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 0 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_3.3 coordinates: x: 700 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 0 y: 0 z: 150 dimensions: length: 100 width: 800 height: 300 mass: 20000 product_layouts: - product_key: product_type_2.2 coordinates: x: 300 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 500 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 700 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 100 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 300 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 100 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 0 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 300 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 0 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 700 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 600 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 0 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 200 y: 0 z: 200 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 400 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 600 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 400 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 200 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 100 y: 0 z: 0 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 500 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 - product_key: product_type_2.2 coordinates: x: 200 y: 0 z: 100 dimensions: length: 100 width: 100 height: 100 mass: 1000 package_layouts: [] statistics: products_count: 126 packages_count: 4 total_mass: 129 total_volume: 0.408 package_statistics: - package_key: slot_default package_type: SLOT count: 2 max_container_mass: 129 max_container_volume: 0.408 utilization_by_mass: 0.0645 utilization_by_volume: 0.1181 - package_key: pallet_default package_type: PALLET count: 2 max_container_mass: 129 max_container_volume: 0.408 utilization_by_mass: 0.0992 utilization_by_volume: 0.1288 progress: 100 info: status: FINISHED_IN_TIME result_version: 1 preparing_time: PT1M10S business_validation_time: PT1M10S math_validation_time: PT1M10S waiting_time: PT15S calculation_time: PT1M10S warnings: [] unpacked_items: product_keys: [] package_keys: - mixbox_type_1 - mixbox_type_2 responses: '401': description: 'Ошибка доступа - токен отсутствует или невалиден ' content: application/json: schema: $ref: '#/components/schemas/general_401' '402': description: Необходима оплата content: application/json: schema: $ref: '#/components/schemas/general_402' '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' 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