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

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

Пока недоступен для продавцов 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",
  "result": {
    "rejectedOffers": [
      {
        "offerId": "example",
        "reason": "OFFER_DOES_NOT_EXIST"
      }
    ],
    "warningOffers": [
      {
        "offerId": null,
        "warnings": [
          null
        ]
      }
    ]
  }
}

Type: object

All of 2 types
  • Type: ApiResponse

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

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

    result

    Type: UpdatePromoOffersResultDTO

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

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

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",
  "errors": [
    {
      "code": "example",
      "message": "example"
    }
  ]
}

Type: object

All of 1 type
  • Type: ApiErrorResponse

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

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

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",
  "errors": [
    {
      "code": "example",
      "message": "example"
    }
  ]
}

401 Unauthorized

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

Body

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

Type: object

All of 1 type
  • Type: ApiErrorResponse

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

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

403 Forbidden

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

Body

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

Type: object

All of 1 type
  • Type: ApiErrorResponse

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

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

404 Not Found

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

Body

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

Type: object

All of 1 type
  • Type: ApiErrorResponse

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

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

420 Method Failure

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

Body

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

Type: object

All of 1 type
  • Type: ApiErrorResponse

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

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

500 Internal Server Error

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

Body

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

Type: object

All of 1 type
  • Type: ApiErrorResponse

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

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

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

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