Добавление товаров в акцию или изменение их цен

Метод доступен для всех моделей.

Пока недоступен для продавцов Market Yandex Go.

Если вы используете API-Key-токен, для вызова метода необходим один из доступов в списке

Добавляет товары в акцию или изменяет цены на товары, которые участвуют в акции.

Изменения начинают действовать в течение 4–6 часов. Узнать, применились ли они, можно с помощью параметра processing в ответе метода POST v2/businesses/{businessId}/promos.

⚙️ Лимит: 10 000 запросов в час

Request

POST

https://api.partner.market.yandex.ru/v2/businesses/{businessId}/promos/offers/update

Path parameters

Name

Description

businessId

Type: integer

Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом GET v2/campaigns.

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

Min value: 1

Body

application/json
{
  "promoId": "example",
  "offers": [
    {
      "offerId": "example",
      "params": {
        "discountParams": {
          "price": 1,
          "promoPrice": 1
        }
      }
    }
  ]
}

Name

Description

offers

Type: UpdatePromoOfferDTO[]

Товары, которые необходимо добавить в акцию или цены которых нужно изменить.

Min items: 1

Max items: 500

Example
[
  {
    "offerId": "example",
    "params": {
      "discountParams": {
        "price": 1,
        "promoPrice": 1
      }
    }
  }
]

promoId

Type: string

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

Example: example

ShopSku

Ваш SKU — идентификатор товара в вашей системе.

Правила использования SKU:

  • У каждого товара SKU должен быть свой.

  • Уже заданный SKU нельзя освободить и использовать заново для другого товара. Каждый товар должен получать новый идентификатор, до того никогда не использовавшийся в вашем каталоге.

SKU товара можно изменить в кабинете продавца на Маркете. О том, как это сделать, читайте в Справке Маркета для продавцов.

Важно

Пробельные символы в начале и конце значения автоматически удаляются. Например, " SKU123 " и "SKU123" будут обработаны как одинаковые значения.

Что такое SKU и как его назначать

Type: string

Min length: 1

Max length: 255

Pattern: ^(?=.*\S.*)[^\x00-\x08\x0A-\x1f\x7f]{1,255}$

Example: example

UpdatePromoOfferDiscountParamsDTO

Параметры товара в акции с типом DIRECT_DISCOUNT или BLUE_FLASH.

Обязательный параметр для акций с этими типами.

Name

Description

price

Type: integer

Зачеркнутая цена — та, по которой товар продавался до акции.

Указывается в рублях.

Число должно быть целым.

Min value: 1

promoPrice

Type: integer

Цена по акции — та, по которой вы хотите продавать товар.

Указывается в рублях.

Число должно быть целым.

Min value: 1

Example
{
  "price": 1,
  "promoPrice": 1
}

UpdatePromoOfferParamsDTO

Параметры товара, который участвует в акции.

Name

Description

discountParams

Type: UpdatePromoOfferDiscountParamsDTO

Параметры товара в акции с типом DIRECT_DISCOUNT или BLUE_FLASH.

Обязательный параметр для акций с этими типами.

Example
{
  "price": 1,
  "promoPrice": 1
}
Example
{
  "discountParams": {
    "price": 1,
    "promoPrice": 1
  }
}

UpdatePromoOfferDTO

Описание товаров, которые участвуют в акции.

Name

Description

offerId

Type: ShopSku

Ваш SKU — идентификатор товара в вашей системе.

Правила использования SKU:

  • У каждого товара SKU должен быть свой.

  • Уже заданный SKU нельзя освободить и использовать заново для другого товара. Каждый товар должен получать новый идентификатор, до того никогда не использовавшийся в вашем каталоге.

SKU товара можно изменить в кабинете продавца на Маркете. О том, как это сделать, читайте в Справке Маркета для продавцов.

Важно

Пробельные символы в начале и конце значения автоматически удаляются. Например, " SKU123 " и "SKU123" будут обработаны как одинаковые значения.

Что такое SKU и как его назначать

Min length: 1

Max length: 255

Pattern: ^(?=.*\S.*)[^\x00-\x08\x0A-\x1f\x7f]{1,255}$

Example: example

params

Type: UpdatePromoOfferParamsDTO

Параметры товара, который участвует в акции.

Example
{
  "discountParams": {
    "price": 1,
    "promoPrice": 1
  }
}
Example
{
  "offerId": "example",
  "params": {
    "discountParams": {
      "price": 1,
      "promoPrice": 1
    }
  }
}

Responses

200 OK

Результат добавления товаров в акцию или обновления их цен.

Body

application/json
{
  "status": "OK"
}

Type: object

ApiResponseStatusType

Тип ответа. Возможные значения:

  • OK — ошибок нет.
  • ERROR — при обработке запроса произошла ошибка.

Type: string

Enum: OK, ERROR

ApiResponse

Стандартная обертка для ответов сервера.

Name

Description

status

Type: ApiResponseStatusType

Тип ответа. Возможные значения:

  • OK — ошибок нет.
  • ERROR — при обработке запроса произошла ошибка.

Enum: OK, ERROR

Example
{
  "status": "OK"
}

RejectedPromoOfferUpdateReasonType

Причина отклонения изменения:

  • OFFER_DOES_NOT_EXIST — в кабинете нет товара с таким SKU.

  • OFFER_DUPLICATION — один и тот же товар передан несколько раз.

  • OFFER_NOT_ELIGIBLE_FOR_PROMO — товар не подходит под условия акции.

  • OFFER_PROMOS_MAX_BYTE_SIZE_EXCEEDED — товар не добавлен в акцию по техническим причинам.

  • DEADLINE_FOR_FOCUS_PROMOS_EXCEEDED — истек срок добавления товаров в акцию.

  • EMPTY_OLD_PRICE — не указана зачеркнутая цена.

  • EMPTY_PROMO_PRICE — не указана цена по акции.

  • MAX_PROMO_PRICE_EXCEEDED — цена по акции превышает максимально возможную цену для участия в акции.

  • PROMO_PRICE_BIGGER_THAN_MAX — цена по акции больше 95% от зачеркнутой цены.

  • PROMO_PRICE_SMALLER_THAN_MIN — цена по акции меньше 1% от зачеркнутой цены.

  • PRICE_TOO_BIG — слишком большая цена по акции.

  • OLD_PRICE_TOO_BIG — слишком большая зачеркнутая цена.

Type: string

Enum: OFFER_DOES_NOT_EXIST, OFFER_DUPLICATION, OFFER_NOT_ELIGIBLE_FOR_PROMO, OFFER_PROMOS_MAX_BYTE_SIZE_EXCEEDED, DEADLINE_FOR_FOCUS_PROMOS_EXCEEDED, EMPTY_OLD_PRICE, EMPTY_PROMO_PRICE, MAX_PROMO_PRICE_EXCEEDED, PROMO_PRICE_BIGGER_THAN_MAX, PROMO_PRICE_SMALLER_THAN_MIN, PRICE_TOO_BIG, OLD_PRICE_TOO_BIG

RejectedPromoOfferUpdateDTO

Описание отклоненного изменения.

Name

Description

offerId

Type: ShopSku

Ваш SKU — идентификатор товара в вашей системе.

Правила использования SKU:

  • У каждого товара SKU должен быть свой.

  • Уже заданный SKU нельзя освободить и использовать заново для другого товара. Каждый товар должен получать новый идентификатор, до того никогда не использовавшийся в вашем каталоге.

SKU товара можно изменить в кабинете продавца на Маркете. О том, как это сделать, читайте в Справке Маркета для продавцов.

Важно

Пробельные символы в начале и конце значения автоматически удаляются. Например, " SKU123 " и "SKU123" будут обработаны как одинаковые значения.

Что такое SKU и как его назначать

Min length: 1

Max length: 255

Pattern: ^(?=.*\S.*)[^\x00-\x08\x0A-\x1f\x7f]{1,255}$

Example: example

reason

Type: RejectedPromoOfferUpdateReasonType

Причина отклонения изменения:

  • OFFER_DOES_NOT_EXIST — в кабинете нет товара с таким SKU.

  • OFFER_DUPLICATION — один и тот же товар передан несколько раз.

  • OFFER_NOT_ELIGIBLE_FOR_PROMO — товар не подходит под условия акции.

  • OFFER_PROMOS_MAX_BYTE_SIZE_EXCEEDED — товар не добавлен в акцию по техническим причинам.

  • DEADLINE_FOR_FOCUS_PROMOS_EXCEEDED — истек срок добавления товаров в акцию.

  • EMPTY_OLD_PRICE — не указана зачеркнутая цена.

  • EMPTY_PROMO_PRICE — не указана цена по акции.

  • MAX_PROMO_PRICE_EXCEEDED — цена по акции превышает максимально возможную цену для участия в акции.

  • PROMO_PRICE_BIGGER_THAN_MAX — цена по акции больше 95% от зачеркнутой цены.

  • PROMO_PRICE_SMALLER_THAN_MIN — цена по акции меньше 1% от зачеркнутой цены.

  • PRICE_TOO_BIG — слишком большая цена по акции.

  • OLD_PRICE_TOO_BIG — слишком большая зачеркнутая цена.

Enum: OFFER_DOES_NOT_EXIST, OFFER_DUPLICATION, OFFER_NOT_ELIGIBLE_FOR_PROMO, OFFER_PROMOS_MAX_BYTE_SIZE_EXCEEDED, DEADLINE_FOR_FOCUS_PROMOS_EXCEEDED, EMPTY_OLD_PRICE, EMPTY_PROMO_PRICE, MAX_PROMO_PRICE_EXCEEDED, PROMO_PRICE_BIGGER_THAN_MAX, PROMO_PRICE_SMALLER_THAN_MIN, PRICE_TOO_BIG, OLD_PRICE_TOO_BIG

Example
{
  "offerId": "example",
  "reason": "OFFER_DOES_NOT_EXIST"
}

PromoOfferUpdateWarningCodeType

Предупреждение, которое появилось при добавлении товара:

  • DEEP_DISCOUNT_OFFER — большая разница с ценой в каталоге. Проверьте, нет ли ошибки.

  • CATALOG_PRICE_IS_LOWER_THAN_PROMO — цена, которая действует во всех магазинах, ниже цены по акции. У товара не будет отображаться цена по акции.

  • SHOP_PRICES_ARE_LOWER_THAN_PROMO — цена в отдельном магазине ниже цены по акции. У товара в акции будет отображаться цена в магазине. Для остальных магазинов будет действовать цена по акции.

  • SHOP_OFFER_NOT_ELIGIBLE_FOR_PROMO — товар в отдельном магазине не подходит под условия акции.

Type: string

Enum: DEEP_DISCOUNT_OFFER, CATALOG_PRICE_IS_LOWER_THAN_PROMO, SHOP_PRICES_ARE_LOWER_THAN_PROMO, SHOP_OFFER_NOT_ELIGIBLE_FOR_PROMO

CampaignId

Идентификатор кампании (магазина) — технический идентификатор, который представляет ваш магазин в системе Яндекс Маркета при работе через API. Он однозначно связывается с вашим магазином, но предназначен только для автоматизированного взаимодействия.

Его можно узнать с помощью запроса GET v2/campaigns или найти в кабинете продавца на Маркете. Нажмите на иконку вашего аккаунта → Настройки и в меню слева выберите API и модули:

  • блок Идентификатор кампании;
  • вкладка Лог запросов → выпадающий список в блоке Показывать логи.

⚠️ Не путайте его с:

  • идентификатором магазина, который отображается в личном кабинете продавца;
  • рекламными кампаниями.

Type: integer

Min value: 1

PromoOfferUpdateWarningDTO

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

Name

Description

code

Type: PromoOfferUpdateWarningCodeType

Предупреждение, которое появилось при добавлении товара:

  • DEEP_DISCOUNT_OFFER — большая разница с ценой в каталоге. Проверьте, нет ли ошибки.

  • CATALOG_PRICE_IS_LOWER_THAN_PROMO — цена, которая действует во всех магазинах, ниже цены по акции. У товара не будет отображаться цена по акции.

  • SHOP_PRICES_ARE_LOWER_THAN_PROMO — цена в отдельном магазине ниже цены по акции. У товара в акции будет отображаться цена в магазине. Для остальных магазинов будет действовать цена по акции.

  • SHOP_OFFER_NOT_ELIGIBLE_FOR_PROMO — товар в отдельном магазине не подходит под условия акции.

Enum: DEEP_DISCOUNT_OFFER, CATALOG_PRICE_IS_LOWER_THAN_PROMO, SHOP_PRICES_ARE_LOWER_THAN_PROMO, SHOP_OFFER_NOT_ELIGIBLE_FOR_PROMO

campaignIds

Type: CampaignId[] | null

Идентификаторы кампаний тех магазинов, для которых получены предупреждения.

Не возвращается, если предупреждения действуют для всех магазинов в кабинете.

Min items: 1

Unique items: true

Example
[
  1
]
Example
{
  "code": "DEEP_DISCOUNT_OFFER",
  "campaignIds": [
    1
  ]
}

WarningPromoOfferUpdateDTO

Описание предупреждения, которое появилось при добавлении товара.

Name

Description

offerId

Type: ShopSku

Ваш SKU — идентификатор товара в вашей системе.

Правила использования SKU:

  • У каждого товара SKU должен быть свой.

  • Уже заданный SKU нельзя освободить и использовать заново для другого товара. Каждый товар должен получать новый идентификатор, до того никогда не использовавшийся в вашем каталоге.

SKU товара можно изменить в кабинете продавца на Маркете. О том, как это сделать, читайте в Справке Маркета для продавцов.

Важно

Пробельные символы в начале и конце значения автоматически удаляются. Например, " SKU123 " и "SKU123" будут обработаны как одинаковые значения.

Что такое SKU и как его назначать

Min length: 1

Max length: 255

Pattern: ^(?=.*\S.*)[^\x00-\x08\x0A-\x1f\x7f]{1,255}$

Example: example

warnings

Type: PromoOfferUpdateWarningDTO[]

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

Example
[
  {
    "code": "DEEP_DISCOUNT_OFFER",
    "campaignIds": [
      1
    ]
  }
]
Example
{
  "offerId": "example",
  "warnings": [
    {
      "code": "DEEP_DISCOUNT_OFFER",
      "campaignIds": [
        1
      ]
    }
  ]
}

UpdatePromoOffersResultDTO

Ошибки и предупреждения, которые появились при добавлении товаров в акцию.

Name

Description

rejectedOffers

Type: RejectedPromoOfferUpdateDTO[] | null

Изменения, которые были отклонены.

Возвращается, только если есть отклоненные изменения.

Min items: 1

Example
[
  {
    "offerId": "example",
    "reason": "OFFER_DOES_NOT_EXIST"
  }
]

warningOffers

Type: WarningPromoOfferUpdateDTO[] | null

Изменения, по которым есть предупреждения. Они информируют о возможных проблемах. Информация о товарах обновится.

Возвращается, только если есть предупреждения.

Min items: 1

Example
[
  {
    "offerId": "example",
    "warnings": [
      {
        "code": "DEEP_DISCOUNT_OFFER",
        "campaignIds": [
          1
        ]
      }
    ]
  }
]
Example
{
  "rejectedOffers": [
    {
      "offerId": "example",
      "reason": "OFFER_DOES_NOT_EXIST"
    }
  ],
  "warningOffers": [
    {
      "offerId": null,
      "warnings": [
        {
          "code": "DEEP_DISCOUNT_OFFER",
          "campaignIds": [
            null
          ]
        }
      ]
    }
  ]
}

400 Bad Request

Запрос содержит неправильные данные. Подробнее об ошибках при работе с акциями

Body

application/json
{
  "status": "OK"
}

Type: object

ApiErrorDTO

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

Name

Description

code

Type: string

Код ошибки.

Example: example

message

Type: string

Описание ошибки.

Example: example

Example
{
  "code": "example",
  "message": "example"
}

ApiErrorResponse

Стандартная обертка для ошибок сервера.

Type: object

All of 2 types
  • Type: ApiResponse

    Стандартная обертка для ответов сервера.

    Example
    {
      "status": "OK"
    }
    
  • Type: object

    errors

    Type: ApiErrorDTO[] | null

    Список ошибок.

    Min items: 1

    Example
    [
      {
        "code": "example",
        "message": "example"
      }
    ]
    
    Example
    {
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    
Example
{
  "status": "OK"
}

401 Unauthorized

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

Body

application/json
{
  "status": "OK"
}

Type: object

403 Forbidden

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

Body

application/json
{
  "status": "OK"
}

Type: object

404 Not Found

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

Body

application/json
{
  "status": "OK"
}

Type: object

420 Method Failure

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

Body

application/json
{
  "status": "OK"
}

Type: object

500 Internal Server Error

Внутренняя ошибка Маркета. Подробнее об ошибке

Body

application/json
{
  "status": "OK"
}

Type: object

pathParams:
  - description: "Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [GET\_v2/campaigns](../../reference/campaigns/getCampaigns.md).\n\nℹ️ [Что такое кабинет и магазин на Маркете](https://yandex.ru/support/marketplace/account/introduction.html)\n"
    name: businessId
    in: path
    required: true
    schema:
      type: integer
      format: int64
      minimum: 1
searchParams: []
headers: []
body: |-
  {
    "promoId": "example",
    "offers": [
      {
        "offerId": "example",
        "params": {
          "discountParams": {
            "price": 1,
            "promoPrice": 1
          }
        }
      }
    ]
  }
schema:
  description: >
    Добавление товаров в акцию или обновление их параметров.


    Чтобы добавить товары в акцию или обновить параметры каких-то товаров,
    передайте их в параметре `offers`.
  type: object
  required:
    - promoId
    - offers
  properties:
    promoId:
      description: Идентификатор акции.
      type: string
    offers:
      description: >-
        Товары, которые необходимо добавить в акцию или цены которых нужно
        изменить.
      type: array
      minItems: 1
      maxItems: 500
      items:
        description: Описание товаров, которые участвуют в акции.
        type: object
        required:
          - offerId
        properties:
          offerId:
            description: "Ваш SKU —\_идентификатор товара в вашей системе.\n\nПравила использования SKU:\n\n* У каждого товара SKU должен быть свой.\n\n* Уже заданный SKU нельзя освободить и использовать заново для другого товара. Каждый товар должен получать новый идентификатор, до того никогда не использовавшийся в вашем каталоге.\n\nSKU товара можно изменить в кабинете продавца на Маркете. О том, как это сделать, читайте [в Справке Маркета для продавцов](https://yandex.ru/support2/marketplace/ru/assortment/operations/edit-sku).\n\n{% note warning %}\n\nПробельные символы в начале и конце значения автоматически удаляются. Например, `\"  SKU123  \"` и `\"SKU123\"` будут обработаны как одинаковые значения.\n\n{% endnote %}\n\n[Что такое SKU и как его назначать](https://yandex.ru/support/marketplace/assortment/add/index.html#fields)\n"
            type: string
            pattern: ^(?=.*\S.*)[^\x00-\x08\x0A-\x1f\x7f]{1,255}$
            x-transform: trim
            minLength: 1
            maxLength: 255
          params:
            description: Параметры товара, который участвует в акции.
            type: object
            properties:
              discountParams:
                description: >
                  Параметры товара в акции с типом `DIRECT_DISCOUNT` или
                  `BLUE_FLASH`.


                  Обязательный параметр для акций с этими типами.
                type: object
                properties:
                  price:
                    description: >
                      Зачеркнутая цена — та, по которой товар продавался до
                      акции.


                      Указывается в рублях.


                      Число должно быть целым.
                    type: integer
                    format: int64
                    minimum: 1
                  promoPrice:
                    description: |
                      Цена по акции — та, по которой вы хотите продавать товар.

                      Указывается в рублях.

                      Число должно быть целым.
                    type: integer
                    format: int64
                    minimum: 1
bodyType: application/json
method: post
security:
  - type: apiKey
    name: Api-Key
    in: header
  - type: oauth2
    x-inline: true
    flows:
      implicit:
        authorizationUrl: https://oauth.yandex.ru/authorize
        scopes:
          market:partner-api: API Яндекс.Маркета / Поиска по товарам для партнеров
path: v2/businesses/{businessId}/promos/offers/update
host: https://api.partner.market.yandex.ru

No longer supported, please use an alternative and newer version.

Цена, которая действует во всех магазинах.