MCP-серверыMCP-серверыLamoda B2B Platform APIАвтоматизация продаж

Lamoda через API и MCP: 68 методов, три конкурирующих API у одного поставщика и путь без слэша

Разбираем Lamoda B2B Platform API: 68 методов на заказы, отгрузки FBS/FBO, каталог и остатки, три разных API у одного поставщика с несовместимыми схемами авторизации, документированная опечатка в пути и почему подарочные сертификаты — единственное денежное действие в этом коннекторе.

3 сентября 2026 г.4 мин чтения

Обзор

У Lamoda для партнёров-продавцов не один API, а три, и они не заменяют друг друга — они накапливались. Legacy JSON-RPC API работал с каталогом (товары, цены, остатки) через единственный endpoint /jsonrpc и конверт {"jsonrpc", "method", "params"} вместо обычных путей. Отдельно жил и живёт Lamoda B2B Platform API — полноценный REST на api-b2b.lamoda.ru: заказы, отгрузки, каталог, остатки, этикетки, подарочные сертификаты, партнёрские пункты выдачи. Год спустя поверх обоих начали расти Lamoda Seller REST API v2 — новые возможности (возвраты FBS, вопросы покупателей, акции), которых нет ни в одном из первых двух.

Mira подключает B2B Platform API целиком — 68 методов в тринадцати разделах. Ниже — почему не все три, и что нашлось внутри того одного, который подключён.

Почему не все три API сразу

Схема авторизации — не деталь, а причина решения. B2B Platform API выдаёт токен по POST /auth/token с телом {client_id, client_secret, grant_type: "client_credentials"} — тот же приём, что уже отлажен и протестирован у Ozon Performance. Legacy JSON-RPC API, напротив, требует отдельного вызова v1.tokens.create внутри своего собственного конверта JSON-RPC — это не client_credentials в привычном виде, а вложенный протокол поверх протокола. Seller REST API v2 живёт на том же хосте, что и JSON-RPC-каталог (public-api-seller.lamoda.ru), и собственного endpoint'а для токена в его спецификации нет вовсе — по всем признакам он ждёт токен, выпущенный ИМЕННО тем JSON-RPC-вызовом.

Заводить в Go третью схему выдачи токена ради каталога, который REST API B2B Platform и так дублирует (те же номенклатуры, цены и остатки, только по нормальным путям), — усложнение без выигрыша. Возвраты, вопросы и акции Seller REST API v2 остаются долгом: подключаются отдельно, когда решится, как токен для одного протокола скормить другому без второй пары ключей в форме.

Что доступно продавцу

Раздел Методов Что даёт
Заказы 19 Список, детали, статусы, товары в заказе, адрес доставки, способ доставки, сборка
Каталог и цены 12 Номенклатуры, справочники брендов и категорий, цены, минимальные цены, упаковка
Поставки FBO 5 Приёмка товара на склад Lamoda
Отгрузки FBS 5 Отгрузка со своего склада, статусы, события
Доставка и ПВЗ 5 Методы доставки, интервалы, пункты самовывоза
Этикетки 5 Документы на заказ, паки, паллеты
Подарочные сертификаты 4 Выпуск, баланс, списание
Партнёрские ПВЗ 3 Список, добавление, правка своих пунктов выдачи
Адреса 3 Идентификаторы города, улицы, дома для адреса доставки
Акты несоответствия 2 Фото актов при расхождении поставки
Остатки 2 Чтение и обновление стока
Товары в поставке 2 Список и посылки по штрихкоду контейнера
Нотификации 1 Переотправка вебхука о статусах

Опечатка, которую мы не стали чинить

В спецификации B2B Platform API три пути отвечают за способ доставки заказа, и у одного из них, документированного как GET /api/v1/orders{orderNr}/delivery_method, перед {orderNr} нет слэша — везде рядом он есть. Соблазн поправить «очевидную» опечатку в своём коде был, но это чужая документация: если поставщик действительно так резолвит маршрут, «исправленный» путь просто перестанет работать. Метод подключён дословно, с примечанием об этом в описании действия — если он ответит 404, это будет ответ поставщика, а не наша догадка, выданная за факт.

Единый конверт отказа, поданный двумя формами

У всех 68 методов один и тот же конверт ошибки — {code, description, message, errors} — но спецификация сама расходится в том, как он упакован: у /auth/token он объявлен массивом из одного объекта, у /api/v1/nomenclatures — прямо объектом. Разбор отказа принимает обе формы не потому, что мы не уверены, какая правильная, а потому, что поставщик сам документирует разное на разных путях.

Почему деньги здесь — это не барьер, а сертификаты

Ozon Performance — рекламная площадка, и там барьер на тратящих действиях покрывает восемь из пятнадцати меняющих. У Lamoda как канала продаж логика другая: создать заказ, поправить цену или обновить остаток не списывает деньги продавца — это данные о том, что уже случилось или должно случиться, а не расход бюджета. Единственное исключение — подарочные сертификаты: gift_certificate_create выпускает сертификат с суммой и валютой, gift_certificate_payment списывает его в оплату. Это прямое создание и использование денежного инструмента, и барьер здесь тот же, что у любой траты: подтверждение перед действием.

Вебхуки — не наш вызов

В спецификации B2B Platform API есть три пути с говорящим именем «url to receive the request»: это не методы, которые вызываем мы, а описание того, что Lamoda сама пришлёт на адрес нотификаций партнёра — о смене статуса заказа, о прямой или обратной передаче права собственности. Приёмника вебхуков у Mira пока нет, и подключать их значило бы описывать то, что некому принять. Вызов notifications_resend, который ЗАПРАШИВАЕТ у Lamoda повторную отправку такого события, — в таблице; сам приём — нет.

Как это выглядит из чата

Продавец пишет: «Какие заказы Lamoda ждут отгрузки?» — и агент читает список заказов с фильтром по статусу, без единой строки кода на стороне продавца. Ключ подключается один раз в настройках проекта — Client ID и Client Secret выдаёт sales-manager Lamoda, самостоятельно в личном кабинете партнёра их не выпустить.

Новости в Telegram

Подпишитесь на каналы — новые статьи и обзоры каждый день.

Источники

Ещё по теме «MCP-серверы»

MCP-серверы

1С через OData: как достать данные учётной базы без единой строки кода на встроенном языке

Разбираем стандартный OData-интерфейс 1С:Предприятие: чем он отличается от API конкретного сервиса, как узнать, что вообще опубликовано на конкретной базе, как проводить и отменять проведение документов и как всё это работает через MCP-сервер Mira без единой строки кода на встроенном языке.

3 сентября 2026 г.
MCP-серверы

CloudPayments через API и MCP: 32 метода, конверт отказа, который не отличает 400 от отклонённой карты, и Public ID, который просят дважды

Разбираем API CloudPayments изнутри: платежи, выплаты, подписки и счета чужого магазина — не биллинг самой Миры, — почему списание по сохранённому токену считается расходом, а обычная оплата картой нет, зачем платёжной ссылке СБП собственный Public ID в теле запроса поверх Basic Auth, и как всё это доступно через MCP-сервер Mira без единой строки кода.

3 сентября 2026 г.
MCP-серверы

Финтабло через API и MCP: 112 методов финучёта, семь путей без объявленных параметров и почему тут нет отчётов

Разбираем API Финтабло изнутри: 112 методов финансового учёта — ДДС, счета, контрагенты, сделки, зарплата, имущество, ОПиУ, — где спецификация поставщика сама не дописывает параметры пути, почему у четырёх PUT-запросов id дублируется в теле и куда делись отчёты. Всё доступно через MCP-сервер Mira без единой строки кода.

3 сентября 2026 г.