Metadata-Version: 2.1
Name: PyBitrix
Version: 1.2.1
Summary: PyBitrix is my lightweight implementation of Bitrix 24 REST API wrapper
Home-page: https://github.com/momoru-kun/PyBitrix
Author: Aleksandr Lenets
Author-email: wowgonit@gmail.com
License: UNKNOWN
Keywords: bitrix24 rest api bx24
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: Russian
Classifier: Natural Language :: English
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.5
Description-Content-Type: text/markdown
Requires-Dist: requests
Requires-Dist: aiohttp

# PyBitrix

![version](https://img.shields.io/pypi/v/pybitrix?color=%237c4dff&style=for-the-badge)

![downloads](https://img.shields.io/pypi/dd/pybitrix?style=for-the-badge)

---
PyBitrix is my lightweight implementation of Bitrix 24 REST API wrapper that I use in my own applications/integrations

## Requirements

- Python 3.6+
- requests
- aiohttp

---

## Quick start

### Install package from pip

```sh
pip3 install pybitrix
```

### Then create PyBitrix instance

```python
from pybitrix import PyBitrix

# for webhook usage
webhook = "https://You/hook from/bitrix/developers panel/"
b24 = PyBitrix(inbound_hook=webhook)

# for use as application (with tokens)
domain = "BX DOMAIN (eg. some-stuff.bitrix.ru). Can be taken from bitrix request to your app"
auth_id = "ACCESS_TOKEN_TAKEN_FROM_BITRIX_REQUEST_TO_YOUR_APP"
refresh_id = "REFRESH_TOKEN_TAKEN_FROM_BITRIX_REQUEST_TO_YOUR_APP"
app_id = "APP_ID_FROM_MARKETPLACE_OR_LOCAL_APP_INSTALLATION"
app_secret = "SECRET_KEY_FROM_MARKETPLACE_OR_LOCAL_APP_INSTALLATION"
b24 = PyBitrix(domain=domain, access_token=auth_id, refresh_token=refresh_id, app_id=app_id, app_secret=app_secret)
```

### Make call

```python
bx24.call('crm.contact.list', {
    'order': ['DSC'],
    'select': ['TITLE', 'DATE_CREATE'],
    'filter': {"<ID": 50}
})
```

### Make batch call

```python
batch={
    'contacts': 'crm.contact.list', 
    'deals': 'crm.deal.list'
}
batchParams={
    'contacts': [
        'select[]=TITLE', 
        'order[ID]=DSC', 
        'filter[>ID]=15'
    ], 'deals' : [
        'select[]=TITLE',
        'select[]=STAGE_ID'
    ]
}
response = bx24.callBatch(batch=batch, batchParams=batchParams)
print("CONTACTS: {}".format(response['result']['result']['contacts']))
print("DEALS: {}".format(response['result']['result']['deals']))
```

### Renew tokens

PyBitrix refreshes tokens automatically, but if you want to do this manually, you should call method `refresh_tockens()`

```python
bx24.refresh_tokens()
```

### asyncio + aiohttp

To use async version, you need to just import `PyBitrixAsync`

```python
    from pybitrix import PyBitrixAsync
    b24 = PyBitrixAsync(...)
    result = await b24(...)
```

---

## Todos

- More comfortable batchParams collector
- Fast lists uploading via `'start': -1`

## License

MIT


