HTTP API OneFlag
OneFlag публикуется как приложение, а не как библиотека: экспортируемых классов у пакета нет, публичный контракт - это HTTP-эндпоинты. Здесь их полный список.
Разделы
- Управление флагами - создание, изменение и удаление флагов, окружения, аудит
- Оценка флагов - оценка, снимок конфигурации, поток изменений
- Служебные эндпоинты - здоровье, метрики, сведения о потоке
Аутентификация
Защищённые эндпоинты принимают два вида доступа:
| Способ | Заголовок или кука | Кому |
|---|---|---|
| Ключ SDK | Authorization: Bearer <ONEFLAG_SDK_KEY> | Приложениям и скриптам |
| Токен входа | httpOnly-кука, выдаётся POST /login | Дашборду |
Проверяются оба, порядок для итога не важен. Без валидного доступа возвращается 401 с телом application/problem+json.
Формат ошибок
Все ошибки API отдаются по RFC 9457:
Content-Type: application/problem+jsonjson
{ "type": "about:blank", "title": "Not Found", "status": 404, "detail": "Окружение qa не найдено" }| Код | Когда |
|---|---|
400 | Тело не является объектом JSON либо не заполнено обязательное поле |
401 | Нет валидного ключа SDK и нет токена входа |
404 | Флаг или окружение не найдены |
405 | Метод не поддерживается точкой маршрута |
Выбор окружения
Окружение берётся в следующем порядке:
- параметр строки запроса
env; - поле
environmentв теле запроса (там, где тело есть); ONEFLAG_DEFAULT_ENVIRONMENT.
Несуществующее окружение - 404.
Сводка
| Метод и путь | Раздел |
|---|---|
GET /api/flags?env=dev | Управление |
POST /api/flags | Управление |
GET /api/flags/{ключ} | Управление |
PATCH, PUT /api/flags/{ключ}?env=dev | Управление |
DELETE /api/flags/{ключ} | Управление |
GET /api/environments | Управление |
GET /api/audit?limit=50 | Управление |
POST /api/evaluate | Оценка |
POST /api/evaluate/all | Оценка |
GET /api/snapshot?env=dev | Оценка |
GET /stream | Оценка |
GET /healthz | Служебные |
GET /metrics | Служебные |
GET /stream/info | Служебные |
Маршруты дашборда (/, /login, /logout, /ui/...) отвечают фрагментами HTML для htmx и частью публичного контракта не считаются.
