Skip to main content

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

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

/packing/order/{order_id}/start

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

 

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

Успех

{
  "success": true,
  "order": {
    "id": "LT123456",
    "operationType": "PACKAGING_B2B",
    "shipmentType": "BOXES",
    "maxBoxesWithoutPallet": 10,
    "date": "2021-07-15T14:23:11",
    "packing_state": "awaiting_packing",
    "require_place_weight": true,
    "global_shipping_guidelines": "...общее описание отгрузки",
    "order_shipping_comments": "...комментарий клиента к заказу",
    "preferred_barcode_type": "WILDBERRIES",
    "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_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,
        "kit_id": 102012,
        "kit_title": "Большой набор разных товаров",
        "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,
        "items": [
          {
            "id": "some-item-id",
            "packed_at": "2021-07-18T12:21:22",
            "barcode_used": "40010030040",
            "quantity": 1,
            "serial_numbers": [
              {
                "code": "imei",
                "value": "821821291291929"
              },
              {
                "code": "chestniy_znak",
                "value": "010460370285702421"
              }
            ]
          }
        ]
      }
    ],
    "pallets": [
    {
      "id": "12345",
      "num": "1",
      "places": [
        "placeId1",
        "placeId2"
      ],
      "weight": 567,
      "dimensions": {
        "width": 10,
        "height": 10,
        "depth": 10
      }
    }
  ]
  },
  "packagings": [
    {
      "id": "some-id",
      "title": "Коробка 50х30х20",
      "barcodes": [
        "BX-503020",
        "BX*503020"
      ]
    },
    {
      "id": "some-id-2",
      "title": "Коробка 50х30х10",
      "barcodes": [
        "BX-503010"
      ]
    }
  ]
}

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

ПолеТипОписание
successBooleantrue - заказ успешно получен, false - заказ получить не удалось, в массиве errors набор ошибок
errorsArrayМассив объектов ошибок
orderObjectОбъект заказа
idTextНомер заказа
operationTypeenum

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

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

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

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

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

preferred_barcode_typestring

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

dateDatetimeДата и время заказа
packing_stateenum

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

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

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

shipping_guidelinesstringОбщее описание отгрузки (на весь аккаунт клиента))
shipping_commentsstringПожелания клиента к отгрузке данного заказа
shippingOptions
ObjectОпции доставки
monopackingsOnly
BooleanПризнак упаковки только монокоробами
shipping_formArrayМассив вопросов и ответов анкеты отгрузки
idstringИдентификатор вопроса
titlestringНаименование вопроса
valuestringОтвет клиента на вопрос
deliveryObjectИнформация о доставке
logostringСсылка на логотип. 
titlestringНаименование способа доставки, например "Почта России"
contract_titlestringНаименование продукта, например "Курьер Онлайн"
sorting_center_acceptance_dateDateПланируемая дата приемки в сортировочном центре. В первую очередь, для Почты России.
maximum_place_weightintegerМаксимальный вес одного места в граммах
maximum_places_countintegerМаксимальное количество мест в заказе. Ограничение некоторых курьерских служб.
itemsArrayМассив объекта товаров
idstringИдентификатор
titlestringНаименование товара
articlestringАртикул
quantityintegerКоличество товара к упаковке
imagestringСсылка на картинку товара в полном размере
image_previewstringСсылка на картинку товара (с низким разрешением, уровня "иконка")
require_weightbooleanДля данной номенклатуры надо измерить вес
require_dimensionsbooleanДля данной номенклатуры надо измерить габариты
barcodesArrayМассив штрихкодов
typestringТип штрихкода. COMMON - без специфики, общий шаблон.
barcodestringЗначение штрихкода
scan_serial_numbersArrayЗадания на сканирование серийных номеров, массив
codestringКод
titlestringНаименование
templatestringШаблон для проверки (если есть)
optionsObjectДополнительные опции упаковки для данной позиции 
label_with_barcodestring

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

 

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

label_all_itemsbooleanЕсли передан true, необходимо наклеить этикетку на каждую позицию. Этикетка и параметры передаются в отдельном блоке label.
ad_attachmentsArrayМассив дополнительных вложений
namestringНаименование
quantityintegerКоличество
notestringПримечание
placesArrayМассив упакованных мест заказа
packagingsArrayМассив упаковочной тары
idstringИдентификатор
titlestringНаименование упаковки
barcodesArray of stringШтрихкоды упаковки

 

Ошибка:

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

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

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

 

 

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

/packing/order/{order_id}

Метод полностью аналогичен методу /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,
    "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,
        "serial_numbers": [
          {
            "code": "imei",
            "value": "821821291291929"
          },
          {
            "code": "chestniy_znak",
            "value": "010460370285702421"
          }
        ]
      }
    ]
  }
}

Описание

ПолеТипОписание
placeObjectОбъект места
packaging_idstringID упаковочной тары
sequence_numintegerПорядковый номер места (нумерация начинается с 1)
is_finalbooleanПризнак последнего места, устанавливается в true, когда отсканированы все позиции, и данное место - последнее
weightintegerВес в граммах
dimensionsObjectРазмеры (габариты) места - передаются только в случае нестандартной упаковки (packaging_id: "oversize")
itemsArrayМассив отсканированных товаров для данного места
idstringID товара
packed_atdatetimeДата и время сканирования товара
barcode_usedstringИспользованный штрихкод (какой именно штрихкод был отсканирован для данного товара). 
serial_numbersArrayМассив серийных номеров
codestringID серийного номера
valuestringЗначение отсканированного серийного номера

 

Успех

{
  "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"}
 }
]
}

Коды ошибок:

CodeMessage
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

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

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

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

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

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

Успех

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

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

palletObjectОбъект палеты
pallet_numIntegerПорядковый номер палеты в сценарии упаковки, определяется на стороне front-end
weightIntegerВсе палеты в граммах
dimensionsObjectИзмерения палеты (см. описание объекта в п.8 Таблица 2)
widthIntegerШирина в мм
heightIntegerВысота в мм
depthIntegerГлубина в мм
placesArrayМассив объектов отсканированных мест в составе палеты
placeIdStringШтрихкод отсканированного места
orderIdStringНомер заказа (в случае наличия такой информации, это ускорит процесс поиска в back-end)

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

successBooleanПризнак успешного выполнения операции
pallet_idStringИдентификатор (номер документа) палеты в back-end. По этому номеру можно вызывать команду редактирования палеты
pallet_numIntegerПорядковый номер палеты в сценарии упаковки, возвращается без изменений.
stickerObjectОбъект для печати стикера
contentStringСтикер в pdf в формате base64
printerStringФормат печати этикетки

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

/packing/pallet/{pallet_id}/sticker

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

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

Успех

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

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

/packing/order/{order_id}/packed

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

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

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

{
  "id": "123456",   //id места
  "new_barcode" : "ABCD1245"
}

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

Успех

{
  "success": true,
   "place": {
     	"id": "ABCD1245"
        "packaging_id": "fsdf",
        "sequence_num": 1,
        "weight": 567,
        "items": [
          {
            "id": "some-item-id",
            "packed_at": "2021-07-18T12:21:22",
            "barcode_used": "40010030040",
            "quantity": 1,
            "serial_numbers": [
              {
                "code": "imei",
                "value": "821821291291929"
              },
              {
                "code": "chestniy_znak",
                "value": "010460370285702421"
              }
            ]
          }
        ]
      }
}

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

/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
      }
    }
}

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

/packing/pallet/{pallet_id}/form

 

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

Успех

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