wotz/laravel-swagger-ui
Laravel Swagger UI exposes your OpenAPI v3 JSON or YAML file through a built-in Swagger UI at /swagger, automatically using the current environment’s base URL. Install via Composer, publish the config, and customize paths, versions, access gates, and OAuth2 settings.
versions config maps multiple spec files to multiple UI routes (/swagger/v1, /swagger/v2), which makes a "sunset v1, promote v2" rollout a config change rather than a docs project.viewSwaggerUI) plus local-only default and pluggable middleware is the decision point for "who sees our API surface" — internal-only vs. authenticated partners vs. fully public. Worth an explicit product call, not a default.laravel/mcp and its own auth (Passport OAuth routes) and has almost no field usage yet.Consider it when most of these are true:
l5-swagger), and this package is only the last mile.public/.{Language}, region), and CSS-level branding is enough customization.Look elsewhere when:
For executives (one paragraph): We can ship interactive, always-current API documentation to partners and internal teams for roughly a day of engineering and $0 in licensing, instead of a multi-week custom build or a recurring docs-platform contract. It's MIT-licensed, integrates natively with our Laravel stack, inherits our existing authentication, and — because it's a thin wrapper around the standard Swagger UI — is replaceable at any time without rewriting anything. The main caveat is that it only displays an API spec; it assumes we already produce one. Recommend approving as a low-risk, reversible enabler for the API roadmap, with adoption deferred to staging/internal first.
For engineering (talking points):
composer require plus php artisan swagger-ui:install; publishable config and service provider; UI served at /swagger.modify_file toggle for env-based rewriting.viewSwaggerUI) — swap in our SSO/email allowlist; non-local access is denied by default.laravel/mcp and Passport OAuth plumbing — treat MCP as experimental.Ask: Approve a one-sprint spike to deploy behind the existing gate in staging, validate it against the current OpenAPI spec, and return a go/no-go for partner-facing use — with public exposure and MCP explicitly out of scope for this phase.
How can I help you explore Laravel packages today?