Skip to content

Python ​

Пакет: valeryverkhoturov-wb-api-client на PyPI.

  • Python: 3.9+
  • HTTP: urllib3
  • Модели: pydantic v2
  • Обёртка секретов: pydantic.SecretStr

Установка ​

bash
pip install valeryverkhoturov-wb-api-client

Для проектов на Poetry / uv / PDM добавляется как обычная зависимость:

toml
[project]
dependencies = [
  "valeryverkhoturov-wb-api-client",
]
bash
uv add valeryverkhoturov-wb-api-client
bash
poetry add valeryverkhoturov-wb-api-client

Форма импортов ​

Дистрибутив ставит один пакет wb_api_client с 13 под-модулями — по одному на категорию WB API. Каждый под-модуль — самостоятельный SDK со своими Configuration, ApiClient и ровно одним API-классом, названным по модулю (GeneralApi, ItemsApi, OrdersFbsApi и т.д.).

python
from wb_api_client.<slug> import Configuration, ApiClient
from wb_api_client.<slug>.api import <Module>Api

Под-модули ​

СлагКатегория
generalОбщее — ping, инфо о продавце, управление пользователями
itemsРабота с товарами (Контент)
orders_fbsЗаказы FBS
orders_dbwЗаказы DBW
dbsDBS
in_store_pickupСамовывоз
orders_fbwПоставки FBW
promotionМаркетинг и продвижение
communicationsОбщение с покупателями
ratesТарифы
analyticsАналитика и данные
reportsОтчёты
financesДокументы и бухгалтерия

В каждом под-модуле ровно один класс API, названный по модулю: general → GeneralApi, items → ItemsApi, orders_fbs → OrdersFbsApi и так далее. Полный список — в README, который перегенерируется каждый релиз: clients/python/README.md.

Авторизация ​

python
from wb_api_client.items import Configuration, ApiClient
from wb_api_client.items.api import ItemsApi

cfg = Configuration(access_token="<ваш JWT WB>")   # оборачивается в SecretStr
client = ApiClient(cfg)
api = ItemsApi(client)

Обычная строка тоже подойдёт — она автоматически оборачивается. Чтобы прочитать сырое значение (например, для диагностики):

python
cfg.access_token                     # SecretStr(**********)
cfg.access_token.get_secret_value()  # "<ваш JWT WB>"

Async / sync ​

Сгенерированный клиент — синхронный (urllib3). Если нужна асинхронность — запускайте вызовы в тред-пуле:

python
import asyncio
result = await asyncio.to_thread(api.get_v1_seller_info)

Нативно-асинхронный вариант в планах нет — asynс-python-шаблон openapi-generator отстаёт от синхронного.

Типизация ​

Каждая модель — pydantic v2. IDE и статические анализаторы видят полные типы:

python
from wb_api_client.items.models import Product   # pydantic-модель, dataclass-like
p: Product = Product.model_validate(some_dict)

Тестирование против клиента ​

У Configuration есть параметр host — можно направить на мок-сервер:

python
cfg = Configuration(
    access_token="test-token",
    host="http://localhost:8080",
)

См. также ​

wb-api-client mascot

Распространяется под лицензией Apache 2.0.