Перейти к основному содержимому

Endpoints API цен (Prices/Pricing)

Дата: 2025-02-10 Подзадача: 2-9 - Document all Prices API endpoints Статус: ✅ ЗАВЕРШЕНО

Обзор

Lamoda предоставляет 5 endpoints/methods для управления ценами через 2 API-системы:

  • B2B Platform API: 2 endpoints (REST) - получение настроек цен и обновление цен для СНГ
  • Seller JSON-RPC API: 3 methods (JSON-RPC) - массовое обновление цен, изменение и установка цен

API предоставляет полную функциональность для управления базовыми ценами (черные цены) и акционными ценами (красные цены), включая валидацию соответствия условиям акций и автоконвертацию валют.


1. B2B Platform API - Цены и ограничения

Base URL: https://api-b2b.lamoda.ru API Format: REST (OpenAPI 3.0.0) Authentication: OAuth2 Bearer Token Total Endpoints: 2

1.1 Получение списка настроек цен

Method: GET Path: /api/v1/nomenclature/sell-values Operation ID: get_v1_nomenclature_sell_values Tags: Цены и ограничения

Описание: Получение списка настроек продажи товаров в странах СНГ (включая Россию) с постраничной навигацией. Возвращает актуальную информацию о ценах, стоках и ограничениях для товаров партнера.

Параметры запроса:

  • Query parameters:
    • page (integer, optional): Номер запрашиваемой страницы (по умолчанию 1, больше 0)
    • limit (integer, optional): Количество значений на странице (по умолчанию 25, больше 0)
    • filter (string, optional): Фильтр для выборки

Ответы:

  • 200 OK: Список настроек цен получен
    {
    "limit": 25,
    "page": 1,
    "pages": 10,
    "total": 250,
    "_links": {
    "self": "href",
    "first": "href",
    "last": "href",
    "next": "href",
    "prev": "href"
    },
    "_embedded": {
    "nomenclatures": [
    {
    "sku": "string",
    "parentSku": "string",
    "lamodaSku": "string",
    "name": "string",
    "quantity": 100,
    "_embedded": {
    "partner": {
    "price": 1500.00,
    "salePrice": 1200.00,
    "saleStartDate": "2024-06-01",
    "saleEndDate": "2024-06-30"
    }
    },
    "isRestricted": false
    }
    ]
    }
    }
  • 400 Bad Request: Неверный параметр
  • 401 Unauthorized: Отказ в доступе
  • 403 Forbidden: Доступ запрещен
  • 500 Internal Server Error: Внутренняя ошибка сервера

Пример запроса:

curl -X GET 'https://api-b2b.lamoda.ru/api/v1/nomenclature/sell-values?page=1&limit=25' \
-H 'Authorization: Bearer YOUR_TOKEN'

1.2 Обновление цен товаров для СНГ

Method: PUT Path: /api/v1/nomenclature/{sku}/country/{country}/price Operation ID: put_v1_nomenclature_price Tags: Цены и ограничения

Описание: Обновление цен для указанного товара в странах СНГ (кроме России). Позволяет установить базовую цену и акционную цену с указанием периода действия скидки.

Параметры пути:

  • sku (string, required, maxLength: 255): Артикул поставщика (длинный или короткий)
  • country (string, required): Код страны (BY - Беларусь, KZ - Казахстан)

Тело запроса:

{
"price": 1500.00,
"sale_price": 1200.00,
"sale_start_date": "2024-06-01",
"sale_end_date": "2024-06-30"
}

Поля тела запроса:

  • price (number, required): Цена товара без скидки (базовая/черная цена)
    • Формат: Положительное вещественное число
    • Ограничение: Не более двух знаков после запятой
    • Пример: 1500.00
  • sale_price (number, nullable): Цена товара со скидкой (акционная/красная цена)
    • Формат: Положительное вещественное число
    • Ограничение: Не более двух знаков после запятой
    • Пример: 1200.00
  • sale_start_date (string, nullable): Дата начала распродажи
    • Формат: YYYY-MM-DD или YYYY-MM-DD hh:mm
    • Пример: "2024-06-01" или "2024-06-01 10:00"
  • sale_end_date (string, nullable): Дата окончания распродажи
    • Формат: YYYY-MM-DD или YYYY-MM-DD hh:mm
    • Пример: "2024-06-30" или "2024-06-30 23:59"

Ответы:

  • 200 OK: Цена успешно обновлена
  • 400 Bad Request: Неверный параметр запроса
  • 401 Unauthorized: Отказ в доступе
  • 403 Forbidden: Доступ запрещен
  • 500 Internal Server Error: Внутренняя ошибка сервера

Пример запроса:

curl -X PUT 'https://api-b2b.lamoda.ru/api/v1/nomenclature/MP002XW1CJV9/country/BY/price' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"price": 1500.00,
"sale_price": 1200.00,
"sale_start_date": "2024-06-01",
"sale_end_date": "2024-06-30"
}'

2. Seller JSON-RPC API - Управление ценами

Base URL: https://api-seller.lamoda.ru API Format: JSON-RPC 2.0 Authentication: OAuth2 Bearer Token Total Methods: 3

2.1 Массовое обновление цен товаров

Method: POST Path: /jsonrpc/v1/nomenclatures.set-prices Operation ID: v1.nomenclatures-set-prices Tags: jsonrpc2

Описание: Массовое обновление цен для нескольких товаров одновременно. Поддерживает установку базовых и акционных цен для разных стран с автоматической валидацией соответствия условиям акций. Возвращает детальный отчет об успешно обновленных товарах и ошибках.

Заголовки:

  • Authorization: Bearer token
  • Content-Type: application/json

Тело запроса (JSON-RPC 2.0):

{
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"method": "v1.nomenclatures.set-prices",
"params": {
"country": "RU",
"partner_id": 12345,
"prices": [
{
"lamoda_parent_sku": "MP002XW1CJV9",
"price": 1500.00,
"sale_price": 1200.00,
"sale_start_date": "2024-06-24T22:12:12+00:00",
"sale_end_date": "2024-06-30T22:12:12+00:00",
"need_auto_conversion": false
},
{
"lamoda_parent_sku": "MP002XW1CKV7",
"price": 2000.00,
"sale_price": 1600.00
}
],
"force": false
}
}

Поля параметров запроса:

  • country (string, required): Страна продажи
    • Допустимые значения: "RU", "BY", "KZ", "UA"
    • Пример: "RU"
  • partner_id (integer, required): ID партнера
    • Пример: 12345
  • prices (array, required): Массив объектов с ценами товаров
    • lamoda_parent_sku (string, required): Родительский SKU Lamoda
      • Пример: "MP002XW1CJV9"
    • price (number, optional): Базовая цена (черная цена)
      • Формат: float, не более 2 знаков после точки
      • Ограничение: >= 0
      • Пример: 1500.00
    • sale_price (number, optional): Акционная цена (красная цена)
      • Формат: float, не более 2 знаков после точки
      • Ограничение: >= 0
      • Пример: 1200.00
    • sale_start_date (string, optional): Дата начала акции
      • Формат: YYYY-MM-DDThh:mm:ss.fffZ (ISO 8601)
      • Пример: "2024-06-24T22:12:12+00:00"
    • sale_end_date (string, optional): Дата окончания акции
      • Формат: YYYY-MM-DDThh:mm:ss.fffZ (ISO 8601)
      • Пример: "2024-06-30T22:12:12+00:00"
    • need_auto_conversion (boolean, optional): Флаг автоматической конвертации валюты
      • Пример: false
  • force (boolean, optional): Флаг принудительного обновления
    • При true товар будет удалён из акций при несоответствии условиям акции
    • Пример: false

Ответ (JSON-RPC 2.0):

{
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"result": {
"success_count": 1,
"error_count": 1,
"errors": [
{
"lamodaSku": "MP002XW1CKV7",
"code": 400,
"messages": [
"Невозможно установить акционную цену: товар участвует в акции 'Летняя распродажа' с скидкой 30%, что противоречит новой цене"
]
}
],
"fraud_validation_results": [
{
"lamoda_parent_sku": "MP002XW1CJV9",
"changed_value": "red_price_and_sale_period",
"status": "warning",
"promotions": [
{
"promotion_id": 12345,
"name": "Летняя распродажа",
"active_from": "2024-06-01",
"active_to": "2024-06-30",
"discount_percent": 20
}
]
}
]
}
}

Поля ответа:

  • success_count (integer): Количество успешно обновленных товаров
  • error_count (integer): Количество товаров с ошибками
  • errors (array): Массив ошибок
    • lamodaSku (string): SKU товара с ошибкой
    • code (integer): Код ошибки
    • messages (array[string]): Массив сообщений об ошибках
  • fraud_validation_results (array): Результаты валидации акционных цен
    • lamoda_parent_sku (string): SKU товара
    • changed_value (string): Что не прошло валидацию
      • black_price - базовая цена
      • red_price - акционная цена
      • sale_period - период акции
      • red_price_and_sale_period - цена и период
    • status (string): Статус ошибки
      • warning - можно обновить с force=true
      • restriction - нельзя обновить (жесткое ограничение)
    • promotions (array): Акции, которые не прошли валидацию
      • promotion_id (integer): ID акции
      • name (string): Название акции
      • active_from (string): Дата начала (date)
      • active_to (string): Дата окончания (date)
      • discount_percent (integer): Процент скидки

Пример запроса:

curl -X POST 'https://api-seller.lamoda.ru/jsonrpc/v1/nomenclatures.set-prices' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"method": "v1.nomenclatures.set-prices",
"params": {
"country": "RU",
"partner_id": 12345,
"prices": [
{
"lamoda_parent_sku": "MP002XW1CJV9",
"price": 1500.00,
"sale_price": 1200.00,
"sale_start_date": "2024-06-24T22:12:12+00:00",
"sale_end_date": "2024-06-30T22:12:12+00:00",
"need_auto_conversion": false
}
],
"force": false
}
}'

2.2 Изменение цены товара

Method: POST Path: /jsonrpc/v1/nomenclature.update-price Operation ID: v1.nomenclature.update-price Tags: Товары

Описание: Запрос на изменение цены для указанного товара партнера по его SKU (артикулу продавца). Позволяет обновить базовую и/или акционную цену с валидацией соответствия условиям акций.

Заголовки:

  • Authorization: Bearer token
  • Content-Type: application/json

Тело запроса (JSON-RPC 2.0):

{
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"method": "v1.nomenclature.update-price",
"params": {
"country": "RU",
"seller_sku": "15/89/23_розовый_40",
"price": 1500.00,
"sale_price": 1200.00,
"sale_start_date": "2018-04-10 1:26",
"sale_end_date": "2018-04-20 23:59",
"force": false
}
}

Поля параметров запроса:

  • country (string, required): Страна продажи
    • Допустимые значения: "RU", "BY", "KZ", "UA"
    • Пример: "RU"
  • seller_sku (string, required): SKU продавца (артикул поставщика)
    • Пример: "15/89/23_розовый_40"
  • price (number, optional): Базовая цена (черная цена)
    • Формат: float, не более 2 знаков после точки
    • Ограничение: >= 0
    • Пример: 1500.00
  • sale_price (number, optional): Акционная цена (красная цена)
    • Формат: float, не более 2 знаков после точки
    • Ограничение: >= 0
    • Пример: 1200.00
  • sale_start_date (string, optional): Дата начала акции
    • Формат: YYYY-MM-DD hh:mm
    • Пример: "2018-04-10 1:26"
  • sale_end_date (string, optional): Дата окончания акции
    • Формат: YYYY-MM-DD hh:mm
    • Пример: "2018-04-20 23:59"
  • force (boolean, optional): Флаг принудительного обновления
    • При true товар будет удалён из акций при несоответствии условиям
    • Пример: false

Ответ (JSON-RPC 2.0):

{
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"result": {
"fraud_validation_result": {
"lamoda_parent_sku": "MP002XW1CJV9",
"changed_value": "red_price",
"status": "restriction",
"promotions": [
{
"promotion_id": 12345,
"name": "Летняя распродажа",
"active_from": "2024-06-01",
"active_to": "2024-06-30",
"discount_percent": 20
}
]
}
}
}

Поля ответа:

  • fraud_validation_result (object, optional): Результат валидации акционной цены
    • lamoda_parent_sku (string): Родительский SKU Lamoda
    • changed_value (string): Что не прошло валидацию
      • black_price - базовая цена
      • red_price - акционная цена
      • sale_period - период акции
      • red_price_and_sale_period - цена и период
    • status (string): Статус ошибки
      • warning - можно обновить с force=true
      • restriction - нельзя обновить (жесткое ограничение)
    • promotions (array): Акции, которые не прошли валидацию
      • promotion_id (integer): ID акции
      • name (string): Название акции
      • active_from (string): Дата начала (date)
      • active_to (string): Дата окончания (date)
      • discount_percent (integer): Процент скидки

Пример запроса:

curl -X POST 'https://api-seller.lamoda.ru/jsonrpc/v1/nomenclature.update-price' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"method": "v1.nomenclature.update-price",
"params": {
"country": "RU",
"seller_sku": "15/89/23_розовый_40",
"price": 1500.00,
"sale_price": 1200.00,
"sale_start_date": "2018-04-10 1:26",
"sale_end_date": "2018-04-20 23:59",
"force": false
}
}'

2.3 Установка цены товара

Method: POST Path: /jsonrpc/v1/nomenclature.set-price Operation ID: v1.nomenclature.set-price Tags: Товары

Описание: Запрос на установку цены для указанного товара партнера по родительскому SKU Lamoda. Позволяет установить базовую и/или акционную цену с валидацией соответствия условиям акций. Отличается от nomenclature.update-price тем, что использует lamoda_parent_sku вместо seller_sku.

Заголовки:

  • Authorization: Bearer token
  • Content-Type: application/json

Тело запроса (JSON-RPC 2.0):

{
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"method": "v1.nomenclature.set-price",
"params": {
"country": "RU",
"lamoda_parent_sku": "MP002XW1CJV9",
"partner_id": 12345,
"brand_name": "Nike",
"rec_id": "12345",
"tn_ved": "6403990000",
"need_auto_conversion": false,
"price": 1500.00,
"sale_price": 1200.00,
"sale_start_date": "2024-06-24T22:12:12+00:00",
"sale_end_date": "2024-06-30T22:12:12+00:00",
"force": false
}
}

Поля параметров запроса:

  • country (string, required): Страна продажи
    • Допустимые значения: "RU", "BY", "KZ", "UA"
    • Пример: "RU"
  • lamoda_parent_sku (string, required): Родительский SKU Lamoda
    • Пример: "MP002XW1CJV9"
  • partner_id (integer, required): ID партнера
    • Пример: 12345
  • brand_name (string, optional): Название бренда
    • Пример: "Nike"
  • rec_id (string, optional): ID категории
    • Пример: "12345"
  • tn_ved (string, optional): TN VED код (ТН ВЭД - таможенная номенклатура внешнеэкономической деятельности)
    • Пример: "6403990000"
  • need_auto_conversion (boolean, optional): Флаг автоматической конвертации валюты
    • Пример: false
  • price (number, optional): Базовая цена (черная цена)
    • Формат: float, не более 2 знаков после точки
    • Ограничение: >= 0
    • Пример: 1500.00
  • sale_price (number, optional): Акционная цена (красная цена)
    • Формат: float, не более 2 знаков после точки
    • Ограничение: >= 0
    • Пример: 1200.00
  • sale_start_date (string, optional): Дата начала акции
    • Формат: YYYY-MM-DDThh:mm:ss.fffZ (ISO 8601)
    • Пример: "2024-06-24T22:12:12+00:00"
  • sale_end_date (string, optional): Дата окончания акции
    • Формат: YYYY-MM-DDThh:mm:ss.fffZ (ISO 8601)
    • Пример: "2024-06-30T22:12:12+00:00"
  • force (boolean, optional): Флаг принудительного обновления
    • При true товар будет удалён из акций при несоответствии условиям
    • Пример: false

Ответ (JSON-RPC 2.0):

{
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"result": {
"fraud_validation_result": {
"lamoda_parent_sku": "MP002XW1CJV9",
"changed_value": "red_price_and_sale_period",
"status": "warning",
"promotions": [
{
"promotion_id": 12345,
"name": "Летняя распродажа",
"active_from": "2024-06-01",
"active_to": "2024-06-30",
"discount_percent": 20
}
]
}
}
}

Поля ответа:

  • fraud_validation_result (object): Результат валидации акционной цены
    • lamoda_parent_sku (string): Родительский SKU Lamoda
    • changed_value (string): Что не прошло валидацию
      • black_price - базовая цена
      • red_price - акционная цена
      • sale_period - период акции
      • red_price_and_sale_period - цена и период
    • status (string): Статус ошибки
      • warning - можно обновить с force=true
      • restriction - нельзя обновить (жесткое ограничение)
    • promotions (array): Акции, которые не прошли валидацию
      • promotion_id (integer): ID акции
      • name (string): Название акции
      • active_from (string): Дата начала (date)
      • active_to (string): Дата окончания (date)
      • discount_percent (integer): Процент скидки

Пример запроса:

curl -X POST 'https://api-seller.lamoda.ru/jsonrpc/v1/nomenclature.set-price' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "550e8400-e29b-41d4-a716-446655440000",
"method": "v1.nomenclature.set-price",
"params": {
"country": "RU",
"lamoda_parent_sku": "MP002XW1CJV9",
"partner_id": 12345,
"price": 1500.00,
"sale_price": 1200.00,
"sale_start_date": "2024-06-24T22:12:12+00:00",
"sale_end_date": "2024-06-30T22:12:12+00:00",
"force": false
}
}'

3. Сводная таблица endpoints для работы с ценами

Таблица всех endpoints

API СистемаEndpointМетодOperation IDНазначение
B2B Platform API/api/v1/nomenclature/sell-valuesGETget_v1_nomenclature_sell_valuesПолучение списка настроек цен и ограничений
B2B Platform API/api/v1/nomenclature/{sku}/country/{country}/pricePUTput_v1_nomenclature_priceОбновление цен для стран СНГ
Seller JSON-RPC API/jsonrpc/v1/nomenclatures.set-pricesPOSTv1.nomenclatures-set-pricesМассовое обновление цен товаров
Seller JSON-RPC API/jsonrpc/v1/nomenclature.update-pricePOSTv1.nomenclature.update-priceИзменение цены по SKU продавца
Seller JSON-RPC API/jsonrpc/v1/nomenclature.set-pricePOSTv1.nomenclature.set-priceУстановка цены по SKU Lamoda

4. Ключевые особенности работы с ценами

4.1 Формат цен

B2B Platform API:

  • Число с плавающей точкой
  • Не более 2 знаков после запятой
  • Положительное значение
  • Пример: 1500.00

Seller JSON-RPC API:

  • Число с плавающей точкой (float)
  • Не более 2 знаков после точки
  • Ограничение: >= 0
  • Пример: 1500.00

Seller REST API (в схеме Price):

  • Целое число в копейках
  • Пример: 150000 (1500.00 рублей)

4.2 Валюты

Поддерживаемые валюты (ISO 4217):

  • RUB - Российский рубль
  • BYN - Белорусский рубль
  • KZT - Казахстанский тенге
  • UAH - Украинская гривна

4.3 Типы цен

  1. Базовая цена (price / black_price)

    • Полная цена товара без скидки
    • Используется по умолчанию, когда нет акции
    • Обязательна для заполнения
  2. Акционная цена (sale_price / red_price)

    • Цена со скидкой
    • Может быть null (отсутствует)
    • Требует указания периода действия (sale_start_date, sale_end_date)
    • Проходит валидацию на соответствие условиям акций

4.4 Валидация акционных цен

Lamoda автоматически проверяет соответствие акционных цен условиям акций:

Результаты валидации (fraud_validation_result):

  1. Статус: warning

    • Можно обновить цену с параметром force=true
    • Товар будет удалён из акции при несоответствии
  2. Статус: restriction

    • Нельзя обновить цену (жесткое ограничение)
    • Даже при force=true обновление невозможно
    • Требуется изменить параметры или дождаться окончания акции

Проверяемые значения (changed_value):

  • black_price - базовая цена не соответствует условиям
  • red_price - акционная цена не соответствует условиям
  • sale_period - период акции не соответствует условиям
  • red_price_and_sale_period - цена и период не соответствуют

Информация о конфликте с акциями:

  • promotion_id - ID акции
  • name - название акции
  • active_from - дата начала акции
  • active_to - дата окончания акции
  • discount_percent - процент скидки по акции

4.5 Параметр force

Параметр force (boolean) управляет принудительным обновлением цен:

force: false (по умолчанию)

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

force: true

  • Товар будет принудительно обновлен
  • При несоответствии акции товар будет удален из акции
  • Может привести к потере скидки для покупателей

⚠️ Осторожно: Используйте force=true только если понимаете последствия удаления товара из акции!

4.6 Автоконвертация валют

Параметр need_auto_conversion (boolean):

  • false (по умолчанию): Цена устанавливается точно как указано
  • true: Автоматический пересчет цены в валюту страны продажи
    • Полезно при работе с несколькими странами
    • Система автоматически конвертирует цену по текущему курсу

4.7 Форматы дат

B2B Platform API:

  • Формат: YYYY-MM-DD или YYYY-MM-DD hh:mm
  • Пример: "2024-06-01" или "2024-06-01 10:00"

Seller JSON-RPC API:

  • Формат: ISO 8601 (YYYY-MM-DDThh:mm:ss.fffZ) или YYYY-MM-DD hh:mm
  • Пример: "2024-06-24T22:12:12+00:00" или "2018-04-10 1:26"

5. Сценарии использования

5.1 Получение текущих цен

Сценарий: Партнер хочет получить список всех товаров с их текущими ценами и ограничениями.

Действия:

  1. Выполнить запрос GET /api/v1/nomenclature/sell-values
  2. Обработать постраничную навигацию
  3. Извлечь цены из поля _embedded.partner.price

Пример кода (Python):

import requests

def get_sell_values(access_token, page=1, limit=25):
url = "https://api-b2b.lamoda.ru/api/v1/nomenclature/sell-values"
headers = {"Authorization": f"Bearer {access_token}"}
params = {"page": page, "limit": limit}

response = requests.get(url, headers=headers, params=params)
response.raise_for_status()

data = response.json()
nomenclatures = data["_embedded"]["nomenclatures"]

results = []
for nom in nomenclatures:
partner = nom.get("_embedded", {}).get("partner", {})
results.append({
"sku": nom["sku"],
"lamodaSku": nom["lamodaSku"],
"name": nom["name"],
"price": partner.get("price"),
"salePrice": partner.get("salePrice"),
"quantity": nom["quantity"],
"isRestricted": nom["isRestricted"]
})

return results, data.get("pages"), data.get("total")

5.2 Обновление цен для одного товара

Сценарий: Партнер хочет обновить цену для одного товара в России.

Действия:

  1. Определить SKU товара (seller_sku или lamoda_parent_sku)
  2. Подготовить данные о новой цене
  3. Выполнить запрос POST /jsonrpc/v1/nomenclature.update-price
  4. Проверить результат валидации

Пример кода (Python):

import requests

def update_price(access_token, seller_sku, country, price, sale_price=None):
url = "https://api-seller.lamoda.ru/jsonrpc/v1/nomenclature.update-price"
headers = {"Authorization": f"Bearer {access_token}"}

params = {
"country": country,
"seller_sku": seller_sku,
"price": price
}

if sale_price is not None:
params["sale_price"] = sale_price

payload = {
"jsonrpc": "2.0",
"id": "update-price-001",
"method": "v1.nomenclature.update-price",
"params": params
}

response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()

data = response.json()

if "result" in data and "fraud_validation_result" in data["result"]:
validation = data["result"]["fraud_validation_result"]
if validation.get("status") == "restriction":
print(f"ОБРАЩЕНИЕ: Цена не обновлена из-за ограничений акции!")
print(f"Конфликтующие акции: {[p['name'] for p in validation.get('promotions', [])]}")
return False
elif validation.get("status") == "warning":
print(f"ПРЕДУПРЕЖДЕНИЕ: Цена обновлена с предупреждениями")
print(f"Конфликтующие акции: {[p['name'] for p in validation.get('promotions', [])]}")
return True

print("Цена успешно обновлена")
return True

5.3 Массовое обновление цен

Сценарий: Партнер хочет обновить цены для 100 товаров одновременно.

Действия:

  1. Подготовить массив цен для всех товаров
  2. Выполнить запрос POST /jsonrpc/v1/nomenclatures.set-prices
  3. Обработать результаты (success_count, error_count)
  4. Проанализировать ошибки и предупреждения

Пример кода (Python):

import requests

def batch_update_prices(access_token, partner_id, prices_data, country="RU"):
"""
prices_data - список словарей:
[
{"lamoda_parent_sku": "MP001", "price": 1500.00, "sale_price": 1200.00},
{"lamoda_parent_sku": "MP002", "price": 2000.00},
...
]
"""
url = "https://api-seller.lamoda.ru/jsonrpc/v1/nomenclatures.set-prices"
headers = {"Authorization": f"Bearer {access_token}"}

payload = {
"jsonrpc": "2.0",
"id": "batch-update-001",
"method": "v1.nomenclatures.set-prices",
"params": {
"country": country,
"partner_id": partner_id,
"prices": prices_data,
"force": False
}
}

response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()

data = response.json()
result = data["result"]

print(f"Успешно обновлено: {result['success_count']}")
print(f"С ошибками: {result['error_count']}")

# Обработка ошибок
for error in result.get("errors", []):
print(f"Ошибка {error['lamodaSku']}: {error['messages']}")

# Обработка предупреждений валидации
for validation in result.get("fraud_validation_results", []):
sku = validation["lamoda_parent_sku"]
status = validation["status"]
changed = validation["changed_value"]
promotions = [p["name"] for p in validation.get("promotions", [])]

if status == "restriction":
print(f"ОГРАНИЧЕНИЕ {sku}: {changed} конфликтует с акциями: {promotions}")
elif status == "warning":
print(f"ПРЕДУПРЕЖДЕНИЕ {sku}: {changed} конфликтует с акциями: {promotions}")

return result

5.4 Обновление цен для стран СНГ

Сценарий: Партнер хочет установить разные цены для Беларуси и Казахстана.

Действия:

  1. Использовать B2B Platform API для обновления цен по странам
  2. Указать код страны (BY, KZ) в path параметре
  3. Установить цену и акционную цену (опционально)

Пример кода (Python):

import requests

def update_price_for_country(access_token, sku, country, price, sale_price=None,
sale_start=None, sale_end=None):
"""
country: "BY" (Беларусь) или "KZ" (Казахстан)
"""
url = f"https://api-b2b.lamoda.ru/api/v1/nomenclature/{sku}/country/{country}/price"
headers = {"Authorization": f"Bearer {access_token}"}

body = {"price": price}

if sale_price is not None:
body["sale_price"] = sale_price
if sale_start is not None:
body["sale_start_date"] = sale_start
if sale_end is not None:
body["sale_end_date"] = sale_end

response = requests.put(url, headers=headers, json=body)
response.raise_for_status()

print(f"Цена для {country} успешно обновлена: {price}")
return response.json()

# Пример использования
update_price_for_country(
access_token="YOUR_TOKEN",
sku="MP002XW1CJV9",
country="BY",
price=1500.00,
sale_price=1200.00,
sale_start="2024-06-01",
sale_end="2024-06-30"
)

6. Связанные разделы API

Связанные endpoints

  1. Products/Nomenclatures - управление товарами

    • GET /api/v1/nomenclatures - получение списка номенклатуры
    • POST /api/v1/nomenclatures - создание номенклатуры
    • PATCH /api/v1/nomenclatures/{id} - обновление номенклатуры
  2. Stock - управление остатками

    • GET /api/v1/stock - получение остатков
    • POST /api/v1/stock - обновление остатков
  3. Returns - возвраты товаров

    • GET /api/v2/fbs/return-items - получение списка возвратов (содержит цены товаров)

Бизнес-модели

Эндпоинты для работы с ценами поддерживают все бизнес-модели Lamoda:

  • FBO (Fulfillment by Operator) - склад Lamoda
  • FBS (Fulfillment by Seller) - склад партнера
  • DBS (Delivery by Seller) - доставка курьерами партнера
  • B2B FF - корпоративные заказы (фулфилмент Lamoda)
  • B2B FBS - корпоративные заказы (фулфилмент партнера)

Цены могут отличаться для разных бизнес-моделей и стран продажи.


7. Дополнительные замечания

7.1 Частота обновления цен

  • Ограничений на частоту обновления цен в открытой документации нет
  • Рекомендуется обновлять цены не чаще 1 раза в минуту для одного товара
  • Для массовых обновлений используйте nomenclatures.set-prices

7.2 Работа с акциями

  • Акции создаются и управляются через личный кабинет партнера
  • API автоматически валидирует цены на соответствие условиям акций
  • При конфликте с акцией вернется fraud_validation_result

7.3 Отладка

Для отладки обновления цен:

  1. Проверьте структуру запроса (JSON-RPC 2.0 для JSON-RPC API)
  2. Проверьте формат цен (не более 2 знаков после запятой)
  3. Проверьте форматы дат
  4. Проанализируйте fraud_validation_result для акционных цен
  5. Используйте параметр force с осторожностью

7.4 Лимиты

  • Массовое обновление: до 1000 товаров за один запрос
  • Постраничная навигация: по умолчанию 25 элементов на странице
  • Максимальное значение limit: 100 элементов на странице

8. Итоговая сводка

Всего endpoints/methods: 5

Распределение по API:

  • B2B Platform API: 2 endpoints
  • Seller JSON-RPC API: 3 methods

Функциональность:

  • ✅ Получение текущих цен и ограничений
  • ✅ Обновление базовых цен
  • ✅ Обновление акционных цен
  • ✅ Управление ценами для разных стран (RU, BY, KZ, UA)
  • ✅ Массовое обновление цен
  • ✅ Валидация соответствия акциям
  • ✅ Автоматическая конвертация валют

Особенности:

  • Поддержка двух типов цен (базовая и акционная)
  • Автоматическая валидация акционных цен
  • Работа с несколькими валютами
  • Массовые операции для оптимизации запросов
  • Детальная диагностика ошибок и конфликтов с акциями

Документация создана: 2025-02-10 Последнее обновление: 2025-02-10 Версия спецификаций: OpenAPI 3.0.0