Skip to content
  1. Компоненты
  2. mxHeadless
  3. API
  4. Swagger и OpenAPI

Swagger и OpenAPI ​

mxHeadless строит спецификацию из RouteCollection и ObjectRegistry на текущей установке. Extras, зарегистрированные через OnMxHeadlessRegister, попадают в meta-маршруты вместе с core.

Публичные meta-маршруты работают без аутентификации.

Swagger UI ​

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

text
GET /api/v1/docs

UI грузит Swagger UI с CDN (версия из пакета) и подставляет spec с /api/v1/meta/openapi.json. Включён tryItOutEnabled и persistAuthorization: Bearer или API key, введённые в UI, сохраняются между перезагрузками страницы.

Выключатель: mxheadless_swagger_enabled (по умолчанию true). При false /docs отдаёт 404. Сырой OpenAPI JSON остаётся доступен.

На боевом сайте UI часто отключают, если документация снаружи не нужна. См. чеклист production.

Живой OpenAPI ​

В envelope (как остальные JSON-ответы API):

bash
curl -s https://example.com/api/v1/meta/openapi | jq '.data.openapi'

Поле data — документ OpenAPI 3.0.3: пути, параметры, security schemes, теги.

Сырой JSON без envelope для Swagger UI и генераторов клиентов:

bash
curl -s https://example.com/api/v1/meta/openapi.json | jq '.openapi'

Content-Type: application/openapi+json.

Каталог эндпоинтов ​

Список маршрутов с метаданными (core + extras через registerEndpoint):

bash
curl -s https://example.com/api/v1/meta/endpoints | jq

Поля каждой записи:

ПолеСмысл
nameИмя маршрута (resources.create, objects.list, …)
methodsСписок HTTP-методов
pathПубличный путь с плейсхолдерами
patternТо же, что path: роут и каталог отдают одинаковое значение
publicДоступен ли anonymous
permissionСтрока scope или null
objectИмя объекта из registry или null
descriptionТекст описания или null
tagsСписок тегов
parametersОписания path- и query-параметров маршрута

Discovery (GET /api/v1) ссылается на meta-URL в links. Полный список core-маршрутов: Обзор API.

Корень OpenAPI-документа содержит нестандартное расширение x-mxheadless.objects со списком всех зарегистрированных имён объектов. Генераторы клиентов его игнорируют, но по нему удобно проверить, какие объекты доступны на конкретной установке.

Schema vs OpenAPI ​

ИсточникПутьЧто описывает
SchemaGET /schemaОбъекты из registry: fields, filterable, sortable, relations, флаги CRUD
OpenAPIGET /meta/openapi, /meta/openapi.jsonHTTP: методы, path/query params, коды ответов, security

Schema удобен для построения клиента запросов. OpenAPI — для HTTP-контракта и генерации клиента. При регистрации нового object через Extension API обновляются schema и OpenAPI на сайте.

Генерация TypeScript-клиента ​

Укажите генератору /api/v1/meta/openapi.json, не /meta/openapi с обёрткой, если инструмент ждёт корневое поле openapi.

Пример с openapi-typescript:

bash
npx openapi-typescript https://your-site.example/api/v1/meta/openapi.json -o mxheadless.d.ts

На CI можно сверять статический openapi.yaml из репозитория mxHeadless с живой спецификацией на staging.

См. также ​