API МИФ CMS

Два интерфейса: совместимый с MODX apimode для текущего Next.js-фронта и REST /api/v1 для новых клиентов. Всё только на чтение, ответы в JSON.

1. Совместимость с MODX: ?apimode=1

Любой путь сайта плюс ?apimode=1 отдаёт JSON страницы. Формат определяется полем «Формат ответа API» у шаблона ресурса. В каждом ответе есть блок common: meta, menu, header, breadcrumbs, modxId, modxTemplateId.

GET/?apimode=1 открыть →

Главная: bookofweek, new, bestsellers, anticipated, childrenbooks

GET/catalog/new/?apimode=1 открыть →

Подборка «Новинки»: books.new, books.soon

GET/catalog/category/children-books/?apimode=1&page=1 открыть →

Категория: page.data (поля ресурса MODX), page.tvs, products, count, paging

GET/catalog/product/{alias}/?apimode=1

Товар: data.product (baseData, description, quotes, authors…), data.shelves

GET/help/politika-konfidenczialnosti/?apimode=1 открыть →

Текстовая страница: content (resource*-поля и tvs)

GET…?apimode=1&preview=1

Предпросмотр неопубликованного ресурса. Работает только при входе в админку, кэш не используется.

Заголовки ответа: X-CMS-Cache (HIT / MISS / BYPASS), X-CMS-Resource, X-CMS-Time-Ms. Если ресурс не найден, возвращается 404 и {"error":{"version":1,"code":404,…}}: этот формат ошибки уже обрабатывает фронт.

2. REST API v1

Ограничение: 120 запросов в минуту с одного IP. Отдаются только опубликованные ресурсы.

GET/api/v1/tree?parent={id} открыть →

Дочерние ресурсы узла дерева (без parent — корень)

GET/api/v1/resources/{id}

Ресурс: поля MODX и значения TV

GET/api/v1/products открыть →

Список товаров с фильтрами и пагинацией. В types каждого товара — форматы: paperbook, ebook, audiobook (у аудио — блок audio: чтец, длительность, фрагменты, буклеты)

ПараметрПримерОписание
categorychildren-booksslug категории
tagnasha_strana_rossiyaslug тега или серии
authorrychkova-nadejdaslug автора
flagnew | soon | best | preorderметка
typeproduct | course | certificateтип товара
formatpaperbook | ebook | audiobookесть в продаже в этом формате
searchНовый годпоиск по названию
page, per_page2, 24пагинация, per_page ≤ 100
GET/api/v1/products/{id}

Полная карточка товара

GET/api/v1/categories открыть →

Категории с количеством товаров

GET/api/v1/authors/{slug}

Автор и его книги

GET/api/v1/chunks/{name} открыть →

Содержимое чанка

GET/api/v1/settings открыть →

Публичные системные настройки

3. Перенос из MODX

Команда php artisan modx:import подключается к базе MODX (переменные MODX_DB_* в .env) и переносит категории элементов, шаблоны, TV, привязку TV к шаблонам, дерево ресурсов контекста web, значения TV, чанки и настройки. ID сохраняются. Можно перенести отдельную часть: --only=resources.