Массовое обновление остатков

Массово обновляет остатки товаров по складам. За один запрос можно передать до 5000 элементов — пар товаров + склад с новым количеством.

Операция выполняется синхронно и атомарно. Запрос будет отклонен с ошибкой 400, а изменения — не применены, если в батче обнаружен хотя бы один из следующих случаев:

  • товар или склад не найден;
  • товар или склад архивирован;
  • пара «товар + склад» указана в батче более одного раза.

В поле errors ответа будет представлен список всех невалидных элементов с указанием идентификаторов соответствующих товаров и складов.

Количество устанавливается как абсолютное значение. Зарезервированное количество (reserved) не изменяется. Остатки на складах, не упомянутых в батче, не затрагиваются.

Request

POST

https://api.kit.yandex.net/v1/variants/stocks/bulk_update

Body

application/json
{
  "items": [
    {
      "variant_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
      "warehouse_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
      "quantity": 10
    }
  ]
}

Name

Description

items

Type: BulkStockItem[]

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

Min items: 1

Max items: 5000

Example
[
  {
    "variant_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
    "warehouse_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
    "quantity": 10
  }
]

VariantID

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

Type: string<uuid>

Example: 019b21d9-c5d9-777d-80bd-d67c664bc6d9

WarehouseID

Идентификатор склада.

Type: string<uuid>

Example: 019b21d9-c5d9-777d-80bd-d67c664bc6d9

BulkStockItem

Элемент массового обновления остатков — новое количество товара на складе.

Name

Description

quantity

Type: integer

Новое количество товара на складе (абсолютное значение).

Min value: 0

variant_id

Type: VariantID

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

Example: 019b21d9-c5d9-777d-80bd-d67c664bc6d9

warehouse_id

Type: WarehouseID

Идентификатор склада.

Example: 019b21d9-c5d9-777d-80bd-d67c664bc6d9

Example
{
  "variant_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
  "warehouse_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
  "quantity": 10
}

Responses

204 No Content

Остатки успешно обновлены.

400 Bad Request

Некорректный запрос. Для невалидных элементов батча в поле errors перечислены идентификаторы, коды и описания ошибок.

Body

application/json
{
  "code": "VALIDATION_ERROR",
  "message": "Invalid input",
  "trace_id": "00000000000000000000000000000000",
  "errors": [
    {
      "variant_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
      "warehouse_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
      "code": "VARIANT_NOT_FOUND",
      "message": "Товар с id 019b21d9-c5d9-777d-80bd-d67c664bc6d9 не найден"
    }
  ]
}
All of 2 types
  • Type: Error

    Example
    {
      "code": "VALIDATION_ERROR",
      "message": "Invalid input",
      "trace_id": "00000000000000000000000000000000"
    }
    
  • Type: object

    errors

    Type: BulkOperationItemError[]

    Example
    [
      {
        "variant_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
        "warehouse_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
        "code": "VARIANT_NOT_FOUND",
        "message": "Товар с id 019b21d9-c5d9-777d-80bd-d67c664bc6d9 не найден"
      }
    ]
    
    Example
    {
      "errors": [
        {
          "variant_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
          "warehouse_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
          "code": "VARIANT_NOT_FOUND",
          "message": "Товар с id 019b21d9-c5d9-777d-80bd-d67c664bc6d9 не найден"
        }
      ]
    }
    

Error

Name

Description

code

Type: string

Example: VALIDATION_ERROR

message

Type: string

Example: Invalid input

trace_id

Type: string

Уникальный идентификатор запроса для отладки.

Example: 00000000000000000000000000000000

Example
{
  "code": "VALIDATION_ERROR",
  "message": "Invalid input",
  "trace_id": "00000000000000000000000000000000"
}

BulkOperationItemError

Ошибка обработки одного элемента массовой операции.

Name

Description

code

Type: string

Код ошибки элемента:

  • VARIANT_NOT_FOUND — товар не найден.
  • WAREHOUSE_NOT_FOUND — склад не найден.
  • VARIANT_ARCHIVED — товар архивирован.
  • WAREHOUSE_ARCHIVED — склад архивирован.
  • DUPLICATE_ITEM — элемент с таким идентификатором передан более одного раза.
  • INVALID_QUANTITY — некорректное количество.

Example: VARIANT_NOT_FOUND

message

Type: string

Человекочитаемое описание ошибки.

Example: Товар с id 019b21d9-c5d9-777d-80bd-d67c664bc6d9 не найден

variant_id

Type: VariantID

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

Example: 019b21d9-c5d9-777d-80bd-d67c664bc6d9

warehouse_id

Type: WarehouseID

Идентификатор склада.

Example: 019b21d9-c5d9-777d-80bd-d67c664bc6d9

Example
{
  "variant_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
  "warehouse_id": "019b21d9-c5d9-777d-80bd-d67c664bc6d9",
  "code": "VARIANT_NOT_FOUND",
  "message": "Товар с id 019b21d9-c5d9-777d-80bd-d67c664bc6d9 не найден"
}

401 Unauthorized

Не авторизован.

Body

application/json
{
  "code": "VALIDATION_ERROR",
  "message": "Invalid input",
  "trace_id": "00000000000000000000000000000000"
}

Name

Description

code

Type: string

Example: VALIDATION_ERROR

message

Type: string

Example: Invalid input

trace_id

Type: string

Уникальный идентификатор запроса для отладки.

Example: 00000000000000000000000000000000

500 Internal Server Error

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

Body

application/json
{
  "code": "VALIDATION_ERROR",
  "message": "Invalid input",
  "trace_id": "00000000000000000000000000000000"
}

Name

Description

code

Type: string

Example: VALIDATION_ERROR

message

Type: string

Example: Invalid input

trace_id

Type: string

Уникальный идентификатор запроса для отладки.

Example: 00000000000000000000000000000000