3
Стать партнером
3
{{ formatMonthYear(startMonth) }}
{{ d }}
{{ day.day }}
{{ formatMonthYear(endMonth) }}
{{ d }}
{{ day.day }}
Обновлено
10.06.2026
Содержание статьи

Управление акциями через API

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

Все методы требуют JWT-токен в заголовке Authorization: Bearer <token>. Во всех запросах sellerId должен соответствовать селлеру из токена. Полный контракт запросов и ответов смотрите в REST API Specification Lamoda Seller.

Что можно сделать через API

Метод Endpoint Для чего нужен
GET /v2/promotions Получить список акций и их варианты.
GET /v2/promotions/{promotionId}/products Посмотреть товары, уже добавленные в акцию.
GET /v2/promotion-variants/{promotionVariantId}/available-products Получить товары, которые можно добавить в конкретный вариант акции.
POST /v2/promotion-variants/{promotionVariantId}/products Добавить товары в выбранный вариант акции.
DELETE /v2/promotion-variants/{promotionVariantId}/products Удалить товары из варианта акции.

Получить список акций и вариантов

GET /v2/promotions?sellerId=12345
Authorization: Bearer <access_token>

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

Идентификаторы:

  • promotionId — значение поля promotions[*].id;
  • promotionVariantId — значение поля promotions[*].promotionVariants[*].promotionVariantId.

Акция и вариант акции

В API есть два уровня промо:

Понятие Где используется Что означает
Акция promotionId Общая акция: название, период действия, тип, сроки добавления и удаления товаров.
Вариант акции promotionVariantId Конкретный набор условий внутри акции: процент скидки, ограничения по категориям, полу, бизнес-модели и минимальной цене с учётом скидки селлера по акции.

Например, одна акция может иметь несколько вариантов с разным процентом скидки. Процент скидки варианта передаётся в поле discountAmount. Просмотр товаров, участвующих в акции, выполняется по promotionId, а добавление и удаление товаров — по promotionVariantId.

Фильтр finished

По умолчанию GET /v2/promotions работает как finished=false и возвращает акции, у которых время завершения ещё не истекло. В такой ответ могут попасть акции со статусами ACTIVE, PLANNED, OPEN и IDLE.

Чтобы получить завершённые акции, передайте finished=true.

GET /v2/promotions?sellerId=12345&finished=true
Authorization: Bearer <access_token>

Типы акций

В ответе по акциям есть поле type:

Тип Что означает
ONSITE Onsite-акция (акция, скидка по которой напрямую применяется к текущей цене товара) с фиксированной скидкой.
ONSITE_FLOAT Onsite-акция с плавающей скидкой (можно выбрать любую скидку в рамках диапазона: discountMinPercent, discountMaxPercent).
COUPON Купонная акция.

Периоды управления товарами

У акции есть несколько дат, которые влияют на работу с товарами:

Поле Как использовать
activeFrom, activeTo Период действия акции для покупателей.
addProductsFromDate, addProductsToDate Период, когда селлер может добавлять товары в акцию.
deleteProductsToDate Последний день, когда селлер может удалить товары из акции.
isRegistrationClosed Если true, то добавление товаров в акцию уже недоступно.
deletedAt Акция мягко удалена. Она отображается в списке, но управлять товарами в ней уже нельзя.

Посмотреть товары, добавленные в акцию

GET /v2/promotions/{promotionId}/products?sellerId=12345
Authorization: Bearer <access_token>

Метод возвращает товары, которые уже добавлены селлером в акцию. Используйте promotionId из метода GET /v2/promotions.

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

Пагинация и сортировка

Метод поддерживает пагинацию. Также можно отсортировать список по дополнительной скидке от Lamoda:

GET /v2/promotions/{promotionId}/products?sellerId=12345&sort=-lamodaDiscountPercent
Authorization: Bearer <access_token>

В параметре sort можно передать поле lamodaDiscountPercent. Без префикса - сортировка выполняется по возрастанию, с префиксом - — по убыванию. Если sort не передан, применяется сортировка по умолчанию: по внутреннему идентификатору товара.

Получить товары для добавления в вариант акции

GET /v2/promotion-variants/{promotionVariantId}/available-products?sellerId=12345
Authorization: Bearer <access_token>

Метод возвращает товары селлера, которые подходят для выбранного варианта акции. Используйте promotionVariantId из метода GET /v2/promotions.

Это подготовительный шаг перед добавлением: метод помогает понять, какие товары можно добавить, какие товары требуют изменения цены и какие уже участвуют в смежных вариантах.

Если товар уже участвует в смежном варианте, то информация отобразится в поле addedToAdjacentVariant. В таком случае потребуется сначала удалить товар из текущего варианта — товар может находиться только в одном варианте акции.

Идентификатор товара и страна продажи

В методах работы с товарами идентификатор товара — это пара parentSku + country. Поле parentSku указывает на родительский SKU Lamoda, а country — на страну продажи товара.

Один и тот же parentSku может участвовать в акции независимо в разных странах. Поэтому в методах, где товар передаётся в запросе или приходит в ответе, всегда учитывайте оба поля.

На данный момент акции умеют работать только с товарами RU. Для добавления и удаления товаров передавайте country, равный RU.

На что обращать внимание при выборе товаров

Поле На что влияет
isFraudThresholdExceeded Показывает, что рассчитанная цена с учётом скидки по акции не проходит валидацию акционных цен.
recommendedBlackPrice, recommendedRedPrice Рекомендуемые цены, от которых должна рассчитываться цена по акции, чтобы пройти валидацию. Вы можете поменять цены на рекомендуемые или ниже, чтобы товар был доступен к добавлению в конкретный вариант акции.
salePeriodCoversPromoPeriod Показывает, включает ли период действия цены со скидкой (красной цены) период действия акции.
addedToAdjacentVariant Показывает, что товар уже добавлен в другой вариант этой же акции и перед добавлением в целевой вариант его нужно удалить из текущего варианта.

Все цены в ответах передаются в копейках. Например, amount: 680000 означает 6800.00 RUB.

Валидация акционных цен и рекомендуемые цены

При добавлении товара в акцию система автоматически проверяет, проходит ли рассчитанная цена по акции валидацию акционных цен. Если цена по акции не проходит валидацию, поле isFraudThresholdExceeded будет true.

В этом случае API может вернуть рекомендации:

Поле Как трактовать
recommendedRedPrice Рекомендуемая цена со скидкой. Обычно её достаточно изменить, чтобы товар прошёл валидацию.
recommendedBlackPrice Рекомендуемая базовая цена. Заполняется, если изменения только цены со скидкой недостаточно, чтобы пройти валидацию.

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

Период цены со скидкой (красной цены)

В некоторых случаях для успешного прохождения валидации redPrice необходимо, чтобы период действия redPrice включал период действия акции — см. salePeriodCoversPromoPeriod:

Значение Что означает
FULLY_COVERED Период действия цены со скидкой включает период действия акции.
TIME_NOT_COVERED Период действия цены со скидкой включает период действия акции по датам, но не по времени.
DATES_NOT_COVERED Период действия цены со скидкой не включает период действия акции.

Если красной цены нет, значение считается FULLY_COVERED.

Смежные варианты акции

Товар может находиться только в одном варианте акции. Например, если товар уже добавлен в вариант со скидкой 15%, его нельзя сразу добавить в вариант со скидкой 25%.

В списке доступных товаров поле addedToAdjacentVariant показывает, в каком варианте этой же акции товар находится сейчас:

  • promotionVariantId — текущий вариант акции, куда уже добавлен товар;
  • discountPercent — скидка в смежном варианте;
  • promocodePrice — рассчитанная цена по акции в смежном варианте;
  • lamodaDiscountPercentдополнительная скидка от Lamoda, если она есть.

Чтобы добавить такой товар в другой вариант, сначала удалите его из текущего варианта методом DELETE /v2/promotion-variants/{promotionVariantId}/products, а затем добавьте в целевой вариант методом POST /v2/promotion-variants/{promotionVariantId}/products.

Добавить товары в вариант акции

POST /v2/promotion-variants/{promotionVariantId}/products
Authorization: Bearer <access_token>
Content-Type: application/json
{
  "sellerId": "12345",
  "products": [
    {
      "parentSku": "MP002XG033BD",
      "country": "RU"
    }
  ]
}

Метод добавляет товары в выбранный вариант акции. Используйте promotionVariantId целевого варианта.

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

Как читать validation

Ответ 200 OK означает, что запрос обработан, но не гарантирует добавление каждого товара. Проверяйте массив validation:

Состояние validation Что означает
Пустой массив Все товары из запроса успешно обработаны.
Есть элементы Эти товары не прошли валидацию. Остальные товары обработаны успешно.

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

Примеры возможных значений reasons[]:

  • wrong axapta category — товар не подходит по категории;
  • wrong term — товар не подходит по срокам или условиям участия;
  • wrong price — товар не подходит по цене;
  • wrong gender — товар не подходит по полу;
  • fraud price threshold exceeded — рассчитанная цена по акции не проходит валидацию акционных цен;
  • sale period not cover promo period — период действия цены со скидкой не покрывает период акции.

Эти значения приведены как примеры. Строки в validation.reasons не зафиксированы контрактом и могут измениться, поэтому не используйте их как единственный стабильный признак бизнес-логики.

Удалить товары из варианта акции

DELETE /v2/promotion-variants/{promotionVariantId}/products
Authorization: Bearer <access_token>
Content-Type: application/json
{
  "sellerId": "12345",
  "products": [
    {
      "parentSku": "MP002XG033BD",
      "country": "RU"
    }
  ]
}

Метод удаляет товары из конкретного варианта акции. Удаление доступно только в пределах периода deleteProductsToDate.

Рекомендуемый сценарий интеграции

  1. Получите список акций методом GET /v2/promotions?sellerId=<sellerId>.
  2. Выберите акцию и подходящий вариант акции из promotionVariants.
  3. Проверьте сроки добавления и удаления товаров.
  4. При необходимости посмотрите уже добавленные товары методом GET /v2/promotions/{promotionId}/products?sellerId=<sellerId>.
  5. Получите товары для добавления методом GET /v2/promotion-variants/{promotionVariantId}/available-products?sellerId=<sellerId>.
  6. Проверьте, проходят ли рассчитанные цены по акции валидацию акционных цен, включает ли период действия цены со скидкой у таких товаров период действия акции, изучите рекомендации по изменению цен и условия участия в других вариантах этой акции.
  7. Если addedToAdjacentVariant заполнен и товар нужно добавить в целевой вариант, сначала удалите его из текущего варианта методом DELETE /v2/promotion-variants/{promotionVariantId}/products.
  8. Добавьте товары методом POST /v2/promotion-variants/{promotionVariantId}/products.
  9. Проверьте validation: товары из этого массива не были добавлены в выбранный вариант.
  10. Проверьте итоговый список товаров методом GET /v2/promotions/{promotionId}/products?sellerId=<sellerId>.

Коды ошибок

HTTP-код Описание
400 Некорректный запрос: неверный sellerId, идентификатор акции, тело запроса или параметры пагинации.
401 Ошибка авторизации. Проверьте JWT-токен.
403 Доступ запрещён. sellerId не соответствует токену или у токена нет прав на операцию.
404 Акция или вариант акции не найдены.
503 Сервис временно недоступен.

См. также

Помогла эта информация?

Да Нет
0/1000 Отправить
Утилизация товара FBO
Начало работы с рекламным кабинетом: FAQ