Metadata-Version: 2.4
Name: moyskladapi
Version: 0.9.3
Summary: Асинхронный клиент для Мой Склад API
Project-URL: Homepage, https://github.com/serdukow/moyskladapi
Project-URL: Documentation, https://github.com/serdukow/moyskladapi#readme
Project-URL: Repository, https://github.com/serdukow/moyskladapi
Author-email: Andrei Serdiukov <serdukow1@gmail.com>
Maintainer-email: Andrei Serdiukov <serdukow1@gmail.com>
License: MIT
License-File: LICENSE
Keywords: api,async,client,moysklad,мой склад
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: <3.14,>=3.10
Requires-Dist: aiolimiter<2.0.0,>=1.2.1
Requires-Dist: httpx<0.29.0,>=0.28.1
Requires-Dist: pydantic<2.12.2,>=2.4.1
Provides-Extra: dev
Requires-Dist: pre-commit<5.0.0,>=4.3.0; extra == 'dev'
Requires-Dist: ruff<0.15.0,>=0.14.1; extra == 'dev'
Provides-Extra: test
Requires-Dist: pytest-asyncio<2.0.0,>=1.2.0; extra == 'test'
Requires-Dist: pytest-httpx<0.37.0,>=0.35.0; extra == 'test'
Requires-Dist: pytest<9.0.0,>=8.4.2; extra == 'test'
Description-Content-Type: text/markdown

<p align="center">
  <a href="https://api.moysklad.ru"><img src="https://www.moysklad.ru/upload/logos/logoMS500.png" alt="MoyskladAPI"></a>
</p>

<div align="center">

<p align="center">
Асинхронная библиотека для работы с API МойСклад
</p>

[![PyPI version](https://img.shields.io/pypi/v/moyskladapi.svg)](https://pypi.org/project/moyskladapi/)
[![Downloads](https://img.shields.io/pypi/dm/moyskladapi.svg)](https://pypi.python.org/pypi/moyskladapi)
[![Status](https://img.shields.io/badge/status-stable-52C72D.svg?logo=git&logoColor=52C72D)]()
[![API Version](https://img.shields.io/badge/JSON_API-1.2-blue.svg)](https://dev.moysklad.ru/doc/api/remap/1.2/)
[![Python](https://img.shields.io/pypi/pyversions/moyskladapi.svg)](https://pypi.org/project/moyskladapi/)
</a>

</div>

## Установка

```console
pip install moyskladapi
```

## Примеры использования

### Создание, обновление и удаление товара

```python
import asyncio

from moyskladapi import MoyskladAPI
from moyskladapi.types import Product


async def main():
    async with MoyskladAPI(token="your_token_here") as api:
        product = await api.create_product(Product(name="Тестовый товар"))
        print(f"Создан: {product.name} [{product.id}]")

        product = await api.update_product(product.id, Product(description="Описание товара"))
        print(f"Описание: {product.description}")

        await api.delete_product(product.id)
        print("Удалён")


asyncio.run(main())
```

### Фильтрация товаров

```python
import asyncio

from moyskladapi import MoyskladAPI, F


async def main():
    async with MoyskladAPI(token="your_token_here") as api:
        results = await api.get_products(
            filters=[F.archived == False, F.weight > 1.0],
            expand="supplier",
            limit=10,
        )
        for p in results.rows:
            print(f"{p.name}  |  поставщик: {p.supplier.name if p.supplier else '—'}")


asyncio.run(main())
```

### Остатки

```python
import asyncio

from moyskladapi import MoyskladAPI


async def main():
    async with MoyskladAPI(token="your_token_here") as api:
        stock = await api.get_stock_current()
        low = [s for s in stock.rows if s.quantity and s.quantity < 5]
        print(f"Заканчиваются: {len(low)} позиций")


asyncio.run(main())
```
