{"id":23145802,"url":"https://github.com/erwanlt/openapireader","last_synced_at":"2026-04-29T17:32:06.033Z","repository":{"id":268419457,"uuid":"904261613","full_name":"ErwanLT/openApiReader","owner":"ErwanLT","description":"Display information about API described in an OpenAPI documention","archived":false,"fork":false,"pushed_at":"2024-12-20T09:26:51.000Z","size":23,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-09T22:42:47.216Z","etag":null,"topics":["java","openapi"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ErwanLT.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":"2024-12-16T14:52:16.000Z","updated_at":"2024-12-20T09:26:54.000Z","dependencies_parsed_at":"2024-12-16T17:25:28.093Z","dependency_job_id":"a45af556-a6f5-4e99-b319-deeb9b7cb738","html_url":"https://github.com/ErwanLT/openApiReader","commit_stats":null,"previous_names":["erwanlt/openapireader"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErwanLT%2FopenApiReader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErwanLT%2FopenApiReader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErwanLT%2FopenApiReader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErwanLT%2FopenApiReader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ErwanLT","download_url":"https://codeload.github.com/ErwanLT/openApiReader/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247182339,"owners_count":20897379,"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":["java","openapi"],"created_at":"2024-12-17T16:16:20.025Z","updated_at":"2026-04-29T17:32:06.006Z","avatar_url":"https://github.com/ErwanLT.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenApiReader\n\n## Description\nOpenApiReader est une application Java permettant de lire, d’analyser et de regrouper les chemins (paths) d’une spécification OpenAPI. Cette application extrait les informations importantes comme les méthodes HTTP, les descriptions des endpoints, et les rôles de sécurité associés.\n\n## Fonctionnalités principales\n- Récupération d'une spécification OpenAPI via une URL.\n- Analyse des chemins (éléments \"paths\") pour regrouper les endpoints par racine.\n- Extraction des détails des endpoints, y compris les méthodes HTTP, les descriptions, et les rôles de sécurité.\n- Exclusion configurable de certains chemins (par exemple, ceux commençant par \"test\").\n\n## Prérequis\n- Java 21 ou version ultérieure\n- Maven pour la gestion des dépendances\n\n## Installation\n1. Clonez ce répertoire :\n   ```bash\n   git clone \u003crepository-url\u003e\n   ```\n2. Compilez le projet avec Maven :\n   ```bash\n   mvn clean install\n   ```\n\n## Utilisation\nExécutez l'application avec la commande suivante :\n```bash\njava -jar target/OpenApiReader.jar \u003cURL\u003e [format]\n```\n\nLes formats disponibles sont :\n- wiki\n- markdown\n\n### Exemple\n```bash\njava -jar target/OpenApiReader.jar https://petstore.swagger.io/v2/swagger.json wiki\n```\n\n### Sortie attendue\nL’application affiche les chemins regroupés par racine avec leurs détails :\n```\n== Matrice des habilitations Pet Store ==\n=== pet ===\n  - '''GET''' /pet/findByStatus : Find pets by status (Rôles : user)\n=== store ===\n  - '''POST''' /store/order : Place an order (Rôles : admin)\n```\n\n## Configuration\n### Exclusion de chemins\nVous pouvez exclure certains chemins en modifiant la méthode `shouldExcludePath` dans le code :\n```java\nprivate static boolean shouldExcludePath(String path) {\n    List\u003cString\u003e excludedPaths = List.of(\"test\");\n    return excludedPaths.stream().anyMatch(path::startsWith);\n}\n```\n\n## Dépendances\nLe projet utilise les bibliothèques suivantes :\n- **Spring Web** : pour effectuer des requêtes HTTP.\n- **Jackson** : pour analyser et manipuler le JSON.\n- **SLF4J** : pour la journalisation.\n\n## Structure du Code\n- `main(String[] args)` : Point d’entrée principal de l’application.\n- `getOpenApiSpec(String url)` : Récupère la spécification OpenAPI via HTTP.\n- `extractApi(String openApiJson)` : Analyse et regroupe les chemins d’API par racine.\n- `groupPathsByRoot(JsonNode pathsNode)` : Réalise le regroupement des chemins par racine.\n- `shouldExcludePath(String path)` : Vérifie si un chemin doit être exclu de l’analyse.\n\n## Limitations\n- L’application suppose que les chemins contiennent un élément \"tags\" pour regrouper les endpoints.\n- La gestion des rôles de sécurité repose sur un format JSON standard, mais peut ne pas fonctionner pour des spécifications personnalisées.\n\n## Contributions\nLes contributions sont les bienvenues. Merci de soumettre une pull request avec une description claire des modifications.\n\n## Licence\nCe projet est sous licence MIT. Consultez le fichier `LICENSE` pour plus de détails.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferwanlt%2Fopenapireader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferwanlt%2Fopenapireader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferwanlt%2Fopenapireader/lists"}