Skip to content

Instantly share code, notes, and snippets.

@sergeimuller
Last active August 25, 2023 03:52
Show Gist options
  • Save sergeimuller/2916697 to your computer and use it in GitHub Desktop.
Save sergeimuller/2916697 to your computer and use it in GitHub Desktop.
CQ5 curl commands
Note 1: The following CQ curl commands assumes a admin:admin username and password.
Note 2: For Windows/Powershell users: use two "" when doing a -F cURL command.
Example: -F"":operation=delete""
Note 3: Quotes around name of package (or name of zip file, or jar) should be included.
Uninstall a bundle (use http://localhost:4505/system/console/bundles to access the Apache Felix web console)
curl -u admin:admin -daction=uninstall http://localhost:4505/system/console/bundles/"name of bundle"
Install a bundle
curl -u admin:admin -F action=install -F bundlestartlevel=20 -F
bundlefile=@"name of jar.jar" http://localhost:4505/system/console/bundles
Build a bundle
curl -u admin:admin -F bundleHome=/apps/centrica/bundles/name of bundle -F
descriptor=/apps/centrica/bundles/com.centrica.cq.wcm.core-bundle/name_of_bundle.bnd
http://localhost:4505/libs/crxde/build
Stop a bundle
curl -u admin:admin http://localhost:4505/system/console/bundles/org.apache.sling.scripting.jsp
-F action=stop
Start a bundle
curl -u admin:admin http://localhost:4505/system/console/bundles/org.apache.sling.scripting.jsp
-F action=start
Delete a node (hierarchy) - (this will delete any directory / node / site)
curl -X DELETE http://localhost:4505/path/to/node/jcr:content/nodeName -u admin:admin
Upload a package AND install
curl -u admin:admin -F file=@"name of zip file" -F name="name of package"
-F force=true -F install=true http://localhost:4505/crx/packmgr/service.jsp
Upload a package DO NOT install
curl -u admin:admin -F file=@"name of zip file" -F name="name of package"
-F force=true -F install=false http://localhost:4505/crx/packmgr/service.jsp
Rebuild an existing package in CQ
curl -u admin:admin -X POST http://localhost:4505:/crx/packmgr/service/.json/etc/packages/name_of_package.zip?cmd=build
Download (the package)
curl -u admin:admin http://localhost:4505/etc/packages/export/name_of_package.zip > name of local package file
Upload a new package
curl -u admin:admin -F package=@"name_of_package.zip" http://localhost:4505/crx/packmgr/service/.json/?cmd=upload
Install an existing package
curl -u admin:admin -X POST http://localhost:4505/crx/packmgr/service/.json/etc/packages/export/name of package?cmd=install
Activate
curl -u admin:admin -X POST -F path="/content/path/to/page" -F cmd="activate" http://localhost:4502/bin/replicate.json
Deactivate
curl -u admin:admin -X POST -F path="/content/path/to/page" -F cmd="deactivate" http://localhost:4502/bin/replicate.json
Tree Activation
curl -u admin:admin -F cmd=activate -F ignoredeactivated=true -F onlymodified=true
-F path=/content/geometrixx http://localhost:4502/etc/replication/treeactivation.html
Lock page
curl -u admin:admin -X POST -F cmd="lockPage" -F path="/content/path/to/page" -F "_charset_"="utf-8" http://localhost:4502/bin/wcmcommand
Unlock page
curl -u admin:admin -X POST -F cmd="unlockPage" -F path="/content/path/to/page" -F "_charset_"="utf-8" http://localhost:4502/bin/wcmcommand
Copy page
curl -u admin:admin -F cmd=copyPage -F destParentPath=/path/to/destination/parent -F srcPath=/path/to/source/locaiton http://localhost:4502/bin/wcmcommand
Further Resources:
http://cq-ops.tumblr.com/post/19017053665/useful-curl-commands
http://balawcm.wordpress.com/2013/02/13/curl-it-out-adobe-cq5-curl-commands-and-usage/
@gsharp
Copy link

gsharp commented Oct 1, 2015

wondering if there is a way to get json instead of xml from the generic GET on the service:

example: http://localhost:4502/crx/packmgr/service.jsp?cmd=ls

I'm getting xml which could work but I need something that gives all packs and their state without knowing the group names.

The end game is to find out which packs are installed vs uploaded.

@AnkurAhuja
Copy link

I am trying to Automate the SAML Configuration in AEM 6.1,
Has anyone generated the CURL command to Automate the authentication-service keystore and CURL command to Automate the trust store for uploading the Certificate.

@ravilution
Copy link

What is the command to replicate a package that is uploaded and installed. In package manager page if you go to more options there is replicate.

@zapts
Copy link

zapts commented May 12, 2016

Package replication is not best practice. It does not provide a method for uninstallation from the replication receiver servers.

@ObjectiveTruth
Copy link

ObjectiveTruth commented May 18, 2016

FYI, the field name is optional, if its not included it will just name it whatever the bundle is called

Created this quick bash script to install a package if it doesn't exist in crx. (based on this gist)

Hope it helps

@wildone
Copy link

wildone commented Jul 1, 2016

have a look at this dudes:
https://github.com/wildone/pyaem
I use this for all automation of deploy, just working on a final touches will release Ansible project for this to make everyones life easier

@gsharp, this is what you are looking for: http://localhost:4502/crx/packmgr/list.jsp
@zapts,that corect use ansible to prep your server
@ravilution, this is how curl -u : -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/mycontent.zip?cmd=replicate

@wildone
Copy link

wildone commented Jul 1, 2016

also I am dumping all my Curl links here they will include these and more

https://github.com/paulrohrbeck/aem-links
https://github.com/wildone/aem-links

@dhughes-xumak
Copy link

@cpilsworth mentioned -F recursive=true. This doesn't seem to be necessary, at least not on AEM 6.1.

Also, if you have a bunch of packages to upload and install, you can put them all in a directory and run:

~$ AEM_PACKAGES_DIR=~/Downloads/aem_packages
~$ AEM_USER_PASS=admin:admin
~$ AEM_HOST_PORT=localhost:4502
~$ for f in $AEM_PACKAGES_DIR/*; do 
     echo "Uploading and installing $f to $AEM_HOST_PORT ($AEM_USER_PASS)" ; 
     curl -u $AEM_USER_PASS -F file=@"$f" -F install=true http://$AEM_HOST_PORT/crx/packmgr/service.jsp ; 
   done

This will iterate over the files in AEM_PACKAGES_DIR and upload/install in listing order. Need to enforce a specific order? Prefix the order-specific packages with a number (eg, 1_aem-service-pkg-wrapper-6.1.SP2.zip and 2_cq-6.1.0-hotfix-10302-1.0.zip).

@venkyvikram
Copy link

Hi there..

Any body could help me out with, counting the number of bundles through the curl command in AEM 6?

Regards,
Venkat

@nirmaljosehere
Copy link

@venkyvikram - You can use curl -u admin:admin http://localhost:4502/system/console/bundles.json to get the information

@robothero
Copy link

I am trying to download an AEM Package using curl: curl -u admin:admin http://localhost:4505/etc/packages/export/name_of_package.zip > name of local package file , but it its not returning the actual file and I am unable to "extract the archive" can you please assist?

@schoudry
Copy link

To update the properties of an osgi service

curl -v -u admin:admin -X POST --data "apply=true&di3dUploadRenderUrl=ABC&di3dDownloadUrl=DEF&propertylist=di3dUploadRenderUrl%2Cdi3dDownloadUrl" http://localhost:4502/system/console/configMgr/apps.assets.di3d.impl.DI3DCloudRenderingServiceImpl

@zapts
Copy link

zapts commented Jun 25, 2020

AEM 6.5 Upload a Digital Asset to the DAM:
curl -u admin:admin -X POST http://server:port/content/dam/folder-name.createasset.html -F"file=@imagename.png"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment