@jahia/agentic 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -0
- package/dist/claude/.claude/rules/jahia.md +76 -0
- package/dist/claude/.claude/skills/jahia/SKILL.md +136 -0
- package/dist/claude/.claude/skills/jahia-content/SKILL.md +139 -0
- package/dist/claude/.claude/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/claude/.claude/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/claude/.claude/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/claude/.claude/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/claude/.claude/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/claude/.claude/skills/jahia-dev/SKILL.md +124 -0
- package/dist/claude/.claude/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/claude/.claude/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/claude/.claude/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/claude/.claude/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/claude/.claude/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/claude/.claude/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/claude/.claude/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/claude/.claude/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/claude/.claude/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/claude/.claude/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/claude/.claude/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/claude/.claude/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/claude/.claude/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/claude/.claude/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/claude/.claude/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/claude/.claude/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/claude/.claude/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/claude/.claude/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/claude/.claude/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/claude/.claude/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/claude/.claude/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/claude/.claude/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/claude/.claude/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/claude/.claude/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/claude/.claude/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/claude/.claude/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/claude/.claude/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/claude/.claude/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/claude/.claude/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/claude/.claude/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/claude/.claude/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/claude/.claude/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/claude/.claude/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/claude/.claude/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/claude/CLAUDE.md +90 -0
- package/dist/codex/.agents/skills/jahia/SKILL.md +136 -0
- package/dist/codex/.agents/skills/jahia-content/SKILL.md +139 -0
- package/dist/codex/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/codex/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/codex/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/codex/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/codex/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/codex/.agents/skills/jahia-dev/SKILL.md +124 -0
- package/dist/codex/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/codex/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/codex/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/codex/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/codex/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/codex/.agents/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/codex/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/codex/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/codex/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/codex/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/codex/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/codex/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/codex/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/codex/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/codex/.agents/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/codex/.agents/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/codex/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/codex/.agents/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/codex/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/codex/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/codex/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/codex/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/codex/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/codex/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/codex/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/codex/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/codex/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/codex/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/codex/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/codex/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/codex/.agents/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/codex/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/codex/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/codex/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/codex/AGENTS.md +89 -0
- package/dist/copilot/.agents/skills/jahia/SKILL.md +136 -0
- package/dist/copilot/.agents/skills/jahia-content/SKILL.md +139 -0
- package/dist/copilot/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/copilot/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/copilot/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/copilot/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/copilot/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/copilot/.agents/skills/jahia-dev/SKILL.md +124 -0
- package/dist/copilot/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/copilot/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/copilot/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/copilot/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/copilot/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/copilot/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/copilot/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/copilot/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/copilot/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/copilot/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/copilot/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/copilot/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/copilot/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/copilot/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/copilot/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/copilot/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/copilot/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/copilot/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/copilot/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/copilot/.agents/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/copilot/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/copilot/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/copilot/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/copilot/AGENTS.md +89 -0
- package/dist/cursor/.agents/skills/jahia/SKILL.md +136 -0
- package/dist/cursor/.agents/skills/jahia-content/SKILL.md +139 -0
- package/dist/cursor/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/cursor/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/cursor/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/cursor/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/cursor/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/cursor/.agents/skills/jahia-dev/SKILL.md +124 -0
- package/dist/cursor/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/cursor/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/cursor/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/cursor/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/cursor/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/cursor/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/cursor/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/cursor/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/cursor/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/cursor/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/cursor/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/cursor/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/cursor/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/cursor/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/cursor/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/cursor/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/cursor/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/cursor/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/cursor/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/cursor/.agents/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/cursor/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/cursor/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/cursor/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/cursor/.cursor/rules/jahia.mdc +80 -0
- package/dist/gemini/.agents/skills/jahia/SKILL.md +136 -0
- package/dist/gemini/.agents/skills/jahia-content/SKILL.md +139 -0
- package/dist/gemini/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/gemini/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/gemini/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/gemini/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/gemini/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/gemini/.agents/skills/jahia-dev/SKILL.md +124 -0
- package/dist/gemini/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/gemini/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/gemini/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/gemini/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/gemini/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/gemini/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/gemini/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/gemini/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/gemini/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/gemini/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/gemini/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/gemini/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/gemini/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/gemini/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/gemini/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/gemini/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/gemini/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/gemini/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/gemini/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/gemini/.agents/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/gemini/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/gemini/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/gemini/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/gemini/AGENTS.md +89 -0
- package/dist/gemini/GEMINI.md +6 -0
- package/dist/index.js +975 -0
- package/dist/opencode/.agents/skills/jahia/SKILL.md +136 -0
- package/dist/opencode/.agents/skills/jahia-content/SKILL.md +139 -0
- package/dist/opencode/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/opencode/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/opencode/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/opencode/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/opencode/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/opencode/.agents/skills/jahia-dev/SKILL.md +124 -0
- package/dist/opencode/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/opencode/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/opencode/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/opencode/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/opencode/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/opencode/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/opencode/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/opencode/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/opencode/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/opencode/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/opencode/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/opencode/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/opencode/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/opencode/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/opencode/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/opencode/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/opencode/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/opencode/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/opencode/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/opencode/.agents/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/opencode/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/opencode/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/opencode/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/opencode/AGENTS.md +89 -0
- package/dist/windsurf/.windsurf/rules/jahia.md +80 -0
- package/dist/windsurf/.windsurf/skills/jahia/SKILL.md +136 -0
- package/dist/windsurf/.windsurf/skills/jahia-content/SKILL.md +139 -0
- package/dist/windsurf/.windsurf/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/windsurf/.windsurf/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/windsurf/.windsurf/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/windsurf/.windsurf/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/windsurf/.windsurf/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev/SKILL.md +124 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/windsurf/AGENTS.md +89 -0
- package/package.json +28 -0
|
@@ -0,0 +1,657 @@
|
|
|
1
|
+
# Jahia GraphQL API Reference
|
|
2
|
+
|
|
3
|
+
## Table of contents
|
|
4
|
+
1. [Endpoint and transport](#endpoint-and-transport)
|
|
5
|
+
2. [Authentication and authorization](#authentication-and-authorization)
|
|
6
|
+
3. [Workspaces and internationalization](#workspaces-and-internationalization)
|
|
7
|
+
4. [JCR queries](#jcr-queries)
|
|
8
|
+
5. [JCR mutations](#jcr-mutations)
|
|
9
|
+
6. [Pagination (Connection pattern)](#pagination-connection-pattern)
|
|
10
|
+
7. [Field filtering and sorting](#field-filtering-and-sorting)
|
|
11
|
+
8. [Extending the schema — SDL](#extending-the-schema--sdl)
|
|
12
|
+
9. [Extending the schema — Java](#extending-the-schema--java)
|
|
13
|
+
10. [Apollo client setup](#apollo-client-setup)
|
|
14
|
+
11. [CORS and OSGi configuration](#cors-and-osgi-configuration)
|
|
15
|
+
12. [GraphQL playground](#graphql-playground)
|
|
16
|
+
13. [Introspection access control](#introspection-access-control)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Endpoint and transport
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
POST /modules/graphql
|
|
24
|
+
Content-Type: application/json
|
|
25
|
+
Accept: application/json
|
|
26
|
+
Body: { "query": "...", "variables": { ... } }
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
GraphQL is the preferred API for client-side applications in Jahia 8.2. The implementation is based on `graphql-java` with a JCR extension (`graphql-dxm-provider`).
|
|
30
|
+
|
|
31
|
+
From a view (JSP), you can call it with plain XHR:
|
|
32
|
+
|
|
33
|
+
```javascript
|
|
34
|
+
var xhr = new XMLHttpRequest();
|
|
35
|
+
xhr.responseType = 'json';
|
|
36
|
+
xhr.open("POST", "/modules/graphql");
|
|
37
|
+
xhr.setRequestHeader("Content-Type", "application/json");
|
|
38
|
+
xhr.setRequestHeader("Accept", "application/json");
|
|
39
|
+
xhr.send(JSON.stringify({ query: '{ jcr { nodeByPath(path: "/sites/mySite") { name } } }' }));
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Authentication and authorization
|
|
45
|
+
|
|
46
|
+
The GraphQL endpoint is **closed by default** to external callers. Access is granted through the security filter module.
|
|
47
|
+
|
|
48
|
+
**For a scoped token (recommended):**
|
|
49
|
+
|
|
50
|
+
1. Create a scope config in `digital-factory-data/karaf/etc/org.jahia.bundles.api.authorization-myapp.yml`:
|
|
51
|
+
|
|
52
|
+
```yaml
|
|
53
|
+
myapp:
|
|
54
|
+
description: Access for myapp
|
|
55
|
+
grants:
|
|
56
|
+
- api: graphql
|
|
57
|
+
node:
|
|
58
|
+
pathPattern: /,/sites/mysite(/.*)?
|
|
59
|
+
nodeType: jnt:news,jnt:contentFolder
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
2. Pass a personal API token in the `Authorization` header:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
Authorization: APIToken <token>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**For same-origin browser requests**, auto-apply the scope:
|
|
69
|
+
|
|
70
|
+
```yaml
|
|
71
|
+
myapp:
|
|
72
|
+
auto_apply:
|
|
73
|
+
- origin: hosted
|
|
74
|
+
grants:
|
|
75
|
+
- api: graphql
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Field-level permission checks** can be added in `org.jahia.modules.graphql.provider-*.cfg`:
|
|
79
|
+
|
|
80
|
+
```properties
|
|
81
|
+
# Restrict nodesByQuery to users with graphQLNodesByQueryPermission on root
|
|
82
|
+
permission.JCRQuery.nodesByQuery=graphQLNodesByQueryPermission
|
|
83
|
+
# Restrict to a specific node path
|
|
84
|
+
permission.JCRQuery.nodesByQuery=graphQLNodesByQueryPermission/sites/mySite/content
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Or in Java using the annotation `@GraphQLRequiresPermission("<permission>")`.
|
|
88
|
+
|
|
89
|
+
The JCR session is derived from the HTTP session, so standard Jahia node permissions apply automatically.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Workspaces and internationalization
|
|
94
|
+
|
|
95
|
+
Every JCR query or mutation must be wrapped in a `jcr` block specifying the workspace:
|
|
96
|
+
|
|
97
|
+
```graphql
|
|
98
|
+
{
|
|
99
|
+
jcr(workspace: LIVE) { # LIVE or EDIT (default is EDIT)
|
|
100
|
+
nodeByPath(path: "/sites/digitall/home") {
|
|
101
|
+
displayName(language: "en")
|
|
102
|
+
displayName_fr: displayName(language: "fr")
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Unlike the REST API, GraphQL has **no global locale** on the session — you pass `language:` per field. A query can retrieve English and French properties in the same call.
|
|
109
|
+
|
|
110
|
+
The `validInLanguage` parameter (graphql-dxm-provider 2.10.0+) filters out nodes that have no content in the specified language:
|
|
111
|
+
|
|
112
|
+
```graphql
|
|
113
|
+
jcr {
|
|
114
|
+
nodeByPath(path: "/sites/digitall/home", validInLanguage: "fr") { name }
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## JCR queries
|
|
121
|
+
|
|
122
|
+
### Top-level query fields
|
|
123
|
+
|
|
124
|
+
```graphql
|
|
125
|
+
extends type Query {
|
|
126
|
+
jcr(workspace: Workspace): JCRQuery
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
type JCRQuery {
|
|
130
|
+
nodeById(uuid: String!): JCRNode!
|
|
131
|
+
nodeByPath(path: String!): JCRNode!
|
|
132
|
+
nodesById(uuids: [String!]!): [JCRNode]!
|
|
133
|
+
nodesByPath(paths: [String!]!): [JCRNode]!
|
|
134
|
+
nodesByQuery(query: String!, queryLanguage: QueryLanguage = SQL2, ...connection args...): JCRNodeConnection
|
|
135
|
+
nodesByCriteria(criteria: InputGqlJcrNodeCriteriaInput!, ...connection args...): JCRNodeConnection
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Get a node and its properties
|
|
140
|
+
|
|
141
|
+
```graphql
|
|
142
|
+
query highlight {
|
|
143
|
+
jcr {
|
|
144
|
+
nodeByPath(path: "/sites/digitall/home/area-main/highlights/our-companies") {
|
|
145
|
+
title: property(language: "en", name: "jcr:title") { value }
|
|
146
|
+
description: property(language: "en", name: "description") { value }
|
|
147
|
+
internalLink: property(language: "en", name: "internalLink") { value }
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Get rendered HTML for a node
|
|
154
|
+
|
|
155
|
+
```graphql
|
|
156
|
+
query {
|
|
157
|
+
jcr {
|
|
158
|
+
nodeByPath(path: "/sites/digitall/home/area-main/highlights/our-companies") {
|
|
159
|
+
renderedContent(
|
|
160
|
+
view: "imgView"
|
|
161
|
+
contextConfiguration: "module"
|
|
162
|
+
templateType: "html"
|
|
163
|
+
requestAttributes: [{name: "someAttribute", value: "someValue"}]
|
|
164
|
+
) { output }
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Get all properties
|
|
171
|
+
|
|
172
|
+
```graphql
|
|
173
|
+
query {
|
|
174
|
+
jcr {
|
|
175
|
+
nodeByPath(path: "/sites/digitall") {
|
|
176
|
+
properties { name value values }
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Children filtered by type and property
|
|
183
|
+
|
|
184
|
+
```graphql
|
|
185
|
+
{
|
|
186
|
+
jcr(workspace: LIVE) {
|
|
187
|
+
nodeByPath(path: "/sites/digitall/home") {
|
|
188
|
+
children(
|
|
189
|
+
typesFilter: {types: ["jnt:page"]}
|
|
190
|
+
propertiesFilter: {filters: [{property: "j:templateName", value: "home"}]}
|
|
191
|
+
) {
|
|
192
|
+
nodes {
|
|
193
|
+
name
|
|
194
|
+
name_en: displayName(language: "en")
|
|
195
|
+
createdBy: property(name: "jcr:createdBy") { value }
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Descendants with type filter (paginated)
|
|
204
|
+
|
|
205
|
+
```graphql
|
|
206
|
+
query paginatedContents {
|
|
207
|
+
jcr {
|
|
208
|
+
nodesByPath(paths: ["/sites/digitall/home"]) {
|
|
209
|
+
descendants(
|
|
210
|
+
first: 3
|
|
211
|
+
after: "NTE3ZjE1YmMtZTViYS00YzVkLWIxNmUtMDhiMTgzYTkzMTli"
|
|
212
|
+
typesFilter: {types: ["jmix:editorialContent"], multi: ANY}
|
|
213
|
+
recursionTypesFilter: {multi: NONE, types: ["jnt:page", "jnt:contentFolder"]}
|
|
214
|
+
) {
|
|
215
|
+
edges {
|
|
216
|
+
index
|
|
217
|
+
cursor
|
|
218
|
+
node { displayName path primaryNodeType { displayName(language: "en") } }
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### SQL2 query
|
|
227
|
+
|
|
228
|
+
```graphql
|
|
229
|
+
{
|
|
230
|
+
jcr(workspace: LIVE) {
|
|
231
|
+
nodesByQuery(query: "select * from [jnt:page]", offset: 2, limit: 10) {
|
|
232
|
+
edges {
|
|
233
|
+
index
|
|
234
|
+
cursor
|
|
235
|
+
node { displayName(language: "en") }
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Structured criteria query (alternative to SQL2)
|
|
243
|
+
|
|
244
|
+
```graphql
|
|
245
|
+
query {
|
|
246
|
+
jcr {
|
|
247
|
+
nodesByCriteria(criteria: {
|
|
248
|
+
nodeType: "jnt:bigText"
|
|
249
|
+
paths: ["/sites/digitall/home"]
|
|
250
|
+
nodeConstraint: { property: "text", contains: "test" }
|
|
251
|
+
}) {
|
|
252
|
+
nodes { uuid }
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
# Equivalent SQL2: SELECT * FROM [jnt:bigText] WHERE ISDESCENDANTNODE("/sites/digitall/home") AND text LIKE "%test%"
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Publication info
|
|
260
|
+
|
|
261
|
+
```graphql
|
|
262
|
+
extend type JCRNode {
|
|
263
|
+
aggregatedPublicationInfo(language: String, includesReferences: Boolean, includesSubNodes: Boolean): PublicationInfo
|
|
264
|
+
vanityURLs(languages: [String], onlyActive: Boolean, onlyDefault: Boolean): [VanityURL]
|
|
265
|
+
lockInfo: LockInfo
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Count descendants
|
|
270
|
+
|
|
271
|
+
```graphql
|
|
272
|
+
query pagesCount {
|
|
273
|
+
jcr {
|
|
274
|
+
nodeByPath(path: "/sites/digitall") {
|
|
275
|
+
descendants(typesFilter: {types: ["jnt:page"]}) {
|
|
276
|
+
pageInfo { totalCount }
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## JCR mutations
|
|
286
|
+
|
|
287
|
+
Session save happens automatically at the end of each `mutation { jcr }` block. Use multiple `jcr` blocks for multiple save points.
|
|
288
|
+
|
|
289
|
+
### Rename and set property
|
|
290
|
+
|
|
291
|
+
```graphql
|
|
292
|
+
mutation mutationExample {
|
|
293
|
+
jcr {
|
|
294
|
+
mutateNode(pathOrId: "/sites/digitall/home/corporate-responsibility") {
|
|
295
|
+
rename(name: "responsibility")
|
|
296
|
+
mutateProperty(name: "j:published") {
|
|
297
|
+
setValue(type: BOOLEAN, value: "false")
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
modifiedNodes { path }
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### Add a node
|
|
306
|
+
|
|
307
|
+
```graphql
|
|
308
|
+
mutation {
|
|
309
|
+
jcr(workspace: EDIT) {
|
|
310
|
+
addNode(
|
|
311
|
+
parentPathOrId: "/sites/mySite"
|
|
312
|
+
name: "page"
|
|
313
|
+
primaryNodeType: "jnt:page"
|
|
314
|
+
properties: [
|
|
315
|
+
{language: "en", name: "jcr:title", type: STRING, value: "Page"}
|
|
316
|
+
{name: "j:templateName", type: STRING, value: "2col"}
|
|
317
|
+
]
|
|
318
|
+
) { uuid }
|
|
319
|
+
modifiedNodes { uuid name }
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### Update a property
|
|
325
|
+
|
|
326
|
+
```graphql
|
|
327
|
+
mutation {
|
|
328
|
+
jcr(workspace: EDIT) {
|
|
329
|
+
mutateNode(pathOrId: "/sites/mySite/page") {
|
|
330
|
+
mutateProperty(name: "j:templateName") {
|
|
331
|
+
setValue(type: STRING, value: "3col")
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### Add a mixin
|
|
339
|
+
|
|
340
|
+
```graphql
|
|
341
|
+
mutation {
|
|
342
|
+
jcr(workspace: EDIT) {
|
|
343
|
+
mutateNode(pathOrId: "/sites/mySite/page") {
|
|
344
|
+
addMixins(mixins: "jmix:tagged")
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### Publish a node
|
|
351
|
+
|
|
352
|
+
```graphql
|
|
353
|
+
mutation publishContent {
|
|
354
|
+
jcr {
|
|
355
|
+
mutateNode(pathOrId: "/sites/digitall/home/about") { publish }
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### Delete a node
|
|
361
|
+
|
|
362
|
+
```graphql
|
|
363
|
+
mutation {
|
|
364
|
+
jcr(workspace: EDIT) {
|
|
365
|
+
mutateNode(pathOrId: "/sites/mySite/home") { delete }
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### Edit OSGi configuration via GraphQL
|
|
371
|
+
|
|
372
|
+
```graphql
|
|
373
|
+
mutation {
|
|
374
|
+
admin {
|
|
375
|
+
jahia {
|
|
376
|
+
configuration(pid: "org.jahia.modules.automatedtags.service.impl.AutomatedTagServiceImpl") {
|
|
377
|
+
accessKey: value(name: "automated-tags.accessKey", value: "xxxxxx")
|
|
378
|
+
endpoint: value(name: "automated-tags.endpoint", value: "https://rekognition.eu-central-1.amazonaws.com")
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### JCRNodeMutation available operations
|
|
386
|
+
|
|
387
|
+
- `mutateProperty` / `mutateProperties` → `JCRPropertyMutation` (setValue, addValue, removeValue)
|
|
388
|
+
- `addChild` / `addChildrenBatch`
|
|
389
|
+
- `mutateChildren` / `mutateDescendants`
|
|
390
|
+
- `addMixins` / `removeMixins`
|
|
391
|
+
- `move` / `rename`
|
|
392
|
+
- `delete` / `markForDeletion` / `unmarkForDeletion`
|
|
393
|
+
- `reorderChildren`
|
|
394
|
+
- `setPropertiesBatch`
|
|
395
|
+
- `lock(type, recursive)` / `unlock(type, recursive, force)`
|
|
396
|
+
- `publish(languages)`
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## Pagination (Connection pattern)
|
|
401
|
+
|
|
402
|
+
Jahia GraphQL follows the [Relay connection spec](https://facebook.github.io/relay/graphql/connections.htm). Any field returning `...Connection` type supports:
|
|
403
|
+
|
|
404
|
+
**Arguments**: `first`, `after`, `last`, `before`, `afterOffset`, `beforeOffset`
|
|
405
|
+
|
|
406
|
+
**PageInfo type**:
|
|
407
|
+
|
|
408
|
+
```graphql
|
|
409
|
+
type PageInfo {
|
|
410
|
+
hasNextPage: Boolean!
|
|
411
|
+
hasPreviousPage: Boolean!
|
|
412
|
+
startCursor: String
|
|
413
|
+
endCursor: String
|
|
414
|
+
nodesCount: Int # items in current page
|
|
415
|
+
totalCount: Int # total items
|
|
416
|
+
}
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
**Connection and Edge template**:
|
|
420
|
+
|
|
421
|
+
```graphql
|
|
422
|
+
type XxxConnection {
|
|
423
|
+
edges: [XxxEdge]
|
|
424
|
+
pageInfo: PageInfo
|
|
425
|
+
nodes: [Xxx] # shortcut for edges { node }
|
|
426
|
+
}
|
|
427
|
+
type XxxEdge {
|
|
428
|
+
node: Xxx
|
|
429
|
+
cursor: String
|
|
430
|
+
offset: Int
|
|
431
|
+
}
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
**Important**: `nodesCount` is items in the current page; `totalCount` is the full count. The `nodes` shortcut is non-standard but available on all Jahia connections.
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
## Field filtering and sorting
|
|
439
|
+
|
|
440
|
+
Fields returning Connection or lists accept `fieldFilter` and `fieldSorter`:
|
|
441
|
+
|
|
442
|
+
```graphql
|
|
443
|
+
nodesByQuery(
|
|
444
|
+
query: "SELECT * FROM [jnt:page]"
|
|
445
|
+
fieldFilter: {filters: {evaluation: NOT_EMPTY, fieldName: "node.vanityUrls"}}
|
|
446
|
+
fieldSorter: {fieldName: "displayName", sortType: ASC}
|
|
447
|
+
) { ... }
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
## Extending the schema — SDL
|
|
453
|
+
|
|
454
|
+
Place your SDL file at:
|
|
455
|
+
|
|
456
|
+
```
|
|
457
|
+
/<module_home>/src/main/resources/META-INF/graphql-extension.sdl
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
The filename must be exactly `graphql-extension.sdl`.
|
|
461
|
+
|
|
462
|
+
### SDL example — mapping JCR node types
|
|
463
|
+
|
|
464
|
+
```graphql
|
|
465
|
+
extend type Query {
|
|
466
|
+
allHotel: [hotel]
|
|
467
|
+
hotelByCity: [hotel]
|
|
468
|
+
hotelByCityConnection: hotelConnection
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
type hotel @mapping(node: "jnt:hotel") {
|
|
472
|
+
name: String! @mapping(property: "jcr:title")
|
|
473
|
+
city: String @mapping(property: "city")
|
|
474
|
+
address: String @mapping(property: "address")
|
|
475
|
+
country: String @mapping(property: "country")
|
|
476
|
+
metadata: Metadata # built-in Jahia composite type
|
|
477
|
+
rooms: [Room]
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
type Room @mapping(node: "jnt:room") {
|
|
481
|
+
number: Int! @mapping(property: "roomNo")
|
|
482
|
+
specification: String @mapping(property: "description")
|
|
483
|
+
available: Boolean @mapping(property: "available")
|
|
484
|
+
}
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
**Directives**:
|
|
488
|
+
- `@mapping(node: "jnt:hotel")` on a type — maps to a JCR node type
|
|
489
|
+
- `@mapping(property: "jcr:title")` on a field — maps to a JCR property
|
|
490
|
+
|
|
491
|
+
**Common mistakes**:
|
|
492
|
+
- Extending a type that doesn't exist (`extend type ParagraphSDL { ... }`) → error
|
|
493
|
+
- Mapping to an invalid node type or property → error shown in SDL Report Tool
|
|
494
|
+
- `hotelByPropertyConnection` returning a non-list → connection error
|
|
495
|
+
- All custom queries **must** use `extend type Query { ... }` not `type Query`
|
|
496
|
+
|
|
497
|
+
**Built-in Jahia composite types** (no `@mapping` needed):
|
|
498
|
+
- `Metadata` → `{created, createdBy, lastModified, lastModifiedBy, lastPublished, lastPublishedBy}`
|
|
499
|
+
- `Asset` → `{type, size, metadata}`
|
|
500
|
+
- `ImageAsset` → `{type, size, height, width, metadata}`
|
|
501
|
+
- `Category` → `{title, metadata, description}`
|
|
502
|
+
|
|
503
|
+
**Auto-generated queries**: For each SDL type, Jahia generates `typeById` and `typeByPath` automatically. Explicitly declare only `ByProperty` queries.
|
|
504
|
+
|
|
505
|
+
**Validation**: Check deployment status at **Developer Tools → SDL Report Tool**. Errors appear in red per type or per module.
|
|
506
|
+
|
|
507
|
+
---
|
|
508
|
+
|
|
509
|
+
## Extending the schema — Java
|
|
510
|
+
|
|
511
|
+
Implement `DXGraphQLExtensionsProvider` to return annotated Java classes:
|
|
512
|
+
|
|
513
|
+
```java
|
|
514
|
+
// Extension class using graphql-java-annotations
|
|
515
|
+
@GraphQLName("JCRNodeExtensions")
|
|
516
|
+
public class JCRNodeExtensions implements GqlJcrNode {
|
|
517
|
+
|
|
518
|
+
@GraphQLRequiresPermission("developer-tools-access")
|
|
519
|
+
@GraphQLField
|
|
520
|
+
public String myCustomField(@GraphQLName("arg") String arg) {
|
|
521
|
+
return "result";
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
Reference implementation: https://github.com/Jahia/graphql-core/tree/master/graphql-extension-example
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
## Apollo client setup
|
|
531
|
+
|
|
532
|
+
### Package installation
|
|
533
|
+
|
|
534
|
+
```bash
|
|
535
|
+
yarn add react-apollo apollo-cache-inmemory apollo-client apollo-link-http graphql
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
### Apollo client with personal API token (TypeScript)
|
|
539
|
+
|
|
540
|
+
```typescript
|
|
541
|
+
export const apolloClient = (token: string): ApolloClient<any> => {
|
|
542
|
+
return new ApolloClient({
|
|
543
|
+
link: new HttpLink({
|
|
544
|
+
uri: `${JAHIA_URL}/modules/graphql`,
|
|
545
|
+
headers: {
|
|
546
|
+
authorization: `APIToken ${token}`
|
|
547
|
+
}
|
|
548
|
+
}),
|
|
549
|
+
cache: new InMemoryCache(),
|
|
550
|
+
defaultOptions: {
|
|
551
|
+
query: { fetchPolicy: 'no-cache' }
|
|
552
|
+
}
|
|
553
|
+
});
|
|
554
|
+
};
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
### Apollo client with JWT (legacy, deprecated)
|
|
558
|
+
|
|
559
|
+
```javascript
|
|
560
|
+
const client = new ApolloClient({
|
|
561
|
+
link: new HttpLink({
|
|
562
|
+
uri: 'http://localhost:8080/modules/graphql',
|
|
563
|
+
headers: { 'Authorization': `Bearer ${JWTDXToken}` }
|
|
564
|
+
}),
|
|
565
|
+
cache: new InMemoryCache()
|
|
566
|
+
});
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
### Apollo query component example
|
|
570
|
+
|
|
571
|
+
```javascript
|
|
572
|
+
const COMPANIES_QUERY = gql`
|
|
573
|
+
query CompaniesListQuery($language: String) {
|
|
574
|
+
jcr(workspace: LIVE) {
|
|
575
|
+
nodesByQuery(
|
|
576
|
+
query: "SELECT * FROM [jdnt:company] as results WHERE ISDESCENDANTNODE(results, '/sites/digitall/')"
|
|
577
|
+
queryLanguage: SQL2
|
|
578
|
+
) {
|
|
579
|
+
nodes {
|
|
580
|
+
uuid
|
|
581
|
+
title: displayName(language: $language)
|
|
582
|
+
description: property(name: "overview", language: $language) { value }
|
|
583
|
+
thumbnail: property(name: "thumbnail", language: $language) {
|
|
584
|
+
url: refNode { path }
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
`;
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
---
|
|
594
|
+
|
|
595
|
+
## CORS and OSGi configuration
|
|
596
|
+
|
|
597
|
+
**CORS for GraphQL** — create `org.jahia.modules.graphql.provider-myapp.cfg` in `karaf/etc`:
|
|
598
|
+
|
|
599
|
+
```properties
|
|
600
|
+
http.cors.allow-origin=http://localhost:3000
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
Multiple origins: comma-separated list.
|
|
604
|
+
|
|
605
|
+
**Packaging config in a module** — add to `pom.xml`:
|
|
606
|
+
|
|
607
|
+
```xml
|
|
608
|
+
<plugin>
|
|
609
|
+
<groupId>org.codehaus.mojo</groupId>
|
|
610
|
+
<artifactId>build-helper-maven-plugin</artifactId>
|
|
611
|
+
<executions>
|
|
612
|
+
<execution>
|
|
613
|
+
<id>attach-artifacts</id>
|
|
614
|
+
<phase>package</phase>
|
|
615
|
+
<goals><goal>attach-artifact</goal></goals>
|
|
616
|
+
<configuration>
|
|
617
|
+
<artifacts>
|
|
618
|
+
<artifact>
|
|
619
|
+
<file>src/main/resources/META-INF/configurations/org.jahia.modules.graphql.provider-custom.cfg</file>
|
|
620
|
+
<type>cfg</type>
|
|
621
|
+
<classifier>graphql-cfg</classifier>
|
|
622
|
+
</artifact>
|
|
623
|
+
</artifacts>
|
|
624
|
+
</configuration>
|
|
625
|
+
</execution>
|
|
626
|
+
</executions>
|
|
627
|
+
</plugin>
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
The default config is at `/digital-factory-data/karaf/etc/org.jahia.modules.graphql.provider-default.cfg`.
|
|
631
|
+
|
|
632
|
+
---
|
|
633
|
+
|
|
634
|
+
## GraphQL playground
|
|
635
|
+
|
|
636
|
+
Access via **Developer Tools → GraphQL** in the Jahia admin UI, or directly:
|
|
637
|
+
|
|
638
|
+
```
|
|
639
|
+
http://localhost:8080/jahia/developerTools/graphql-workspace
|
|
640
|
+
```
|
|
641
|
+
|
|
642
|
+
Also accessible as Jahia Support Tools: `http://localhost:8080/tools` → **Jahia GraphQL Core Provider: graphql-playground**
|
|
643
|
+
|
|
644
|
+
Use the **Docs** panel to browse the schema, including custom SDL types.
|
|
645
|
+
|
|
646
|
+
---
|
|
647
|
+
|
|
648
|
+
## Introspection access control
|
|
649
|
+
|
|
650
|
+
Starting with GraphQL Provider 3.5.0, introspection can be restricted to users with `Developer tools access` permission:
|
|
651
|
+
|
|
652
|
+
```properties
|
|
653
|
+
# In org.jahia.modules.graphql.provider-*.cfg
|
|
654
|
+
introspectionCheckEnabled=true
|
|
655
|
+
```
|
|
656
|
+
|
|
657
|
+
When enabled, only authenticated users with the `Developer tools access` server-level permission can run introspection queries. Requires jContent 3.5.0+ when enabled to prevent UI issues.
|