@apilki/yandex-market — JavaScript/TypeScript client
Version: 0.3.0 · API as of 2026-08-25
A curated generated TypeScript client for the Yandex Market Partner API — generated from the official API specification, with edge-cases and conflicts resolved. Fully typed, fetch-based, zero runtime dependencies, works in Node.js ≥ 18 and browsers. Covers all 161 operations (43 API classes) and is regenerated on every upstream change.
npm install @apilki/yandex-market
Docs: https://yandex.ru/dev/market/partner-api/doc/ru/ · Full description (RU) below.
Что это
Готовый TypeScript-клиент для Yandex Market Partner API — заказы, каталог, цены, отчёты (продавец-сторона). Сгенерирован из официальной документации Яндекса и доведён до ума: неоднозначности и конфликты документации разбираются агентами и автоматическими рецептами, результат проверяется тестами — вы получаете клиент, который просто работает.
- Полное покрытие — все 161 операция, 43 API-класса, ~757 моделей;
- Всегда свежий — перегенерируется при каждом изменении API Яндекса;
- Никаких зависимостей — на чистом
fetch, работает в Node.js ≥ 18 и в браузере; - Типизация / Ноль сюрпризов — полные
.d.ts, оригинальные имена полей из спецификации.
Установка
npm install @apilki/yandex-market
Быстрый старт
1. Инициализация клиента
Авторизация настраивается один раз через Configuration. Ключ передается в заголовке Api-Key.
import { Configuration, OrderApi, CampaignsApi } from '@apilki/yandex-market';
const config = new Configuration({
basePath: 'https://api.partner.market.yandex.ru',
headers: {
'Api-Key': 'ACMA:YOUR_SECRET_KEY',
'Content-Type': 'application/json'
}
});
const orderApi = new OrderApi(config);
const campaignsApi = new CampaignsApi(config);
2. Несколько кабинетов или магазинов
В зависимости от метода API Яндекса первым аргументом выступает либо
campaignId (идентификатор магазина), либо businessId (идентификатор
бизнеса/кабинета). Ключ авторизации Api-Key уже в заголовках конфигурации —
в аргументах он не требуется.
const campaignId = 12345678;
const businessId = 987654;
async function fetchData() {
// Метод с campaignId (Заказы)
const orders = await orderApi.getOrders(campaignId, { status: 'PROCESSING' });
// Метод с businessId (Каталог/Цены)
const offers = await assortmentApi.getOfferMappings(businessId, { limit: 100 });
console.log('Данные получены');
}
Особенности сборки
- Типизация: полная поддержка TypeScript (
.d.tsвключены). - Стиль имён:
- Методы и классы:
camelCase(например,orderApi.getOrders); - Свойства объектов (JSON): original — сохранено именование из спецификации Яндекса.
- Методы и классы:
- Аргументы методов: плоский список (позиционный). Первым параметром в большинстве
методов идёт
campaignId, в методах каталога/финтеха —businessId. Проверяйте сигнатуру через автодополнение в IDE. - Fetch: в среде Node.js < 18 требуется полифил
node-fetch.
Ошибки
При ответах 4xx/5xx клиент выбрасывает ResponseError. Ответ Яндекса обычно
содержит объект с массивом ошибок.
try {
await orderApi.getOrders(...);
} catch (error) {
const errorBody = await error.response.json();
// Структура ошибки Яндекса: { status: "ERROR", errors: [...] }
console.error('Errors:', errorBody.errors);
}
Отладка (Middleware)
Для отладки сетевых запросов используйте Middleware:
const config = new Configuration({
middleware: [{
pre: async (context) => {
console.log(`[Yandex Request] ${context.url}`);
return context;
}
}]
});
Покрытие API
Клиент покрывает 161 операцию в 43 API-классах (~757 моделей данных) — полный охват Yandex Market Partner API. Покрытие поддерживается пайплайном: каждое изменение спецификации проверяется автоматическими тестами на полноту.
Postman-коллекция
Готовая Postman Collection
v2.1 — отдельный артефакт apilki/yandex-market-postman
(postman/collection.json). Импортируйте коллекцию и работайте с API без кода.
Тесты
После установки выполните npm test — юнит-набор по ключевым путям
(запросы, сериализация, обработка ошибок, middleware). Прогоняется перед
каждой публикацией, работает офлайн — без зависимостей и ключей доступа.
Известные ограничения
- Свежесть API — дата коммита спецификации, а не номер версии. Апстрим
публикует спецификацию без семантических версий (
LATEST): номер версии есть только у клиента. Поэтому актуальность данных отражается датой в шапке README (строка «API от …») и в CHANGELOG релизов — сопоставление по версиям спецификации невозможно. Breaking-изменения анонсируются в ⚠-секции CHANGELOG и в MIGRATION.md (в пакете и GH-дистро). - Node.js < 18 — нужен полифил
fetch. Клиент работает на встроенномfetch(ноль зависимостей), нативно доступном с Node 18. На более старых версиях установитеnode-fetchи передайте его черезConfiguration.fetchApi(подробнее — «Особенности сборки»). - Типы коллекционных параметров различаются (
Array/Set) — наследие генерации: часть методов принимает массивы, частьSet. Ориентируйтесь на сигнатуру метода (подсказки IDE); конвертировать вручную не нужно.
Языки
- TypeScript — этот клиент (JavaScript/TypeScript);
- Python / Go — в планах (тот же скоуп
@apilki, отдельные репозитории).
Лицензия
MIT © apilki. Клиент сгенерирован из спецификации Yandex Market Partner API (https://github.com/yandex-market/yandex-market-partner-api), Copyright (c) 2023 YANDEX LLC, лицензирована по BSD 3-Clause. Полный текст — в LICENSE.