Обновлено: 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Ближайшие матчи и события клуба, доступные для продажи билетов.
Параметры
| Параметр | Где | Тип | Обязателен | Описание |
|---|---|---|---|---|
from | query | string (ISO 8601) | нет | Показывать события начиная с этой даты. По умолчанию — сегодня. |
limit | query | integer | нет | Размер страницы, до 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" }
]
}Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | array<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_id | string | Идентификатор события. |
tickets | array<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_id | string | Идентификатор созданного заказа. |
status | string | pending_payment сразу после создания. |
amount | integer | Сумма к оплате в рублях. |
expires_at | string (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_id | string | Идентификатор заказа. |
status | string | pending_payment, paid, refunded или expired. |
qr_code | string | Ссылка на 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_id | string | Идентификатор заказа. |
status | string | refunded при успешном возврате. |
refunded_amount | integer | Возвращённая сумма в рублях. |
Абонементы на сезон
GET /season-passesДоступные виды абонементов клуба с ценой, количеством включённых матчей и остатком мест по зонам.
Параметры
| Параметр | Где | Тип | Обязателен | Описание |
|---|---|---|---|---|
season | query | string | нет | Сезон в формате 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 }
]
}Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | array<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_id | string | Идентификатор заказа на абонемент. |
status | string | pending_payment сразу после создания. |
amount | integer | Сумма к оплате. |
matches_included | integer | Количество матчей, входящих в абонемент. |
Список заказов пользователя
GET /ordersВсе заказы на билеты и абонементы конкретного пользователя — для раздела «Мои билеты» в личном кабинете.
Параметры
| Параметр | Где | Тип | Обязателен | Описание |
|---|---|---|---|---|
user_id | query | string | да | Идентификатор пользователя. |
status | query | string | нет | Фильтр по статусу заказа. |
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" }
]
}Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | array<OrderSummary> | Заказы с полями order_id, event, status. |
Полезно знать
- Резерв места на
/tickets/purchaseдействует 15 минут — если оплата не подтвердится вебхукомpayment.succeeded, место освобождается автоматически. - Возврат через
DELETE /orders/{id}работает только до наступления события; точный срок отсечки задаётся в настройках билетной программы клуба. - QR-код в ответе
/orders/{id}— постоянная ссылка, кешировать её нельзя дольше времени жизни заказа: после возврата билета она перестаёт быть валидной. - Абонемент (
/season-passes) — это не отдельная сущность в заказах: после покупки билеты на все матчи сезона появляются в/ordersкак обычные заказы, привязанные кseason_pass_id.




