{"files":{"SKILL.md":"---\nname: adobe-experience-manager-aem-api\ndescription: \"Adobe Experience Manager (AEM) API skill. Use when working with Adobe Experience Manager (AEM) for system, libs, .cqactions.html. Covers 48 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Adobe Experience Manager (AEM) API\nAPI version: 3.7.1-pre.0\n\n## Auth\nBearer basic\n\n## Base URL\n/\n\n## Setup\n1. Set Authorization header with Bearer token\n2. GET /system/console/configMgr -- verify access\n3. POST /.cqactions.html -- create first .cqactions.html\n\n## Endpoints\n48 endpoints across 9 groups. See references/api-spec.lap for full details.\n\n### System\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /system/console/configMgr |  |\n| GET | /system/console/bundles/{name}.json |  |\n| POST | /system/console/bundles/{name} |  |\n| POST | /system/console/jmx/com.adobe.granite:type=Repository/op/{action} |  |\n| GET | /system/health |  |\n| POST | /system/console/configMgr/com.adobe.granite.auth.saml.SamlAuthenticationHandler |  |\n| GET | /system/console/status-productinfo.json |  |\n\n### Libs\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /libs/granite/core/content/login.html |  |\n| POST | /libs/replication/treeactivation.html |  |\n| POST | /libs/granite/security/post/authorizables |  |\n| POST | /libs/granite/security/post/truststore |  |\n| GET | /libs/granite/security/truststore.json |  |\n| POST | /libs/granite/security/post/sslSetup.html |  |\n\n### .cqactions.html\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /.cqactions.html |  |\n\n### {path}\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /{path}/ |  |\n| GET | /{path}/{name} |  |\n| POST | /{path}/{name} |  |\n| DELETE | /{path}/{name} |  |\n| POST | /{path}/{name}.rw.html |  |\n\n### Apps\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /apps/system/config/{configNodeName} |  |\n| POST | /apps/system/config/org.apache.felix.http |  |\n| POST | /apps/system/config/org.apache.sling.servlets.get.DefaultGetServlet |  |\n| POST | /apps/system/config/org.apache.sling.security.impl.ReferrerFilter |  |\n| POST | /apps/system/config/org.apache.sling.jcr.davex.impl.servlets.SlingDavExServlet |  |\n| POST | /apps/system/config/com.shinesolutions.aem.passwordreset.Activator |  |\n| POST | /apps/system/config/com.shinesolutions.healthcheck.hc.impl.ActiveBundleHealthCheck |  |\n| POST | /apps/system/config/com.adobe.granite.auth.saml.SamlAuthenticationHandler.config |  |\n| POST | /apps/system/config/org.apache.http.proxyconfigurator.config |  |\n\n### Bin\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /bin/querybuilder.json |  |\n| POST | /bin/querybuilder.json |  |\n\n### Etc\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /etc/packages/{group}/{name}-{version}.zip |  |\n| GET | /etc/packages/{group}/{name}-{version}.zip/jcr:content/vlt:definition/filter.tidy.2.json |  |\n| GET | /etc/replication/agents.{runmode}.-1.json |  |\n| GET | /etc/replication/agents.{runmode}/{name} |  |\n| DELETE | /etc/replication/agents.{runmode}/{name} |  |\n| POST | /etc/replication/agents.{runmode}/{name} |  |\n| GET | /etc/truststore/truststore.p12 |  |\n| POST | /etc/truststore |  |\n\n### Crx\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /crx/explorer/ui/setpassword.jsp |  |\n| GET | /crx/packmgr/installstatus.jsp |  |\n| POST | /crx/packmgr/service.jsp |  |\n| POST | /crx/packmgr/update.jsp |  |\n| POST | /crx/packmgr/service/.json/{path} |  |\n| GET | /crx/packmgr/service/script.html |  |\n| GET | /crx/server/crx.default/jcr:root/.1.json |  |\n\n### {intermediatePath}\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /{intermediatePath}/{authorizableId}.ks.html |  |\n| GET | /{intermediatePath}/{authorizableId}.ks.json |  |\n| GET | /{intermediatePath}/{authorizableId}/keystore/store.p12 |  |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"List all configMgr?\" -> GET /system/console/configMgr\n- \"List all login.html?\" -> GET /libs/granite/core/content/login.html\n- \"Create a .cqactions.html?\" -> POST /.cqactions.html\n- \"Get {path} details?\" -> GET /{path}/{name}\n- \"Delete a {path}?\" -> DELETE /{path}/{name}\n- \"Create a org.apache.felix.http?\" -> POST /apps/system/config/org.apache.felix.http\n- \"Create a org.apache.sling.servlets.get.DefaultGetServlet?\" -> POST /apps/system/config/org.apache.sling.servlets.get.DefaultGetServlet\n- \"Create a org.apache.sling.security.impl.ReferrerFilter?\" -> POST /apps/system/config/org.apache.sling.security.impl.ReferrerFilter\n- \"Create a org.apache.sling.jcr.davex.impl.servlets.SlingDavExServlet?\" -> POST /apps/system/config/org.apache.sling.jcr.davex.impl.servlets.SlingDavExServlet\n- \"Create a com.shinesolutions.aem.passwordreset.Activator?\" -> POST /apps/system/config/com.shinesolutions.aem.passwordreset.Activator\n- \"Create a com.shinesolutions.healthcheck.hc.impl.ActiveBundleHealthCheck?\" -> POST /apps/system/config/com.shinesolutions.healthcheck.hc.impl.ActiveBundleHealthCheck\n- \"List all querybuilder.json?\" -> GET /bin/querybuilder.json\n- \"Create a querybuilder.json?\" -> POST /bin/querybuilder.json\n- \"Get package details?\" -> GET /etc/packages/{group}/{name}-{version}.zip\n- \"List all filter.tidy.2.json?\" -> GET /etc/packages/{group}/{name}-{version}.zip/jcr:content/vlt:definition/filter.tidy.2.json\n- \"Get agents.{runmode}.-1.json details?\" -> GET /etc/replication/agents.{runmode}.-1.json\n- \"Get agents.{runmode} details?\" -> GET /etc/replication/agents.{runmode}/{name}\n- \"Delete a agents.{runmode}?\" -> DELETE /etc/replication/agents.{runmode}/{name}\n- \"Create a treeactivation.html?\" -> POST /libs/replication/treeactivation.html\n- \"Create a authorizable?\" -> POST /libs/granite/security/post/authorizables\n- \"Create a setpassword.jsp?\" -> POST /crx/explorer/ui/setpassword.jsp\n- \"List all installstatus.jsp?\" -> GET /crx/packmgr/installstatus.jsp\n- \"Create a service.jsp?\" -> POST /crx/packmgr/service.jsp\n- \"Create a update.jsp?\" -> POST /crx/packmgr/update.jsp\n- \"List all script.html?\" -> GET /crx/packmgr/service/script.html\n- \"List all .1.json?\" -> GET /crx/server/crx.default/jcr:root/.1.json\n- \"Get bundle details?\" -> GET /system/console/bundles/{name}.json\n- \"List all health?\" -> GET /system/health\n- \"Create a com.adobe.granite.auth.saml.SamlAuthenticationHandler.config?\" -> POST /apps/system/config/com.adobe.granite.auth.saml.SamlAuthenticationHandler.config\n- \"Create a org.apache.http.proxyconfigurator.config?\" -> POST /apps/system/config/org.apache.http.proxyconfigurator.config\n- \"Create a truststore?\" -> POST /libs/granite/security/post/truststore\n- \"List all truststore.json?\" -> GET /libs/granite/security/truststore.json\n- \"List all truststore.p12?\" -> GET /etc/truststore/truststore.p12\n- \"Create a com.adobe.granite.auth.saml.SamlAuthenticationHandler?\" -> POST /system/console/configMgr/com.adobe.granite.auth.saml.SamlAuthenticationHandler\n- \"List all status-productinfo.json?\" -> GET /system/console/status-productinfo.json\n- \"Get {intermediatePath} details?\" -> GET /{intermediatePath}/{authorizableId}.ks.json\n- \"List all store.p12?\" -> GET /{intermediatePath}/{authorizableId}/keystore/store.p12\n- \"Create a sslSetup.html?\" -> POST /libs/granite/security/post/sslSetup.html\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Create/update endpoints return the modified resource on success\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Adobe Experience Manager (AEM) API\n@base /\n@version 3.7.1-pre.0\n@auth Bearer basic\n@endpoints 48\n@hint download_for_search\n@toc system(7), libs(6), .cqactions.html(1), {path}(5), apps(9), bin(2), etc(8), crx(7), {intermediatePath}(3)\n\n@group system\n@endpoint GET /system/console/configMgr\n@returns(200) OK\n@errors {5XX: Unexpected error.}\n\n@endgroup\n\n@group libs\n@endpoint GET /libs/granite/core/content/login.html\n\n@endgroup\n\n@group .cqactions.html\n@endpoint POST /.cqactions.html\n@required {authorizableId: str, changelog: str}\n\n@endgroup\n\n@group {path}\n@endpoint POST /{path}/\n@required {path: str, jcr:primaryType: str, :name: str}\n\n@endpoint GET /{path}/{name}\n@required {path: str, name: str}\n\n@endpoint POST /{path}/{name}\n@required {path: str, name: str}\n@optional {:operation: str: any, deleteAuthorizable: str}\n\n@endpoint DELETE /{path}/{name}\n@required {path: str, name: str}\n\n@endpoint POST /{path}/{name}.rw.html\n@required {path: str, name: str}\n@optional {addMembers: str}\n\n@endgroup\n\n@group apps\n@endpoint POST /apps/system/config/{configNodeName}\n@required {configNodeName: str}\n\n@endpoint POST /apps/system/config/org.apache.felix.http\n@optional {org.apache.felix.https.nio: bool, org.apache.felix.https.nio@TypeHint: str, org.apache.felix.https.keystore: str, org.apache.felix.https.keystore@TypeHint: str, org.apache.felix.https.keystore.password: str, org.apache.felix.https.keystore.password@TypeHint: str, org.apache.felix.https.keystore.key: str, org.apache.felix.https.keystore.key@TypeHint: str, org.apache.felix.https.keystore.key.password: str, org.apache.felix.https.keystore.key.password@TypeHint: str, org.apache.felix.https.truststore: str, org.apache.felix.https.truststore@TypeHint: str, org.apache.felix.https.truststore.password: str, org.apache.felix.https.truststore.password@TypeHint: str, org.apache.felix.https.clientcertificate: str, org.apache.felix.https.clientcertificate@TypeHint: str, org.apache.felix.https.enable: bool, org.apache.felix.https.enable@TypeHint: str, org.osgi.service.http.port.secure: str, org.osgi.service.http.port.secure@TypeHint: str}\n\n@endpoint POST /apps/system/config/org.apache.sling.servlets.get.DefaultGetServlet\n@optional {json.maximumresults: str, json.maximumresults@TypeHint: str, enable.html: bool, enable.html@TypeHint: str, enable.txt: bool, enable.txt@TypeHint: str, enable.xml: bool, enable.xml@TypeHint: str}\n\n@endpoint POST /apps/system/config/org.apache.sling.security.impl.ReferrerFilter\n@optional {allow.empty: bool, allow.empty@TypeHint: str, allow.hosts: str, allow.hosts@TypeHint: str, allow.hosts.regexp: str, allow.hosts.regexp@TypeHint: str, filter.methods: str, filter.methods@TypeHint: str}\n\n@endpoint POST /apps/system/config/org.apache.sling.jcr.davex.impl.servlets.SlingDavExServlet\n@optional {alias: str, alias@TypeHint: str, dav.create-absolute-uri: bool, dav.create-absolute-uri@TypeHint: str}\n\n@endpoint POST /apps/system/config/com.shinesolutions.aem.passwordreset.Activator\n@optional {pwdreset.authorizables: [str], pwdreset.authorizables@TypeHint: str}\n\n@endpoint POST /apps/system/config/com.shinesolutions.healthcheck.hc.impl.ActiveBundleHealthCheck\n@optional {bundles.ignored: [str], bundles.ignored@TypeHint: str}\n\n@endgroup\n\n@group bin\n@endpoint GET /bin/querybuilder.json\n@required {path: str, p.limit: num, 1_property: str, 1_property.value: str}\n\n@endpoint POST /bin/querybuilder.json\n@required {path: str, p.limit: num, 1_property: str, 1_property.value: str}\n\n@endgroup\n\n@group etc\n@endpoint GET /etc/packages/{group}/{name}-{version}.zip\n@required {group: str, name: str, version: str}\n\n@endpoint GET /etc/packages/{group}/{name}-{version}.zip/jcr:content/vlt:definition/filter.tidy.2.json\n@required {group: str, name: str, version: str}\n\n@endpoint GET /etc/replication/agents.{runmode}.-1.json\n@required {runmode: str}\n\n@endpoint GET /etc/replication/agents.{runmode}/{name}\n@required {runmode: str, name: str}\n\n@endpoint DELETE /etc/replication/agents.{runmode}/{name}\n@required {runmode: str, name: str}\n\n@endpoint POST /etc/replication/agents.{runmode}/{name}\n@required {runmode: str, name: str}\n@optional {jcr: content/cq:distribute: bool, jcr:content/cq:distribute@TypeHint: str, jcr:content/cq:name: str, jcr:content/cq:template: str, jcr:content/enabled: bool, jcr:content/jcr:description: str, jcr:content/jcr:lastModified: str, jcr:content/jcr:lastModifiedBy: str, jcr:content/jcr:mixinTypes: str, jcr:content/jcr:title: str, jcr:content/logLevel: str, jcr:content/noStatusUpdate: bool, jcr:content/noVersioning: bool, jcr:content/protocolConnectTimeout: num, jcr:content/protocolHTTPConnectionClosed: bool, jcr:content/protocolHTTPExpired: str, jcr:content/protocolHTTPHeaders: [str], jcr:content/protocolHTTPHeaders@TypeHint: str, jcr:content/protocolHTTPMethod: str, jcr:content/protocolHTTPSRelaxed: bool, jcr:content/protocolInterface: str, jcr:content/protocolSocketTimeout: num, jcr:content/protocolVersion: str, jcr:content/proxyNTLMDomain: str, jcr:content/proxyNTLMHost: str, jcr:content/proxyHost: str, jcr:content/proxyPassword: str, jcr:content/proxyPort: num, jcr:content/proxyUser: str, jcr:content/queueBatchMaxSize: num, jcr:content/queueBatchMode: str, jcr:content/queueBatchWaitTime: num, jcr:content/retryDelay: str, jcr:content/reverseReplication: bool, jcr:content/serializationType: str, jcr:content/sling:resourceType: str, jcr:content/ssl: str, jcr:content/transportNTLMDomain: str, jcr:content/transportNTLMHost: str, jcr:content/transportPassword: str, jcr:content/transportUri: str, jcr:content/transportUser: str, jcr:content/triggerDistribute: bool, jcr:content/triggerModified: bool, jcr:content/triggerOnOffTime: bool, jcr:content/triggerReceive: bool, jcr:content/triggerSpecific: bool, jcr:content/userId: str, jcr:primaryType: str, :operation: str}\n\n@endgroup\n\n@group libs\n@endpoint POST /libs/replication/treeactivation.html\n@required {ignoredeactivated: bool, onlymodified: bool, path: str, cmd: str=activate}\n\n@endpoint POST /libs/granite/security/post/authorizables\n@required {authorizableId: str, intermediatePath: str}\n@optional {createUser: str, createGroup: str, rep:password: str, profile/givenName: str}\n\n@endgroup\n\n@group crx\n@endpoint POST /crx/explorer/ui/setpassword.jsp\n@required {old: str, plain: str, verify: str}\n\n@endpoint GET /crx/packmgr/installstatus.jsp\n@returns(200) {status: map{finished: bool, itemCount: int}} # Retrieved CRX package manager install status\n\n@endpoint POST /crx/packmgr/service.jsp\n@required {cmd: str}\n\n@endpoint POST /crx/packmgr/update.jsp\n@required {groupName: str, packageName: str, version: str, path: str}\n@optional {filter: str, _charset_: str}\n\n@endpoint POST /crx/packmgr/service/.json/{path}\n@required {path: str, cmd: str}\n@optional {groupName: str, packageName: str, packageVersion: str, _charset_: str, force: bool, recursive: bool}\n\n@endpoint GET /crx/packmgr/service/script.html\n@errors {404: Package Manager Servlet is disabled, 405: Package Manager Servlet is active}\n\n@endpoint GET /crx/server/crx.default/jcr:root/.1.json\n@returns(200) CRXDE is enabled\n@errors {404: CRXDE is disabled}\n\n@endgroup\n\n@group system\n@endpoint GET /system/console/bundles/{name}.json\n@required {name: str}\n@returns(200) {status: str, s: [int], data: [map]} # Retrieved bundle info\n\n@endpoint POST /system/console/bundles/{name}\n@required {name: str, action: str}\n\n@endpoint POST /system/console/jmx/com.adobe.granite:type=Repository/op/{action}\n@required {action: str}\n\n@endpoint GET /system/health\n@optional {tags: str, combineTagsOr: bool}\n\n@endgroup\n\n@group apps\n@endpoint POST /apps/system/config/com.adobe.granite.auth.saml.SamlAuthenticationHandler.config\n@optional {keyStorePassword: str, keyStorePassword@TypeHint: str, service.ranking: int, service.ranking@TypeHint: str, idpHttpRedirect: bool, idpHttpRedirect@TypeHint: str, createUser: bool, createUser@TypeHint: str, defaultRedirectUrl: str, defaultRedirectUrl@TypeHint: str, userIDAttribute: str, userIDAttribute@TypeHint: str, defaultGroups: [str], defaultGroups@TypeHint: str, idpCertAlias: str, idpCertAlias@TypeHint: str, addGroupMemberships: bool, addGroupMemberships@TypeHint: str, path: [str], path@TypeHint: str, synchronizeAttributes: [str], synchronizeAttributes@TypeHint: str, clockTolerance: int, clockTolerance@TypeHint: str, groupMembershipAttribute: str, groupMembershipAttribute@TypeHint: str, idpUrl: str, idpUrl@TypeHint: str, logoutUrl: str, logoutUrl@TypeHint: str, serviceProviderEntityId: str, serviceProviderEntityId@TypeHint: str, assertionConsumerServiceURL: str, assertionConsumerServiceURL@TypeHint: str, handleLogout: bool, handleLogout@TypeHint: str, spPrivateKeyAlias: str, spPrivateKeyAlias@TypeHint: str, useEncryption: bool, useEncryption@TypeHint: str, nameIdFormat: str, nameIdFormat@TypeHint: str, digestMethod: str, digestMethod@TypeHint: str, signatureMethod: str, signatureMethod@TypeHint: str, userIntermediatePath: str, userIntermediatePath@TypeHint: str}\n\n@endpoint POST /apps/system/config/org.apache.http.proxyconfigurator.config\n@optional {proxy.host: str, proxy.host@TypeHint: str, proxy.port: int, proxy.port@TypeHint: str, proxy.exceptions: [str], proxy.exceptions@TypeHint: str, proxy.enabled: bool, proxy.enabled@TypeHint: str, proxy.user: str, proxy.user@TypeHint: str, proxy.password: str, proxy.password@TypeHint: str}\n\n@endgroup\n\n@group libs\n@endpoint POST /libs/granite/security/post/truststore\n@optional {:operation: str: any, newPassword: str, rePassword: str, keyStoreType: str, removeAlias: str}\n\n@endpoint GET /libs/granite/security/truststore.json\n@returns(200) {aliases: [map], exists: bool} # Retrieved AEM Truststore info\n\n@endgroup\n\n@group etc\n@endpoint GET /etc/truststore/truststore.p12\n\n@endpoint POST /etc/truststore\n\n@endgroup\n\n@group system\n@endpoint POST /system/console/configMgr/com.adobe.granite.auth.saml.SamlAuthenticationHandler\n@optional {post: bool, apply: bool, delete: bool, action: str, $location: str, path: [str], service.ranking: int, idpUrl: str, idpCertAlias: str, idpHttpRedirect: bool, serviceProviderEntityId: str, assertionConsumerServiceURL: str, spPrivateKeyAlias: str, keyStorePassword: str, defaultRedirectUrl: str, userIDAttribute: str, useEncryption: bool, createUser: bool, addGroupMemberships: bool, groupMembershipAttribute: str, defaultGroups: [str], nameIdFormat: str, synchronizeAttributes: [str], handleLogout: bool, logoutUrl: str, clockTolerance: int, digestMethod: str, signatureMethod: str, userIntermediatePath: str, propertylist: [str]}\n@returns(200) Retrieved AEM SAML Configuration\n@errors {302: Default response}\n\n@endpoint GET /system/console/status-productinfo.json\n\n@endgroup\n\n@group {intermediatePath}\n@endpoint POST /{intermediatePath}/{authorizableId}.ks.html\n@required {intermediatePath: str, authorizableId: str}\n@optional {:operation: str: any, currentPassword: str, newPassword: str, rePassword: str, keyPassword: str, keyStorePass: str, alias: str, newAlias: str, removeAlias: str}\n@returns(200) Retrieved Authorizable Keystore info\n\n@endpoint GET /{intermediatePath}/{authorizableId}.ks.json\n@required {intermediatePath: str, authorizableId: str}\n@returns(200) Retrieved Authorizable Keystore info\n\n@endpoint GET /{intermediatePath}/{authorizableId}/keystore/store.p12\n@required {intermediatePath: str, authorizableId: str}\n\n@endgroup\n\n@group libs\n@endpoint POST /libs/granite/security/post/sslSetup.html\n@required {keystorePassword: str, keystorePasswordConfirm: str, truststorePassword: str, truststorePasswordConfirm: str, httpsHostname: str, httpsPort: str}\n\n@endgroup\n\n@end\n"}}