mxApi — быстрый внешний API для MODX Revolution

  • mxApi превращает MODX в нормальную публичную API-платформу: с единым входом, bearer-токенами, правами доступа, каталогом эндпоинтов и OpenAPI-
    документацией.
  • Пакет доступен для MODX Revolution 2 и MODX Revolution 3, поэтому его можно использовать и на старых боевых проектах, и на новых установках MODX.
  • Полная документация: https://docs.modx.pro/components/mxapi

Главная идея
Больше не нужно каждый раз изобретать свой auth.php, набор случайных сниппетов, секретные GET-параметры и отдельную самописную
документацию. mxApi даёт общий каркас, а вы подключаете к нему нужные эндпоинты.
Быстрый API для стандартных процессоров MODX
  • mxApi особенно полезен, когда нужно быстро открыть внешний доступ к существующей логике MODX: стандартным процессорам, процессорам пакетов,
    операциям с ресурсами, пользователями, заказами, справочниками или любыми другими действиями, которые уже живут внутри проекта.
  • Вы описываете endpoint, указываете нужный processor, входные параметры, scope и право MODX, а mxApi берёт на себя роутинг, авторизацию, проверку
    доступа, формат ответа и журналирование.
  • Это удобный путь для интеграций с CRM, складом, мобильным приложением, BI-системой, внешним каталогом, партнёрским сервисом или любым клиентом,
    которому нужен предсказуемый API вместо прямого доступа в админку или базу.
Свои API без боли
  • Если стандартного processor недостаточно, можно писать собственные провайдеры и обработчики: ядро mxApi не ограничивает вас одним сценарием.
  • Эндпоинты могут приходить из самого mxApi, из других пакетов или из кода конкретного сайта. Это позволяет собрать аккуратный API под проект, не
    смешивая бизнес-логику с роутером и авторизацией.
  • Каждый endpoint сам объявляет свои метаданные, параметры, scope и требуемое право MODX. Из этого же живого реестра строятся каталог в админке и
    OpenAPI-выгрузка.
Креды, токены и права доступа

  • mxApi поддерживает bearer-токены для пользователей MODX по логину и паролю, а также машинные клиенты с парой client_id и client_secret.
  • Для интеграций можно выдавать разные наборы scope: одному клиенту только чтение заказов, другому создание заявок, третьему доступ к справочникам
    или своим кастомным операциям.
  • Права проверяются через штатный механизм политик MODX на namespace mxapi. Это значит, что доступом можно управлять привычным способом: через
    пользователей, группы, политики и permissions.
  • В базе хранится только sha256-хэш токена, а отзыв доступа применяется сразу.
Самоописание API одним запросом
  • Важная фишка mxApi: интеграции не нужно вручную передавать отдельный список методов в письме, таблице или устаревающем файле.
  • Вы создаёте пользователя или машинного клиента, выдаёте ему креды и нужные scope, а дальше он сам получает описание доступных ему методов одним
    запросом к /mxapi/v1/meta/endpoints.
  • Ответ строится по реальному реестру endpoint-ов и учитывает права текущего токена: клиент видит именно те методы, которые ему разрешены.
  • Это сильно упрощает подключение внешних разработчиков, CRM, складов, мобильных приложений и любых партнёрских интеграций.
Что уже встроено
  • Собственный префикс маршрутов, по умолчанию /mxapi/v1.
  • Bearer-аутентификация для пользователей и машинных клиентов.
  • Scope и MODX-права для каждого эндпоинта.
  • Реестр endpoint-ов с метаданными.
  • Каталог API в админке.
  • OpenAPI-выгрузка без отдельных YAML-файлов, которые устаревают отдельно от кода.
  • Ограничение частоты запросов.
  • Идемпотентность для изменяющих вызовов.
  • Журнал обращений: кто, когда, каким токеном, в каком контексте и с каким результатом обращался к API.
  • Endpoint /mxapi/v1/meta/endpoints, где клиент может получить список доступных ему методов по своему токену.
  • Каталог API в админке и OpenAPI-выгрузка без отдельных YAML-файлов, которые устаревают отдельно от кода.

Для кого этот пакет
  • Для разработчиков, которым нужно быстро и безопасно открыть внешний API к MODX-проекту.
  • Для интеграций с CRM, складами, платёжными сервисами, мобильными приложениями, личными кабинетами и внешними витринами.
  • Для команд, которым важно не просто “дать ссылку”, а получить управляемый API с правами, токенами, документацией и аудитом.
Бесплатно
mxApi — абсолютно бесплатный пакет. Можно ставить, использовать в проектах, писать свои провайдеры, подключать интеграции и строить
полноценный внешний API поверх MODX без отдельной оплаты за сам пакет.
Артур Шевченко
Артур Шевченко
30 июля 2026, 20:53
modx.pro
626
Поблагодарить автора Отправить деньги

Комментарии: 2

Олег Захаров
12 августа 2026, 19:50
Запрос:
• зафиксировать публичный контракт EndpointInterface / метаданных по semver, чтобы наш провайдер не ломался на обновлениях;

• паритет ядра между mxapi2 и mxapi3 (чтобы один провайдер работал в обеих)?;

• документация по написанию провайдеров (сейчас только строчка в README + лексиконе);

• регистрация middleware пакетом (сейчас только через конфиг сайта);

• ETag / If-None-Match и курсорная пагинация — для больших инкрементальных выгрузок.

Нам нужно строить machine-readable схему сайта (дерево разделов → блоки → элементы) с включёнными TV-значениями, менеджером и шаблонами — для последующей синхронизации в entity-registry.
Нужны кастомные процессоры (или расширение существующих):
1. resource/getTree — дерево с TV-значениями
GET /api/resource/getTree?root=0&depth=5&include_tvs=1&tv_names=manager,phone,email,section_type
Возвращает: {id, pagetitle, alias, parent, template, published, tvs: {manager: "...", phone: "..."}, children: [...]}
Ключевое отличие от resource/getList: TV-значения (а не определения) на каждом узле, в одном запросе.

2. resource/getTVValues — TV-значения для ресурса

GET /api/resource/getTVValues?id=42&tvs=manager,phone,email
Или пакетно: ?ids=42,55,78&tvs=…
Нужно потому что resource/get стандартный не включает TV-значения в ответ.

3. element/chunk/getContent — полный контент чанка

GET /api/element/chunk/get?id=123
С полем content (сейчас mxApi возвращает мету, но не тело чанка по умолчанию).

4. Фильтры в resource/getList

• ?template=5 — только ресурсы с шаблоном 5

• ?tv_filter=manager:notempty — только где TV manager заполнен

• ?published=1&deleted=0 — базовый фильтр (уже должен быть, но уточнить)

— Что ещё должен отдавать (помимо нынешнего)

Сущность | Сейчас | Нужно
Ресурс | id, pagetitle, alias, parent | + TV-значения inline, + template_name
Дерево | нет | getTree с глубиной и TV
TV | определения (name, type, default) |+ значение для конкретного ресурса
Чанк | мета | + content (тело)
Шаблон | мета | + список TV, привязанных к шаблону
Менеджер страницы | нет (живёт в TV) | через TV-зна
    Артур Шевченко
    12 августа 2026, 22:07
    • зафиксировать публичный контракт EndpointInterface / метаданных по semver, чтобы наш провайдер не ломался на обновлениях;
    Фактически это уже так, beta стоит просто на всякий случай. Что до semver, то в силу того, что веток две пока ломающих изменений нет первая цифра версии меняться не будет, как только потребуется что-то сломать и выпустить мажорное обновление версия для двойки его не получит и ей поддержка прекратиться.

    • паритет ядра между mxapi2 и mxapi3 (чтобы один провайдер работал в обеих)?;
    фактически это уже так.

    • документация по написанию провайдеров (сейчас только строчка в README + лексиконе);
    Вот

    • регистрация middleware пакетом (сейчас только через конфиг сайта);

    • ETag / If-None-Match и курсорная пагинация — для больших инкрементальных выгрузок.
    Это добавлю в ближайшем обновлении.

    А про остальное я не понял. Ты предлагаешь мне написать для тебя провайдер? Я не провтив, если по деньгам договоримся.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2