Metadata-Version: 2.1
Name: aioabcpapi
Version: 1.0.5
Summary: Async library for ABCP API
Home-page: https://github.com/bl4ckm45k/aioabcpapi
Author: bl4ckm45k
Author-email: nonpowa@gmail.com
License: MIT
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE

# AioAbcpApi

Async library for [API ABCP](https://www.abcp.ru/wiki/ABCP.API "API ABCP")
with [asyncio](https://docs.python.org/3/library/asyncio.html "asyncio")
and [aiohttp](https://github.com/aio-libs/aiohttp "aiohttp")

![](https://img.shields.io/github/stars/bl4ckm45k/aioabcpapi.svg)
![](https://img.shields.io/github/forks/bl4ckm45k/aioabcpapi.svg)
![](https://img.shields.io/github/issues/bl4ckm45k/aioabcpapi.svg)
[![Supported python versions](https://img.shields.io/pypi/pyversions/aioabcpapi.svg)](https://pypi.python.org/pypi/aioabcpapi)
[![Downloads](https://img.shields.io/pypi/dm/aioabcpapi.svg?)](https://pypi.python.org/pypi/aioabcpapi)
[![PyPi Package Version](https://img.shields.io/pypi/v/aioabcpapi)](https://pypi.python.org/pypi/aioabcpapi)


Присоединяйтесь к [телеграм чату](https://t.me/aioabcpapi "Телеграм чат")


## Описание

------------

Все методы максимально приближены к древовидному оформлению [официальной документации](https://www.abcp.ru/wiki/ABCP.API).

Разделяются на `cp` и `ts`, они в свою очередь разделяются на `client` и `admin`, далее для поиска нужного вам метода
отталкивайтесь от документации [API ABCP](https://www.abcp.ru/wiki/ABCP.API).

Для примера, из документации **TS.Client**, [Обновление позиции в корзине](https://www.abcp.ru/wiki/API.TS.Client#.D0.9E.D0.B1.D0.BD.D0.BE.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BF.D0.BE.D0.B7.D0.B8.D1.86.D0.B8.D0.B8_.D0.B2_.D0.BA.D0.BE.D1.80.D0.B7.D0.B8.D0.BD.D0.B5)
описание операции следующее:
>  Операция: POST /ts/cart/update

Для использования этого метода нам нужно будет обратиться к `await api.ts.client.cart.update()`

#### Доступ к API

------------
[Для API Администратора](https://cp.abcp.ru/?page=allsettings&systemsettings&apiInformation)

Если вы являетесь клиентом магазина на платформе ABCP, обратитесь к вашему менеджеру. (Вам понадобится статический IP адрес)

### Примечание 

------------

Все аргументы времени, такие как `create_time`, `update_time`, `date_start`, `date_end` и прочие, принимают `str` или `datetime`. При передаче `datetime` объект будет преобразован в зависимости от требований метода в `RFC3339` или `"%Y-%m-%d %H:%M:%S"`

### Пример

------------

```python
import asyncio
from aioabcpapi import Abcp

host, login, password = 'id33333', 'api@id33333', 'md5hash'
api = Abcp(host, login, password)


async def search_some_parts(article, brand):
    search_result = await api.cp.client.search.articles(number=article, brand=brand,
                                                        use_online_stocks=True,
                                                        disable_online_filtering=True,
                                                        with_out_analogs=True)
    for x in search_result:
        if float(x['price']) < 3000:
            print('Похоже на чудо, но скорее ошибка прайса. Отключим пока поставщика')
            await api.cp.admin.distributors.edit_status(x['distributorId'], False)
        elif float(x['price']) < 37000:
            await api.cp.client.basket.add(basket_positions={'number': x['article'],
                                                             'brand': x['brand'],
                                                             'supplierCode': x['supplierCode'],
                                                             'itemKey': x['itemKey'],
                                                             'quantity': 1,
                                                             'comment': f"Да, РРЦ никто не любит"})


if __name__ == '__main__':
    asyncio.run(search_some_parts('602000600', 'LuK'))
```

[**Больше примеров**](https://github.com/bl4ckm45k/aioabcpapi/tree/master/examples "Примеры")
