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

База знаний

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

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

Обновлено: 15.08.2026

Промокоды

Скидочные и партнёрские коды для билетов, абонементов и магазина. Один код можно ограничить по сроку действия, количеству активаций и списку продуктов.

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

МетодПутьОписание
GET/promo-codesСписок промокодов
POST/promo-codes/{code}/validateПроверить код перед оплатой
POST/promo-codesСоздать промокод
DELETE/promo-codes/{code}Деактивировать код

Список промокодов

Эндпоинт
GET /promo-codes

Активные и завершённые промокампании клуба.

Запрос
curl https://api.virazh.io/v1/promo-codes \
  -H "Authorization: Bearer sk_test_51H..."
Ответ
{
  "data": [
    { "code": "FAN2026", "discount_percent": 15, "uses_left": 340 },
    { "code": "SCHOOL10", "discount_percent": 10, "uses_left": 87 }
  ]
}

Поля ответа

ПолеТипОписание
dataarray<PromoCode>Коды с полями code, discount_percent, uses_left.

Проверить код перед оплатой

Эндпоинт
POST /promo-codes/{code}/validate

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

Параметры

ПараметрГдеТипОбязателенОписание
codeпутьstringдаПромокод в верхнем регистре.
order_amountтелоintegerдаСумма заказа до скидки, в рублях.
Запрос
curl https://api.virazh.io/v1/promo-codes/FAN2026/validate \
  -X POST \
  -H "Authorization: Bearer sk_test_51H..." \
  -H "Content-Type: application/json" \
  -d '{ "order_amount": 1500 }'
Ответ
{
  "code": "FAN2026",
  "valid": true,
  "discount_amount": 225
}

Поля ответа

ПолеТипОписание
validbooleanДействителен ли код для данного заказа.
discount_amountintegerРазмер скидки в рублях.

Создать промокод

Эндпоинт
POST /promo-codes

Регистрирует новый код со скидкой в процентах или фиксированной сумме, сроком действия и опциональным ограничением по продуктам.

Параметры

ПараметрГдеТипОбязателенОписание
codeтелоstringдаУникальный код в верхнем регистре.
discount_percentтелоintegerнетСкидка в процентах — либо это поле, либо discount_amount.
discount_amountтелоintegerнетФиксированная скидка в рублях.
max_usesтелоintegerнетМаксимум активаций. Без ограничения, если не указано.
expires_atтелоstring (ISO 8601)нетДата окончания действия кода.
applies_toтелоarray<string>нетОграничение по продуктам: tickets, shop, season-passes.
Запрос
curl https://api.virazh.io/v1/promo-codes \
  -X POST \
  -H "Authorization: Bearer sk_test_51H..." \
  -H "Content-Type: application/json" \
  -d '{
    "code": "PLAYOFF15",
    "discount_percent": 15,
    "max_uses": 500,
    "expires_at": "2026-10-01T00:00:00Z",
    "applies_to": ["tickets"]
  }'
Ответ
{
  "code": "PLAYOFF15",
  "discount_percent": 15,
  "uses_left": 500
}

Поля ответа

ПолеТипОписание
codestringКод промокода.
discount_percentintegerСкидка в процентах, если задана.
uses_leftintegerОставшееся количество активаций.

Деактивировать код

Эндпоинт
DELETE /promo-codes/{code}

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

Параметры

ПараметрГдеТипОбязателенОписание
codeпутьstringдаПромокод для деактивации.
Запрос
curl https://api.virazh.io/v1/promo-codes/PLAYOFF15 \
  -X DELETE \
  -H "Authorization: Bearer sk_test_51H..."
Ответ
{
  "code": "PLAYOFF15",
  "status": "deactivated"
}

Поля ответа

ПолеТипОписание
codestringПромокод.
statusstringdeactivated при успешном отключении.

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

  • Всегда вызывайте /promo-codes/{code}/validate перед показом скидки в интерфейсе — код может закончиться или истечь между загрузкой страницы и оформлением заказа.
  • Один код применяется к одному заказу целиком; комбинировать два промокода в одной покупке нельзя.
  • Партнёрские коды (с префиксом клуба) считают активации отдельно от собственных промокампаний — это отражено в поле uses_left каждого кода.