Общие соглашения Public API

Базовые правила для всех публичных методов: как обращаться к платформе, как передавать ключи и токены, как читать ответы. Прочитайте этот раздел перед интеграцией.

Интерактивный справочник: Swagger UI, сводный индекс методов.

Адрес платформы

https://<host>/

Все пути ниже — относительно base URL. В prod используется только HTTPS.

Версионирование API

Методы аутентификации

МетодЗаголовокПрименение
токен доступа (JWT)Authorization: Bearer <access_token>Public Auth; Files API модуля 1.0.0 (access token)
API KeyX-API-Key: <key>Mail, Database; Files — только с модулем медиатеки 1.0.0
NoneRegister/login при public_api_access_mode: open; OpenAPI

API-ключи создаются в админ-панели: Настройки → API-ключи. С 1.0.10 доступны типы:

ТипНазначение
publicSite key для фронта (SPA, ЛК); назначается в системных настройках при api_key_required
serviceBackend-интеграции; обязательна привязка к сервису и whitelist таблиц для Database API

Разрешения service-ключа:

PermissionДоступ
mail:send, mail:*API почты
db:query, db:*API данных
files:upload, files:download, files:*Files API (модуль 1.0.0, не ядро)

Форматы ответов

формат ответа A — Public Auth (/api/v1/auth/*)

Успех:

{
  "success": true,
  "data": { }
}

Ошибка:

{
  "success": false,
  "error": {
    "code": "invalid_credentials",
    "message": "Human-readable message",
    "retry_after": 60
  }
}

Формат ответа B — почта и расширения

Используется при отправке почты и в методах некоторых расширений.

Успех:

{
  "success": true,
  "data": { },
  "meta": { "trace_id": "...", "execution_ms": 12.3 },
  "errors": []
}

Ошибка:

{
  "success": false,
  "data": {},
  "meta": {},
  "errors": [{ "code": "validation_error", "message": "...", "details": {} }]
}

формат ответа C — Legacy JSON (/api/v1/db/*; Files — модуль 1.0.0)

Успех:

{ "success": true, ...payload fields... }

Ошибка:

{ "success": false, "error": "message string" }

Общие HTTP-коды

КодЗначение
200Успех
201Ресурс создан (register)
202Принято в очередь (async mail)
400Ошибка валидации / бизнес-логики
401Не авторизован (нет/неверный token/key)
403Доступ запрещён (permissions, plugin policy)
404Ресурс не найден
422Ошибка проверка формата данных-валидации (Public Auth)
429Rate limit
502/503Сервис недоступен (mail provider, auth service)

Content-Type

Тип запросаHeader
JSON bodyContent-Type: application/json
File uploadContent-Type: загрузка файлов (multipart)
Idempotency (mail)ключ идемпотентности: <uuid> (опционально, дублирует body-поле)

Rate limiting

Public Auth применяет rate limit на login/register (код rate_limited, заголовок Retry-After). Прочие service API — по конфигурации платформы.

CORS

Настраивается администратором платформы. Если ваш сайт на другом домене — согласуйте список разрешённых адресов с оператором.

Idempotency

API почты поддерживает ключ идемпотентности (header или body idempotency_key) для предотвращения дублирования отправок.

Два порта (public_api_separate)

Если в конфигурации включено разделение портов, платформа слушает два адреса:

ПортПараметрНазначение
Основнойweb.port (обычно 5000)Админ-панель; почта и файлы — при раздельных портах
Публичныйweb.public_port (обычно 5001)Авторизация, данные, расширения, Swagger UI

На публичном порту доступны только методы для внешних приложений. На основном — управление платформой.

Важно: методы почты (/api/v1/mail/*) при раздельных портах — на основном порту (web.port). Files API (/api/v1/files/*, модуль 1.0.0) — по той же схеме, если модуль установлен; см. api-files.html.

Если разделение выключено (public_api_separate: false), все публичные методы доступны на одном порту.

Режим доступа Public API (1.0.10)

Параметр web.public_api_access_mode:

ЗначениеПоведение
openPublic endpoints доступны без глобального API-ключа (как в 1.0.9)
api_key_requiredВсе public prefixes, включая /api/v1/auth/*, требуют заголовок X-API-Key с site public key

Фронт может получить публичные параметры без admin-секретов: GET /api/v1/public/runtime-config. Подробнее — справочник config.yml.

Site public key может отображаться во фронте — это осознанная модель для SPA. Защита обеспечивается rate limit, lockout и политиками платформы, а не сокрытием ключа.

Что попадает в OpenAPI автоматически

В интерактивный справочник (/api/openapi.json) по умолчанию входят:

Почта — Mail. Files API — контракт модуля «Медиатека файлов» 1.0.0: отдельная документация (не в OpenAPI ядра).

Как читать страницу метода

Каждый HTTP-метод описан на отдельной странице. Рекомендуемый порядок чтения:

  1. Заголовок — метод и путь относительно https://<host>/ (на стенде часто http://localhost:5000).
  2. Callout — ссылки на этот раздел, обзор Public API и Swagger UI на вашей установке.
  3. Аутентификация — None, JWT (Authorization: Bearer) или X-API-Key с нужным scope.
  4. Таблицы параметров — тело, query, path; затем блок «Минимальный пример запроса» (JSON).
  5. Успешный ответ — таблица полей data и пример JSON с success: true.
  6. Ошибки — коды HTTP и пример success: false с error.code.
  7. Пример curl — готовая команда; подставьте host, токен или ключ.

Актуальная схема полей на вашей версии ядра — всегда в GET /api/openapi.json и Swagger; статические страницы дополняют сценарии для интегратора.