{"id":16284968,"url":"https://github.com/goodforgod/micronaut-management-openapi","last_synced_at":"2025-03-20T02:31:22.097Z","repository":{"id":45091452,"uuid":"297153893","full_name":"GoodforGod/micronaut-management-openapi","owner":"GoodforGod","description":"⚙️ Micronaut cloud-friendly OpenAPI/Swagger-UI/Rapidoc management.","archived":false,"fork":false,"pushed_at":"2023-08-10T05:56:14.000Z","size":273,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-28T22:43:30.026Z","etag":null,"topics":["management","micronaut","openapi","openapi3","rapidoc","swagger","swagger-ui"],"latest_commit_sha":null,"homepage":"https://micronaut.io","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/GoodforGod.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-20T20:02:27.000Z","updated_at":"2024-02-20T06:46:27.000Z","dependencies_parsed_at":"2024-10-10T19:21:49.030Z","dependency_job_id":null,"html_url":"https://github.com/GoodforGod/micronaut-management-openapi","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":"GoodforGod/micronaut-library-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodforGod%2Fmicronaut-management-openapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodforGod%2Fmicronaut-management-openapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodforGod%2Fmicronaut-management-openapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodforGod%2Fmicronaut-management-openapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GoodforGod","download_url":"https://codeload.github.com/GoodforGod/micronaut-management-openapi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244047544,"owners_count":20389203,"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":["management","micronaut","openapi","openapi3","rapidoc","swagger","swagger-ui"],"created_at":"2024-10-10T19:21:44.858Z","updated_at":"2025-03-20T02:31:21.581Z","avatar_url":"https://github.com/GoodforGod.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Micronaut Management OpenAPI\n\n[![Minimum required Java version](https://img.shields.io/badge/Java-17%2B-blue?logo=openjdk)](https://openjdk.org/projects/jdk/17/)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.goodforgod/micronaut-management-openapi/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.goodforgod/micronaut-management-openapi)\n![Java CI](https://github.com/GoodforGod/micronaut-management-openapi/workflows/CI%20Master/badge.svg)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=GoodforGod_micronaut-management-openapi\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=GoodforGod_micronaut-management-openapi)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=GoodforGod_micronaut-management-openapi\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=GoodforGod_micronaut-management-openapi)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=GoodforGod_micronaut-management-openapi\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=GoodforGod_micronaut-management-openapi)\n\nLibrary provides Micronaut *cloud-friendly* OpenAPI/Swagger-UI/Rapidoc management endpoints.\n\nFeatures:\n- Cloud-friendly, *optimized for file streaming* OpenAPI/Swagger-UI/Rapidoc endpoints\n- Merging multiple OpenAPI files into one\n- OpenAPI exposure endpoint\n- Swagger UI exposure endpoint\n- *Swagger UI Dark\\Light theme*\n- Rapidoc exposure endpoint\n\n## Dependency :rocket:\n\n**Gradle**\n```groovy\nimplementation \"io.goodforgod:micronaut-management-openapi:2.0.0\"\n```\n\n**Maven**\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.goodforgod\u003c/groupId\u003e\n    \u003cartifactId\u003emicronaut-management-openapi\u003c/artifactId\u003e\n    \u003cversion\u003e2.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Example\n\nHere is [simple Micronaut HTTP application](https://github.com/GoodforGod/micronaut-java-http-template)\nwith configured library and OpenAPI, you play with it.\n\n## OpenAPI Generation\n\nLibrary only exposes *OpenAPI*, library **DOESN'T** generate it, this is your responsibility to generate OpenAPI files.\n\nThere is Micronaut OpenAPI generator, [Gradle config](https://github.com/GoodforGod/micronaut-http-template/blob/master/build.gradle#L40):\n\n```yaml\ndependencies {\n    annotationProcessor(\"io.micronaut.openapi:micronaut-openapi\")\n    compileOnly(\"io.swagger.core.v3:swagger-annotations:2.2.15\")\n}\n```\n\nMore info about Micronaut OpenAPI generator [in official documentation](https://micronaut-projects.github.io/micronaut-openapi/latest/guide/index.html).\n\n## Endpoints\n\nLibrary automatically *scan* for OpenAPI files inside JAR in *default-directory* and expose them via OpenAPI endpoint.\n\nEndpoints:\n- **/openapi** - [OpenAPI](https://spec.openapis.org/oas/v3.1.0) endpoint.\n- **/swagger-ui** - [Swagger UI](https://petstore.swagger.io/) endpoint.\n- **/rapidoc** - [Rapidoc](https://mrin9.github.io/RapiDoc/examples/example2.html) endpoint.\n\nSwagger UI have **Light\\Dark** theme switch!!!\n\n## Configuration\n\nMost of the settings are *cloud-friendly* by default.\n\n```yaml\nopenapi:\n  path: /openapi                        // Path for OpenAPI endpoint                          (default - /openapi)\n  enabled: true                         // Enable OpenAPI exposure                            (default - true)\n  merge: false                          // Enable merging OpenAPI found in default-directory  (default - false)\n  default-directory: META-INF/swagger   // Path inside JAR where to search OpenAPI            (default - META-INF/swagger)\n  exclude:                              // OpenAPI files to exclude from exposure             (path or filename)\n    - openapi-1.yml                     // Path or filename (default-directory)\n    - META-INF/swagger/openapi-2.yml    // Path or filename (default-directory)\n  include:                              // Include ONLY specified OpenAPI files for exposure  (path only)\n    - META-INF/swagger/openapi-3.yml    // Path to file inside JAR\n    - external-swagger/openapi-4.yml    // Path to file inside JAR\n  \n  swagger-ui:\n    path: /swagger-ui                   // Path for Swagger-UI endpoint                       (default - /swagger-ui)\n    enalbed: false                      // Enable Swagger-UI exposure                         (default - false)\n  \n  rapidoc:\n    path: /rapidoc                      // Path for Rapidoc endpoint                          (default - /rapidoc)\n    enalbed: false                      // Enable Rapidoc exposure                            (default - false) \n```\n\n### Merge\n\n- *merge* is disabled then any first OpenAPI file will be exposed (according to *exclude* and *include* configuration).\n- *merge* is enabled then all suitable (according to *exclude* and *include* configuration) OpenAPI files will be merged into one and exposed.\n\n### Security\n\nWhen you have security enabled and want to provide *non-auth* access for your OpenAPI/Swagger-UI/Rapodic endpoints here is configuration for such case:\n\n```yaml\nmicronaut:\n  security:\n    intercept-url-map:\n      -\n        pattern: /openapi|/swagger-ui\n        http-method: GET\n        access:\n          - isAnonymous()\n```\n\n\n## Micronaut Compatability\n\nStarting from version *2.0.0* library ships for *Micronaut 4* \u0026 Java 17 is required.\n\nStarting from version *1.0.0* library ships for *Micronaut 3* \u0026 Java 1.8+ is required.\n\n## License\n\nThis project licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoodforgod%2Fmicronaut-management-openapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoodforgod%2Fmicronaut-management-openapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoodforgod%2Fmicronaut-management-openapi/lists"}