{"id":49767793,"url":"https://github.com/joomlalabs/webservices-documentation","last_synced_at":"2026-05-11T11:12:05.395Z","repository":{"id":355434788,"uuid":"1129858055","full_name":"JoomlaLABS/webservices-documentation","owner":"JoomlaLABS","description":"About Interactive API documentation component for Joomla with Swagger UI and Redoc. Automatically generates OpenAPI specs from installed Joomla components.","archived":false,"fork":false,"pushed_at":"2026-05-03T15:12:49.000Z","size":968,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-03T17:14:51.775Z","etag":null,"topics":["api","api-rest","api-restful","joomla","joomla-component","joomla-module","redoc","swagger","swagger-ui"],"latest_commit_sha":null,"homepage":"https://joomlalabs.com/en/extensions/web-services-documentation","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JoomlaLABS.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["JoomlaLABS"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"razzo","thanks_dev":null,"custom":["https://www.paypal.com/donate/?hosted_button_id=4SRPUJWYMG3GL"]}},"created_at":"2026-01-07T17:24:00.000Z","updated_at":"2026-05-03T15:12:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/JoomlaLABS/webservices-documentation","commit_stats":null,"previous_names":["joomlalabs/webservices-documentation"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/JoomlaLABS/webservices-documentation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoomlaLABS%2Fwebservices-documentation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoomlaLABS%2Fwebservices-documentation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoomlaLABS%2Fwebservices-documentation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoomlaLABS%2Fwebservices-documentation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JoomlaLABS","download_url":"https://codeload.github.com/JoomlaLABS/webservices-documentation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoomlaLABS%2Fwebservices-documentation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32892181,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-10T13:40:02.631Z","status":"online","status_checked_at":"2026-05-11T02:00:05.975Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["api","api-rest","api-restful","joomla","joomla-component","joomla-module","redoc","swagger","swagger-ui"],"created_at":"2026-05-11T11:12:03.211Z","updated_at":"2026-05-11T11:12:05.386Z","avatar_url":"https://github.com/JoomlaLABS.png","language":"PHP","funding_links":["https://github.com/sponsors/JoomlaLABS","https://buymeacoffee.com/razzo","https://www.paypal.com/donate/?hosted_button_id=4SRPUJWYMG3GL"],"categories":[],"sub_categories":[],"readme":"# Web Services Documentation for Joomla!\n\n![Webs Srvices Documentation for Joomla!](https://repository-images.githubusercontent.com/1129858055/e3da52cd-10ea-492b-94ea-e5ed5eb15cd3)\n\n![GitHub all releases](https://img.shields.io/github/downloads/JoomlaLABS/webservices-documentation/total?style=for-the-badge\u0026color=blue)\n![GitHub release (latest by SemVer)](https://img.shields.io/github/downloads/JoomlaLABS/webservices-documentation/latest/total?style=for-the-badge\u0026color=blue)\n![GitHub release (latest by SemVer)](https://img.shields.io/github/v/release/JoomlaLABS/webservices-documentation?sort=semver\u0026style=for-the-badge\u0026color=blue)\n\n[![License](https://img.shields.io/badge/license-GPL%202.0%2B-green.svg)](LICENSE)\n[![Joomla 6.0+](https://img.shields.io/badge/Joomla!-6.0+-1A3867?logo=joomla\u0026logoColor=white)]()\n[![PHP 8.1+](https://img.shields.io/badge/PHP-8.1+-777BB4?logo=php\u0026logoColor=white)]()\n\n## 📖 Description\n\n**Web Services Documentation** is a comprehensive API documentation system for Joomla 6.0+. It provides interactive API documentation using **Swagger UI** and **Redoc**, with automatic **OpenAPI 3.1.0** specification generation from installed Joomla components.\n\nPerfect for developers building integrations, testing APIs, or documenting custom components. Features intelligent hierarchical navigation, dark mode support, and seamless Joomla admin integration.\n\n## 🖼️ Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://joomlalabs.com/images/extensions/web_services_documentation-help.png\" width=\"32%\" /\u003e\n  \u003cimg src=\"https://joomlalabs.com/images/extensions/web_services_documentation-swagger.png\" width=\"32%\" /\u003e\n  \u003cimg src=\"https://joomlalabs.com/images/extensions/web_services_documentation-redoc.png\" width=\"32%\" /\u003e\n\u003c/p\u003e\n\n## ✨ Features\n\n### 🎨 Dual Documentation Interfaces\n\n**Swagger UI**\n- Interactive API explorer with live testing\n- Hierarchical navigation (up to 4-level tag tree)\n- Request/response examples with syntax highlighting\n- Built-in authentication with automatic token injection\n- Filter parameter detection and documentation\n- Custom hierarchical tags plugin for organized navigation\n\n**Redoc**\n- Clean, professional documentation interface\n- Dark mode with automatic Joomla theme synchronization\n- Responsive design optimized for all devices\n- Fast rendering with virtual scrolling\n- Three-panel layout with search functionality\n- Sticky navigation for easy browsing\n\n### 🔧 Automatic OpenAPI Generation\n\n- **Dual-mode generator**: CLI script and web-accessible PHP\n- **Component scanning**: Discovers all installed component endpoints\n- **Plugin support**: Detects plugin-based API routes\n- **Custom route parsing**: Handles complex Joomla routing patterns\n- **Filter extraction**: Automatically documents query parameters\n- **Smart deduplication**: Prevents duplicate parameter definitions\n- **Hierarchical tags**: Generic path-based hierarchy (1-4 levels)\n\n### 📊 Three Spec Options\n\n1. **Static Spec**: Pre-generated core Joomla APIs\n2. **Generated (Active Plugins)**: Dynamic spec with enabled plugins\n3. **Generated (All Components)**: Complete spec including all installed components\n\n### 🔐 Security \u0026 Authentication\n\n- Automatic API token generation and management\n- Secure token storage in Joomla database\n- Token reuse for existing users\n- Integration with Swagger UI authorization\n- Proper permission checks throughout\n\n### 🎯 Joomla Integration\n\n**Component** (`com_joomlalabs_webservices`)\n- Three views: Documentation, Swagger, Redoc\n- Admin menu integration\n- WebAssetManager for optimized asset loading\n- PSR-4 namespacing\n- Service Provider architecture\n\n**Help Menu Module** (`mod_joomlalabs_webservices_helpmenu`)\n- Quick access buttons in admin help menu\n- Links to Documentation, Swagger, and Redoc\n- Proper icon integration\n\n## 📋 Requirements\n\n| Software | Minimum | Recommended |\n|----------|---------|-------------|\n| **Joomla!** | 6.0.0 | 6.0.1+ |\n| **PHP** | 8.1+ | 8.2 or 8.3 |\n| **Browser** | Modern browsers | Chrome 90+, Firefox 88+, Safari 14+, Edge 90+ |\n\n**Joomla Configuration:**\n- Web Services must be enabled (System → Global Configuration → API Settings)\n- User must have API token configured\n- PHP extensions: json, curl, mbstring\n\n## 📦 Installation\n\n### Download \u0026 Install\n\n1. Download the latest release from [GitHub Releases](https://github.com/JoomlaLABS/webservices-documentation/releases)\n2. In Joomla Administrator, go to **System → Extensions → Install**\n3. Upload the component package: `com_joomlalabs_webservices.zip`\n4. Upload the module package: `mod_joomlalabs_webservices_helpmenu.zip`\n5. Enable the module and plugin from **System → Extensions → Manage**\n\n### Initial Configuration\n\n1. **Enable Web Services** (if not already enabled):\n   - Go to **System → Global Configuration → API Settings**\n   - Set **Enable Joomla's Web Services** to **Yes**\n   - Save\n\n2. **Configure API Token**:\n   - The system will automatically generate a token on first access\n   - Or manually create one: **System → API Tokens → New**\n\n3. **Access Documentation**:\n   - Via Help Menu: Click **Help → API Documentation/Swagger/Redoc**\n   - Or direct URLs:\n     - Documentation: `administrator/index.php?option=com_joomlalabs_webservices\u0026view=documentation`\n     - Swagger: `administrator/index.php?option=com_joomlalabs_webservices\u0026view=swagger`\n     - Redoc: `administrator/index.php?option=com_joomlalabs_webservices\u0026view=redoc`\n\nFor detailed installation instructions, see [INSTALLATION](INSTALLATION.md).\n\n## 💡 Usage\n\n### Browsing API Documentation\n\n**Swagger UI:**\n1. Navigate to Swagger view via Help Menu\n2. Select spec option from dropdown (Static/Generated)\n3. Expand endpoint groups using hierarchical navigation\n4. Click endpoints to view details\n5. Use \"Try it out\" to test APIs live\n\n**Redoc:**\n1. Navigate to Redoc view via Help Menu\n2. Select spec option from dropdown\n3. Browse using left sidebar navigation\n4. Click endpoints for detailed documentation\n5. Use search to find specific endpoints\n\n### Testing APIs\n\n1. Open Swagger UI\n2. Click \"Authorize\" button (top right)\n3. Your token is pre-filled, click \"Authorize\"\n4. Navigate to any endpoint\n5. Click \"Try it out\"\n6. Fill in parameters\n7. Click \"Execute\"\n8. View response\n\n## 🎨 Features Showcase\n\n### Hierarchical Navigation\n\nEndpoints are automatically organized in a tree structure:\n\n```\nContent\n├── Articles\n│   ├── GET /content/articles\n│   ├── POST /content/articles\n│   └── GET /content/articles/{id}\n└── Fields\n    ├── Articles\n    │   ├── GET /content/fields/articles\n    │   └── POST /content/fields/articles\n    └── Groups\n        └── Articles\n            └── GET /content/fields/groups/articles\n```\n\n### Dark Mode Support\n\n- Automatically detects Joomla admin theme\n- Synchronized theme switching\n- Optimized for both light and dark modes\n- Smooth transitions between themes\n\n### Smart Filter Detection\n\nAutomatically extracts and documents query parameters:\n- `filter[search]` - Search filter\n- `filter[published]` - Published status\n- `filter[category_id]` - Category filter\n- `page[offset]` - Pagination offset\n- `page[limit]` - Results per page\n\n## 💝 Donate\n\nIf you find this project useful, consider supporting its development:\n\n[![Sponsor on GitHub](https://img.shields.io/badge/Sponsor-GitHub-ea4aaa?style=for-the-badge\u0026logo=github)](https://github.com/sponsors/JoomlaLABS)\n[![Buy me a beer](https://img.shields.io/badge/🍺%20Buy%20me%20a-beer-FFDD00?style=for-the-badge\u0026labelColor=FFDD00\u0026color=FFDD00)](https://buymeacoffee.com/razzo)\n[![Donate via PayPal](https://img.shields.io/badge/Donate-PayPal-0070BA?style=for-the-badge\u0026logo=paypal\u0026logoColor=white)](https://www.paypal.com/donate/?hosted_button_id=4SRPUJWYMG3GL)\n\nYour support helps maintain and improve this project!\n\n---\n\n**Made with ❤️ for the Joomla! Community**\n\n**⭐ If this project helped you, please consider giving it a star! ⭐**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoomlalabs%2Fwebservices-documentation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoomlalabs%2Fwebservices-documentation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoomlalabs%2Fwebservices-documentation/lists"}