Skip to content

Secrets Service

Версионируемые переменные и секреты компании (scoped overrides, шифрование)

Interactive Documentation

Info

Интерактивная документация сервиса:

Доступно полное описание всех эндпоинтов с возможностью тестирования.

Endpoints

GET /

Root

Response

  • 200: Successful Response

GET /.well-known/apple-app-site-association

Serve Apple App Site Association

Response

  • 200: Successful Response

GET /api/i18n/{locale}

Get Translations

Параметры

  • locale (path, string) (обязательно):

Response

  • 200: Successful Response
  • 422: Validation Error

GET /api/platform/file-types

Get File Types

Response

  • 200: Successful Response

GET /health

Health

Response

  • 200: Successful Response

GET /manifest.json

Serve Manifest

Response

  • 200: Successful Response

GET /offline.html

Serve Offline

Response

  • 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):

Response

  • 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) (обязательно):

Request

Content-Type: application/x-www-form-urlencoded

{
  "code": <string> (обязательно),  // 
  "state": <string> (обязательно),  // 
  "error": <any>,  // 
  "user": <any>,  // 
}

Response

  • 200: Successful Response
  • 422: Validation Error

GET /secrets/api/auth/demo/status

Demo Auth Status

Публичный флаг: включён ли демо-вход (без утечки email, если выключено).

Response

  • 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).

Response

  • 200: Successful Response

POST /secrets/api/auth/login/demo

Login Demo

Вход демо-пользователя (cookies как после OAuth).

Request

Content-Type: application/json

{
  "email": <string> (обязательно),  // 
  "password": <string> (обязательно),  // 
}

Response

  • 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):

Response

  • 200: Successful Response
  • 422: Validation Error

POST /secrets/api/auth/logout

Logout

Завершает сессию: берёт session_id из query (опционально) или из JWT в cookie, удаляет запись сессии и снимает auth_token/session_id в браузере.

Параметры

  • session_id (query):

Response

  • 200: Successful Response
  • 422: Validation Error

GET /secrets/api/auth/me

Get Current User

Возвращает полную информацию о текущем авторизованном пользователе.

Response

  • 200: Successful Response

PUT /secrets/api/auth/me

Update Current User

Обновляет данные текущего пользователя.

Request

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>,  // 
}

Response

  • 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) (обязательно):

Response

  • 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) (обязательно):

Request

Content-Type: application/json

{
  "type": "object",
  "additionalProperties": {},
  "title": "Attrs"
}

Response

  • 200: Successful Response
  • 422: Validation Error

GET /secrets/api/auth/providers

Get Auth Providers

Возвращает список доступных провайдеров авторизации

Response

  • 200: Successful Response

GET /secrets/api/auth/status

Auth Status

Возвращает статус системы авторизации

Response

  • 200: Successful Response

POST /secrets/api/auth/switch-company

Switch Company

Переключает активную компанию пользователя и перевыпускает auth_token.

Request

Content-Type: application/json

{
  "company_id": <string> (обязательно),  // 
}

Response

  • 200: Successful Response
  • 422: Validation Error

POST /secrets/api/calendar/events

Create Calendar Event

Request

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>,  // 
}

Response

  • 200: Successful Response
  • 422: Validation Error

POST /secrets/api/calendar/events/list

List Calendar Events

Request

Content-Type: application/json

{
  "start_at": <string> (обязательно),  // 
  "end_at": <string> (обязательно),  // 
  "include_sources": <any>,  // 
  "limit": <integer>,  // 
}

Response

  • 200: Successful Response
  • 422: Validation Error

DELETE /secrets/api/calendar/events/{event_id}

Delete Calendar Event

Параметры

  • event_id (path, string) (обязательно):

Response

  • 200: Successful Response
  • 422: Validation Error

PUT /secrets/api/calendar/events/{event_id}

Update Calendar Event

Параметры

  • event_id (path, string) (обязательно):

Request

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>,  // 
}

Response

  • 200: Successful Response
  • 422: Validation Error

GET /secrets/api/calendar/integrations

List Calendar Integrations

Response

  • 200: Successful Response

POST /secrets/api/calendar/integrations/connect

Connect Calendar Integration

Request

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>,  // 
}

Response

  • 200: Successful Response
  • 422: Validation Error

GET /secrets/api/calendar/integrations/google/callback

Complete Google Calendar Oauth

Параметры

  • state (query, string) (обязательно):
  • code (query):
  • error (query):

Response

  • 200: Successful Response
  • 422: Validation Error

GET /secrets/api/calendar/integrations/google/start

Start Google Calendar Oauth

Параметры

  • return_path (query, string):

Response

  • 200: Successful Response
  • 422: Validation Error

DELETE /secrets/api/calendar/integrations/{provider}

Disconnect Calendar Integration

Параметры

  • provider (path, string) (обязательно):

Response

  • 200: Successful Response
  • 422: Validation Error

POST /secrets/api/calendar/sync

Sync Calendar

Request

Content-Type: application/json

{
  "provider": <any> (обязательно),  // 
  "start_at": <string> (обязательно),  // 
  "end_at": <string> (обязательно),  // 
}

Response

  • 200: Successful Response
  • 422: Validation Error

GET /secrets/api/companies/me

Get My Companies

Возвращает компании текущего пользователя с subdomain и ролями.

Response

  • 200: Successful Response

POST /secrets/api/push/subscribe

Subscribe

Подписаться на push-уведомления (web_vapid или ios_apns).

Request

Content-Type: application/json

{
  "transport": <string>,  // 
  "endpoint": <string>,  // 
  "keys": <object>,  // 
  "platform": <string>,  // 
}

Response

  • 200: Successful Response
  • 422: Validation Error

POST /secrets/api/push/test-send

Test Send Push

Отправить тестовое push-уведомление самому себе. Требует авторизации и наличия подписки.

Request

Content-Type: application/json

{
  "title": <string>,  // 
  "message": <string>,  // 
}

Response

  • 200: Successful Response
  • 422: Validation Error

DELETE /secrets/api/push/unsubscribe

Unsubscribe

Отписаться от push-уведомлений

Параметры

  • endpoint (query, string) (обязательно):

Response

  • 200: Successful Response
  • 422: Validation Error

GET /secrets/api/push/vapid-public-key

Get Vapid Public Key

Получить публичный VAPID ключ для подписки

Response

  • 200: Successful Response

GET /secrets/api/team/members

Get Team Members

Response

  • 200: Successful Response

GET /secrets/api/team/search

Search Users

Поиск пользователей по email или имени (по всем компаниям).

Параметры

  • q (query, string) (обязательно): Email или имя для поиска

Response

  • 200: Successful Response
  • 422: Validation Error

GET /secrets/api/v1/integrations/credentials

List Credentials

Список подключённых интеграций текущего пользователя (без токенов).

Response

  • 200: Successful Response

DELETE /secrets/api/v1/integrations/credentials/{provider}/{service}

Delete Credential

Отключить интеграцию (удалить credential пользователя).

Параметры

  • provider (path, string) (обязательно):
  • service (path, string) (обязательно):

Response

  • 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):

Response

  • 200: Successful Response
  • 422: Validation Error

GET /secrets/api/v1/variables

List Variables

Параметры

  • limit (query, integer):
  • offset (query, integer):

Response

  • 200: Successful Response
  • 422: Validation Error

POST /secrets/api/v1/variables

Upsert Variable

Request

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>,  // 
}

Response

  • 200: Successful Response
  • 422: Validation Error

POST /secrets/api/v1/variables/resolve

Resolve Variables

Request

Content-Type: application/json

{
  "user_id": <any>,  // 
  "namespace": <any>,  // 
  "channel": <any>,  // 
}

Response

  • 200: Successful Response
  • 422: Validation Error

DELETE /secrets/api/v1/variables/{variable_key}

Delete Variable

Параметры

  • variable_key (path, string) (обязательно):

Response

  • 200: Successful Response
  • 422: Validation Error

GET /secrets/api/v1/variables/{variable_key}

Get Variable

Параметры

  • variable_key (path, string) (обязательно):

Response

  • 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):

Response

  • 200: Successful Response
  • 422: Validation Error

GET /secrets/api/ws/stats

Websocket Stats

Response

  • 200: Successful Response

GET /secrets/health

Health

Response

  • 200: Successful Response

GET /sw.js

Serve Service Worker

Response

  • 200: Successful Response