Secrets Service
Версионируемые переменные и секреты компании (scoped overrides, шифрование)
Интерактивная документация¶
Info
Интерактивная документация сервиса:
Доступно полное описание всех эндпоинтов с возможностью тестирования.
Эндпоинты¶
GET /¶
Root
Ответ¶
- 200: Successful Response
GET /.well-known/apple-app-site-association¶
Serve Apple App Site Association
Ответ¶
- 200: Successful Response
GET /api/i18n/{locale}¶
Get Translations
Параметры¶
locale(path, string) (обязательно):
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /api/platform/file-types¶
Get File Types
Ответ¶
- 200: Successful Response
GET /health¶
Health
Ответ¶
- 200: Successful Response
GET /manifest.json¶
Serve Manifest
Ответ¶
- 200: Successful Response
GET /offline.html¶
Serve Offline
Ответ¶
- 200: Successful Response
GET /secrets/api/auth/callback/{provider_name}¶
Auth Callback
Callback после OAuth (query); Apple при scope name/email шлёт POST form_post.
Параметры¶
provider_name(path, string) (обязательно):code(query, string) (обязательно):state(query, string) (обязательно):error(query):user(query):
Ответ¶
- 200: Successful Response
- 422: Validation Error
POST /secrets/api/auth/callback/{provider_name}¶
Auth Callback Post
Sign in with Apple: response_mode=form_post — code/state/user в application/x-www-form-urlencoded.
Параметры¶
provider_name(path, string) (обязательно):
Запрос¶
Content-Type: application/x-www-form-urlencoded
{
"code": <string> (обязательно), //
"state": <string> (обязательно), //
"error": <any>, //
"user": <any>, //
}
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/auth/demo/status¶
Demo Auth Status
Публичный флаг: включён ли демо-вход (без утечки email, если выключено).
Ответ¶
- 200: Successful Response
GET /secrets/api/auth/grafana-check¶
Grafana Auth Check
Проверка доступа к Grafana: только пользователи company_id == 'system'.
Вызывается Traefik ForwardAuth (Middleware на Ingress grafana), не браузером напрямую. AuthMiddleware уже отработал к моменту вызова и положил token_data в request.state.
При успехе возвращает 200 + заголовок X-Auth-User (email или user_id), который Traefik пробрасывает в Grafana как auth.proxy (GF_AUTH_PROXY_HEADER_NAME).
Ответ¶
- 200: Successful Response
POST /secrets/api/auth/login/demo¶
Login Demo
Вход демо-пользователя (cookies как после OAuth).
Запрос¶
Content-Type: application/json
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/auth/login/{provider_name}¶
Start Auth
Начинает процесс авторизации с выбранным провайдером.
Аргументы: request: FastAPI request для определения redirect_uri provider_name: Имя провайдера (yandex, google, etc.) redirect_uri: URI для возврата после авторизации (опционально)
Возвращает: JSON с auth_url для редиректа на стороне клиента
Параметры¶
provider_name(path, string) (обязательно):redirect_uri(query):return_path(query):
Ответ¶
- 200: Successful Response
- 422: Validation Error
POST /secrets/api/auth/logout¶
Logout
Завершает сессию: берёт session_id из query (опционально) или из JWT в cookie, удаляет запись сессии и снимает auth_token/session_id в браузере.
Параметры¶
session_id(query):
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/auth/me¶
Get Current User
Возвращает полную информацию о текущем авторизованном пользователе.
Ответ¶
- 200: Successful Response
PUT /secrets/api/auth/me¶
Update Current User
Обновляет данные текущего пользователя.
Запрос¶
Content-Type: application/json
{
"name": <any>, //
"first_name": <any>, //
"last_name": <any>, //
"emails": <any>, //
"phones": <any>, //
"messengers": <any>, //
"avatar_url": <any>, //
"bio": <any>, //
"ui_preferences": <any>, //
}
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/auth/me/attrs/{service}¶
Get Service Attrs
Получает service-specific атрибуты для текущего пользователя.
Аргументы: service: Имя сервиса (crm, agents, rag)
Параметры¶
service(path, string) (обязательно):
Ответ¶
- 200: Successful Response
- 422: Validation Error
PUT /secrets/api/auth/me/attrs/{service}¶
Update Service Attrs
Обновляет service-specific атрибуты для текущего пользователя (merge).
Аргументы: service: Имя сервиса (crm, agents, rag) attrs: Атрибуты для обновления (merge с существующими)
Параметры¶
service(path, string) (обязательно):
Запрос¶
Content-Type: application/json
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/auth/providers¶
Get Auth Providers
Возвращает список доступных провайдеров авторизации
Ответ¶
- 200: Successful Response
GET /secrets/api/auth/status¶
Auth Status
Возвращает статус системы авторизации
Ответ¶
- 200: Successful Response
POST /secrets/api/auth/switch-company¶
Switch Company
Переключает активную компанию пользователя и перевыпускает auth_token.
Запрос¶
Content-Type: application/json
Ответ¶
- 200: Successful Response
- 422: Validation Error
POST /secrets/api/calendar/events¶
Create Calendar Event
Запрос¶
Content-Type: application/json
{
"title": <string> (обязательно), //
"kind": <string>, //
"source": <any>, //
"source_id": <any>, //
"namespace": <any>, //
"description": <any>, //
"location": <any>, //
"status": <any>, //
"timezone": <string>, //
"all_day": <boolean>, //
"start_at": <string> (обязательно), //
"end_at": <string> (обязательно), //
"attendees": <array>, //
"recurrence_rule": <any>, //
"recurrence_id": <any>, //
"series_id": <any>, //
"deep_link": <any>, //
"metadata": <object>, //
}
Ответ¶
- 200: Successful Response
- 422: Validation Error
POST /secrets/api/calendar/events/list¶
List Calendar Events
Запрос¶
Content-Type: application/json
{
"start_at": <string> (обязательно), //
"end_at": <string> (обязательно), //
"include_sources": <any>, //
"limit": <integer>, //
}
Ответ¶
- 200: Successful Response
- 422: Validation Error
DELETE /secrets/api/calendar/events/{event_id}¶
Delete Calendar Event
Параметры¶
event_id(path, string) (обязательно):
Ответ¶
- 200: Successful Response
- 422: Validation Error
PUT /secrets/api/calendar/events/{event_id}¶
Update Calendar Event
Параметры¶
event_id(path, string) (обязательно):
Запрос¶
Content-Type: application/json
{
"title": <string> (обязательно), //
"kind": <string>, //
"source": <any>, //
"source_id": <any>, //
"namespace": <any>, //
"description": <any>, //
"location": <any>, //
"status": <any>, //
"timezone": <string>, //
"all_day": <boolean>, //
"start_at": <string> (обязательно), //
"end_at": <string> (обязательно), //
"attendees": <array>, //
"recurrence_rule": <any>, //
"recurrence_id": <any>, //
"series_id": <any>, //
"deep_link": <any>, //
"metadata": <object>, //
}
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/calendar/integrations¶
List Calendar Integrations
Ответ¶
- 200: Successful Response
POST /secrets/api/calendar/integrations/connect¶
Connect Calendar Integration
Запрос¶
Content-Type: application/json
{
"provider": <any> (обязательно), //
"username": <any>, //
"access_token": <string> (обязательно), //
"refresh_token": <any>, //
"expires_at": <any>, //
"scope": <any>, //
"token_type": <any>, //
"default_calendar_id": <any>, //
"sync_enabled": <boolean>, //
"sync_inbound_enabled": <boolean>, //
"sync_outbound_enabled": <boolean>, //
"notifications_enabled": <boolean>, //
}
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/calendar/integrations/google/callback¶
Complete Google Calendar Oauth
Параметры¶
state(query, string) (обязательно):code(query):error(query):
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/calendar/integrations/google/start¶
Start Google Calendar Oauth
Параметры¶
return_path(query, string):
Ответ¶
- 200: Successful Response
- 422: Validation Error
DELETE /secrets/api/calendar/integrations/{provider}¶
Disconnect Calendar Integration
Параметры¶
provider(path, string) (обязательно):
Ответ¶
- 200: Successful Response
- 422: Validation Error
POST /secrets/api/calendar/sync¶
Sync Calendar
Запрос¶
Content-Type: application/json
{
"provider": <any> (обязательно), //
"start_at": <string> (обязательно), //
"end_at": <string> (обязательно), //
}
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/companies/me¶
Get My Companies
Возвращает компании текущего пользователя с subdomain и ролями.
Ответ¶
- 200: Successful Response
POST /secrets/api/push/subscribe¶
Subscribe
Подписаться на push-уведомления (web_vapid или ios_apns).
Запрос¶
Content-Type: application/json
{
"transport": <string>, //
"endpoint": <string>, //
"keys": <object>, //
"platform": <string>, //
}
Ответ¶
- 200: Successful Response
- 422: Validation Error
POST /secrets/api/push/test-send¶
Test Send Push
Отправить тестовое push-уведомление самому себе. Требует авторизации и наличия подписки.
Запрос¶
Content-Type: application/json
Ответ¶
- 200: Successful Response
- 422: Validation Error
DELETE /secrets/api/push/unsubscribe¶
Unsubscribe
Отписаться от push-уведомлений
Параметры¶
endpoint(query, string) (обязательно):
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/push/vapid-public-key¶
Get Vapid Public Key
Получить публичный VAPID ключ для подписки
Ответ¶
- 200: Successful Response
GET /secrets/api/team/members¶
Get Team Members
Ответ¶
- 200: Successful Response
GET /secrets/api/team/search¶
Search Users
Поиск пользователей по email или имени (по всем компаниям).
Параметры¶
q(query, string) (обязательно): Email или имя для поиска
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/v1/integrations/credentials¶
List Credentials
Список подключённых интеграций текущего пользователя (без токенов).
Ответ¶
- 200: Successful Response
DELETE /secrets/api/v1/integrations/credentials/{provider}/{service}¶
Delete Credential
Отключить интеграцию (удалить credential пользователя).
Параметры¶
provider(path, string) (обязательно):service(path, string) (обязательно):
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/v1/integrations/oauth/callback¶
Oauth Callback
Универсальный OAuth callback.
Google (и другие провайдеры) редиректят сюда после авторизации пользователя. State декодируется из Storage, code обменивается на токены через OAuthService. Если flow_context присутствует — запускает resume flow через TaskIQ.
Параметры¶
state(query):code(query):error(query):referer(query):
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/v1/variables¶
List Variables
Параметры¶
limit(query, integer):offset(query, integer):
Ответ¶
- 200: Successful Response
- 422: Validation Error
POST /secrets/api/v1/variables¶
Upsert Variable
Запрос¶
Content-Type: application/json
{
"variable_key": <string> (обязательно), //
"payload": <any>, //
"secret": <boolean>, //
"shared_for_execution": <boolean>, //
"public": <boolean>, //
"title": <any>, //
"description": <string>, //
"order": <any>, //
"groups": <array>, //
}
Ответ¶
- 200: Successful Response
- 422: Validation Error
POST /secrets/api/v1/variables/resolve¶
Resolve Variables
Запрос¶
Content-Type: application/json
Ответ¶
- 200: Successful Response
- 422: Validation Error
DELETE /secrets/api/v1/variables/{variable_key}¶
Delete Variable
Параметры¶
variable_key(path, string) (обязательно):
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/v1/variables/{variable_key}¶
Get Variable
Параметры¶
variable_key(path, string) (обязательно):
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/v1/variables/{variable_key}/versions¶
List Variable Versions
Параметры¶
variable_key(path, string) (обязательно):limit(query, integer):offset(query, integer):
Ответ¶
- 200: Successful Response
- 422: Validation Error
GET /secrets/api/ws/stats¶
Websocket Stats
Ответ¶
- 200: Successful Response
GET /secrets/health¶
Health
Ответ¶
- 200: Successful Response
GET /sw.js¶
Serve Service Worker
Ответ¶
- 200: Successful Response