Перейти к основному содержимому

🧾 Типы событий

Что это. Тип события — строка, по которой подписка решает, доставлять событие или нет. Она же уходит в заголовок X-Webhook-Type исходящего запроса.

Когда нужно. Когда вы заводите исходящий вебхук и выбираете, на что подписаться.

Каталога событий продукта нет

В сервисе вебхуков нет перечня «поддерживаемых событий Fixorix». Тип события — произвольная строка, её задаёт та система, которая публикует событие, а не сервис вебхуков. Ни один сервис Fixorix пока в этот контур события не публикует, поэтому готового списка типов, на которые можно подписаться, сейчас просто не существует.

Всё, что описано ниже, — правила, по которым типы устроены, а не список доступных значений.

Как устроен тип события

Подписка хранит набор строк-типов. Когда в источник событий приходит событие, сервис сравнивает его тип со строками подписки:

  • сравнение точное, по всей строке — шаблонов вида ticket.* нет;
  • фильтров по содержимому события нет: подписка смотрит только на тип;
  • у каждой подписки свой набор типов, поэтому одно событие может породить несколько доставок — по одной на каждую подписанную на этот тип подписку того же проекта и того же источника.

Конверт события

В доставку уходит весь конверт события целиком, байт в байт — не только полезная нагрузка.

ПолеОбязательноОписание
idдаИдентификатор события. Уходит в заголовок X-Webhook-Id, по нему получатель дедуплицирует повторы
projectIdдаUUID проекта. Уходит в заголовок X-Webhook-Project-Id
typeдаТип события. Уходит в заголовок X-Webhook-Type
createdAtнетМомент возникновения события, ISO-8601
{
"id": "evt-20260824-000123",
"projectId": "1f2e3d4c-5b6a-7890-abcd-ef1234567890",
"type": "ticket.created",
"createdAt": "2026-08-24T10:15:30Z"
}

Событие с пустым телом, с невалидным JSON, без обязательных полей, с неверным форматом идентификатора или типа, с не-UUID в поле проекта или с некорректной датой доставлено не будет — оно отбраковывается до создания доставки.

Ограничения формата

ЧтоФорматКуда попадает
Тип события[A-Za-z0-9][A-Za-z0-9._:@-]{0,127}Заголовок X-Webhook-Type и тег метрики
Идентификатор события[A-Za-z0-9][A-Za-z0-9._:@-]{0,254}Заголовок X-Webhook-Id
Имя источника событий[A-Za-z0-9][A-Za-z0-9._-]{0,248}Настройка подписки

Ограничение не косметическое. Тип и идентификатор уходят в HTTP-заголовки: перевод строки внутри значения расщепил бы запрос. Кроме того, тип становится тегом метрики — неограниченный набор значений раздул бы их количество.

Тип, не подходящий по формату, отклоняется при регистрации подписки ошибкой 400 invalid_type. При снятии типа с подписки формат не проверяется — снять можно и то, что было записано раньше.

Единственный встроенный тип

В сервисе зашито ровно одно значение — webhook.test. Это тип по умолчанию для тестовой отправки: если при тестовой отправке не указать свой тип, доставка уйдёт именно с ним.

Коротко

Хотите увидеть работающую доставку прямо сейчас — отправьте тестовое событие. Это единственный способ, пока события продукта не публикуются.

Как выбирать имена типов

Раз каталога нет, имена придумывает публикующая сторона. Разумные правила:

  • разделяйте части точкой: сначала объект, потом действие — ticket.created, chat.status.changed;
  • держитесь одного языка и одного регистра во всей интеграции;
  • пробелов, кириллицы и переводов строки в типе быть не может — их не пропустит проверка формата;
  • не кладите в тип идентификаторы конкретных объектов: каждое новое значение — отдельный ряд в метриках;
  • 128 символов — верхняя граница, но короткое имя читается в журнале лучше.

Служебные наборы значений

Их сервис действительно перечисляет — они встречаются в ответах управляющего API:

НаборЗначения
Статус доставкиPENDING, IN_PROGRESS, DELIVERED, FAILED, EXHAUSTED
Статус вебхукаACTIVE, PAUSED
Состояние секрета подписиPRIMARY, SECONDARY
Способ проверки секрета на приёмеHEADER, FIELD

Что означает каждый статус доставки — в таблице на странице Исходящие вебхуки.

Что есть в продукте вместо каталога

События внутри платформы существуют — на них реагируют Сценарии: «Сообщение от клиента», «Обращение создано», «Сменился статус обращения», «Тикет создан», «Комментарий клиента», «Подписка оформлена», «Превышен AI-лимит» и другие. Полные списки — в разделе Триггеры.

Это другой контур

События сценариев и события вебхуков — не одно и то же. Сценарии реагируют на них внутри платформы; в контур вебхуков эти события пока не попадают, и подписаться на них по именам из редактора сценариев нельзя. Ориентироваться на них при проектировании интеграции можно — рассчитывать, что подписка на такое имя сработает, нельзя.

Ограничения

  • Каталога типов событий продукта нет.
  • Сервисы Fixorix пока не публикуют события в контур вебхуков.
  • Подписка сравнивает тип целиком: шаблоны и подстановочные знаки не поддерживаются.
  • Фильтровать доставку по содержимому события нельзя — только по типу.
  • Схема полезной нагрузки события сервисом не проверяется: обязательны только поля конверта.

Вебхуки · Исходящие вебхуки · Входящие вебхуки · Вебхуки на дашборде · Триггеры сценариев