Подготовка заказа (FBS)

Позволяет выполнить три операции:

  • передать Маркету информацию о распределении товаров по коробкам;
  • передать Маркету коды маркировки для товаров;
  • удалить товар из заказа, если его не оказалось на складе.

Подходит и для DBS

Запрос предназначен для работы с FBS-заказами, но вы можете использовать его для обработки DBS-заказов, если это удобно.

Если нужно что-то поправить в переданных данных, просто повторите запрос — это можно делать сколько угодно раз до перевода заказа в статус Готов к отгрузке. ⚠️ Если вы меняете раскладку уже после печати и расклейки ярлыков, не забудье перепечатать их и наклеить заново.

Как передать информацию о распределении товаров

В этом запросе вам нужно передать Маркету список коробок и указать, какие именно товары лежат в каждой из них. Коробки могут быть двух типов:

  • Содержащие товары целиком. Такая коробка может содержать сколько угодно единиц любых товаров.

  • Содержащие часть товара. Такие коробки содержат по одной части одного товара. Например, одна содержит внешний блок кондиционера, а другая — внутренний блок.

⚠️ Одна коробка не может содержать и товары целиком, и части товаров.

Как передавать коды маркировки

Если в заказе есть товары, подлежащие маркировке, в запросе нужно передать соответствующие уникальные коды. Что такое маркировка?

Принимаются коды следующих типов:

  • Коды «Честного знака».
  • УИН для ювелирных изделий.
  • РНПТ и ГТД для импортных прослеживаемых товаров.

Для каждой позиции в заказе, требующей маркировки, нужно передать список кодов — по одному для каждой единицы товара. Например, если в заказе две пары тапочек и одна пара туфель, получится список из двух кодов для первой позиции и список из одного кода для второй.

Если товар едет в нескольких коробках, код маркировки нужно передать для каждой из них.

Как удалить товар из заказа

Чтобы удалить товар из заказа:

  1. Добавьте в запрос allowRemove: true.
  2. Передайте распределение по коробкам без товара, который нужно удалить.

Удаление нельзя отменить

Эта операция необратима: покупатель сразу получит уведомление, а состав заказа изменится.

Чтобы удалить позицию целиком, не передавайте соответствующий 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"
                        }
                    ]
                }
            ]
        }
    ]
}
⚙️ Лимит: 1 000 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.

ℹ️ Что такое кабинет и магазин на Маркете

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: 1

allowRemove

Type: boolean

Передайте true, если вы собираетесь удалить часть товаров из заказа.

OrderBoxLayoutDTO

Информация о коробке.

Name

Description

items*

Type: OrderBoxLayoutItemDTO[]

Список товаров в коробке.

Если в коробке едет часть большого товара, в списке может быть только один пункт.
Информация о товаре в коробке.

Min items: 1

OrderBoxLayoutItemDTO

Информация о товаре в коробке.

Name

Description

id*

Type: integer<int64>

Идентификатор товара в заказе.

Где его взять

Идентификатор приходит в ответе на запрос GET campaigns/{campaignId}/orders/{orderId} и в запросе Маркета POST order/accept — параметр id в items.

fullCount

Type: integer<int32>

Количество единиц товара в коробке.

Используйте это поле, если в коробке поедут целые товары, не разделенные на части. Не используйте это поле одновременно с partialCount.

Min value: 1

instances

Type: BriefOrderItemInstanceDTO[]

Переданные вами коды маркировки.
Идентификатор единицы товара.

Заполните только одно поле в зависимости от того, в какой системе маркирован товар.

Подробно о работе с маркируемыми товарами рассказано в Справке Маркета для продавцов.

partialCount

Type: OrderBoxLayoutPartialCountDTO

Часть товара в коробке.

Используйте это поле, если в коробке поедет часть большого товара. Не используйте это поле одновременно с fullCount.

BriefOrderItemInstanceDTO

Идентификатор единицы товара.

Заполните только одно поле в зависимости от того, в какой системе маркирован товар.

Подробно о работе с маркируемыми товарами рассказано в Справке Маркета для продавцов.

Name

Description

cis

Type: string

Код идентификации единицы товара в системе «Честный ЗНАК».

Важно

Не экранируйте косую черту в коде символа-разделителя \u001d!

01030410947874432155Qbag!\u001d93Zjqw

01030410947874432155Qbag!\\u001d93Zjqw

Косые черты и кавычки в других местах экранируйте по правилам JSON: \\ и \"

gtd

Type: string

Грузовая таможенная декларация.

Представляет собой строку из трех чисел, разделенных косой чертой: ХХХХХХХХ/ХХХХХХ/ХХХХХХХ.

Первая часть — код таможни, которая зарегистрировала декларацию на ввезенные товары. Далее — дата и номер декларации.

rnpt

Type: string

Регистрационный номер партии товара.

Представляет собой строку из четырех чисел, разделенных косой чертой: ХХХХХХХХ/ХХХХХХ/ХХХХХХХ/ХХХ.

Первая часть — код таможни, которая зарегистрировала декларацию на партию товара. Далее — дата, номер декларации и номер маркированного товара в декларации.

uin

Type: string

Уникальный идентификационный номер ювелирного изделия.

Представляет собой число из 16 цифр.

OrderBoxLayoutPartialCountDTO

Информация о части товара в коробке.

Name

Description

current*

Type: integer<int32>

Номер части, начиная с 1.

Min value: 1

total*

Type: integer<int32>

На сколько всего частей разделен товар.

Min value: 2

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: OK, ERROR

OrderBoxesLayoutDTO

Распределение товаров по коробкам.

Name

Description

boxes*

Type: EnrichedOrderBoxLayoutDTO[]

Список коробок.
Информация о коробке.
Информация о коробке.

ApiResponseStatusType

Тип ответа.

Type

Description

ApiResponseStatusType

Enum: OK, ERROR

EnrichedOrderBoxLayoutDTO

Информация о коробке.

Name

Description

items*

Type: OrderBoxLayoutItemDTO[]

Список товаров в коробке.

Если в коробке едет часть большого товара, в списке может быть только один пункт.
Информация о товаре в коробке.

Min items: 1

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: OK, ERROR

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: OK, ERROR

403 Forbidden

Данные для авторизации неверны или доступ к ресурсу запрещен.

Body

application/json
{
    "status": "OK",
    "errors": [
        {
            "code": "string",
            "message": "string"
        }
    ]
}

Name

Description

errors

Type: ApiErrorDTO[]

Список ошибок.
Общий формат ошибки.

status

Type: ApiResponseStatusType

Тип ответа.

Enum: OK, ERROR

404 Not Found

Запрашиваемый ресурс не найден.

Body

application/json
{
    "status": "OK",
    "errors": [
        {
            "code": "string",
            "message": "string"
        }
    ]
}

Name

Description

errors

Type: ApiErrorDTO[]

Список ошибок.
Общий формат ошибки.

status

Type: ApiResponseStatusType

Тип ответа.

Enum: OK, ERROR

420 Method Failure

Превышено ограничение на доступ к ресурсу.

Body

application/json
{
    "status": "OK",
    "errors": [
        {
            "code": "string",
            "message": "string"
        }
    ]
}

Name

Description

errors

Type: ApiErrorDTO[]

Список ошибок.
Общий формат ошибки.

status

Type: ApiResponseStatusType

Тип ответа.

Enum: OK, ERROR

500 Internal Server Error

Внутренняя ошибка сервера.

Body

application/json
{
    "status": "OK",
    "errors": [
        {
            "code": "string",
            "message": "string"
        }
    ]
}

Name

Description

errors

Type: ApiErrorDTO[]

Список ошибок.
Общий формат ошибки.

status

Type: ApiResponseStatusType

Тип ответа.

Enum: OK, ERROR

pathParams:
  - description: >
      Идентификатор кампании в API и магазина в кабинете. Каждая кампания в API
      соответствует магазину в кабинете.


      Чтобы узнать идентификаторы своих магазинов, воспользуйтесь запросом [GET
      campaigns](../../reference/campaigns/getCampaigns.md).


      ℹ️ [Что такое кабинет и магазин на
      Маркете](https://yandex.ru/support/marketplace/account/introduction.html)
    name: campaignId
    in: path
    required: true
    schema:
      type: integer
      format: int64
  - description: Идентификатор заказа.
    name: orderId
    in: path
    required: true
    schema:
      type: integer
      format: int64
searchParams: []
headers: []
body: |-
  {
    "boxes": [
      {
        "items": [
          {
            "id": 0,
            "fullCount": 0,
            "partialCount": {
              "current": 0,
              "total": 0
            },
            "instances": [
              {
                "cis": "string",
                "uin": "string",
                "rnpt": "string",
                "gtd": "string"
              }
            ]
          }
        ]
      }
    ],
    "allowRemove": false
  }
schema:
  type: object
  required:
    - boxes
  properties:
    boxes:
      description: Список коробок.
      type: array
      minItems: 1
      items:
        description: Информация о коробке.
        type: object
        required:
          - items
        properties:
          items:
            description: >
              Список товаров в коробке.


              Если в коробке едет часть большого товара, в списке может быть
              только один пункт.
            type: array
            minItems: 1
            items:
              description: Информация о товаре в коробке.
              type: object
              required:
                - id
              properties:
                id:
                  description: "Идентификатор товара в заказе.\n\n{% cut \"Где его взять\" %}\n\nИдентификатор приходит в ответе на запрос [GET campaigns/{campaignId}/orders/{orderId}](../../reference/orders/getOrder.md) и в запросе Маркета [POST order/accept](../../pushapi/reference/orderAccept.md) — параметр `id` в `items`.\n\n{% endcut %}\n\_\n"
                  type: integer
                  format: int64
                fullCount:
                  description: >
                    Количество единиц товара в коробке.


                    Используйте это поле, если в коробке поедут целые товары, не
                    разделенные на части. Не используйте это поле одновременно с
                    `partialCount`.
                  type: integer
                  format: int32
                  minimum: 1
                partialCount:
                  description: >
                    Часть товара в коробке.


                    Используйте это поле, если в коробке поедет часть большого
                    товара. Не используйте это поле одновременно с `fullCount`.
                  type: object
                  required:
                    - current
                    - total
                  properties:
                    current:
                      description: Номер части, начиная с 1.
                      type: integer
                      format: int32
                      minimum: 1
                    total:
                      description: На сколько всего частей разделен товар.
                      type: integer
                      format: int32
                      minimum: 2
                instances:
                  description: Переданные вами коды маркировки.
                  type: array
                  items:
                    description: >
                      Идентификатор единицы товара.


                      Заполните только одно поле в зависимости от того, в какой
                      системе маркирован товар.


                      Подробно о работе с маркируемыми товарами рассказано [в
                      Справке Маркета для
                      продавцов](https://yandex.ru/support/marketplace/orders/cz.html).
                    type: object
                    properties:
                      cis:
                        description: >
                          Код идентификации единицы товара [в системе «Честный
                          ЗНАК»](https://честныйзнак.рф/).


                          {% note warning %}


                          Не экранируйте косую черту в коде символа-разделителя
                          `\u001d`!


                          ✅ `01030410947874432155Qbag!\u001d93Zjqw`


                          ❌ `01030410947874432155Qbag!\\u001d93Zjqw`


                          Косые черты и кавычки в других местах экранируйте по
                          правилам JSON: `\\` и `\"`


                          {% endnote %}
                        type: string
                      uin:
                        description: |
                          Уникальный идентификационный номер ювелирного изделия.

                          Представляет собой число из 16 цифр.
                        type: string
                      rnpt:
                        description: >
                          Регистрационный номер партии товара.


                          Представляет собой строку из четырех чисел,
                          разделенных косой чертой: ХХХХХХХХ/ХХХХХХ/ХХХХХХХ/ХХХ.


                          Первая часть — код таможни, которая зарегистрировала
                          декларацию на партию товара. Далее — дата, номер
                          декларации и номер маркированного товара в декларации.
                        type: string
                      gtd:
                        description: >
                          Грузовая таможенная декларация.


                          Представляет собой строку из трех чисел, разделенных
                          косой чертой: ХХХХХХХХ/ХХХХХХ/ХХХХХХХ.


                          Первая часть — код таможни, которая зарегистрировала
                          декларацию на ввезенные товары. Далее — дата и номер
                          декларации.
                        type: string
    allowRemove:
      description: Передайте `true`, если вы собираетесь удалить часть товаров из заказа.
      type: boolean
      default: false
bodyType: application/json
method: put
security:
  - type: oauth2
    flows:
      implicit:
        authorizationUrl: https://oauth.yandex.ru/authorize
        scopes:
          market:partner-api: API Яндекс.Маркета / Поиска по товарам для партнеров
path: campaigns/{campaignId}/orders/{orderId}/boxes
host: https://api.partner.market.yandex.ru