Skip to main content

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:

  1. Explicit webhook in code:
response = request24(
    method="crm.deal.get",
    parameters={"id": 10},
    webhook_url=os.getenv("WEBHOOK"),
    all_iters=False,
)
  1. 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.

Это дает два рабочих варианта:

  1. Явно передавать webhook в коде:
response = request24(
    method="crm.deal.get",
    parameters={"id": 10},
    webhook_url=os.getenv("WEBHOOK"),
    all_iters=False,
)
  1. Использовать дефолтный 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

a24wh-0.1.0.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

a24wh-0.1.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

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

Hashes for a24wh-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ffc28f2a7a104de3a731ffb8e6aa5316a25a72f92036687452fc0d54758629c8
MD5 c5764c64f66507128116e553e8d1cc68
BLAKE2b-256 a43a7ffc72807c1009d1fa45cd211cdcfa9b31646daaa94f3e3a1c1da2aa0677

See more details on using hashes here.

Provenance

The following attestation bundles were made for a24wh-0.1.0.tar.gz:

Publisher: publish.yml on automatization24/a24wh

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for a24wh-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 307728a0d231af9e41bceda4c9f36cc6473168610ea43d966355da9f07ce49aa
MD5 565890ed98de38d45d10d6b8c8c15a66
BLAKE2b-256 3a753220b3eeb7bf95621b2368e59c0ad6758f0bbca841d77d8da9b4f5d03e4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for a24wh-0.1.0-py3-none-any.whl:

Publisher: publish.yml on automatization24/a24wh

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page