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 tokenContent-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=truerestriction- нельзя обновить (жесткое ограничение)
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 tokenContent-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 Lamodachanged_value(string): Что не прошло валидациюblack_price- базовая ценаred_price- акционная ценаsale_period- период акцииred_price_and_sale_period- цена и период
status(string): Статус ошибкиwarning- можно обновить с force=truerestriction- нельзя обновить (жесткое ограничение)
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 tokenContent-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 Lamodachanged_value(string): Что не прошло валидациюblack_price- базовая ценаred_price- акционная ценаsale_period- период акцииred_price_and_sale_period- цена и период
status(string): Статус ошибкиwarning- можно обновить с force=truerestriction- нельзя обновить (жесткое ограничение)
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-values | GET | get_v1_nomenclature_sell_values | Получение списка настроек цен и ограничений |
| B2B Platform API | /api/v1/nomenclature/{sku}/country/{country}/price | PUT | put_v1_nomenclature_price | Обновление цен для стран СНГ |
| Seller JSON-RPC API | /jsonrpc/v1/nomenclatures.set-prices | POST | v1.nomenclatures-set-prices | Массовое обновление цен товаров |
| Seller JSON-RPC API | /jsonrpc/v1/nomenclature.update-price | POST | v1.nomenclature.update-price | Изменение цены по SKU продавца |
| Seller JSON-RPC API | /jsonrpc/v1/nomenclature.set-price | POST | v1.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 Типы цен
-
Базовая цена (price / black_price)
- Полная цена товара без скидки
- Используется по умолчанию, когда нет акции
- Обязательна для заполнения
-
Акционная цена (sale_price / red_price)
- Цена со скидкой
- Может быть
null(отсутствует) - Требует указания периода действия (sale_start_date, sale_end_date)
- Проходит валидацию на соответствие условиям акций
4.4 Валидация акционных цен
Lamoda автоматически проверяет соответствие акционных цен условиям акций:
Результаты валидации (fraud_validation_result):
-
Статус:
warning- Можно обновить цену с параметром
force=true - Товар будет удалён из акции при несоответствии
- Можно обновить цену с параметром
-
Статус:
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 Получение текущих цен
Сценарий: Партнер хочет получить список всех товаров с их текущими ценами и ограничениями.
Действия:
- Выполнить запрос
GET /api/v1/nomenclature/sell-values - Обработать постраничную навигацию
- Извлечь цены из поля
_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 Обновление цен для одного товара
Сценарий: Партнер хочет обновить цену для одного товара в России.
Действия:
- Определить SKU товара (seller_sku или lamoda_parent_sku)
- Подготовить данные о новой цене
- Выполнить запрос
POST /jsonrpc/v1/nomenclature.update-price - Проверить результат валидации
Пример кода (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 товаров одновременно.
Действия:
- Подготовить массив цен для всех товаров
- Выполнить запрос
POST /jsonrpc/v1/nomenclatures.set-prices - Обработать результаты (success_count, error_count)
- Проанализировать ошибки и предупреждения
Пример кода (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 Обновление цен для стран СНГ
Сценарий: Партнер хочет установить разные цены для Беларуси и Казахстана.
Действия:
- Использовать B2B Platform API для обновления цен по странам
- Указать код страны (BY, KZ) в path параметре
- Установить цену и акционную цену (опционально)
Пример кода (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
-
Products/Nomenclatures - управление товарами
GET /api/v1/nomenclatures- получение списка номенклатурыPOST /api/v1/nomenclatures- создание номенклатурыPATCH /api/v1/nomenclatures/{id}- обновление номенклатуры
-
Stock - управление остатками
GET /api/v1/stock- получение остатковPOST /api/v1/stock- обновление остатков
-
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 Отладка
Для отладки обновления цен:
- Проверьте структуру запроса (JSON-RPC 2.0 для JSON-RPC API)
- Проверьте формат цен (не более 2 знаков после запятой)
- Проверьте форматы дат
- Проанализируйте
fraud_validation_resultдля акционных цен - Используйте параметр
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