Загрузка (обновление) остатков

MVP

POST /v1/product/stock/update

POST/v1/product/stock/update

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

Если указаны оба идентификатора, приоритет имеет product_id. В запросе необходимо указать product_id или offer_id. Для некоторых витрин требуется передавать оба поля.

Обновление в стандарте синхронно, но можно получать результат обновления через stock/info.

Тело запроса

items
array
required

Список остатков товаров. Максимальное количество элементов в одном запросе — 200.

Заполняется либо offer_id, либо product_id. Если заполнены оба идентификатора, то используется только product_id. Витрина может потребовать передавать оба параметра offer_id и product_id.

Показать свойства
product_id
string

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

offer_id
string

Артикул продавца.

location_id
string
required

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

count
integer
required

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

Успешный ответ

200A successful response.
application/json
object
processed
integer

Количество успешно обработанных элементов.

failed
array

Элементы, по которым возникла ошибка.

Ошибка обновления по конкретному элементу остатков.

Если вернулись оба поля product_id и offer_id, приоритетным считается product_id.

Показать свойства
product_id
string

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

offer_id
string

Артикул продавца.

location_id
string

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

error_message
string

Текст ошибки элемента (compat). Предпочтительно использовать errors.

errors
array

Структурированные ошибки элемента батча. Коды: ProductStockUpdateValidationErrorCode.

Ошибка валидации/бизнеса поля для scope «ProductStockUpdate». Допустимые field: items[].product_id, offer_id, location_id, count. Для бизнес-правил витрины: code=STOREFRONT_RULE_VIOLATION.

Показать свойства
field
string
required

Путь к полю. Ожидаемые: items[].product_id, offer_id, location_id, count.

code
string
required

Код ошибки.

REQUIRED: Поле отсутствует или пустое, но обязательно

INVALID_TYPE: Неверный JSON-тип

INVALID_FORMAT: Неверный формат значения

REQUIRED_ONE_OF: Нужен хотя бы один из набора полей

NEGATIVE_VALUE: Отрицательное значение недопустимо

MIN_VALUE: Значение ниже минимума

MAX_VALUE: Значение выше максимума

TOO_MANY_ITEMS: Превышен лимит элементов

NOT_FOUND: Сущность не найдена (уточняется полем field)

STOREFRONT_RULE_VIOLATION: Отклонено бизнес-правилом витрины (детали в message)

Допустимые значения
REQUIREDINVALID_TYPEINVALID_FORMATREQUIRED_ONE_OFNEGATIVE_VALUEMIN_VALUEMAX_VALUETOO_MANY_ITEMSNOT_FOUNDSTOREFRONT_RULE_VIOLATION
message
string
required

Текст для клиента. Для STOREFRONT_RULE_VIOLATION — описание правила.

Ошибки

400Некорректный запрос
application/json
object
error_type
string

Класс транспортной ошибки запроса (HTTP 4xx/5xx).

Поэлементные и бизнес-ошибки сущности приходят в HTTP 200 в errors/failed, не в этом поле.

  • ERROR_TYPE_UNSPECIFIED: не используется
  • ERROR_TYPE_UNAUTHORIZED: HTTP 401
  • ERROR_TYPE_RATE_LIMIT: HTTP 429
  • ERROR_TYPE_INTERNAL: HTTP 500
  • ERROR_TYPE_BAD_REQUEST: HTTP 400 (уровень запроса)
Допустимые значения
ERROR_TYPE_UNSPECIFIEDERROR_TYPE_UNAUTHORIZEDERROR_TYPE_RATE_LIMITERROR_TYPE_INTERNALERROR_TYPE_BAD_REQUEST
code
string

Машинный код ошибки. Уточняет error_type.

message
string

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

details
object
401Ошибка авторизации
application/json
object
error_type
string

Класс транспортной ошибки запроса (HTTP 4xx/5xx).

Поэлементные и бизнес-ошибки сущности приходят в HTTP 200 в errors/failed, не в этом поле.

  • ERROR_TYPE_UNSPECIFIED: не используется
  • ERROR_TYPE_UNAUTHORIZED: HTTP 401
  • ERROR_TYPE_RATE_LIMIT: HTTP 429
  • ERROR_TYPE_INTERNAL: HTTP 500
  • ERROR_TYPE_BAD_REQUEST: HTTP 400 (уровень запроса)
Допустимые значения
ERROR_TYPE_UNSPECIFIEDERROR_TYPE_UNAUTHORIZEDERROR_TYPE_RATE_LIMITERROR_TYPE_INTERNALERROR_TYPE_BAD_REQUEST
code
string

Машинный код ошибки. Уточняет error_type.

message
string

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

details
object
429Превышен лимит запросов
application/json
object
error_type
string

Класс транспортной ошибки запроса (HTTP 4xx/5xx).

Поэлементные и бизнес-ошибки сущности приходят в HTTP 200 в errors/failed, не в этом поле.

  • ERROR_TYPE_UNSPECIFIED: не используется
  • ERROR_TYPE_UNAUTHORIZED: HTTP 401
  • ERROR_TYPE_RATE_LIMIT: HTTP 429
  • ERROR_TYPE_INTERNAL: HTTP 500
  • ERROR_TYPE_BAD_REQUEST: HTTP 400 (уровень запроса)
Допустимые значения
ERROR_TYPE_UNSPECIFIEDERROR_TYPE_UNAUTHORIZEDERROR_TYPE_RATE_LIMITERROR_TYPE_INTERNALERROR_TYPE_BAD_REQUEST
code
string

Машинный код ошибки. Уточняет error_type.

message
string

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

details
object
500Внутренняя ошибка сервера
application/json
object
error_type
string

Класс транспортной ошибки запроса (HTTP 4xx/5xx).

Поэлементные и бизнес-ошибки сущности приходят в HTTP 200 в errors/failed, не в этом поле.

  • ERROR_TYPE_UNSPECIFIED: не используется
  • ERROR_TYPE_UNAUTHORIZED: HTTP 401
  • ERROR_TYPE_RATE_LIMIT: HTTP 429
  • ERROR_TYPE_INTERNAL: HTTP 500
  • ERROR_TYPE_BAD_REQUEST: HTTP 400 (уровень запроса)
Допустимые значения
ERROR_TYPE_UNSPECIFIEDERROR_TYPE_UNAUTHORIZEDERROR_TYPE_RATE_LIMITERROR_TYPE_INTERNALERROR_TYPE_BAD_REQUEST
code
string

Машинный код ошибки. Уточняет error_type.

message
string

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

details
object
POST/v1/product/stock/update
1curl https://api.omninet.ru/v1/product/stock/update \2  --request POST \3  --header 'Content-Type: application/json' \4  --data '{5  "items": [6    {7      "product_id": "string",8      "offer_id": "string",9      "location_id": "string",10      "count": 011    }12  ]13}'
{
  "processed": 0,
  "failed": [
    {
      "product_id": "string",
      "offer_id": "string",
      "location_id": "string",
      "error_message": "string",
      "errors": [
        {
          "field": "count",
          "code": "NEGATIVE_VALUE",
          "message": "Остаток не может быть отрицательным"
        }
      ]
    }
  ]
}

A successful response.