{"id":49484883,"url":"https://github.com/alexandreelise/routefinder","last_synced_at":"2026-05-01T00:31:42.520Z","repository":{"id":269229344,"uuid":"692219005","full_name":"alexandreelise/routefinder","owner":"alexandreelise","description":"Goal: Extract Joomla Api Routes to be able to auto-generate always up-to-date OpenAPI Schema","archived":false,"fork":false,"pushed_at":"2025-02-23T00:24:25.000Z","size":143,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-26T00:08:17.510Z","etag":null,"topics":["cli-tools","cli-utilities","developer-tools","joomla-framework","openapi","openapi-generator","openapi3","php"],"latest_commit_sha":null,"homepage":"https://manual.joomla.org/docs/general-concepts/webservices","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexandreelise.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":"2023-09-15T20:49:49.000Z","updated_at":"2025-05-03T13:16:40.000Z","dependencies_parsed_at":"2024-12-21T23:49:11.611Z","dependency_job_id":"56801c4a-f301-4c66-85b2-88daa947af91","html_url":"https://github.com/alexandreelise/routefinder","commit_stats":null,"previous_names":["alexandreelise/routefinder"],"tags_count":6,"template":true,"template_full_name":null,"purl":"pkg:github/alexandreelise/routefinder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandreelise%2Froutefinder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandreelise%2Froutefinder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandreelise%2Froutefinder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandreelise%2Froutefinder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexandreelise","download_url":"https://codeload.github.com/alexandreelise/routefinder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandreelise%2Froutefinder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32481553,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cli-tools","cli-utilities","developer-tools","joomla-framework","openapi","openapi-generator","openapi3","php"],"created_at":"2026-05-01T00:31:42.395Z","updated_at":"2026-05-01T00:31:42.502Z","avatar_url":"https://github.com/alexandreelise.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RouteFinder\n\n![visitor badge](https://visitor-badge.laobi.icu/badge?page_id=alexandreelise.routefinder\u0026style=flat\u0026format=true)\n![GitHub followers](https://img.shields.io/github/followers/alexandreelise?style=flat)\n![YouTube Channel Views](https://img.shields.io/youtube/channel/views/UCCya8rIL-PVHm8Mt4QPW-xw?style=flat\u0026label=YouTube%20%40Api%20Adept%20vues)\n\n\n\u003cpre\u003e\n\n    __  __     ____         _____                              __                      __              \n   / / / ___  / / ____     / ___/__  ______  ___  _____       / ____  ____  ____ ___  / ___  __________\n  / /_/ / _ \\/ / / __ \\    \\__ \\/ / / / __ \\/ _ \\/ ___/  __  / / __ \\/ __ \\/ __ `__ \\/ / _ \\/ ___/ ___/\n / __  /  __/ / / /_/ /   ___/ / /_/ / /_/ /  __/ /     / /_/ / /_/ / /_/ / / / / / / /  __/ /  (__  ) \n/_/ /_/\\___/_/_/\\____/   /____/\\__,_/ .___/\\___/_/      \\____/\\____/\\____/_/ /_/ /_/_/\\___/_/  /____/  \n                                   /_/                                                                 \n\n\n\u003c/pre\u003e\n\n\u003e ![GitHub Repo stars](https://img.shields.io/github/stars/alexandreelise/routefinder?style=flat) ![GitHub forks](https://img.shields.io/github/forks/alexandreelise/routefinder?style=flat) ![GitHub watchers](https://img.shields.io/github/watchers/alexandreelise/routefinder?style=flat)\n\n### WHY ?\n\nI wanted to be able to use what I know best: PHP and Joomla to make a useful tool for the Joomla Developers Community\nand allow more people to grasp the TRUE POWER of Web Services / Api in Joomla 5.x and beyond.\n\nGOAL: Fetch and extract Joomla! 5.x and beyond API Endpoints from source code then generate OpenAPI Schema 3.0.0 out of it.\n\n### HOW ?\n\nThis project should work on Linux,Unix based OS like Ubuntu or macOS. Not tested on Windows.\n\nFirst command to type in your terminal:\nClone this repo:\n\n```shell\n\ngit clone https://github.com/alexandreelise/routefihder.git\n\n```\n\nThen, go to the directory\n\n```shell\n\ncd routefinder\n\n```\n\nThen install the dependencies\n\n```shell\n\ncomposer install\n\n```\n\nThen list composer script descriptions made for routefinder:\n\n```shell\n\ncomposer list\n\n```\n\n\nWhen using **stable mode**:\n\nThis composer script will run all the steps necessary for stable version of Joomla. Version if the form of 5-0-0 (with\ndashes not dots). You can configure which version you want to find Web Services routes for with an environment variable\nin the composer script next the line ``` @putenv APP_STABLE=5-0-0 ```\n\n```shell\n\ncomposer routefinder-all-stable\n\n```\n\n1. First step is to fetch the latest stable release from https://www.joomla.org website\n2. Extract the contents in a temp directory\n3. Statically analyse the code with nikic/php-parser\n4. Extract Api urls, methods, models from code analysed without running it\n\nSIDE NOTE:\nRouteFinder should extract Web Services routes without the need to install Joomla. But if you want to run the\nSmokeTests. For those tests to work, you will need to rename api-config.dist.ini to api-config.ini and provide your\ndownload Joomla Api Token after using RouteFinder.\n\nREMEMBER NOT TO LEAK YOUR API TOKENS IN YOUR REPO. You can use security related tools for that purpose. E.g.\nGitGuardian, Snyk, etc...\n\nwith Joomla Framework Http package and phpunit 10, you will need to install the Joomla this script just downloaded by\npointing your local webroot on your local web server to the folder called ``` extracted ```\n\nWhen using **dev mode**:\n\nAlmost the same as stable mode but this time, this composer script will run all the steps necessary for git ref tag\nversion of Joomla. You can configure which version you want to find Web Services routes for with an environment variable\nin the composer script next the line ``` @putenv APP_REF_TAG=5.0.0-rc2 ```\n\n```shell\n\ncomposer routefinder-all-dev\n\n```\n\n### STILL WORK IN PROGRESS\n\nExtraction is done correctly but now, RouteFinder needs to:\n\n- Parse the found routes\n- Map path variables with correct regex validation for types (mainly integers but not for all routes)\n- Reconstruct properly formatted routes\n- Generation corresponding OpenAPI 3.0.0 Schema (which is already in almost complete state in Joomla Manual\n  exactly [here](https://github.com/joomla/Manual/blob/feature/openapi/docs/using-core-functions/webservices/assets/webservices-openapi.yaml))\n- My end goal with this project is to generate this kind of file in a completely automated way using PHP and Joomla then\n  contribute back to Joomla Manual in order to ease the tedious work and pain raised by manually creating this file\n  which is error-prone and less than ideal to manually unless the file is short.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexandreelise%2Froutefinder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexandreelise%2Froutefinder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexandreelise%2Froutefinder/lists"}