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

База знаний

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

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

Обновлено: 25.08.2026

Управление доступом

Выпуск и отзыв ключей API, настройка прав (scopes) для каждого интеграционного сценария. Рекомендуем заводить отдельный ключ на каждую интеграцию — так проще отследить источник проблемы и отозвать доступ точечно.

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

МетодПутьОписание
GET/api-keysСписок ключей
POST/api-keysВыпустить ключ
DELETE/api-keys/{id}Отозвать ключ
GET/api-keys/{id}/usageСтатистика использования ключа

Список ключей

Эндпоинт
GET /api-keys

Все активные и отозванные ключи API клуба с датой создания и списком scopes.

Запрос
curl https://api.virazh.io/v1/api-keys \
  -H "Authorization: Bearer sk_test_51H..."
Ответ
{
  "data": [
    { "id": "key_a1", "label": "CRM интеграция", "scopes": ["users:read", "loyalty:write"], "status": "active" },
    { "id": "key_b2", "label": "Мобильное приложение", "scopes": ["tickets:read"], "status": "active" }
  ]
}

Поля ответа

ПолеТипОписание
dataarray<ApiKey>Ключи с полями id, label, scopes, status. Секрет не возвращается.

Выпустить ключ

Эндпоинт
POST /api-keys

Создаёт новый ключ с ограниченным набором прав. Полное значение секрета показывается один раз в ответе — сохраните его сразу.

Параметры

ПараметрГдеТипОбязателенОписание
labelтелоstringдаПонятное название интеграции, для которой выпускается ключ.
scopesтелоarray<string>даСписок прав вида resource:read или resource:write.
Запрос
curl https://api.virazh.io/v1/api-keys \
  -X POST \
  -H "Authorization: Bearer sk_test_51H..." \
  -H "Content-Type: application/json" \
  -d '{
    "label": "Виджет расписания на сайте",
    "scopes": ["sports-school:read"]
  }'
Ответ
{
  "id": "key_c3",
  "label": "Виджет расписания на сайте",
  "secret": "sk_live_9f21...only_shown_once",
  "scopes": ["sports-school:read"]
}

Поля ответа

ПолеТипОписание
idstringИдентификатор ключа.
secretstringПолное значение ключа — показывается только один раз в этом ответе.
scopesarray<string>Выданные права.

Отозвать ключ

Эндпоинт
DELETE /api-keys/{id}

Немедленно деактивирует ключ — все запросы с ним начинают получать 401 unauthenticated. Действие необратимо.

Параметры

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

Поля ответа

ПолеТипОписание
idstringИдентификатор ключа.
statusstringrevoked при успешном отзыве.

Статистика использования ключа

Эндпоинт
GET /api-keys/{id}/usage

Количество запросов по дням и распределение по эндпоинтам — помогает найти ключ с аномальной активностью или лишними правами.

Параметры

ПараметрГдеТипОбязателенОписание
idпутьstringдаИдентификатор ключа.
daysqueryintegerнетГлубина периода в днях, до 90. По умолчанию — 7.
Запрос
curl https://api.virazh.io/v1/api-keys/key_a1/usage?days=7 \
  -H "Authorization: Bearer sk_test_51H..."
Ответ
{
  "key_id": "key_a1",
  "requests_total": 18420,
  "by_endpoint": [
    { "path": "/users", "count": 9100 },
    { "path": "/loyalty/{user_id}", "count": 6210 }
  ]
}

Поля ответа

ПолеТипОписание
requests_totalintegerОбщее количество запросов за период.
by_endpointarray<EndpointUsage>Разбивка по эндпоинтам: { path, count }.

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

  • Секрет ключа (secret) показывается один раз, в момент создания — платформа не хранит его в открытом виде и повторно показать не сможет, только отозвать и выпустить новый.
  • Заводите отдельный ключ на каждую интеграцию (сайт, мобильное приложение, CRM) — так проще отследить источник аномального трафика по /api-keys/{id}/usage и отозвать доступ точечно, не затронув остальные сервисы.
  • Scopes выдаются по принципу минимально необходимых прав: если виджету нужно только расписание тренировок, не выдавайте ему users:write или loyalty:write.