Подготовка заказа
Подходит и для DBS
Запрос предназначен для работы с FBS-заказами, но вы можете использовать его для обработки DBS-заказов, если это удобно.
Позволяет выполнить три операции:
- передать Маркету информацию о распределении товаров по коробкам;
- передать Маркету коды маркировки для товаров;
- удалить товар из заказа, если его не оказалось на складе.
Если нужно что-то поправить в переданных данных, просто повторите запрос — это можно делать сколько угодно раз до перевода заказа в статус Готов к отгрузке. ⚠️ Если вы меняете раскладку уже после печати и расклейки ярлыков, не забудье перепечатать их и наклеить заново.
Как передать информацию о распределении товаров
В этом запросе вам нужно передать Маркету список коробок и указать, какие именно товары лежат в каждой из них. Коробки могут быть двух типов:
-
Содержащие товары целиком. Такая коробка может содержать сколько угодно единиц любых товаров.
-
Содержащие часть товара. Такие коробки содержат по одной части одного товара. Например, одна содержит внешний блок кондиционера, а другая — внутренний блок.
⚠️ Одна коробка не может содержать и товары целиком, и части товаров.
Как передавать коды маркировки
Если в заказе есть товары, подлежащие маркировке, в запросе нужно передать соответствующие уникальные коды. Что такое маркировка?
Принимаются коды следующих типов:
- Коды «Честного знака».
- УИН для ювелирных изделий.
- РНПТ и ГТД для импортных прослеживаемых товаров.
Для каждой позиции в заказе, требующей маркировки, нужно передать список кодов — по одному для каждой единицы товара. Например, если в заказе две пары тапочек и одна пара туфель, получится список из двух кодов для первой позиции и список из одного кода для второй.
Если товар едет в нескольких коробках, код маркировки нужно передать для каждой из них.
Как удалить товар из заказа
Чтобы удалить товар из заказа:
- Добавьте в запрос
allowRemove: true
. - Передайте распределение по коробкам без товара, который нужно удалить.
Удаление нельзя отменить
Эта операция необратима: покупатель сразу получит уведомление, а состав заказа изменится.
Чтобы удалить позицию целиком, не передавайте соответствующий OrderBoxLayoutItemDTO
. Чтобы уменьшить количество товара, передайте уменьшенное значение в поле fullCount
.
Нельзя удалить или уменьшить количество товара, если он:
- добавлен по акции;
- составляет 99% стоимости заказа;
- единственный товар в заказе.
Если вы не можете отгрузить такой товар, отмените заказ. Для этого отправьте запрос методом PUT campaigns/{campaignId}/orders/{orderId}/status и передайте статус заказа CANCELLED
с причиной отмены SHOP_FAILED
.
Увеличить заказ нельзя
С помощью запроса нельзя увеличить количество одинаковых товаров, добавить новые товары в заказ или заменить один товар другим.
Примеры
Товар умещается в коробку
Вот как будет выглядеть запрос, если в одной коробке едут:
- три единицы одного товара, требующего маркировки;
- одна единица другого товара, не требущего маркировки.
{
"boxes": [
{
"items": [
{
"id": 123456,
"fullCount": 3,
"instances": [
{
"cis": "01030410947874432155Qbag!\u001d93Zjqw"
},
{
"cis": "010304109478gftJ14545762!\u001dhGt264"
},
{
"cis": "010304109478fRs28323ks23!\u001dhet201"
}
]
},
{
"id": 654321,
"fullCount": 1
}
]
}
]
}
Товар едет в разных коробках
Вот как будет выглядеть запрос, если товар едет в двух коробках:
{
"boxes": [
{
"items": [
{
"id": 123456,
"partialCount": {
"current": 1,
"total": 2
},
"instances": [
{
"cis": "01030410947874432155Qbag!\u001d93Zjqw"
}
]
}
]
},
{
"items": [
{
"id": 123456,
"partialCount": {
"current": 2,
"total": 2
},
"instances": [
{
"cis": "01030410947874432155Qbag!\u001d93Zjqw"
}
]
}
]
}
]
}
Одинаковые товары, где каждый едет в нескольких коробках
Вот как будет выглядеть запрос, если каждый из двух одинаковых товаров едет в двух коробках:
{
"boxes": [
{
"items": [
{
"id": 123456,
"partialCount": {
"current": 1,
"total": 2
},
"instances": [
{
"cis": "01030410947874432155Qbag!\u001d93Zjqw"
}
]
}
]
},
{
"items": [
{
"id": 123456,
"partialCount": {
"current": 2,
"total": 2
},
"instances": [
{
"cis": "01030410947874432155Qbag!\u001d93Zjqw"
}
]
}
]
},
{
"items": [
{
"id": 123456,
"partialCount": {
"current": 1,
"total": 2
},
"instances": [
{
"cis": "01030410947874432155Qbag!\u001d93Zjqw"
}
]
}
]
},
{
"items": [
{
"id": 123456,
"partialCount": {
"current": 2,
"total": 2
},
"instances": [
{
"cis": "01030410947874432155Qbag!\u001d93Zjqw"
}
]
}
]
}
]
}
⚙️ Лимит: 100 000 запросов в час |
---|
Request
PUT
https://api.partner.market.yandex.ru/campaigns/{campaignId}/orders/{orderId}/boxes
Path parameters
Name |
Description |
campaignId* |
Type: integer<int64> Идентификатор кампании в API и магазина в кабинете. Каждая кампания в API соответствует магазину в кабинете. Чтобы узнать идентификаторы своих магазинов, воспользуйтесь запросом GET campaigns. ℹ️ Что такое кабинет и магазин на Маркете
Min value: |
orderId* |
Type: integer<int64> Идентификатор заказа. |
Body
application/json
{
"boxes": [
{
"items": [
{
"id": 0,
"fullCount": 0,
"partialCount": {
"current": 0,
"total": 0
},
"instances": [
{
"cis": "string",
"uin": "string",
"rnpt": "string",
"gtd": "string"
}
]
}
]
}
],
"allowRemove": false
}
Name |
Description |
boxes* |
Type: OrderBoxLayoutDTO[] Список коробок. Min items: |
allowRemove |
Type: boolean Передайте |
OrderBoxLayoutDTO
Информация о коробке.
Name |
Description |
items* |
Type: OrderBoxLayoutItemDTO[] Список товаров в коробке. Если в коробке едет часть большого товара, в списке может быть только один пункт.
Min items: |
OrderBoxLayoutItemDTO
Информация о товаре в коробке.
Name |
Description |
id* |
Type: integer<int64> Идентификатор товара в заказе. Где его взятьИдентификатор приходит в ответе на запрос GET campaigns/{campaignId}/orders/{orderId} и в запросе Маркета POST order/accept — параметр |
fullCount |
Type: integer<int32> Количество единиц товара в коробке. Используйте это поле, если в коробке поедут целые товары, не разделенные на части. Не используйте это поле одновременно с Min value: |
instances |
Type: BriefOrderItemInstanceDTO[] Переданные вами коды маркировки. Заполните только одно поле в зависимости от того, в какой системе маркирован товар. Подробно о работе с маркируемыми товарами рассказано в Справке Маркета для продавцов. |
partialCount |
Type: OrderBoxLayoutPartialCountDTO Часть товара в коробке. Используйте это поле, если в коробке поедет часть большого товара. Не используйте это поле одновременно с |
BriefOrderItemInstanceDTO
Идентификатор единицы товара.
Заполните только одно поле в зависимости от того, в какой системе маркирован товар.
Подробно о работе с маркируемыми товарами рассказано в Справке Маркета для продавцов.
Name |
Description |
cis |
Type: string Код идентификации единицы товара в системе «Честный ЗНАК». Важно Не экранируйте косую черту в коде символа-разделителя ✅ ❌ Косые черты и кавычки в других местах экранируйте по правилам JSON: |
gtd |
Type: string Грузовая таможенная декларация. Представляет собой строку из трех чисел, разделенных косой чертой: ХХХХХХХХ/ХХХХХХ/ХХХХХХХ. Первая часть — код таможни, которая зарегистрировала декларацию на ввезенные товары. Далее — дата и номер декларации. |
rnpt |
Type: string Регистрационный номер партии товара. Представляет собой строку из четырех чисел, разделенных косой чертой: ХХХХХХХХ/ХХХХХХ/ХХХХХХХ/ХХХ. Первая часть — код таможни, которая зарегистрировала декларацию на партию товара. Далее — дата, номер декларации и номер маркированного товара в декларации. |
uin |
Type: string Уникальный идентификационный номер ювелирного изделия. Представляет собой число из 16 цифр. |
OrderBoxLayoutPartialCountDTO
Информация о части товара в коробке.
Name |
Description |
current* |
Type: integer<int32> Номер части, начиная с 1. Min value: |
total* |
Type: integer<int32> На сколько всего частей разделен товар. Min value: |
Responses
200 OK
В ответ придет переданная раскладка с идентификаторами коробок — они понадобятся для запроса ярлыков.
Body
application/json
{
"status": "OK",
"result": {
"boxes": [
{
"items": [
{
"id": 0,
"fullCount": 0,
"partialCount": {
"current": 0,
"total": 0
},
"instances": [
{
"cis": "string",
"uin": "string",
"rnpt": "string",
"gtd": "string"
}
]
}
],
"boxId": 0
}
]
}
}
Name |
Description |
result |
Type: OrderBoxesLayoutDTO Распределение товаров по коробкам. |
status |
Type: ApiResponseStatusType Тип ответа. Enum: |
OrderBoxesLayoutDTO
Распределение товаров по коробкам.
Name |
Description |
boxes* |
Type: EnrichedOrderBoxLayoutDTO[] Список коробок. |
EnrichedOrderBoxLayoutDTO
Информация о коробке.
Name |
Description |
items* |
Type: OrderBoxLayoutItemDTO[] Список товаров в коробке. Если в коробке едет часть большого товара, в списке может быть только один пункт.
Min items: |
boxId |
Type: integer<int64> Идентификатор коробки. |
400 Bad Request
Запрос содержит неправильные данные.
Body
application/json
{
"status": "OK",
"errors": [
{
"code": "string",
"message": "string"
}
]
}
Name |
Description |
errors |
Type: ApiErrorDTO[] Список ошибок. |
status |
Type: ApiResponseStatusType Тип ответа. Enum: |
ApiErrorDTO
Общий формат ошибки.
Name |
Description |
code* |
Type: string Код ошибки. |
message |
Type: string Описание ошибки. |
401 Unauthorized
В запросе не указаны данные для авторизации.
Body
application/json
{
"status": "OK",
"errors": [
{
"code": "string",
"message": "string"
}
]
}
Name |
Description |
errors |
Type: ApiErrorDTO[] Список ошибок. |
status |
Type: ApiResponseStatusType Тип ответа. Enum: |
403 Forbidden
Данные для авторизации неверны или доступ к ресурсу запрещен.
Body
application/json
{
"status": "OK",
"errors": [
{
"code": "string",
"message": "string"
}
]
}
Name |
Description |
errors |
Type: ApiErrorDTO[] Список ошибок. |
status |
Type: ApiResponseStatusType Тип ответа. Enum: |
404 Not Found
Запрашиваемый ресурс не найден.
Body
application/json
{
"status": "OK",
"errors": [
{
"code": "string",
"message": "string"
}
]
}
Name |
Description |
errors |
Type: ApiErrorDTO[] Список ошибок. |
status |
Type: ApiResponseStatusType Тип ответа. Enum: |
420 Method Failure
Превышено ограничение на доступ к ресурсу.
Body
application/json
{
"status": "OK",
"errors": [
{
"code": "string",
"message": "string"
}
]
}
Name |
Description |
errors |
Type: ApiErrorDTO[] Список ошибок. |
status |
Type: ApiResponseStatusType Тип ответа. Enum: |
500 Internal Server Error
Внутренняя ошибка сервера.
Body
application/json
{
"status": "OK",
"errors": [
{
"code": "string",
"message": "string"
}
]
}
Name |
Description |
errors |
Type: ApiErrorDTO[] Список ошибок. |
status |
Type: ApiResponseStatusType Тип ответа. Enum: |