Карточка товара (номенклатура) — это описание товара продавца в каталоге Lamoda: родительский товар вместе с его вариациями (например, размерами).
Эта статья описывает порядок работы с методами API при создании и ведении каталога.
Бизнес-процесс и требования к контенту — в разделе «Работа с товарами» Академии. Детали каждого метода (параметры, поля, значения) смотрите в справочнике по ссылке на метод.
Как устроен процесс
Каталог ведётся в несколько шагов: сначала вы определяете категорию товара и её атрибуты, затем создаёте или обновляете карточку, дополняете её изображениями, управляете видимостью на сайте и проставляете цены.
Создание и обновление — это один upsert-метод: конкретную операцию выбирает поле requestType (CREATE — создать, UPDATE — обновить существующую карточку).
| ℹ️ Операция создания не атомарна: карточка сохраняется в контент-сервисе до простановки цен. Если простановка цен упала ( 503), карточка уже создана — при повторе отправляйте запрос с requestType=UPDATE, иначе получите дубль. Дедупликации на стороне gateway нет. |
Порядок работы
1. Определение категории и атрибутов
Прежде чем создавать карточку, выберите категорию товара и получите набор её атрибутов — их состав зависит от категории и подставляется в тело создания.
GET /v2/nomenclature-categories— выбрать категорию (даётcategoryId).GET /v2/nomenclature-categories/{categoryId}/attributes— обязательные и доступные атрибуты категории.GET /v2/nomenclature-categories/{categoryId}/attributes-mappings— маппинг значений атрибутов.GET /v2/dictionaries/attributes— справочники значений атрибутов.
2. Создание или обновление карточки товара
Карточка создаётся и обновляется одним методом.
За один запрос обрабатывается одна карточка — родитель вместе с вариациями. В теле указываются тип операции (requestType), категория (categoryId), атрибуты родителя (attributes) и вариаций (variationAttributes); цены можно передать здесь же (prices) или отдельными методами (шаг 5).
POST /v2/nomenclatures— создать или обновить карточку (requestType=CREATE/UPDATE). Успех — код200(не201); в ответе — сохранённые номенклатуры, ошибки по элементам, статусы цен и результат фрод-проверки.
Как собрать тело запроса. Состав attributes не фиксирован контрактом — он зависит от категории, поэтому тело собирается по данным подготовительных запросов шага 1:
- Возьмите
categoryIdвыбранной категории (шаг 1). - Из ответа
…/attributesопределите, какие атрибуты заполнять: у каждого есть код (code), тип (type) и признаки обязательности — по бизнес-модели (requiredForShipmentTypes), полу/возрастной группе (requiredForGenders) и шаблону создания (requiredForTemplates). Заполните все атрибуты, обязательные для вашего сочетания. - Для атрибутов типа
DICTIONARY_ENTRY/ARRAY_OF_DICTIONARY_ENTRYзначения берите из связанного справочника (его имя — в полеdictionaryатрибута, сами значения — вGET /v2/dictionaries/attributes). Допустимые сочетания значений — категории сайта, ТН ВЭД, наименования, размерные шкалы, бренды — в…/attributes-mappings. - Соберите
nomenclature.attributes: ключ — код атрибута, значение — объект{type, value}. - Соберите
nomenclature.variationAttributes: один элемент массива — одна вариация (например, размер) в той же структуре{код: {type, value}}; идентификаторы вариации (например,supplierSku) передаются здесь. - Укажите
requestType(CREATE/UPDATE) и при необходимостиprices— суммы в минорных единицах валюты (копейки для RUB/BYN, тиыны для KZT).
Каркас тела запроса (пример из спецификации; реальный состав attributes зависит от категории):
{
"sellerId": "471392924",
"country": "RU",
"nomenclature": {
"requestType": "CREATE",
"categoryId": "5637156660",
"attributes": {
"gender": { "type": "STRING", "value": "women" },
"brand": { "type": "DICTIONARY_ENTRY", "value": "Nike" }
},
"variationAttributes": [
{
"supplierSku": { "type": "STRING", "value": "SUPPLIER_SKU_1" },
"productIdentifier": { "type": "STRING", "value": "2000041459377" }
}
]
},
"prices": [
{
"country": "RU",
"price": { "amount": 199900, "currency": "RUB" },
"salePrice": { "amount": 149900, "currency": "RUB" },
"saleStart": "2025-06-01T00:00:00.000Z",
"saleEnd": "2025-06-30T23:59:59.000Z"
}
]
}
Не фиксируйте список атрибутов в коде интеграции: при смене категории (и периодически) перечитывайте атрибуты категории — состав и обязательность могут отличаться.
ℹ️ Частичные сбои приходят прямо в теле ответа с кодом 200Проверяйте в ответе: - errors[] — ошибки по отдельным элементам;- priceStatuses — статусы простановки цен. |
3. Добавление изображений
POST /v2/nomenclatures/{sku}/images— загрузить изображения для карточки. В теле запроса указываютсяskuноменклатуры: Lamoda-идентификатор изstoredNomenclatures[].skuответа создания карточки (см. шаг 2). Требования к формату/размеру и структура тела смотрите в справочнике метода. Требования к оформлению фото смотрите в статье «Требования к оформлению фотографий».
4. Управление видимостью карточки
POST /v2/nomenclatures-activation-status— показать или скрыть товар на сайте.
5. Установка и обновление цен
Цену можно задать в теле карточки (шаг 2) или отдельными методами. Последнее нужно, в частности, для принудительной простановки при срабатывании фрода, поскольку флаг force=true в методах установки цены обновит цену принудительно, а товар будет удалён из акции (работает при статусе WARNING; при RESTRICTION принудительное обновление недоступно).
Суммы указываются в минорных единицах (копейки RUB/BYN, тиыны KZT).
POST /v2/nomenclature-price— установить одну цену.POST /v2/nomenclatures-prices— массовая установка цен.GET /v2/minimal-prices— минимальные цены (ограничения продажи).GET /v2/nomenclatures-sell-values— параметры продажи по номенклатурам.
Как цены и статусы товаров работают со стороны бизнеса — «Работа с ценами и статусами товаров».
6. Чтение каталога
GET /v2/nomenclatures— список номенклатур (требует обязательный query-параметрcountry=RU/BY/KZ; без него —400).POST /v2/nomenclatures-search— поиск номенклатур по условиям.GET /v2/nomenclatures/{sku}/attributes— атрибуты конкретной карточки.
Особенности
Сквозные особенности, не привязанные к одному методу:
- Создание карточки едино для FBO и FBS — модель выбирается ниже, на этапе логистики.
- Upsert через
requestType: повтор после503отправляйте сUPDATE, иначе создастся дубль карточки. Код HTTP-ответа 200не гарантирует сохранение/цену — проверяйтеerrors[],priceStatuses,fraudValidationResult.- Фрод по цене — только при
UPDATE, только RU-цена; на чистомCREATEне срабатывает. - Суммы цен — в минорных единицах (копейки RUB/BYN, тиыны KZT).
- Порядок проверок метода создания: сначала формат
sellerId(400при ошибке), затем токен (401при невалидном токене,403при чужомsellerId), затем загрузка справочников и валидация тела (400сdetails[]), сохранение карточки и — отдельным шагом — простановка цен (503при сбое downstream). - Идентификаторы дальше по цепочке: ваш
supplierSkuвариации в остальных доменах (остатки, поставки, заказы) возвращается в полеexternalSku; Lamoda-идентификатор —sku.
См. также
Помогла эта информация?
Спасибо за отзыв