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


- mxApi поддерживает bearer-токены для пользователей MODX по логину и паролю, а также машинные клиенты с парой client_id и client_secret.
- Для интеграций можно выдавать разные наборы scope: одному клиенту только чтение заказов, другому создание заявок, третьему доступ к справочникам
или своим кастомным операциям. - Права проверяются через штатный механизм политик MODX на namespace mxapi. Это значит, что доступом можно управлять привычным способом: через
пользователей, группы, политики и permissions. - В базе хранится только sha256-хэш токена, а отзыв доступа применяется сразу.
- Важная фишка 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 без отдельной оплаты за сам пакет.
Техническая поддержка MODX
Сайт лежит, тормозит или остался без разработчика?
Переезд с MODX 2 на 3, PHP 7 на 8, скорость и безопасность. Поддержка со сроками и ответственностью, а не совет в чате.
Подробнее
Реклама
Комментарии: 2
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
• зафиксировать публичный контракт EndpointInterface / метаданных по semver, чтобы наш провайдер не ломался на обновлениях;
• паритет ядра между mxapi2 и mxapi3 (чтобы один провайдер работал в обеих)?;
• документация по написанию провайдеров (сейчас только строчка в README + лексиконе);
• регистрация middleware пакетом (сейчас только через конфиг сайта);
• ETag / If-None-Match и курсорная пагинация — для больших инкрементальных выгрузок.
Нам нужно строить machine-readable схему сайта (дерево разделов → блоки → элементы) с включёнными TV-значениями, менеджером и шаблонами — для последующей синхронизации в entity-registry.
Нужны кастомные процессоры (или расширение существующих):
1. resource/getTree — дерево с TV-значениями
Возвращает: {id, pagetitle, alias, parent, template, published, tvs: {manager: "...", phone: "..."}, children: [...]}
Ключевое отличие от resource/getList: TV-значения (а не определения) на каждом узле, в одном запросе.
2. resource/getTVValues — TV-значения для ресурса
Или пакетно: ?ids=42,55,78&tvs=…
Нужно потому что resource/get стандартный не включает TV-значения в ответ.
3. element/chunk/getContent — полный контент чанка
С полем 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-зна
фактически это уже так.
Вот
Это добавлю в ближайшем обновлении.
А про остальное я не понял. Ты предлагаешь мне написать для тебя провайдер? Я не провтив, если по деньгам договоримся.