Bitrix24 webhook helper library by Automatization24.
Project description
a24wh
Python library for Bitrix24 incoming webhooks by Automatization24.
Библиотека Python для работы с входящими вебхуками Bitrix24 от Automatization24.
README (EN)
Version
The package uses classic semantic versioning.
Current version:
0.1.0
Public API
Only 4 public helpers are exported from a24wh:
from a24wh import request24, save_json, batch_list, batch_by_params
Install
Development install:
cd ...\a24wh
pip install -e .
Future PyPI install:
pip install a24wh
Supported Python versions:
3.10, 3.11, 3.12, 3.13
Quick Start
request24(...)
import os
from a24wh import request24
response = request24(
method="crm.deal.get",
parameters={"id": 10},
webhook_url=os.getenv("WEBHOOK"),
all_iters=False,
)
List method with automatic pagination:
import os
from a24wh import request24
response = request24(
method="crm.deal.list",
parameters={
"order": {"ID": "ASC"},
"filter": {"=CATEGORY_ID": 0},
"select": ["ID"],
},
webhook_url=os.getenv("WEBHOOK"),
all_iters=True,
)
save_json(...)
from a24wh import save_json
save_json(response, file_title="crm.deal.get")
batch_list(...)
import os
from a24wh import batch_list
response = batch_list(
method="crm.deal.list",
parameters={
"order": {"ID": "ASC"},
"filter": {"=CATEGORY_ID": 14},
"select": ["ID", "STAGE_ID", "CONTACT_ID"],
},
webhook_url=os.getenv("WEBHOOK"),
)
batch_by_params(...)
import os
from a24wh import batch_by_params
response = batch_by_params(
method="crm.deal.get",
params_list=[
{"id": 56328},
{"id": 56370},
{"id": 56380},
],
webhook_url=os.getenv("WEBHOOK"),
)
Response Structure
request24(...), batch_list(...), and batch_by_params(...) always return a dict.
Success example:
{"result": ...}
Error example:
{
"error_result": True,
"error_type": "http_error",
"error_code": "500",
"error_message": "Bitrix24 returned HTTP 500.",
"method": "crm.deal.get",
"portal": "example.bitrix24.ru",
"status_code": 500,
}
Recommended check:
if "error_result" in response:
print(response["error_message"])
else:
print(response)
Environment Variables
Copy-ready .env block with library defaults:
A24WH_DEFAULT_WEBHOOK_URL=
A24WH_TIMEOUT=60
A24WH_RETRY_COUNT=3
A24WH_RETRY_DELAY=1.0
A24WH_REQUEST_DELAY=1.0
A24WH_AUTO_CONFIGURE_LOGGING=0
A24WH_LOG_LEVEL=INFO
A24WH_LOG_TO_CONSOLE=1
A24WH_LOG_TO_FILE=0
A24WH_LOG_FILE=a24wh.log
You can paste this block into .env and change only the values you need.
To enable verbose local logging, change these values in the same block:
A24WH_AUTO_CONFIGURE_LOGGING=1
A24WH_LOG_LEVEL=DEBUG
A24WH_LOG_TO_FILE=1
If webhook_url=None, the library tries to use A24WH_DEFAULT_WEBHOOK_URL.
That gives you two working styles:
- Explicit webhook in code:
response = request24(
method="crm.deal.get",
parameters={"id": 10},
webhook_url=os.getenv("WEBHOOK"),
all_iters=False,
)
- Default webhook from environment:
response = request24(
method="crm.deal.get",
parameters={"id": 10},
webhook_url=None,
all_iters=False,
)
Logging
The library logger name is a24wh.
The package does not override application logging automatically unless local auto logging is enabled through environment variables from the block above.
Usage Examples
Batch list example:
import os
from a24wh import batch_list
response = batch_list(
method="crm.deal.list",
parameters={
"order": {"ID": "ASC"},
"filter": {"=CATEGORY_ID": 14},
"select": ["ID", "TITLE", "STAGE_ID"],
},
webhook_url=os.getenv("WEBHOOK"),
)
Batch by params example:
import os
from a24wh import batch_by_params
response = batch_by_params(
method="crm.deal.get",
params_list=[
{"id": 56328},
{"id": 56370},
{"id": 56380},
],
webhook_url=os.getenv("WEBHOOK"),
)
Smart process list example:
import os
from a24wh import batch_list
response = batch_list(
method="crm.item.list",
parameters={
"entityTypeId": 190,
"filter": {"=categoryId": 3},
"select": ["id", "title", "stageId"],
},
webhook_url=os.getenv("WEBHOOK"),
)
Save response to JSON:
from a24wh import save_json
save_json(response, file_title="crm.deal.list")
Tests
cd /path/to/a24wh
python -m unittest discover -s tests -v
README (RU)
Версия
Пакет использует классическую семантическую версионность.
Текущая версия:
0.1.0
Публичный API
Из a24wh наружу экспортируются только 4 публичных метода:
from a24wh import request24, save_json, batch_list, batch_by_params
Установка
Установка для разработки:
cd ...\a24wh
pip install -e .
Будущая установка из PyPI:
pip install a24wh
Поддерживаемые версии Python:
3.10, 3.11, 3.12, 3.13
Быстрый старт
request24(...)
import os
from a24wh import request24
response = request24(
method="crm.deal.get",
parameters={"id": 10},
webhook_url=os.getenv("WEBHOOK"),
all_iters=False,
)
Списочный метод с автоматическим сбором всех страниц:
import os
from a24wh import request24
response = request24(
method="crm.deal.list",
parameters={
"order": {"ID": "ASC"},
"filter": {"=CATEGORY_ID": 0},
"select": ["ID"],
},
webhook_url=os.getenv("WEBHOOK"),
all_iters=True,
)
save_json(...)
from a24wh import save_json
save_json(response, file_title="crm.deal.get")
batch_list(...)
import os
from a24wh import batch_list
response = batch_list(
method="crm.deal.list",
parameters={
"order": {"ID": "ASC"},
"filter": {"=CATEGORY_ID": 14},
"select": ["ID", "STAGE_ID", "CONTACT_ID"],
},
webhook_url=os.getenv("WEBHOOK"),
)
batch_by_params(...)
import os
from a24wh import batch_by_params
response = batch_by_params(
method="crm.deal.get",
params_list=[
{"id": 56328},
{"id": 56370},
{"id": 56380},
],
webhook_url=os.getenv("WEBHOOK"),
)
Структура ответа
request24(...), batch_list(...) и batch_by_params(...) всегда возвращают dict.
Пример успешного ответа:
{"result": ...}
Пример ответа с ошибкой:
{
"error_result": True,
"error_type": "http_error",
"error_code": "500",
"error_message": "Bitrix24 returned HTTP 500.",
"method": "crm.deal.get",
"portal": "example.bitrix24.ru",
"status_code": 500,
}
Рекомендуемая проверка:
if "error_result" in response:
print(response["error_message"])
else:
print(response)
Переменные окружения
Готовый блок .env со значениями по умолчанию библиотеки:
A24WH_DEFAULT_WEBHOOK_URL=
A24WH_TIMEOUT=60
A24WH_RETRY_COUNT=3
A24WH_RETRY_DELAY=1.0
A24WH_REQUEST_DELAY=1.0
A24WH_AUTO_CONFIGURE_LOGGING=0
A24WH_LOG_LEVEL=INFO
A24WH_LOG_TO_CONSOLE=1
A24WH_LOG_TO_FILE=0
A24WH_LOG_FILE=a24wh.log
Можно вставить этот блок в .env и поменять только нужные значения.
Чтобы включить подробное локальное логирование, поменяй в этом же блоке такие значения:
A24WH_AUTO_CONFIGURE_LOGGING=1
A24WH_LOG_LEVEL=DEBUG
A24WH_LOG_TO_FILE=1
Если webhook_url=None, библиотека пытается использовать A24WH_DEFAULT_WEBHOOK_URL.
Это дает два рабочих варианта:
- Явно передавать webhook в коде:
response = request24(
method="crm.deal.get",
parameters={"id": 10},
webhook_url=os.getenv("WEBHOOK"),
all_iters=False,
)
- Использовать дефолтный webhook из окружения:
response = request24(
method="crm.deal.get",
parameters={"id": 10},
webhook_url=None,
all_iters=False,
)
Логирование
Имя логгера библиотеки: a24wh.
Пакет не переопределяет логирование приложения автоматически, пока ты сам не включишь локальную автоконфигурацию через переменные окружения из блока выше.
Примеры использования
Пример batch list:
import os
from a24wh import batch_list
response = batch_list(
method="crm.deal.list",
parameters={
"order": {"ID": "ASC"},
"filter": {"=CATEGORY_ID": 14},
"select": ["ID", "TITLE", "STAGE_ID"],
},
webhook_url=os.getenv("WEBHOOK"),
)
Пример batch by params:
import os
from a24wh import batch_by_params
response = batch_by_params(
method="crm.deal.get",
params_list=[
{"id": 56328},
{"id": 56370},
{"id": 56380},
],
webhook_url=os.getenv("WEBHOOK"),
)
Пример для списка смарт-процесса:
import os
from a24wh import batch_list
response = batch_list(
method="crm.item.list",
parameters={
"entityTypeId": 190,
"filter": {"=categoryId": 3},
"select": ["id", "title", "stageId"],
},
webhook_url=os.getenv("WEBHOOK"),
)
Сохранение ответа в JSON:
from a24wh import save_json
save_json(response, file_title="crm.deal.list")
Тесты
cd /path/to/a24wh
python -m unittest discover -s tests -v
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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 a24wh-0.1.0.tar.gz.
File metadata
- Download URL: a24wh-0.1.0.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ffc28f2a7a104de3a731ffb8e6aa5316a25a72f92036687452fc0d54758629c8
|
|
| MD5 |
c5764c64f66507128116e553e8d1cc68
|
|
| BLAKE2b-256 |
a43a7ffc72807c1009d1fa45cd211cdcfa9b31646daaa94f3e3a1c1da2aa0677
|
Provenance
The following attestation bundles were made for a24wh-0.1.0.tar.gz:
Publisher:
publish.yml on automatization24/a24wh
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
a24wh-0.1.0.tar.gz -
Subject digest:
ffc28f2a7a104de3a731ffb8e6aa5316a25a72f92036687452fc0d54758629c8 - Sigstore transparency entry: 1280949966
- Sigstore integration time:
-
Permalink:
automatization24/a24wh@8102ecf14ee638a01038244c7cf7dc917c7b696e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/automatization24
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8102ecf14ee638a01038244c7cf7dc917c7b696e -
Trigger Event:
push
-
Statement type:
File details
Details for the file a24wh-0.1.0-py3-none-any.whl.
File metadata
- Download URL: a24wh-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
307728a0d231af9e41bceda4c9f36cc6473168610ea43d966355da9f07ce49aa
|
|
| MD5 |
565890ed98de38d45d10d6b8c8c15a66
|
|
| BLAKE2b-256 |
3a753220b3eeb7bf95621b2368e59c0ad6758f0bbca841d77d8da9b4f5d03e4c
|
Provenance
The following attestation bundles were made for a24wh-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on automatization24/a24wh
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
a24wh-0.1.0-py3-none-any.whl -
Subject digest:
307728a0d231af9e41bceda4c9f36cc6473168610ea43d966355da9f07ce49aa - Sigstore transparency entry: 1280949969
- Sigstore integration time:
-
Permalink:
automatization24/a24wh@8102ecf14ee638a01038244c7cf7dc917c7b696e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/automatization24
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8102ecf14ee638a01038244c7cf7dc917c7b696e -
Trigger Event:
push
-
Statement type: