Skip to main content
Этот подход подходит, если вам нужен полный контроль над сетевым слоем (свой STOMP‑клиент, свой REST‑клиент, своя логика аутентификации/токенов).

WebSocket API (STOMP)

MastermindCMS предоставляет STOMP‑брокер поверх WebSocket:
  • Native WebSocket endpoint: /ws
  • SockJS fallback endpoint: /sock
  • Application destination prefix: /request
  • Broker destinations: /topic/**, /user/topic/** и /queue/**

Подписки

Стандартные JSON‑ответы:
  • /topic/msm/json
  • /user/topic/msm/json
Стандартные HTML‑ответы рендера (SSR):
  • /topic/msm/render
  • /user/topic/msm/render
Бэкенд также может публиковать доменные события в произвольные destinations внутри /topic/** (например /topic/jobs, /topic/job/{id}, /topic/order/{id}, /topic/customer/{id}).

Destinations для publish

Рендер (SSR): JSON:

Формат запроса и ответа

Все WebSocket‑запросы основаны на BasicRequestMessage:
  • path: путь текущей страницы (контекст запроса)
  • payload: опциональные данные (зависит от destination)
  • elements: опциональный список payload’ов элементов для частичных обновлений
  • actionId: опциональный correlation id (рекомендуется)
  • eventType: USER, SHARED или GLOBAL
  • sharedEndpoint: опциональный логический endpoint (ответ приходит в /topic/<sharedEndpoint>)
Специализированные сообщения добавляют поля:
  • BeanRequestMessage: scope, beanId, functionName, args
  • RepositoryRequestMessage: repositoryId, requestType
  • DocumentRequestMessage: databaseName, collectionName, requestType
JSON‑ответ имеет вид:

Пример (browser)

Примечания по авторизации

  • JSON‑обработчики могут принимать JWT через native header Authorization: Bearer <token>.
  • Для части операций нужны повышенные права (например обновления репозитория и запись в БД). При отсутствии доступа бэкенд отвечает { "error": "Access denied", ... }.

REST API

REST используется для:
  • аутентификации (/api/v1/authenticate, /api/v1/logout, операции с токеном)
  • операций с файлами/данными (upload/remove/download)
  • экспорта отчётов и получения ассетов
  • интеграций (например, провайдеры доставки/оплаты)
  • HTTP‑фолбэка для сервисных вызовов (/api/v1/bean/request)

Общие заголовки

Некоторые endpoints (в частности /api/v1/bean/request) требуют заголовки контекста:

Аутентификация

POST /api/v1/authenticate аутентифицирует пользователя (обычно через session/remember‑me cookies). Чтобы получить JWT для API‑вызовов, используйте POST /api/v1/auth/token (возвращает { token, expires }). Проверить токен можно через POST /api/v1/auth/validate-token. POST /api/v1/logout выполняет logout текущей сессии и ожидает JSON body с role (например "user" или "admin").

Универсальный сервисный вызов по HTTP

POST /api/v1/bean/request вызывает метод backend‑bean тем же reflection‑based механизмом, что и WebSocket API. Обязательные заголовки:
  • Site-Context
  • Lang-Context
Пример запроса:
Пример ответа:

Uploads, downloads, assets, reports

Пример: загрузка изображения
Пример: экспорт отчёта

Интеграции доставки и оплаты

Некоторые интеграции доступны как REST endpoints и используются соответствующими UI‑компонентами. Примеры:
  • /api/v1/cdek (сервис/прокси для виджета доставки)
  • /api/v1/stripe (webhook платежей Stripe)
  • /api/v1/yookassa (интеграция оплаты)

Сброс пароля и верификация

Если включены email/password flows, MastermindCMS может предоставлять endpoints:
  • /api/v1/auth/verify
  • /api/v1/auth/reset-password
  • /api/v1/auth/change-password
  • /api/v1/auth/save-password