Skip to content

Latest commit

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

WB API Parser → Markdown

Парсер публичной OpenAPI-документации Wildberries (dev.wildberries.ru/docs/openapi/*), который превращает её в локальную базу markdown-файлов: один эндпоинт = один файл. Удобно скармливать LLM, держать в репозитории клиента, искать grep-ом и просто читать без браузера.

pythonplaywrightlicense


Что внутри

md/
├── _README.md ← глобальный индекс
├── api-information/
│ ├── _README.md ← индекс API
│ ├── openapi.json ← сырая спека (OpenAPI 3)
│ ├── tags/<раздел>.md
│ └── operations/<METHOD путь>.md ← один файл = один эндпоинт
├── analytics/...
├── financial-reports-and-accounting/...
├── in-store-pickup/...
├── orders-dbs/, orders-dbw/, orders-fbs/, orders-fbw/
├── promotion/...
├── reports/...
├── user-communication/...
└── work-with-products/...

В каждом md-файле эндпоинта:

  • метод, путь, теги, operationId
  • описание, лимиты, авторизация
  • параметры (table)
  • тело запроса со схемой и примерами
  • все коды ответов со схемами и примерами JSON

Текущий снимок: 12 API · 285 эндпоинтов · ~4.5 MB · 378 файлов.


Зачем

Документация WB живёт за антиботом и рендерится JS-ом. Скопировать удобный референс «в один клик» нельзя, в LLM-контекст её не положишь. А в md-формате с этим всё хорошо:

  • Контекст для AI-агентов. Кладёшь нужный operations/<endpoint>.md в промпт — модель пишет рабочий клиент сразу с правильными полями и кодами ошибок.
  • Версионирование документации. Чекин репо → git diff показывает, что WB сломал/добавил.
  • Быстрый поиск.grep -r "warehouseId" за 0.2 секунды.
  • Офлайн. Доки доступны без выхода в сеть.

Что внутри хитрого

  1. Антибот wbaas. Из коробки playwright headless ловит 498 — challenge не решается. Используется playwright-stealth + --disable-blink-features=AutomationControlled.
  2. Извлечение спеки из HTML. Документация рендерится Redoc-ом, спека заинлайнена в <script>const __redoc_state = {...}</script>. После Redoc.hydrate(...) в window объекта уже нет, поэтому он достаётся regex-ом + balanced-скобочный парсер (учитывает строки и эскейпы).
  3. Резолв $ref. OpenAPI WB активно использует ссылки:
    • responses: { 401: { $ref: '#/components/responses/401' } }
    • schema: { $ref: '#/components/schemas/responseCardCreate' }
    • examples: { creatingOneCard: { $ref: '#/components/examples/...' } } Все три случая разворачиваются с защитой от циклов.
  4. Синтез JSON-примеров. Если в response/requestBody нет example/ examples, но у каждого свойства схемы стоит inline example — собираем их в один объект (как это делает Redoc на сайте).
  5. Автодискавери slug-ов. Реальные имена API находятся через /docs/openapi/<slug> ссылки на главной — старые имена content, prices, marketplace, statistics уже не работают.

Установка

git clone https://github.com/Slimpers/WB-API-parser-MD.git
cd WB-API-parser-MD
pip install -r requirements.txt
playwright install chromium

Использование

# Все известные API сразу (12 разделов, ~3 минуты):
python wb_docs_parser.py
# Один или несколько slug-ов:
python wb_docs_parser.py work-with-products promotion

Результат складывается в md/. Перезапуск — полностью обновляет файлы.

Текущие slug-и WB OpenAPI

slugзаголовок
api-informationОбщее
analyticsАналитика и данные
financial-reports-and-accountingДокументы и бухгалтерия
in-store-pickupЗаказы Самовывоз
orders-dbsЗаказы DBS
orders-dbwЗаказы DBW
orders-fbsЗаказы FBS
orders-fbwПоставки FBW
promotionМаркетинг и продвижение
reportsОтчёты
user-communicationОбщение с покупателями
work-with-productsРабота с товарами

Пример вывода

md/promotion/operations/GET adv-v1-balance.md:

# GET /adv/v1/balance**Баланс**
теги: `Финансы`## Описание
Метод возвращает информацию о счёте кабинета Продвижения WB...
## Авторизация-`HeaderApiKey`## Ответы#### 200 — Успешно**Content-Type:**`application/json`-`balance` — integer. Счёт, ₽
-`net` — integer. Баланс, ₽
-`bonus` — integer. Бонусы, ₽
-`cashbacks` — array<object>. Промо-бонусы
```json
{
"balance": 11083,
"net": 0,
"bonus": 15187,
"cashbacks": [
{ "sum": 10672, "percent": 50,
"expiration_date": "2026-04-17T10:46:02.176174Z" }
]
}
```#### 401
... схема + пример из components/responses/401 ...
#### 429
... схема + пример из components/responses/429 ...

Лицензия

MIT — делайте что хотите.

Документация принадлежит Wildberries; репозиторий служит лишь как конвертер формата для собственного использования.

About

Локальная markdown-база OpenAPI Wildberries: один эндпоинт = один .md. Антибот wbaas обходится playwright-stealth, спека извлекается из const __redoc_state, $ref и примеры разрешаются. 12 API · 285 эндпоинтов.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages