Skip to content

Интеграции

можно. поддерживает пользовательские вебхуки — HTTP-запросы, которые сервер отправляет на ваш URL при изменениях в системе.

Как это работает

При наступлении события (создание/изменение/удаление флага, сегмента, стратегии и т.д.) сервер отправляет HTTP POST на указанный URL. Отправка происходит асинхронно, после коммита транзакции в БД.

Тело запроса формируется по заданному вами шаблону с подстановкой переменных события.

Настройка вебхука

Через веб-панель

Раздел ИнтеграцииПодключить. Поля:

ПолеОписание
НазваниеЧеловекочитаемое имя вебхука
URLHTTPS-адрес, куда сервер отправит POST
ЗаголовкиПроизвольные HTTP-заголовки (JSON-объект). По умолчанию: Content-Type: application/json
ТелоШаблон тела запроса. Использует переменные события. Без тела — запрос без тела
СобытияКакие системные события вызывают отправку
АктивенВключён / выключен

Через REST API

Создание:

bash
curl -X POST "http://localhost:8080/api/v1/integrations" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My webhook",
    "enabled": true,
    "type": "custom_webhook",
    "configJson": "{\"url\":\"https://my-server.example.com/hooks\",\"headers\":{\"Content-Type\":\"application/json\"},\"body\":\"{ \\\"event\\\": \\\"[[events.action]]\\\", \\\"resource\\\": \\\"[[events.resourceName]]\\\" }\"}",
    "eventSubscriptionsJson": "[\"flag.created\",\"flag.updated\",\"flag.archived\"]"
  }'

Просмотр:

bash
curl "http://localhost:8080/api/v1/integrations" \
  -H "Authorization: Bearer $TOKEN"

Обновление:

bash
curl -X PUT "http://localhost:8080/api/v1/integrations/1" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"enabled": false, "name": "My webhook", "type": "custom_webhook", "configJson": "...", "eventSubscriptionsJson": "..."}'

Удаление:

bash
curl -X DELETE "http://localhost:8080/api/v1/integrations/1" \
  -H "Authorization: Bearer $TOKEN"

Типы событий

СобытиеКогда
flag.createdСоздан новый флаг
flag.updatedИзменены поля флага
flag.archivedФлаг отправлен в архив
flag.unarchivedФлаг восстановлен из архива
flag.deletedФлаг удалён
segment.createdСоздан новый сегмент
segment.updatedИзменены правила сегмента
segment.deletedСегмент удалён
strategy.updatedИзменена стратегия флага
apikey.createdСоздан API-ключ
apikey.updatedИзменён API-ключ
apikey.deletedAPI-ключ удалён
environment.createdСоздано окружение
environment.updatedИзменено окружение
environment.deletedОкружение удалено
project.updatedИзменены настройки проекта

Переменные шаблона тела

Подстановки, которые заменяются при отправке вебхука:

  • events.action — код события (flag.created, flag.updated и т.д.)
  • events.resourceType — тип ресурса (flag, segment, strategy, apikey, environment, project)
  • events.resourceId — ID ресурса (число)
  • events.resourceName — имя/ключ ресурса
  • events.details — детали изменения (текст)
  • events.projectId — ID проекта
  • events.user.id — ID пользователя
  • events.user.name — имя пользователя
  • events.user.email — email пользователя
  • events.timestamp — время события (ISO 8601)

В шаблоне тела переменные обрамляются двойными фигурными скобками.

При передаче JSON-конфига через API используйте двойные квадратные скобки: [[events.action]].

Особенности

  • HTTPS only — URL должен использовать HTTPS, без loopback/localhost
  • Таймаут — 30 секунд на запрос
  • Fire-and-forget — нет повторных попыток при ошибке. Последняя ошибка сохраняется в lastError
  • Асинхронно — отправка не блокирует пользовательский запрос
  • Лимиты — количество вебхуков ограничено (зависит от плана)

Что дальше?

  • REST API — полная документация по API
  • Аудит — история всех изменений

Released under the AGPL v3.0 License.