{"id":20509038,"url":"https://github.com/shinesolutions/swagger-aem","last_synced_at":"2025-07-14T10:33:32.961Z","repository":{"id":47317513,"uuid":"61857466","full_name":"shinesolutions/swagger-aem","owner":"shinesolutions","description":"OpenAPI specification for Adobe Experience Manager (AEM) API","archived":false,"fork":false,"pushed_at":"2022-11-28T09:21:07.000Z","size":52791,"stargazers_count":39,"open_issues_count":8,"forks_count":22,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-06-09T14:12:44.623Z","etag":null,"topics":["aem","aem-opencloud","api-client","api-spec","openapi"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shinesolutions.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-06-24T04:45:15.000Z","updated_at":"2025-03-03T16:39:00.000Z","dependencies_parsed_at":"2023-01-23T09:16:09.869Z","dependency_job_id":null,"html_url":"https://github.com/shinesolutions/swagger-aem","commit_stats":null,"previous_names":[],"tags_count":72,"template":false,"template_full_name":null,"purl":"pkg:github/shinesolutions/swagger-aem","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinesolutions%2Fswagger-aem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinesolutions%2Fswagger-aem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinesolutions%2Fswagger-aem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinesolutions%2Fswagger-aem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shinesolutions","download_url":"https://codeload.github.com/shinesolutions/swagger-aem/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinesolutions%2Fswagger-aem/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264757253,"owners_count":23659314,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aem","aem-opencloud","api-client","api-spec","openapi"],"created_at":"2024-11-15T20:21:58.708Z","updated_at":"2025-07-14T10:33:32.925Z","avatar_url":"https://github.com/shinesolutions.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![API Build Status](https://github.com/shinesolutions/swagger-aem/actions/workflows/api-ci-workflow.yaml/badge.svg)](https://github.com/shinesolutions/swagger-aem/actions/workflows/api-ci-workflow.yaml)\n[![Python Build Status](https://github.com/shinesolutions/swagger-aem/actions/workflows/python-ci-workflow.yaml/badge.svg)](https://github.com/shinesolutions/swagger-aem/actions/workflows/python-ci-workflow.yaml)\n[![Ruby Build Status](https://github.com/shinesolutions/swagger-aem/actions/workflows/ruby-ci-workflow.yaml/badge.svg)](https://github.com/shinesolutions/swagger-aem/actions/workflows/ruby-ci-workflow.yaml)\n\nSwagger AEM\n-----------\n\nSwagger AEM is an OpenAPI specification for [Adobe Experience Manager (AEM)](http://www.adobe.com/au/marketing-cloud/enterprise-content-management.html) API.\n\nThis specification is used to generate client libraries for Ruby, Python, node.js, and Java using [OpenAPI Generator](https://openapi-generator.tech/).\n\nLearn more about Swagger AEM:\n\n* [Generated Clients](https://github.com/shinesolutions/swagger-aem#generated-clients)\n* [Development](https://github.com/shinesolutions/swagger-aem#development)\n* [Testing](https://github.com/shinesolutions/swagger-aem#testing)\n* [Frequently Asked Questions](https://github.com/shinesolutions/swagger-aem#frequently-asked-questions)\n* [Versions History](https://github.com/shinesolutions/swagger-aem/blob/main/docs/versions.md)\n* [Contribution](https://github.com/shinesolutions/swagger-aem#contribution)\n* [Presentations](https://github.com/shinesolutions/swagger-aem/#presentations)\n\nSwagger AEM is part of [AEM OpenCloud](https://aemopencloud.io) platform but it can be used as a stand-alone.\n\nGenerated Clients\n-----------------\n\n| Language   | Package                                                                                                                                                                                                                                                                 | Getting Started                                                                                                                                                                         |\n|------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Ruby       | [swagger_aem](https://rubygems.org/gems/swagger_aem) [![Published Version](https://badge.fury.io/rb/swagger_aem.svg)](https://rubygems.org/gems/swagger_aem)                                                                                                            | [README](https://github.com/shinesolutions/swagger-aem/blob/main/ruby/README.md) [CHANGELOG](https://github.com/shinesolutions/swagger-aem/blob/main/ruby/CHANGELOG.md)             |\n| Python     | [swaggeraem](https://pypi.python.org/pypi/swaggeraem) [![Published Version](https://badge.fury.io/py/swaggeraem.svg)](https://pypi.python.org/pypi/swaggeraem)                                                                                                          | [README](https://github.com/shinesolutions/swagger-aem/blob/main/python/README.md) [CHANGELOG](https://github.com/shinesolutions/swagger-aem/blob/main/python/CHANGELOG.md)         |\n| Java       | [swaggeraem4j](http://mvnrepository.com/artifact/com.shinesolutions/swaggeraem4j) [![Published Version](https://maven-badges.herokuapp.com/maven-central/com.shinesolutions/swaggeraem4j/badge.svg)](http://mvnrepository.com/artifact/com.shinesolutions/swaggeraem4j) | [README](https://github.com/shinesolutions/swagger-aem/blob/main/java/README.md) [CHANGELOG](https://github.com/shinesolutions/swagger-aem/blob/main/java/CHANGELOG.md)             |\n\n\nDevelopment\n-----------\n\nTo generate API clients (note that at different time, there could be some changes that have to be retrofitted since they're not yet included in OpenAPI Generator):\n\n    make deps-ruby generate-ruby ruby\n\n    make deps-python generate-python python\n\nIf you want to use a custom `openapi-generator-cli-\u003cversion\u003e.jar`, place the custom jar at `stage/openapi-generator-cli.jar`, then run:\n\n    make generate-ruby ruby\n\n    make generate-python python\n\nTesting\n-------\n\nUnit tests are generated by OpenAPI Generator along with the client code.\n\nIntegration tests are part of Swagger AEM and require an AEM instance running on default port 4502 (can be overridden using environment variable `aem_port`) with [Shine Solutions AEM Health Check](https://github.com/shinesolutions/aem-healthcheck) package installed.\n\nFrequently Asked Questions\n--------------------------\n\n* __Q:__ Why does each OSGI config need to be declared as a single operation in the OpenAPI spec?\u003cbr/\u003e\n  __A:__ There are two reasons. The first one is to explicitly define which parameters are relevant for which OSGI config, which won't be clear when we have one operation for all OSGI configs with all parameters declared within that operation. The second one is to manage the usability of the generated code. A single operation will translate to a single method with all parameters supported, which is fine in generated Ruby client because it supports optional hash, but it's a problem with generated Java client because all parameters will be declared within the method signature where caller will have to pass in `null`s for the parameters that aren't relevant for the OSGI config being processed, on top of the risk of hitting maximum number of 255 parameters per method (as per [JVM Specification for Java SE 11](https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-4.html#jvms-4.11)).\n\n\nContribution\n------------\n\nSince swagger-aem contains multiple languages, add a `[ruby|python|java]` prefix to language-specific commits, this will help with filtering full commits log.\n\nTagging should also be prefixed with:\n\n* `api` when the release is for the OpenAPI specification, e.g. `api-1.0.0`\n* `ruby|python|java` when the release is for the generated client, e.g. `ruby-0.9.2`, `python-0.9.0`\n\nPresentations\n-------------\n\n* [Swagger AEM - An OpenAPI Specification for AEM](https://www.slideshare.net/cliffano/swagger-aem-an-openapi-specification-for-aem) at [adaptTo() 2019](https://adapt.to/2019/en.html)\n* [Beyond AEM Curl Commands](https://www.slideshare.net/cliffano/beyond-aem-curl-commands) at [Adobe Immerse'18](https://immerse18.adobe-devs.adobeevents.com/)\n* [Building An AEM API Clients Ecosystem](https://www.slideshare.net/cliffano/building-an-aem-api-clients-ecosystem/) at [Adobe Experience Cloud Meetup - 5th Edition](https://www.meetup.com/Melbourne-Adobe-Experience-Cloud/events/249851899/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshinesolutions%2Fswagger-aem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshinesolutions%2Fswagger-aem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshinesolutions%2Fswagger-aem/lists"}