mxHeadless
REST API gateway для headless-фронтендов на MODX 3. Ресурсы, объекты, OpenAPI, API keys и OAuth

POST, PUT, PATCH, DELETE на resources и objects требуют identity и write-scopes.
Content-Type: application/json. Размер ограничен mxheadless_max_body_bytes (1 MB).
curl -s -X POST https://example.com/api/v1/resources \
-H 'Authorization: Bearer mxh_...' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: create-about-001' \
-d '{"pagetitle":"About","template":1,"published":1}'Сессионные мутации требуют заголовок X-CSRF-Token.
При mxheadless_idempotency_enabled=true (default) на POST можно передать:
Idempotency-Key: <unique-string>Повтор с тем же ключом и тем же телом возвращает сохранённый ответ (заголовок Idempotency-Replayed). Другое тело или параллельный запрос → 409 idempotency_conflict.
TTL: mxheadless_idempotency_ttl (86400 с).
DELETE на resources обычно soft. Permanent: ?force=1. Restore через PATCH deleted: 0 + include_deleted=1.
После успешной мутации core ставит события в outbox (resources.created и т.д.). Доставка идёт через CLI worker. См. Webhooks.