Неофициальный асинхронный Python-клиент для UDS Partner API
Project description
async-uds-api
Асинхронный Python-клиент для публичного UDS Partner API v2.
Установка
pip install async-uds-api
Быстрый старт
import asyncio
from async_uds_api import UDSClient
async def main() -> None:
client = UDSClient(
company_id=123456,
api_key="your-api-key",
)
async with client:
# Получение настроек компании
settings = await client.settings.get()
print(settings.name, settings.currency)
# Список клиентов
customers = await client.customers.list(max=10, offset=0)
for customer in customers.rows:
print(customer.display_name, customer.phone)
if __name__ == "__main__":
asyncio.run(main())
Возможности
- Асинхронный HTTP-клиент на базе
httpx.AsyncClient - Авторизация через Basic Auth (
companyId:apiKey) - Автоматические заголовки
X-Origin-Request-IdиX-Timestamp - Pydantic-модели для валидации данных
- Типизация — полная поддержка статических анализаторов
- Обработка ошибок — иерархия исключений с детальной информацией
API
Settings
settings = await client.settings.get()
Customers
# Список клиентов
customers = await client.customers.list(max=100, offset=0)
# Поиск клиента по коду/телефону/UID
result = await client.customers.find(code="ABC123", total=1000.0)
# Получение клиента по ID
customer = await client.customers.get(customer_id=12345)
# Теги клиента
tags = await client.customers.get_tags(customer_id=12345)
await client.customers.set_tags(customer_id=12345, tag_ids=[1, 2, 3])
Operations
from async_uds_api.models import CreateOperation
# Список операций
operations = await client.operations.list(max=100)
# Создание операции (покупка/начисление)
operation = await client.operations.create(CreateOperation(...))
# Получение операции по ID
operation = await client.operations.get(operation_id=12345)
# Возврат операции
refunded = await client.operations.refund(operation_id=12345)
# Расчёт покупки
calc_result = await client.operations.calc(calc_request)
# Начисление бонусов
await client.operations.reward(reward_request)
# Создание ваучера
voucher = await client.operations.create_voucher(voucher)
Tags
# Список тегов компании
tags = await client.tags.list()
Goods
from async_uds_api.models import GoodsDetailed
# Список товаров
goods = await client.goods.list(max=100)
# Создание товара
new_goods = await client.goods.create(GoodsDetailed(name="Товар", ...))
# Получение по ID
item = await client.goods.get(goods_id=123)
# Обновление
updated = await client.goods.update(goods_id=123, goods=GoodsDetailed(...))
# Удаление
await client.goods.delete(goods_id=123)
# Работа с externalId
item = await client.goods.external.get(external_id="ext-123")
updated = await client.goods.external.update(external_id="ext-123", goods=...)
await client.goods.external.delete(external_id="ext-123")
Images
# Загрузка изображения из файла
image_id = await client.images.upload("/path/to/image.jpg")
# Загрузка из URL
image_id = await client.images.upload("https://example.com/image.png")
# Загрузка из байтов
image_id = await client.images.upload(image_bytes, content_type="image/png")
# Получение URL для загрузки
upload_url = await client.images.get_upload_url("image/jpeg")
Webhooks
from async_uds_api import verify_webhook_signature
is_valid = verify_webhook_signature(
request_id=request.headers.get("X-RequestId"),
timestamp=request.headers.get("X-Timestamp"),
company_id=123456,
api_key="your-api-key",
signature=request.headers.get("X-Signature"),
)
Обработка ошибок
from async_uds_api import (
UDSClientError,
UDSAPIError,
UDSBadRequestError,
UDSUnauthorizedError,
UDSForbiddenError,
UDSNotFoundError,
UDSUnexpectedError,
UDSImageError,
)
try:
customer = await client.customers.get(999999)
except UDSNotFoundError as e:
print(f"Не найдено: {e.message}")
except UDSAPIError as e:
print(f"API ошибка: {e.status_code}, {e.error_code}")
except UDSClientError as e:
print(f"Ошибка клиента: {e}")
Требования
- Python >= 3.10
- httpx >= 0.27.0
- pydantic >= 2.0.0
- aiofiles >= 23.0.0
Разработка
# Установка зависимостей для разработки
pip install -e ".[dev]"
# Запуск тестов
pytest tests/
# Линтинг
ruff check async_uds_api/ tests/
# Проверка типов
ty check async_uds_api/ tests/
Лицензия
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
async_uds_api-0.1.0.tar.gz
(22.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file async_uds_api-0.1.0.tar.gz.
File metadata
- Download URL: async_uds_api-0.1.0.tar.gz
- Upload date:
- Size: 22.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42d93f5ff29c779b9896d0f82c38aba213108bd85717b8f51f14022544f0e4bb
|
|
| MD5 |
57b80f44e79f9d18a86a592fc22b46d7
|
|
| BLAKE2b-256 |
e6d25ead6c404435d370a876f5447fb285383a3dcc32f5d2a0ea8ba71a1585b4
|
File details
Details for the file async_uds_api-0.1.0-py3-none-any.whl.
File metadata
- Download URL: async_uds_api-0.1.0-py3-none-any.whl
- Upload date:
- Size: 22.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7dcaaf6814fac74f3b071ec489cff4012300b23d03b191f836113c27471df29d
|
|
| MD5 |
7a4c7dc0869ddaa364a75549b1fdfbb6
|
|
| BLAKE2b-256 |
e8fdcf3ba8ad3c9be1d9470d157218e184288e208df98333fe90df105104a5f4
|