Skip to main content

API: Упаковка /packing

1. Получение заказа на упаковку

/packing/order/{order_id}/start

Для получения заказа, необходимо выполнить запрос вида /packing/order/LT1234567890/start

{
  "started_at": "2021-07-15T14:23:11"
}

В ответ возвращается

Успех

{
  "success": true,
  "access_code": "ABC123",
  "order": {
    "id": "LT123456",
    "operationType": "PACKAGING_B2B",
    "relabelingType": "BOXES",
    "maxBoxesWithoutPallet": 10,
    "date": "2021-07-15T14:23:11",
    "packing_state": "awaiting_packing",
    "require_place_weight": true,
    "global_shipping_guidelines": "...общее описание отгрузки",
    "order_shipping_comments": "...комментарий клиента к заказу",
    "operativeComment": "...комментарий для оператора",
    "preferred_barcode_type": "WILDBERRIES",
    "ExtraSeat":true,
    "supply": {
      "id": "SP123456"
    },
    "merchant": {
      "id": "some-id",
      "title": "ООО Зингер",
      "trade_title": "Zinger.com"
    },
    "shipping_form": [
      {
        "id": "shipping_num",
        "title": "Номер поставки",
        "value": "120721-001"
      },
      {
        "id": "instruction",
        "title": "Инструкция по сборке",
        "value": "Текст инструкции в html c html-escape разметкой"
      }
    ],
    "delivery": {
      "logo": "https://..russian_post.svg",
      "title": "Почта России",
      "contract_title": "Курьер Онлайн",
      "sorting_center_acceptance_date": "2021-07-17",
      "maximum_place_weight": 30000,
      "maximum_pallet_weight": 30000,
      "maximum_place_dimensions": {
        "width": 10,
      	"height": 10,
      	"depth": 10
      },
  	  "maximum_pallet_dimensions": {
        "width": 10,
        "height": 10,
        "depth": 10
      },
      "minimum_pallet_dimensions": {
        "width": 10,
        "height": 10,
        "depth": 10
      },
      "maximum_places_count": 1
    },
    "items": [
      {
        "id": "some-item-id",
        "article": "A0121202",
        "title": "Норвежская лесная Эдалт 2 кг",
        "quantity": 5,
        "image": "https://..image.jpg",
        "image_preview": "https://..image_preview.jpg",
        "require_weight": true,
        "require_dimensions": true,
        "fragile": false,
        "kit_id": 102012,
        "kit_title": "Большой набор разных товаров",
        "weight": 567,
        "dimensions": {
          "width": 10,
          "height": 10,
          "depth": 10
        },
        "barcodes": [
          {
            "type": "COMMON",
            "barcode": "40010030040"
          },
          {
            "type": "WILDBERRIES",
            "barcode": "1122334455"
          }
        ],
        "scan_serial_numbers": [
          {
            "code": "imei",
            "title": "IMEI код",
            "template": "some-template"
          },
          {
            "code": "chestniy_znak",
            "title": "Честный знак",
            "template": "some-template"
          }
        ]
      }
    ],
    "ad_attachments": [
      {
        "name": "Салфетка",
        "quantity": 1,
        "note": "примечание"
      }
    ],
    "places": [
      {
        "id": "5646564",
        "packaging_id": "4445566633211",
        "sequence_num": 1,
        "weight": 567,
        "dimensions": {
          "width": 10,
          "height": 10,
          "depth": 10
        }
        "items": [
          {
            "id": "some-item-id",
            "barcode_used": "40010030040",
            "quantity": 1,
            "serial_numbers": [
              {
                "code": "imei",
                "value": "821821291291929"
              },
              {
                "code": "chestniy_znak",
                "value": "010460370285702421"
              }
            ]
          }
        ]
      }
    ],
    "pallets": [
    {
      "pallet_id": "12345",
      "pallet_num": "1",
      "places": [
        "placeId1",
        "placeId2"
      ],
      "packaging_id": "4445566633211",
      "weight": 567,
      "dimensions": {
        "width": 10,
        "height": 10,
        "depth": 10
      }
    }
  ]
  },
  "packagings": [
    {
      "id": "some-id",
      "title": "Коробка 50х30х20",
      "require_dimensions": false,
      "barcodes": [
        "BX-503020",
        "BX*503020"
      ]
    },
    {
      "id": "some-id-2",
      "title": "Коробка 50х30х10",
      "require_dimensions": false,
      "barcodes": [
        "BX-503010"
      ]
    }
  ]
}

Описание полей

Поле Тип Описание
success Boolean true - заказ успешно получен, false - заказ получить не удалось, в массиве errors набор ошибок
errors Array Массив объектов ошибок
access_code string

Код доступа для упаковки заказа на нескольких рабочих местах

Далее для доступа к методам упаковки заказа нужно передавать этот код в заголовке Access-Code

order Object Объект заказа
id Text Номер заказа
operationType enum

Перечисление:

  • PACKAGING_B2B - заказ Озон ФБО или Wildberries ФБО, статус "На сборке"
  • PACKAGING_B2C - не (Озон ФБО или Wildberries ФБО), статус "На сборке"
  • RELABELING - перемаркировка, т.е. статус "Упакован и Документы"
relabelingType enum

Перечисление:

  • BOXES - Wildberries_ФБО или Озон_ФБО и maxBoxesWithoutPallet < Заказ.фф_УпаковкиЗаказов.Количество()
  • PALLETS - Озон_ФБО и maxBoxesWithoutPallet >= Заказ.фф_УпаковкиЗаказов.Количество()
  • BOXES_AND_PALLETS - в остальных случаях
maxBoxesWithoutPallet integer

Количество коробов, с которого обязательна палета.

preferred_barcode_type string

Для FBO заказов - предпочтительный тип ШК товара. Если сосканирован не такой - запрос стикера. Значения - из ENUM Тип штрихкода

date Datetime Дата и время заказа
ExtraSeat Boolean

Флаг для добавления доп. места под документы

packing_state enum

Статус упаковки заказа

  • awaiting_packing - ожидает упаковки, упаковка не начата
  • on_packing - упаковка начата, в процессе
  • packed - упаковка завершена
require_place_weight Boolean

Требуется снятие веса места

shipping_guidelines string Общее описание отгрузки (на весь аккаунт клиента))
shipping_comments string Пожелания клиента к отгрузке данного заказа
shippingOptions
Object Опции доставки
monopackingsOnly
Boolean Признак упаковки только монокоробами
shipping_form Array Массив вопросов и ответов анкеты отгрузки
id string Идентификатор вопроса
title string Наименование вопроса
value string Ответ клиента на вопрос
delivery Object Информация о доставке
logo string Ссылка на логотип. 
title string Наименование способа доставки, например "Почта России"
contract_title string Наименование продукта, например "Курьер Онлайн"
sorting_center_acceptance_date Date Планируемая дата приемки в сортировочном центре. В первую очередь, для Почты России.
maximum_place_weight integer Максимальный вес одного места в граммах
maximum_places_count integer Максимальное количество мест в заказе. Ограничение некоторых курьерских служб.
items Array Массив объекта товаров
id string Идентификатор
title string Наименование товара
article string Артикул
quantity integer Количество товара к упаковке
image string Ссылка на картинку товара в полном размере
image_preview string Ссылка на картинку товара (с низким разрешением, уровня "иконка")
require_weight boolean Для данной номенклатуры надо измерить вес
require_dimensions boolean Для данной номенклатуры надо измерить габариты
fragile boolean Определяет хрупкий товар
barcodes Array Массив штрихкодов
type string Тип штрихкода. COMMON - без специфики, общий шаблон.
barcode string Значение штрихкода
scan_serial_numbers Array Задания на сканирование серийных номеров, массив
code string Код
title string Наименование
template string Шаблон для проверки (если есть)
options Object Дополнительные опции упаковки для данной позиции 
label_with_barcode string

Если не пустое значение, задание наклеить этикетку с указанным штрихкодом, при условии, что товар при отгрузке имеет иной штрихкод, чем указано в данном параметре. 

 

Этикетка и параметры передаются в отдельном блоке label.

label_all_items boolean Если передан true, необходимо наклеить этикетку на каждую позицию. Этикетка и параметры передаются в отдельном блоке label.
ad_attachments Array Массив дополнительных вложений
name string Наименование
quantity integer Количество
note string Примечание
places Array Массив упакованных мест заказа
packagings Array Массив упаковочной тары
id string Идентификатор
title string Наименование упаковки
barcodes Array of string Штрихкоды упаковки

 

Ошибка:

{
"success": false,
"errors": [
 {
 "code": "ORDER_NOT_FOUND",
 "message": "Заказ с номером LT1234567890 не найден",
 "errorsticker":{"content":"base64 pdf","printer": "STICKER_6x6"}
 }
]
}

Типовые ошибки:

Code Message
ORDER_NOT_FOUND Заказ с номером LT1234567890 не найден
ORDER_ON_PACKING Упаковка заказа LT1234567890 уже начала на рабочем столе DM-13
ORDER_ALREADY_PACKED Заказ LT1234567890 уже упакован (рабочее место DM-13, оператор Оператор 12)

 

 

2. Получение заказа

/packing/order/{order_id}

/packing/order/barcode/{barcode}

Метод полностью аналогичен методу /packing/order/{order_id}/start по части возвращаемых полей, за следующим исключением:

  • Метод не инициирует начало упаковки
  • Получить заказ возможно в любом статусе

 

3. Получение последних упакованных заказов

/packing/orders/last

Пример вызова:

GET /packing/orders/last?limit=10

Параметр вызова limit отвечает за количество возвращаемых заказов. Если не передан, по умолчанию возвращается 10 заказов.

Сервер возвращает заказы, упакованные данным оператором.

{
  "success": true,
  "orders": [
    {
      "id": "LT123456",
      "packing_state": "packed",
      "packed_at": "2021-07-15T14:23:11"
    }
  ]
}

 

4. Продолжение упаковки заказа

/packing/order/{order_id}/resume

Для продолжения упаковки заказа, необходимо выполнить запрос вида /packing/order/LT1234567890/resume

Метод требует расширенных прав. Данный метод вызывает на бэкенде следующие действия у заказа:

  • обновляется оператор,
  • обновляется текущий рабочий стол

Бэкенд возвращает текущее состояние заказа - включая уже упакованные места (places)

Успех

{
  "success": true,
  "order": {объект Упаковка заказа как в методе POST /start}
}

 

 

 

5. Сброс упаковки заказа

/packing/order/{order_id}/reset

Для сброса упаковки заказа, необходимо выполнить запрос вида /packing/order/LT1234567890/reset

На бэкенде метод:

  • Очищает все места, присвойки, упакованные товары
  • Очищает все места в DLV
  • Удаляет информацию по видеонарезке
  • Удаляет информацию по старте упаковки, рабочему месту старта упаковки и т.д.

 

6. Добавление/редактирование места к заказу

/packing/order/{order_id}/place

Метод создает или обновляет место к заказу.

Для создания нового места вызов: /packing/order/{order_id}/place, для редактирования места к заказу: /packing/order/{order_id}/place/{place_id}

При создании нового места - возвращает стикер в формате pdf (base64).

Пример вызова

{
  "place": {
    "packaging_id": "some-id",
    "sequence_num": 4,
    "is_final": false,
    "status": "PACKED", // PACKING, PACKED
    "dlv_id": "38366fbd-74e3-4116-b1fd-e6a2ff98d7c6", // Для выгрузки упаковок из NEW WMS
    "barcode": "123456789", // Для выгрузки упаковок из NEW WMS
    "weight": 567,
    "dimensions": {
      "width": 10,
      "height": 10,
      "depth": 10
    },
    "items": [
      {
        "id": "some-item-id",
        "packed_at": "2021-07-18T12:21:22",
        "barcode_used": "40010030040",
        "quantity": 1,
        "status": "PACKED", // PACKING, PACKED
        "expirationdate":"2021-07-18",
        "serial_numbers": [
          {
            "code": "imei",
            "value": "821821291291929"
          },
          {
            "code": "chestniy_znak",
            "value": "010460370285702421"
          }
        ]
      }
    ]
  }
}

Описание

Таблица 6.1

Поле Тип Описание
place Object Объект места
packaging_id string ID упаковочной тары
sequence_num integer Порядковый номер места (нумерация начинается с 1)
is_final boolean Признак последнего места, устанавливается в true, когда отсканированы все позиции, и данное место - последнее
weight integer Вес в граммах
dimensions Object Размеры (габариты) места - передаются только в случае нестандартной упаковки (packaging_id: "oversize")
items Array Массив отсканированных товаров для данного места. Описание объекта товара см. в таблице 6.2

Таблица 6.2 Объект в массиве items

Поле Тип Описание
id string ID товара
packaging_id string ID индивидуальной упаковки товара
packed_at datetime Дата и время сканирования товара
barcode_used string Использованный штрихкод (какой именно штрихкод был отсканирован для данного товара). 
serial_numbers Array Массив серийных номеров
code string ID серийного номера
value string Значение отсканированного серийного номера

Успех

{
  "success": true,
  "place_id": "ID созданного или обновленного места",
  "sticker": {
    "content":"base64 pdf",
    "printer": "STICKER_6x6"
  }
}

 

Ошибка:

{
"success": false,
"errors": [
 {
 "code": "ERROR",
 "message": "Описание ошибки",
 "errorsticker": {"content":"base64 pdf","printer": "STICKER_6x6"}
 }
]
}

Коды ошибок:

Code Message
INCORRECT_WEIGHT Введенный вес места (5000 грамм) существенно отличается от планового
OTHER_ERROR Прочая ошибка

7. Получение стикера места

/packing/order/{order_id}/place/{place_id}/sticker

Для получения стикера места, необходимо выполнить запрос вида: /packing/order/LT1234567890/place/43043403404/sticker

Опциональный параметр operationType - передается для печати стикера в операциях перемаркировки. Значение брать из operationType  заказа.

В ответ возвращается стикер в pdf, закодированный в base64

Успех

{
  "success": true,
  "sticker": {
    "content":"base64 pdf",
    "printer": "STICKER_6x6"
  }
}

 

Ошибка:

{
"success": false,
"errors": [
 {
 "code": "NOT_FOUND",
 "message": "Стикера с указанным местом 4030004403040 не существует"
 }
]
}

8. Количество палет по заказу

/packing/pallet/generalCount

Метод ввведен для ФБО Ozon и Wildberries , а также для других потенциальных способов доставки, где по одному заказу формируется несколько палет.

Заказ передается в параметрах json, так как потенциально данный метод может пригодиться в дальнейшем для информации по количеству палет в рамках процесса упаковки

Запрос

[{"palletCount":"4","orderId":"KK23423"}]

 

9. Добавление/редактирование палеты

/packing/pallet

Метод создает или обновляет палету.

Для создания новой палеты вызов: /packing/pallet, для редактирования палеты: /packing/pallet/{pallet_id}

Пример вызова

{
  "pallet": {
    "pallet_num": 1,
    "barcode": 4111444,
    "packaging_id": "4445566633211",
    "weight": 567,
    "dimensions": {
      "width": 10,
      "height": 10,
      "depth": 10
     },
    "places": [{"placeId":"978020137962","orderId":"KK23423"}, {"placeId":"978020137964","orderId":"KK23423"}]
  }
}

barcode - уникальный штрихкод палеты

Если палета создается без мест (такая логика согласована по ФБО WB и Ozon, это происходит после упаковки всех мест в связке с запросом /packing/pallet/generalCount), запрос будет выглядеть следующим образом:

{
  "pallet": {
    "pallet_num": 1,
    "places": [{"orderId":"KK23423"}]
  }
}

Местами такая палета-пустышка будет наполняться только при перемаркировке командой редактирования палеты /packing/pallet/{pallet_id}

Успех

{
  "success": true,
    "pallet_id": "0000000008",
    "pallet_num": 1,
    "sticker": {
        "content": "base64 pdf",
    	"printer": "STICKER_6x6"
    }
}

Описание запроса

pallet Object Объект палеты
pallet_num Integer Порядковый номер палеты в сценарии упаковки, определяется на стороне front-end
weight Integer Все палеты в граммах
dimensions Object Измерения палеты (см. описание объекта в п.8 Таблица 2)
width Integer Ширина в мм
height Integer Высота в мм
depth Integer Глубина в мм
places Array Массив объектов отсканированных мест в составе палеты
placeId String Штрихкод отсканированного места
orderId String Номер заказа (в случае наличия такой информации, это ускорит процесс поиска в back-end)

Описание ответа

success Boolean Признак успешного выполнения операции
pallet_id String Идентификатор (номер документа) палеты в back-end. По этому номеру можно вызывать команду редактирования палеты
pallet_num Integer Порядковый номер палеты в сценарии упаковки, возвращается без изменений.
sticker Object Объект для печати стикера
content String Стикер в pdf в формате base64
printer String Формат печати этикетки

10. Получение стикера палеты

/packing/pallet/{pallet_id}/sticker

Опциональный параметр operationType - передается для печати стикера в операциях перемаркировки. Значение брать из operationType  заказа.

В ответ возвращается стикер в pdf, закодированный в base64

Успех

{
  "success": true,
  "sticker": {
    "content":"base64 pdf",
    "printer": "STICKER_6x6"
  }
}

11. Перевод заказа в статус Упакован (packed) после перемаркировки

/packing/order/{order_id}/packed

Метод переводит заказ с номером {order_id} в статус Упакован.

12. Присвоение нового ШК места при перемаркировке

/packing/order/{order_id}/place/{place_id}/barcode/new

{  
  "new_barcode" : "ABCD1245"
}

Метод добавляет основной ШК месту при перемаркировке по FBO заказам

Успех

{
  "success": true,
   "place": {
     	"id": "ABCD1245"
        "packaging_id": "fsdf",
        "sequence_num": 1,
        "weight": 567       
      }
}

13. Присвоение нового ШК паллеты при перемаркировке

/packing/pallet/{pallet_id}/barcode/new

{
  "id": "123456",   //id паллеты
  "new_barcode" : "ABCD1245"
}

Метод добавляет основной ШК паллете при перемаркировке по FBO заказам

Успех

{
  "success": true,
   "pallet": {
      "id": "ABCD1245",
      "num": "1",
      "places": [
        "placeId1",
        "placeId2"
      ],
      "weight": 567,
      "dimensions": {
        "width": 10,
        "height": 10,
        "depth": 10
      }
    }
}

14. Получение палетного листа

/packing/pallet/{pallet_id}/form

 

В ответ возвращается печатная форма в pdf, закодированная в base64

Успех

{
  "success": true,
  "sticker": {
    "content":"base64 pdf",
    "printer": "STICKER_6x6"
  }
}

15. Получение дополнительных документов для печати по заказу

/packing/order/{order_id}/docs_for_print

В ответ возвращается массив файлов, закодированных в base64.

Успех

{
   "success": true,
   "files": [
       {
         "id": "BL5333#Счёт__31_от_14.pdf",  
         "name": "Счёт__31_от_14.pdf",
         "url": "static-eu.insales.ru/order_files/165623972/Счёт__31_от_14.04.2021.pdf"
       },
       {
         "id": "BL5333#Накладная__131_от_17.10.2018.pdf",   
         "name": "Накладная__131_от_17.10.2018.pdf",
         "url": "static-eu.insales.ru/order_files/165623972/Счёт__31_от_14.04.2021.pdf"
       }
   ]
}

16. Получение конкретного доп.документа по идентификатору

/packing/order/{order_id}/docs_for_print/{doc_id}

В ответ возвращается файл, закодированный в base64.

Успех

{
   "success": true,
   "id":"BL5333#Счёт__31_от_14.pdf",
    "content":"base64 pdf",
    "printer": "PRINTER_A4"
}

17. Получение шк поставки для WB

/packing/order/{order_id}/fbo/sticker/shipment

В ответ возвращается стикер в pdf, закодированный в base64

Успех

{
  "success": true,
  "sticker": {
    "content":"base64 pdf",
    "printer": "STICKER_6x6"
  }
}

18. Получение батча на упаковку

/packing/order-batch/{batch_id}/start

В ответ возвращается

Успех

{
  "success": true,
  "order_batch": {
    "id":"some id",
    "orders": [
      // заказы в том же формате, что в ответе на /packing/order/{order_id}/start
    ]
  }
}

Ошибка:

{
  "success": false,
  "errors": [
   {
     "code": "ORDER_BATCH_NOT_FOUND",
     "message": "Батч с номером LT1234567890 не найден"
   }
  ]
}

Типовые ошибки:

Code Message
ORDER_BATCH_NOT_FOUND Батч с номером LT1234567890 не найден
ORDER_BATCH_NOT_PICKED Батч LT1234567890 не собран
ORDER_BATCH_ALREADY_PACKED Батч LT1234567890 уже упакован

19. Получение батча

/packing/order-batch/{batch_id}

Метод полностью аналогичен методу /packing/order-batch/{batch_id}/start по части возвращаемых полей, за следующим исключением:

  • Метод не инициирует начало упаковки
  • Получить батч возможно в любом статусе

20. Проверка актуальности заказа

/packing/order/{order_id}/check-status

В ответ возвращается

Успех

{
  "success": true
}

Ошибка:

{
  "success": false,
  "errors": [
   {
     "code": "CANCELED",
     "message": "Заказ отменен"
   }
  ]
}

Типовые ошибки:

Code Message
CANCELED Заказ отменен

21. Завершение сборки паллеты

/packing/pallet/{pallet_id}/complete

В ответ возвращается

Успех

{
  "success": true
}

Ошибка:

{
  "success": false,
  "errors": [
   {
     "code": "...",
     "message": "..."
   }
  ]
}

 

22. Получение списка паллет

/packing/pallet?status=PACKING

Возможные фильтры:

  • status - по статусу паллеты (PACKING, PACKED)
  • processing_by - по логину оператора, взявшего паллету в работу

Параметры постраничной выдачи:

  • page - номер страницы (начиная с 0)
  • size - размер страницы (по-умолчанию 50)

Паллеты сортируются по убыванию времени создания

 

Успех

{
  "success": true,
  "pallets": [
    {
      "id": "12345",
      "status": "PACKING",
      "places": [
        "placeId1"
      ],
      "packaging_id": "4445566633211",
      "weight": 567,
      "dimensions": {
        "width": 10,
        "height": 10,
        "depth": 10
      } 
    }
  ],
  "places": [
    {
      "id": "placeId1",
      "order_id": "LT123456",
      "packaging_id": "4445566633211",
      "sequence_num": 1,
      "weight": 567,
      "items": [
        {
          "id": "some-item-id",
          "barcode_used": "40010030040",
          "quantity": 1,
          "serial_numbers": [
            {
              "code": "imei",
              "value": "821821291291929"
            },
            {
              "code": "chestniy_znak",
              "value": "010460370285702421"
            }
          ]
        }
      ]
    }
  ],
  "orders": [
    {
      "id": "LT123456",
      "merchant": {
        "id": "some-id",
        "title": "ООО Зингер",
        "trade_title": "Zinger.com"
      }
    }
  ],
  "pagination" {
  	"page": 0,
  	"size": 50,
  	"total_pages": 2,
  	"total_elements": 70
  }
}

Ошибка:

{
  "success": false,
  "errors": [
   {
     "code": "...",
     "message": "..."
   }
  ]
}

23. Получение данных о паллете

/packing/pallet/{pallet_id}

Успех

{
  "success": true,
  "pallet": {
    "id": "12345",
    "status": "PACKING",
    "places": [
      "placeId1"
    ],
    "weight": 567,
    "dimensions": {
      "width": 10,
      "height": 10,
      "depth": 10
    } 
  },
  "places": [
    {
      "id": "placeId1",
      "order_id": "LT123456",
      "packaging_id": "4445566633211",
      "sequence_num": 1,
      "weight": 567,
      "items": [
        {
          "id": "some-item-id",
          "barcode_used": "40010030040",
          "quantity": 1,
          "serial_numbers": [
            {
              "code": "imei",
              "value": "821821291291929"
            },
            {
              "code": "chestniy_znak",
              "value": "010460370285702421"
            }
          ]
        }
      ]
    }
  ],
  "orders": [
    {
      "id": "LT123456",
      "merchant": {
        "id": "some-id",
        "title": "ООО Зингер",
        "trade_title": "Zinger.com"
      }
    }
  ]
}

Ошибка:

{
  "success": false,
  "errors": [
   {
     "code": "...",
     "message": "..."
   }
  ]
}

24. Получение дополнительных стикеров на место

/packing/order/{order_id}/place/{place_id}/additional-stickers

В ответ возвращается список стикеров в pdf, закодированных в base64

Успех

{
  "success": true,
  "stickers": [
    {
      "content":"base64 pdf",
      "printer": "STICKER_6x6"
    }
  ]
}

25. Получение списка упаковочных материалов

/packing/packagins?merchant_id={some-id}

merchant_id - опциональный параметр. Если он указан, то в выдачу попадут и материалы, привязанные к конкретному мерчанту

Успех

{
  "success": true,
  "packagings": [
    {
      "id": "some-id",
      "title": "Коробка 50х30х20",
      "require_dimensions": false,
      "barcodes": [
        "BX-503020",
        "BX*503020"
      ]
    },
    {
      "id": "some-id-2",
      "title": "Коробка 50х30х10",
      "require_dimensions": false,
      "barcodes": [
        "BX-503010"
      ]
    }
  ]
}