Розробка API-шлюзу для Бітрікс24

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Розробка API-шлюзу для Бітрікс24
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Розробка API-шлюзу для Bitrix24

REST API Bitrix24 потужний, але працювати з ним безпосередньо з безлічі клієнтських додатків — незручно та небезпечно. Кожен клієнт має знати токени, розуміти специфіку методів, обходити обмеження. API-шлюз (gateway) — це проміжний шар, який стандартизує взаємодію: клієнтські додатки звертаються до шлюзу з зрозумілим інтерфейсом, шлюз перекладає виклики у Bitrix24, агрегує дані та повертає нормалізовану відповідь.

Для чого потрібен API-шлюз

Приховування складності Bitrix24 API. Отримання угоди з усіма пов'язаними даними (контакт, компанія, товари, завдання, справи) — це 5–7 окремих REST-запитів до різних методів. Шлюз робить один виклик /deals/123, збирає всі дані паралельно та отримує клієнту єдиний JSON.

Управління токенами. Клієнтські додатки не зберігають токени Bitrix24. Шлюз — єдине місце, де зберігаються OAuth-токени, оновлюються access_token через refresh_token та контролюється їх ротація.

Обхід обмежень. Хмарний Bitrix24 обмежує: 2 запити на секунду, 50 операцій у batch. Шлюз реалізує чергу та rate limiting — клієнти відправляють запити скільки завгодно швидко, шлюз згладжує навантаження.

Кешування. Довідкові дані (типи цін, стадії лійки, список користувачів) змінюються рідко — кешуємо на рівні шлюзу. Запити одних і тих же даних не йдуть у Bitrix24.

Єдина точка моніторингу. Усі виклики логуються, метрики (latency, error rate) збираються в одному місці, сповіщення при деградації Bitrix24 API.

Архітектура шлюзу

Шлюз — окремий HTTP-сервіс, як правило PHP (Laravel/Slim) або Node.js. Розташовується між клієнтами та Bitrix24.

Клієнти (мобільний додаток, зовнішній сайт, ERP)
        ↓  HTTP/JSON (власний API шлюзу)
  API-шлюз
    ├── Аутентифікація клієнта (JWT / API Key)
    ├── Валідація вхідних даних
    ├── Rate limiter
    ├── Кеш (Redis)
    ├── Маппер запитів → Bitrix24 REST
    └── Batch-агрегатор
        ↓  OAuth2 Token
  Bitrix24 REST API

Аутентифікація клієнтів шлюзу

Клієнти шлюзу аутентифікуються окремо від Bitrix24. Варіанти:

API Key. Найпростіший варіант для server-to-server. Клієнт передає ключ у заголовку X-API-Key. Шлюз перевіряє ключ у своїй БД, визначає прив'язаний Bitrix24-аккаунт та права.

JWT. Для клієнтів з користувачами. Користувач логінется (через Bitrix24 OAuth або власну систему), шлюз видає JWT-токен. Кожен запит до шлюзу містить JWT у заголовку Authorization: Bearer. Шлюз декодує токен, визначає користувача та діє від його імені у Bitrix24.

OAuth 2.0 поверх шлюзу. Якщо шлюз обслуговує кілька клієнтських додатків від різних організацій, будуємо повнофункціональний OAuth-сервер (Authorization Code Flow). Кожен клієнт-додаток — окремий OAuth-клієнт шлюзу.

Batch-запити та паралелізація

Bitrix24 підтримує batch: до 50 методів в одному HTTP-запиті. Шлюз агрегує паралельні виклики клієнта у batch:

// Клієнт викликає 3 ресурси шлюзу "одночасно"
// Шлюз збирає їх в один batch до Bitrix24:
$batch = [
    'deal' => 'crm.deal.get?id=123',
    'contact' => 'crm.contact.get?id=456',
    'products' => 'crm.deal.productrows.get?id=123',
];
$result = $b24->batch($batch);

Для отримання угоди з усіма даними шлюз формує batch з 4–5 методів, виконує один HTTP-запит до Bitrix24 та збирає результат.

Кешування у Redis

Два рівні кеша:

Довідники (TTL 1 година): стадії лійок (crm.status.list), користувачі (user.get), типи цін, джерела лідів. Ці дані змінюються рідко й запитуються при кожному зверненні до угод.

Сутності (TTL 5 хвилин): дані конкретних угод, контактів, компаній. Інвалідуються при отриманні webhook від Bitrix24 про зміну об'єкту.

Ключ кеша: b24:{portal_id}:{method}:{hash(params)}. При webhook-события ONCRMDEALUPDATE з ID=123 — інвалідуємо b24:portal1:crm.deal.get:hash({id:123}).

Трансформація даних

Шлюз нормалізує відповіді Bitrix24. З об'єкту з рядковими полями типу 'OPPORTUNITY' => '50000.00' отримуємо типізовану відповідь:

{
  "id": 123,
  "title": "Угода з компанією Роги та Копита",
  "amount": 50000.00,
  "stage": "negotiation",
  "contact": {
    "id": 456,
    "name": "Іван Петров",
    "phone": "+79001234567"
  }
}

Маппінг задається у конфігурації шлюзу — це дозволяє змінювати структуру відповіді без змін клієнтів.

Обробка помилок та circuit breaker

Якщо Bitrix24 недоступний або відповідає з помилкою 503 Too Many Requests, шлюз не має сліпо повертати цю помилку клієнтам. Реалізуємо circuit breaker:

  • Closed (нормальна робота): запити проходять через шлюз до Bitrix24
  • Open (Bitrix24 недоступний): шлюз одразу повертає кешовані дані або помилку з зрозумілим повідомленням, не створюючи чергу очікуючих запитів
  • Half-Open (перевірка відновлення): періодично пробуємо тестовий запит до Bitrix24

Моніторинг та метрики

Шлюз експортує метрики у Prometheus/Grafana або пише у ELK:

  • Latency за методами (p50, p95, p99)
  • Error rate за кодом
  • Розмір черги запитів
  • Hit rate кеша
  • Поточне обмеження Bitrix24 (із заголовка X-RateLimit-Remaining)

Етапи розробки

Етап Вміст Термін
Проектування API шлюзу Схема ендпоїнтів, моделі даних, аутентифікація 1 тиждень
Базова інфраструктура OAuth2 з Bitrix24, кеш, rate limiter 1 тиждень
Маппінг ресурсів Ендпоїнти шлюзу → методи Bitrix24, трансформація 1–2 тижні
Batch-агрегація Об'єднання паралельних запитів 3–5 днів
Circuit breaker та відказостійкість Обробка деградації Bitrix24 3–5 днів
Документація API OpenAPI/Swagger специфікація 3 дні
Тестування та навантажувальні тести Коректність маппінгу, продуктивність під навантаженням 1 тиждень

API-шлюз особливо виправданий, коли з Bitrix24 працюють кілька додатків одночасно, або коли розробники клієнтів не мають знати специфіку Bitrix24 API. Для одного невеликого сценарію інтеграції — надлишково.