Expand my Community achievements bar.

Enhance your AEM Assets & Boost Your Development: [AEM Gems | June 19, 2024] Improving the Developer Experience with New APIs and Events

Is anyone using swagger-aem?


Level 3

Hi all,

do you have some information for this project. Are you using it? Some impression?

swagger-aem/README.md at master · shinesolutions/swagger-aem · GitHub

6 Replies


Level 10

From the Readme - what possible benefits do you see?


Level 2

Author of swagger-aem here.

Some of the goals of creating an OpenAPI specification for a number of AEM web endpoints (which used to be described via curl on a number of forum threads, blog posts, articles, etc) are to provide better integration with various tools in various technology stacks, and to improve response handling.

From that OpenAPI specification, swagger-aem provides some API clients (SDKs) written in Ruby, Python, Java, and node.js . This can be pushed further to 20+ programming languages.

Why is this handy one might ask? Because different organisations have different requirements and different SOEs. A simple use case would be one company standardising their AEM provisioning environment with Puppet (which is ruby based) and another company with Ansible (which is Python based). The AEM infrastructure projects I've been on are generating unique system passwords (including admin password) for each environment, so no two environments having the same passwords. And because this password generation is done in the project's choice of tools, whichever the language is, it then uses swagger-aem to set these unique passwords. The password generation is just one example, I'm using swagger-aem for AEM auto recovery, blue green deployments, and many many other automation tasks, across multiple programming languages.

What's the problem with using curl? Many. The main one is that if you need to process JSON/XML/HTML responses from AEM via shell, it's super painful to do and you can't unit test the logic easily compared to doing it in programming languages such as Ruby, Python, etc. An example of Ruby SDK with error handling is GitHub - shinesolutions/ruby_aem: Ruby client for Adobe Experience Manager (AEM) API . Another reason why curl is not good enough is that some projects don't provide access to shell, e.g. think serverless environments.

I have a slide deck on AEM API clients Building An AEM API Clients Ecosystem

Those use cases I mentioned above (setting unique passwords, auto recovery, etc) are implemented in AEM OpenCloud, an open source AEM infrastructure automation on AWS. Here's a slide deck on AEM OpenCloud AEM OpenCloud . Code is available at Search · topic:aem org:shinesolutions · GitHub

sherybedrocklaslingsmacdonald2008​ Hope the above provides some explanation as to why and where it could be useful.

Please feel free to ask me if there's any further question.


Level 1

Is Swagger supoorted in AEM6.4 and above versions.


Employee Advisor

What kind of swagger support (that means: feature) do you expect from AEM 6.4 (the product)?


Level 3

I've not heard of this, nor do I understand where it could be useful.  Would love to hear from someone with experience with it and a good use case.


Level 4

I am not seeing any real value apart from use API thru java client(for poc, play with some api without going to much in detail) instead of curl for those activities. otherwise, i'll prefer to consume sling

Otherwise, I'll prefer consume sling API or JCR instead use this client.