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

База знаний

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

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

Обновлено: 20.08.2026

Билеты и абонементы

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

Обзор методов

МетодПутьОписание
GET/eventsСписок мероприятий
GET/events/{event_id}/ticketsДоступные билеты на событие
POST/tickets/purchaseОформить покупку
GET/orders/{id}Статус заказа
DELETE/orders/{id}Вернуть билет
GET/season-passesАбонементы на сезон
POST/season-passes/{id}/purchaseКупить абонемент
GET/ordersСписок заказов пользователя

Список мероприятий

Эндпоинт
GET /events

Ближайшие матчи и события клуба, доступные для продажи билетов.

Параметры

ПараметрГдеТипОбязателенОписание
fromquerystring (ISO 8601)нетПоказывать события начиная с этой даты. По умолчанию — сегодня.
limitqueryintegerнетРазмер страницы, до 50.
Запрос
curl "https://api.virazh.io/v1/events?from=2026-09-01" \
  -H "Authorization: Bearer sk_test_51H..."
Ответ
{
  "data": [
    { "id": "evt_2213", "title": "Сокол — Комета", "starts_at": "2026-09-06T18:30:00Z" },
    { "id": "evt_2214", "title": "Сокол — Молния", "starts_at": "2026-09-14T18:30:00Z" }
  ]
}

Поля ответа

ПолеТипОписание
dataarray<Event>Список событий с полями id, title, starts_at.

Доступные билеты на событие

Эндпоинт
GET /events/{event_id}/tickets

Список тарифов и свободных мест по указанному событию.

Параметры

ПараметрГдеТипОбязателенОписание
event_idпутьstringдаИдентификатор события.
Запрос
curl https://api.virazh.io/v1/events/evt_2213/tickets \
  -H "Authorization: Bearer sk_test_51H..."
Ответ
{
  "event_id": "evt_2213",
  "tickets": [
    { "zone": "Фан-сектор", "price": 800, "available": 240 },
    { "zone": "Центральная трибуна", "price": 1500, "available": 96 }
  ]
}

Поля ответа

ПолеТипОписание
event_idstringИдентификатор события.
ticketsarray<TicketZone>Зоны с полями zone, price, available.

Оформить покупку

Эндпоинт
POST /tickets/purchase

Создаёт заказ на билет и резервирует место на 15 минут. Оплата подтверждается отдельным вебхуком payment.succeeded.

Параметры

ПараметрГдеТипОбязателенОписание
event_idтелоstringдаИдентификатор события.
user_idтелоstringдаИдентификатор покупателя.
zoneтелоstringдаНазвание ценовой зоны из /events/{event_id}/tickets.
promo_codeтелоstringнетПромокод, предварительно проверенный через /promo-codes/{code}/validate.
Запрос
curl https://api.virazh.io/v1/tickets/purchase \
  -X POST \
  -H "Authorization: Bearer sk_test_51H..." \
  -H "Content-Type: application/json" \
  -d '{
    "event_id": "evt_2213",
    "user_id": "usr_8f21c",
    "zone": "Фан-сектор"
  }'
Ответ
{
  "order_id": "ord_77a1",
  "status": "pending_payment",
  "amount": 800,
  "expires_at": "2026-08-25T12:00:00Z"
}

Поля ответа

ПолеТипОписание
order_idstringИдентификатор созданного заказа.
statusstringpending_payment сразу после создания.
amountintegerСумма к оплате в рублях.
expires_atstring (ISO 8601)Момент, когда резерв места снимется без оплаты.

Статус заказа

Эндпоинт
GET /orders/{id}

Проверка статуса оплаты и данных купленного билета — например, для показа QR-кода.

Параметры

ПараметрГдеТипОбязателенОписание
idпутьstringдаИдентификатор заказа.
Запрос
curl https://api.virazh.io/v1/orders/ord_77a1 \
  -H "Authorization: Bearer sk_test_51H..."
Ответ
{
  "order_id": "ord_77a1",
  "status": "paid",
  "qr_code": "https://tickets.virazh.io/qr/ord_77a1.png"
}

Поля ответа

ПолеТипОписание
order_idstringИдентификатор заказа.
statusstringpending_payment, paid, refunded или expired.
qr_codestringСсылка на QR-код билета, доступна после оплаты.

Вернуть билет

Эндпоинт
DELETE /orders/{id}

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

Параметры

ПараметрГдеТипОбязателенОписание
idпутьstringдаИдентификатор заказа.
Запрос
curl https://api.virazh.io/v1/orders/ord_77a1 \
  -X DELETE \
  -H "Authorization: Bearer sk_test_51H..."
Ответ
{
  "order_id": "ord_77a1",
  "status": "refunded",
  "refunded_amount": 800
}

Поля ответа

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

Абонементы на сезон

Эндпоинт
GET /season-passes

Доступные виды абонементов клуба с ценой, количеством включённых матчей и остатком мест по зонам.

Параметры

ПараметрГдеТипОбязателенОписание
seasonquerystringнетСезон в формате 2026-2027. По умолчанию — текущий.
Запрос
curl "https://api.virazh.io/v1/season-passes?season=2026-2027" \
  -H "Authorization: Bearer sk_test_51H..."
Ответ
{
  "data": [
    { "id": "sp_full_home", "name": "Полный домашний", "matches": 26, "price": 14000, "available": 340 },
    { "id": "sp_half_home", "name": "Половина сезона", "matches": 13, "price": 7800, "available": 512 }
  ]
}

Поля ответа

ПолеТипОписание
dataarray<SeasonPass>Виды абонементов с полями id, name, matches, price, available.

Купить абонемент

Эндпоинт
POST /season-passes/{id}/purchase

Оформляет покупку абонемента на пользователя. После оплаты билеты на все матчи сезона автоматически появляются в /orders.

Параметры

ПараметрГдеТипОбязателенОписание
idпутьstringдаИдентификатор вида абонемента.
user_idтелоstringдаИдентификатор покупателя.
zoneтелоstringдаЦеновая зона абонемента.
Запрос
curl https://api.virazh.io/v1/season-passes/sp_full_home/purchase \
  -X POST \
  -H "Authorization: Bearer sk_test_51H..." \
  -H "Content-Type: application/json" \
  -d '{ "user_id": "usr_8f21c", "zone": "Центральная трибуна" }'
Ответ
{
  "order_id": "ord_sp_2201",
  "status": "pending_payment",
  "amount": 14000,
  "matches_included": 26
}

Поля ответа

ПолеТипОписание
order_idstringИдентификатор заказа на абонемент.
statusstringpending_payment сразу после создания.
amountintegerСумма к оплате.
matches_includedintegerКоличество матчей, входящих в абонемент.

Список заказов пользователя

Эндпоинт
GET /orders

Все заказы на билеты и абонементы конкретного пользователя — для раздела «Мои билеты» в личном кабинете.

Параметры

ПараметрГдеТипОбязателенОписание
user_idquerystringдаИдентификатор пользователя.
statusquerystringнетФильтр по статусу заказа.
Запрос
curl "https://api.virazh.io/v1/orders?user_id=usr_8f21c" \
  -H "Authorization: Bearer sk_test_51H..."
Ответ
{
  "data": [
    { "order_id": "ord_77a1", "event": "Сокол — Комета", "status": "paid" },
    { "order_id": "ord_sp_2201", "event": "Абонемент 2026-2027", "status": "paid" }
  ]
}

Поля ответа

ПолеТипОписание
dataarray<OrderSummary>Заказы с полями order_id, event, status.

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

  • Резерв места на /tickets/purchase действует 15 минут — если оплата не подтвердится вебхуком payment.succeeded, место освобождается автоматически.
  • Возврат через DELETE /orders/{id} работает только до наступления события; точный срок отсечки задаётся в настройках билетной программы клуба.
  • QR-код в ответе /orders/{id} — постоянная ссылка, кешировать её нельзя дольше времени жизни заказа: после возврата билета она перестаёт быть валидной.
  • Абонемент (/season-passes) — это не отдельная сущность в заказах: после покупки билеты на все матчи сезона появляются в /orders как обычные заказы, привязанные к season_pass_id.