Бюро Цифровых Технологий

База знаний

Документация «Вираж»

База знаний по продуктам и API экосистемы «Вираж»: модули, методы, вебхуки — с примерами.

Обновлено: 25.08.2026

Вебхуки

Вебхуки уведомляют ваш сервер о событиях в реальном времени — оплате билета, изменении статуса лояльности, готовности рассылки. Это избавляет от постоянного опроса API: платформа сама вызовет ваш эндпоинт, как только что-то произойдёт.

Подпись запроса передаётся в заголовке X-Virazh-Signature в формате t=<таймстамп>, v1=<HMAC-SHA256>. Проверяйте подпись перед обработкой — без неё любой сторонний сервис сможет прислать вам поддельное событие.

Обзор событий

СобытиеОписание
payment.succeededОтправляется, когда оплата билета, абонемента или заказа в магазине прошла успешно.
loyalty.status_changedОтправляется при переходе пользователя на новый уровень программы лояльности.
broadcast.completedОтправляется, когда рассылка полностью доставлена и собрана итоговая статистика.
ticket.refundedОтправляется, когда заказ на билет или абонемент был возвращён — вручную или по правилам клуба.
training.attendance_markedОтправляется после того, как тренер закрыл посещаемость по тренировке — удобно для синхронизации с внешним журналом.
export.completedОтправляется, когда асинхронная задача экспорта готова — вместо опроса /exports/{id} по таймеру.

payment.succeeded

Отправляется, когда оплата билета, абонемента или заказа в магазине прошла успешно.

Payload
{
  "event": "payment.succeeded",
  "order_id": "ord_77a1",
  "amount": 800,
  "user_id": "usr_8f21c"
}

Поля payload

ПолеТипОписание
order_idstringИдентификатор оплаченного заказа.
amountintegerОплаченная сумма в рублях.
user_idstringИдентификатор покупателя.

loyalty.status_changed

Отправляется при переходе пользователя на новый уровень программы лояльности.

Payload
{
  "event": "loyalty.status_changed",
  "user_id": "usr_8f21c",
  "from": "silver",
  "to": "gold"
}

Поля payload

ПолеТипОписание
user_idstringИдентификатор пользователя.
fromstringУровень до перехода.
tostringУровень после перехода.

broadcast.completed

Отправляется, когда рассылка полностью доставлена и собрана итоговая статистика.

Payload
{
  "event": "broadcast.completed",
  "broadcast_id": "bcast_9021",
  "delivered": 4310,
  "opened": 2144
}

Поля payload

ПолеТипОписание
broadcast_idstringИдентификатор рассылки.
deliveredintegerИтоговое количество доставок.
openedintegerИтоговое количество открытий.

ticket.refunded

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

Payload
{
  "event": "ticket.refunded",
  "order_id": "ord_77a1",
  "refunded_amount": 800
}

Поля payload

ПолеТипОписание
order_idstringИдентификатор возвращённого заказа.
refunded_amountintegerВозвращённая сумма в рублях.

training.attendance_marked

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

Payload
{
  "event": "training.attendance_marked",
  "training_id": "tr_9911",
  "team_id": "team_2013",
  "present": 18,
  "total": 22
}

Поля payload

ПолеТипОписание
training_idstringИдентификатор тренировки.
team_idstringИдентификатор команды.
presentintegerСколько игроков отмечены как присутствовавшие.
totalintegerОбщее количество игроков в составе.

export.completed

Отправляется, когда асинхронная задача экспорта готова — вместо опроса /exports/{id} по таймеру.

Payload
{
  "event": "export.completed",
  "export_id": "exp_4471",
  "file_url": "https://files.virazh.io/exports/exp_4471.csv"
}

Поля payload

ПолеТипОписание
export_idstringИдентификатор задачи экспорта.
file_urlstringСсылка на готовый CSV-файл.

Повторные попытки

Если ваш сервер не ответил 200 OK в течение 5 секунд, платформа повторит доставку ещё до 5 раз с экспоненциальной задержкой (до 30 минут между попытками). Обработчик должен быть идемпотентным — один и тот же event_id может прийти дважды.

Полезно знать

  • Возвращайте 200 OK сразу после сохранения события во внутреннюю очередь — тяжёлую обработку выполняйте асинхронно, иначе платформа посчитает доставку неуспешной по таймауту.
  • Список подписанных URL и событий настраивается в админ-панели клуба, в разделе «Настройки → Интеграции».