DX module that provides enterprise level module management functionality
- API base url: http://{dx.host}:{dx.port}/{dx.tomcat.contextPath}/modules/api/bundles
- User should have the
adminTemplates
permission in DX to be able to use this API - The
target
parameter is optional, the value of thetarget
group of cluster nodes could be specified asnull
, meaning the default group is concerned, which includes all cluster nodes. - Available actions:
- Install one or multiple bundle(s)
- Start a bundle
- Stop a bundle
- Uninstall a bundle
- Get cluster wide info about bundle(s) (since DX 7.2.0.2)
- Get local info about bundle(s) (since DX 7.2.0.2)
- Get local state of bundle(s)
- Store local persistent state of all the bundles (since DX 7.3.1.0)
- Refresh a bundle (since DX 7.3.1.1)
- Update a bundle (since DX 7.3.1.1)
When using special characters in the URL, such as [
or ]
, those need to be encoded accordingly or a HTTP Status 400 – Bad Request
error will be returned by tomcat.
For example:
http://localhost:8080/modules/api/bundles/%5Barticle/3.0.0,blog/4.0.0%5D/_localInfo
will return details about the specified modules, while http://root:root@localhost:8080/modules/api/bundles/[article/3.0.0,blog/4.0.0]/_localInfo
will return a 400 error due to non encoded characters.
Install the specified bundle(s), optionally starting it/them right after and return the operation result(s).
In case you need to deploy multiple bundles at the same time, you can do it in one call to avoid multiple "refresh" of dependencies, for that you just need one "bundle" parameter for each bundle you want to deploy.
-
URL
/
-
Method:
POST
-
Consume:
multipart/form-data
-
Params
start=[boolean]
:true
, if the bundle should be started right after installationtarget=[string]
: The group of cluster nodes targeted by the operation, orlocal
to deploy to a node individually using standard non-clustered module deploymentRequired:
bundle=[file]
: a bundle to be deploy, this parameter can be repeat for each bundle that need to be deploy, at least one bundle is required -
Success Response:
-
Code: 200
Content:{"bundleInfos":[{"groupId":"org.jahia.modules","symbolicName":"article","version":"2.0.3.SNAPSHOT","key":"org.jahia.modules/article/2.0.3.SNAPSHOT"}],"message":"Operation successful"}
-
Code: 200
Content:{"bundleInfos":[{"groupId":"org.jahia.modules","symbolicName":"article","version":"3.0.0.SNAPSHOT","key":"org.jahia.modules/article/3.0.0.SNAPSHOT"},{"groupId":"org.jahia.modules","symbolicName":"news","version":"2.0.2.SNAPSHOT","key":"org.jahia.modules/news/2.0.2.SNAPSHOT"}],"message":"Operation successful"}
-
-
Error Response:
- Code: 400 BAD REQUEST
Content:{"status":400,"reasonPhrase":"Bad Request","message":"Unable to install module. Cause: Submitted bundle is either not a valid OSGi bundle or has no required manifest headers Bundle-SymbolicName and Implementation-Version/Bundle-Version"}
OR
- Code: 401 UNAUTHORIZED
Content:user /users/hj/di/ac/bill is not allowed to access Module Manager HTTP API
- Code: 400 BAD REQUEST
-
Sample Call:
curl -s --user jon:password --form bundle=@/Users/jon/Projects/article/target/article-2.0.3-SNAPSHOT.jar --form start=true http://localhost:8080/modules/api/bundles
curl -s --user jon:password --form bundle=@/Users/jon/Projects/article/target/article-3.0.0-SNAPSHOT.jar --form bundle=@/Users/jon/Projects/news/target/news-2.0.2-SNAPSHOT.jar --form start=true http://localhost:8080/modules/api/bundles
Starts the specified bundle and return the operation result.
-
URL
/:bundleKey/_start
-
Method:
POST
-
Params
target=[string]
: The group of cluster nodes targeted by the operation, orlocal
to deploy to a node individually using standard non-clustered module deploymentRequired:
bundleKey=[string]
: the bundle key -
Success Response:
- Code: 200
Content:{"bundleInfos":[{"groupId":"org.jahia.modules","symbolicName":"article","version":"2.0.3.SNAPSHOT","key":"org.jahia.modules/article/2.0.3.SNAPSHOT"}],"message":"Operation successful"}
- Code: 200
-
Error Response:
- Code: 404 NOT FOUND
Content:{"status":404,"reasonPhrase":"Not Found","message":"Unable to find a module bundle corresponding to the key: org.jahia.modules/article/2.0.3.SPSHOT"}
OR
- Code: 401 UNAUTHORIZED
Content:user /users/hj/di/ac/bill is not allowed to access Module Manager HTTP API
- Code: 404 NOT FOUND
-
Sample Call:
curl -s --user jon:root1234 --data --request POST http://localhost:8080/modules/api/bundles/org.jahia.modules/article/2.0.3.SNAPSHOT/_start
Stops the specified bundle and return the operation result.
-
URL
/:bundleKey/_stop
-
Method:
POST
-
Params
target=[string]
: The group of cluster nodes targeted by the operation, orlocal
to deploy to a node individually using standard non-clustered module deploymentRequired:
bundleKey=[string]
: the bundle key -
Success Response:
- Code: 200
Content:{"bundleInfos":[{"groupId":"org.jahia.modules","symbolicName":"article","version":"2.0.3.SNAPSHOT","key":"org.jahia.modules/article/2.0.3.SNAPSHOT"}],"message":"Operation successful"}
- Code: 200
-
Error Response:
- Code: 404 NOT FOUND
Content:{"status":404,"reasonPhrase":"Not Found","message":"Unable to find a module bundle corresponding to the key: org.jahia.modules/article/2.0.3.SPSHOT"}
OR
- Code: 401 UNAUTHORIZED
Content:user /users/hj/di/ac/bill is not allowed to access Module Manager HTTP API
- Code: 404 NOT FOUND
-
Sample Call:
curl -s --user jon:root1234 --data --request POST http://localhost:8080/modules/api/bundles/org.jahia.modules/article/2.0.3.SNAPSHOT/_stop
Uninstalls the specified bundle and return the operation result.
-
URL
/:bundleKey/_uninstall
-
Method:
POST
-
Params
target=[string]
: The group of cluster nodes targeted by the operation, orlocal
to deploy to a node individually using standard non-clustered module deploymentRequired:
bundleKey=[string]
: the bundle key -
Success Response:
- Code: 200
Content:{"bundleInfos":[{"groupId":"org.jahia.modules","symbolicName":"article","version":"2.0.3.SNAPSHOT","key":"org.jahia.modules/article/2.0.3.SNAPSHOT"}],"message":"Operation successful"}
- Code: 200
-
Error Response:
- Code: 404 NOT FOUND
Content:{"status":404,"reasonPhrase":"Not Found","message":"Unable to find a module bundle corresponding to the key: org.jahia.modules/article/2.0.3.SPSHOT"}
OR
- Code: 401 UNAUTHORIZED
Content:user /users/hj/di/ac/bill is not allowed to access Module Manager HTTP API
- Code: 404 NOT FOUND
-
Sample Call:
curl -s --user jon:root1234 --data --request POST http://localhost:8080/modules/api/bundles/org.jahia.modules/article/2.0.3.SNAPSHOT/_uninstall
Get cluster wide info about one or more installed bundles.
-
URL
/:bundleSelector/_info
-
Method:
GET
-
Params
target=[string]
: The group of cluster nodes targeted by the operation, orlocal
to deploy to a node individually using standard non-clustered module deploymentRequired:
bundleSelector=[string]
: one of- a bundle key; the version value in the bundle key may be replaced with an asterisk symbol which stands for all installed versions of the bundle (since DX 7.2.3.3/7.3.0.1)
- a comma separated list of bundle keys wrapped with encoded square brackets (%5B...%5D)
- an asterisk symbol which stands for all installed bundles (since DX 7.2.3.3/7.3.0.1)
-
Success Response:
- Code: 200
Content:{"jahiaNode1":{"type":"MODULE","osgiState":"ACTIVE","moduleState":"STARTED"},"jahiaNode2":{"type":"MODULE","osgiState":"ACTIVE","moduleState":"STARTED"}
OR
- Code: 200
Content:{"jahiaNode1":{"article/2.0.2":{"type":"MODULE","osgiState":"ACTIVE","moduleState":"STARTED"},"news/2.0.3":{"type":"type":"MODULE","osgiState":"ACTIVE","moduleState":"STARTED"}},"jahiaNode2":{"article/2.0.2":{"type":"MODULE","osgiState":"ACTIVE","moduleState":"STARTED"},"news/2.0.3":{"type":"MODULE","osgiState":"ACTIVE","moduleState":"STARTED"}}}
- Code: 200
-
Error Response:
- Code: 200
Content:{"jahiaNode1":{"message":"Error retrieving bundle info from cluster node jahiaNode1","cause":"org.jahia.services.modulemanager.ModuleNotFoundException: Unable to find a module bundle corresponding to the key: article/2.0.3.SPSHOT"},"jahiaNode2":{"message":"Error retrieving bundle info from cluster node jahiaNode2","cause":"org.jahia.services.modulemanager.ModuleNotFoundException: Unable to find a module bundle corresponding to the key: article/2.0.3.SPSHOT"}
OR
- Code: 401 UNAUTHORIZED
Content:user /users/hj/di/ac/bill is not allowed to access Module Manager HTTP API
- Code: 200
-
Sample Calls:
curl -s --user jon:password --request GET http://localhost:8080/modules/api/bundles/article/2.0.3.SNAPSHOT/_info curl -g -s --user jon:password --request GET http://localhost:8080/modules/api/bundles/%5Barticle/2.0.3,news/2.0.4%5D/_info curl -s --user jon:password --request GET http://localhost:8080/modules/api/bundles/article/*/_info curl -s --user jon:password --request GET http://localhost:8080/modules/api/bundles/org.jahia.modules/*/*/_info curl -s --user jon:password --request GET http://localhost:8080/modules/api/bundles/*/_info
Get local info about one or more installed bundles.
-
URL
/:bundleSelector/_localInfo
-
Method:
GET
-
Params
Required:
bundleSelector=[string]
: one of- a bundle key; the version value in the bundle key may be replaced with an asterisk symbol which stands for all installed versions of the bundle (since DX 7.2.3.3/7.3.0.1)
- a comma separated list of bundle keys wrapped with encoded square brackets (%5B...%5D)
- an asterisk symbol which stands for all installed bundles (since DX 7.2.3.3/7.3.0.1)
-
Success Response:
- Code: 200
Content:{"type":"MODULE","osgiState":"ACTIVE","moduleState":"STARTED"}
OR
- Code: 200
Content:{"article/2.0.3.SNAPSHOT":{"type":"MODULE","osgiState":"ACTIVE","moduleState":"STARTED"},"news/2.0.3":{"type":"MODULE","osgiState":"ACTIVE","moduleState":"STARTED"}}
- Code: 200
-
Error Response:
- Code: 404 NOT FOUND
Content:{"status":404,"reasonPhrase":"Not Found","message":"Unable to find a module bundle corresponding to the key: article/2.0.3.SPSHOT"}
OR
- Code: 401 UNAUTHORIZED
Content:user /users/hj/di/ac/bill is not allowed to access Module Manager HTTP API
- Code: 404 NOT FOUND
-
Sample Calls:
curl -s --user jon:password --request GET http://localhost:8080/modules/api/bundles/article/2.0.3.SNAPSHOT/_localInfo curl -g -s --user jon:password --request GET http://localhost:8090/modules/api/bundles/%5Barticle/2.0.3.SNAPSHOT,news/2.0.3%5D/_localInfo curl -s --user jon:password --request GET http://localhost:8080/modules/api/bundles/article/*/_localInfo curl -s --user jon:password --request GET http://localhost:8080/modules/api/bundles/org.jahia.modules/*/*/_localInfo curl -s --user jon:password --request GET http://localhost:8080/modules/api/bundles/*/_localInfo
Get current local state of one or more bundles.
-
URL
/:bundleSelector/_localState
-
Method:
GET
-
Params
Required:
bundleSelector=[string]
: one of- a bundle key
- a comma separated list of bundle keys wrapped with encoded square brackets (%5B...%5D)
-
Success Response:
- Code: 200
Content:"STATE"
Possible values:UNINSTALLED
,INSTALLED
,RESOLVED
,STARTING
,STOPPING
,ACTIVE
OR
- Code: 200
Content:{"article/2.0.3.SNAPSHOT":"ACTIVE","news/2.0.3":"ACTIVE"}
- Code: 200
-
Error Response:
- Code: 404 NOT FOUND
Content:{"status":404,"reasonPhrase":"Not Found","message":"Unable to find a module bundle corresponding to the key: article/2.0.3.SPSHOT"}
OR
- Code: 401 UNAUTHORIZED
Content:user /users/hj/di/ac/bill is not allowed to access Module Manager HTTP API
- Code: 404 NOT FOUND
-
Sample Calls:
curl -s --user jon:password --request GET http://localhost:8080/modules/api/bundles/article/2.0.3.SNAPSHOT/_localState curl -g -s --user jon:password --request GET http://localhost:8090/modules/api/bundles/%5Barticle/2.0.3.SNAPSHOT,news/2.0.3%5D/_localState
Store the local persistent state of all the bundles in the internal storage for the purpose of restoring that state in the future. The operation can only be performed on the processing DX node.
-
URL
/_storeAllLocalPersistentStates
-
Method:
POST
-
Params
None
-
Success Response:
- Code: 200
Content:[ { "symbolicName": "org.apache.felix.framework", "location": "System Bundle", "id": 0, "state": 32, "version": "5.4.0" }, { "symbolicName": "article", "location": "dx:org.jahia.modules/article/2.0.3", "id": 85, "state": 32, "version": "2.0.3" }, ... ]
- Code: 200
-
Error Response:
- Code: 401 UNAUTHORIZED
Content:user /users/hj/di/ac/bill is not allowed to access Module Manager HTTP API
- Code: 401 UNAUTHORIZED
-
Sample Call:
curl -s --user jon:root1234 --request POST http://localhost:8080/modules/api/bundles/_storeAllLocalPersistentStates
Refreshes the specified bundle and return the operation result.
-
URL
/:bundleKey/_refresh
-
Method:
POST
-
Params
target=[string]
: The group of cluster nodes targeted by the operation, orlocal
to deploy to a node individually using standard non-clustered module deploymentRequired:
bundleKey=[string]
: the bundle key -
Success Response:
- Code: 200
Content:{"bundleInfos":[{"groupId":"org.jahia.modules","symbolicName":"article","version":"2.0.3.SNAPSHOT","key":"org.jahia.modules/article/2.0.3.SNAPSHOT"}],"message":"Operation successful"}
- Code: 200
-
Error Response:
- Code: 404 NOT FOUND
Content:{"status":404,"reasonPhrase":"Not Found","message":"Unable to find a module bundle corresponding to the key: org.jahia.modules/article/2.0.3.SPSHOT"}
OR
- Code: 401 UNAUTHORIZED
Content:user /users/hj/di/ac/bill is not allowed to access Module Manager HTTP API
- Code: 404 NOT FOUND
-
Sample Call:
curl -s --user jon:root1234 --data --request POST http://localhost:8080/modules/api/bundles/org.jahia.modules/article/2.0.3 .SNAPSHOT/_refresh
Updates the specified bundle and return the operation result.
-
URL
/:bundleKey/_update
-
Method:
POST
-
Params
target=[string]
: The group of cluster nodes targeted by the operation, orlocal
to deploy to a node individually using standard non-clustered module deploymentRequired:
bundleKey=[string]
: the bundle key -
Success Response:
- Code: 200
Content:{"bundleInfos":[{"groupId":"org.jahia.modules","symbolicName":"article","version":"2.0.3.SNAPSHOT","key":"org.jahia.modules/article/2.0.3.SNAPSHOT"}],"message":"Operation successful"}
- Code: 200
-
Error Response:
- Code: 404 NOT FOUND
Content:{"status":404,"reasonPhrase":"Not Found","message":"Unable to find a module bundle corresponding to the key: org.jahia.modules/article/2.0.3.SPSHOT"}
OR
- Code: 401 UNAUTHORIZED
Content:user /users/hj/di/ac/bill is not allowed to access Module Manager HTTP API
- Code: 404 NOT FOUND
-
Sample Call:
curl -s --user jon:root1234 --data --request POST http://localhost:8080/modules/api/bundles/org.jahia.modules/article/2.0.3 .SNAPSHOT/_update
This is an Open-Source module, you can find more details about Open-Source @ Jahia in this repository.