Клуб

API-доступ (ключи для сайта и программ)

Для руководителя, администратора, тренера и программиста: зачем нужны ключи, как выдать доступ в кабинете и как подключить внешнюю систему к /api/v1/.

Что такое API-доступ простыми словами

API — способ, при котором ваша программа (сайт, 1С, приложение) сама запрашивает данные FightCRM по правилам, без того чтобы сотрудник каждый раз входил в кабинет. Это удобно для синхронизации клиентов, выгрузки расписания на сайт, автоматической отметки из сторонней системы и т.п.

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

Руководителю клуба

Решение «подключать ли API» — управленческое: нужен ли обмен с сайтом, бухгалтерией, мобильным приложением или партнёрской системой.

  • В тарифе должен быть модуль «API-доступ» — см. [**«Тариф FightCRM»**](${DOCS_TARIF}) и [**«Модули в подписке»**](${DOCS_MODULI}). Без модуля ключи создать нельзя (старые настройки можно просматривать).
  • Назначьте одного ответственного администратора с правом на интеграции; секреты ключей не рассылайте в мессенджерах — только через защищённый канал IT.
  • Для каждой интеграции лучше отдельный ключ (сайт, 1С, тестовый стенд) — так проще отключить одну систему, не ломая остальные.
  • Ограничения по филиалам в ключе касаются структуры и сотрудников, не списка всех клиентов клуба — это важно при аудите доступа.

Администратору: как выдать ключ

Путь: Настройки → «Интеграции» → вкладка «API-доступ» (/club/settings/integrations?sub=api). Нужно право «Управление API» (в матрице ролей — блок интеграций; см. [**«Права и доступ»**](${DOCS_PRAVA})).

  • Новый ключ — имя (например «Сайт клуба»), матрица Доступ (чтение / создание / изменение / удаление по разделам), при необходимости ограничение по клубу (филиалы, направления, сотрудники — каждый фильтр включается отдельно), срок действия.
  • Секрет (`fcrm_live_…`) показывается один раз при создании или обновлении секрета — скопируйте и передайте программисту; в кабинете хранится только префикс для узнавания ключа.
  • Обновить секрет — старый ключ сразу перестаёт работать (если подозреваете утечку). Удалить — ключ исчезает из списка и перестаёт приниматься API.
  • В таблице ключей колонка «Доступ» показывает краткую сводку; полная настройка — при редактировании.

Тренеру

Раздел API-доступ в настройках не нужен для ежедневной работы: расписание, клиенты и отметки по-прежнему в меню кабинета.

  • Пункта «Интеграции → API» у вас может не быть — это нормально, если роль не включает управление интеграциями.
  • Если клуб подключил сайт или приложение через API, ваши экраны не меняются — данные просто синхронизируются «за кадром».
  • Вопросы «почему на сайте не то расписание» или «кто выдал доступ программе» — к администратору или руководителю, не к поддержке Wazzup/Novofon.

Программисту и IT-специалисту

Внешний интерфейс FightCRM — REST API версии v1. Запросы выполняются с сервера интеграции (не из браузера пользователя).

  • Базовый адрес: `https://ваш-клуб.fightcrm.ru/api/v1/` (тот же хост, что и кабинет клуба; `ваш-клуб` — ваш поддомен).
  • Авторизация: заголовок `Authorization: Bearer fcrm_live_…` — секрет выдаёт администратор клуба. Не используйте cookie сессии сотрудника и не передавайте ключ в URL.
  • Права ключа задаются наборами (клиенты, расписание, структура и т.д.) и CRUD в кабинете — на сервере проверяется каждый запрос; ответ 403 значит «ключ есть, но права на операцию нет».
  • Ограничения по клубу (филиал, зал, направление, сотрудник) фильтруют соответствующие разделы; доступ к клиентам по ключу — на весь клуб, если явно не сужен другими правилами продукта.
  • Срок ключа: после `expiresAt` — 401; отозванный или удалённый ключ — тоже 401 (без детализации причины).
  • Ошибки в JSON: поля `code`, `message`, `correlation_id` — последнее передавайте в поддержку при разборе инцидента.
  • Спецификация: OpenAPI — `GET /docs/api/openapi-v1.yaml` (или `docs/openapi-v1.yaml`; `npm run generate:openapi-v1`). Changelog: `docs/api-v1-changelog.md`. Postman: `docs/postman/fightcrm-v1.json`.
  • Tools Bridge (AI-агенты): `GET /api/agent/v1/tools` и `POST /api/agent/v1/tools/invoke`. OpenAPI: `GET /docs/api/openapi-agent-tools.yaml`. Руководства: `docs/tools-bridge-guide.md`, `docs/external-agent-recipe.md`. Матрица: `docs/integrator-bundle-matrix.md`; sandbox: `docs/integrator-sandbox-playbook.md`; ошибки: `docs/integrator-error-catalog.md`.
  • Исходящие webhooks (v1b): push-события на HTTPS URL партнёра (клиент, абонемент, оплата, отметка). Настройка — Настройки → Интеграции → Webhooks; журнал доставок — `GET /api/v1/integrations/webhooks/deliveries` (bundle `api.integrations.webhooks.read`). См. `docs/integrator-guide.md`.
  • Лимиты запросов и защита от перебора включены на стороне платформы — проектируйте интеграцию с повторами и кэшем, не опрашивайте API каждую секунду без нужды.

Типовые сценарии

  • Сайт клуба — чтение расписания и групп; запись клиента или заявка — только если ключу выдано создание в нужных разделах.
  • 1С / учёт — чтение клиентов и продаж; изменение — отдельным ключом с минимально нужными правами.
  • Тестовый стенд — отдельный ключ с коротким сроком и узким доступом; после отладки — удалить или обновить секрет.

Безопасность (кратко)

  • Ключ = пароль программы: храните в переменных окружения сервера, не в коде на GitHub и не в мобильном приложении пользователя.
  • Выдавайте минимум прав: только чтение, если интеграции не нужно ничего менять.
  • При увольнении подрядчика или смене CMS — обновите секрет или удалите ключ.
Детали по тарифу и модулям уточняйте в настройках клуба или у поддержки FightCRM: материал носит обзорный характер.