{"id":15106229,"url":"https://github.com/epmyas2022/laravel-swagger","last_synced_at":"2026-01-19T21:33:50.492Z","repository":{"id":257000317,"uuid":"853539306","full_name":"epmyas2022/laravel-swagger","owner":"epmyas2022","description":"Este es un paquete que busca facilitar la generación de documentación de API's en Laravel, utilizando Swagger UI.","archived":false,"fork":false,"pushed_at":"2025-02-10T14:03:44.000Z","size":3086,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T03:44:54.767Z","etag":null,"topics":["auto-generator","laravel","swagger-ui"],"latest_commit_sha":null,"homepage":"","language":"CSS","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/epmyas2022.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-09-06T21:33:48.000Z","updated_at":"2025-04-03T22:14:58.000Z","dependencies_parsed_at":"2024-09-14T08:52:53.438Z","dependency_job_id":"bf32b730-13c3-49a6-9cab-3c570124e637","html_url":"https://github.com/epmyas2022/laravel-swagger","commit_stats":null,"previous_names":["epmyas2022/laravel-swagger"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/epmyas2022/laravel-swagger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epmyas2022%2Flaravel-swagger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epmyas2022%2Flaravel-swagger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epmyas2022%2Flaravel-swagger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epmyas2022%2Flaravel-swagger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/epmyas2022","download_url":"https://codeload.github.com/epmyas2022/laravel-swagger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epmyas2022%2Flaravel-swagger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28585521,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T20:45:59.482Z","status":"ssl_error","status_checked_at":"2026-01-19T20:45:41.500Z","response_time":67,"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":["auto-generator","laravel","swagger-ui"],"created_at":"2024-09-25T21:01:01.616Z","updated_at":"2026-01-19T21:33:50.475Z","avatar_url":"https://github.com/epmyas2022.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003e [!WARNING]  \n\u003e Proyecto en desarrollo, aún en construcción.\n\n![image](https://miro.medium.com/v2/resize:fit:818/1*zc-LgogGtr7fFHF9e1M8wA.png)\n\n# Laravel Auto-Generate Swagger API Documentation\n\nEste es un paquete que busca facilitar la generación de documentación de API's en Laravel, utilizando Swagger UI.\nLa documentación se genera automáticamente a partir de la sintaxis de laravel.\n\n## Indice\n\n- [Laravel Auto-Generate Swagger API Documentation](#laravel-auto-generate-swagger-api-documentation)\n  - [Indice](#indice)\n  - [Requisitos](#requisitos)\n  - [Instalación](#instalación)\n  - [Uso](#uso)\n  - [Configuración](#configuración)\n  - [Ejemplos](#ejemplos)\n  - [Atributos](#atributos)\n  - [Temas](#temas)\n  - [Referencias](#referencias)\n  - [Licencia](#licencia)\n  - [Contacto](#contacto)\n\n## Requisitos\n\n- ![Static Badge](https://img.shields.io/badge/PHP-^8.0-blue?logo=php)\n- ![Static Badge](https://img.shields.io/badge/Laravel-^9.0-red?logo=laravel)\n\n## Instalación\n\nConfigurar el archivo `composer.json` para que pueda leer el repositorio de GitHub.\n\n```json\n\n\"repositories\": [\n    {\n        \"type\": \"vcs\",\n        \"url\": \"https://github.com/epmyas2022/laravel-swagger.git\"\n    }\n],\n```\n\nAgregar tambien\n\n```json\n    \"require\": {\n        \"laravel/swagger\": \"^0.3.0\"\n    }\n```\n\nEjecutar el comando `composer update` para instalar el paquete.\n\n## Uso\n\nEs necesario publicar los archivos de configuracion y assets del paquete, para ello ejecutar el comando:\n\n```bash\nphp artisan vendor:publish --provider \"Laravel\\Swagger\\SwaggerServiceProvider\"\n```\n\nEste comando creará un archivo de configuración en la carpeta `config` y una carpeta `swagger` en la carpeta `public`.\n\n## Configuración\n\nAgregar el provider service en el archivo `config/app.php`\n\n```php\n'providers' =\u003e [\n    ...\n    Laravel\\Swagger\\SwaggerServiceProvider::class,\n    ...\n]\n```\n\nAhora ya podemos acceder a la documentación de la API en la ruta `/docs`.\n\n## Ejemplos\n\n**NOTA:** *para que la documentacion genere correctamente es necesario tipar los tipos de datos de esta manera la libreria puede inferir los tipos de datos.*\n\nEn este caso se ha creado un controlador llamado `ExampleController` con un método `index` que retorna un JSON,\ny solo bastaria con agregar el atributo `#[SwaggerSection('Example')]` para que se genere la documentación.\n\n```php\n#[SwaggerSection('Example')]\nclass ExampleController extends Controller\n{\n\n    function index(): JsonResponse\n    {\n        return response()-\u003ejson([\n            'message' =\u003e 'Hello World'\n        ]);\n    }\n\n}\n```\n\n```php\n#[SwaggerSection('Example')]\nclass ExampleController extends Controller\n{\n\n    function store(ExampleRequest $request): JsonResponse\n    {\n        return response()-\u003ejson([\n            'data' =\u003e $request-\u003evalidated(),\n        ]);\n    }\n\n}\n\n```\n\nLos parametros de ruta se detectan automaticamente al agregarlos al metodo.\n\n```php\n#[SwaggerSection('Example')]\nclass ExampleController extends Controller\n{\n\n    function update(ExampleRequest $request, int $id): JsonResponse\n    {\n        return response()-\u003ejson([\n            'data' =\u003e $request-\u003evalidated(),\n            'id' =\u003e $id,\n        ]);\n    }\n\n}   \n```\n\n```php\n#[SwaggerSection('Example')]\nclass ExampleController extends Controller\n{\n\n    function destroy(string $id): JsonResponse\n    {\n        return response()-\u003ejson(['id' =\u003e $id]);\n    }\n\n}\n```\n\n## Atributos\n\nExisten distintos atributos que se pueden agregar a los métodos y clases para personalizar la documentación.\n\n| Atributo | Descripción |\n| --- | --- |\n| `#[SwaggerSection('Example')]` | Agrega una sección a la documentación (se coloca arriba de la clase) |\n| `#[SwaggerContent('application/json')]` | Agregar el tipo contenido en el cuerpo (se coloca arriba del metodo)|\n| `#[SwaggerResponse(['message' =\u003e 'hello'])]` | Agregar una respuesta personalizada (se coloca arriba del metodo)|\n| `#[SwaggerSummary('descripcion')]` | Agrega una descripcion al endpoint (se coloca arriba del metodo)|\n| `#[SwaggerAuth('bearerToken')]` | Agrega un tipo de autenticacion especifica para una ruta (se coloca arriba del metodo)|\n| `#[SwaggeResponseFile]` | Agrega una respuesta de archivo (se coloca arriba del metodo)|\n| `#[SwaggerGlobal(['security' =\u003e 'bearerToken', 'middleware' =\u003e 'auth'])]` | Atributos globales afectan a todas las rutas (se coloca arriba de una clase de preferencia en Controller)|\n\n## Temas\n\nSe pueden personalizar los temas de la documentación, para ello se debe modificar el archivo `config/swagger.php`.\n\n```php\nreturn [\n 'options' =\u003e [\n        'theme' =\u003e ThemeSwagger::X_CODE_LIGHT,\n    ],\n]\n```\n\nLos temas disponibles son:\n\n- `ThemeSwagger::X_CODE_LIGHT`\n- `ThemeSwagger::DRACULA`\n- `ThemeSwagger::MONOKAI`\n- `ThemeSwagger::NORD`\n- `ThemeSwagger::SEPIA`\n- `ThemeSwagger::ONE_DARK`\n- `ThemeSwagger::UNIVERSAL_DARK`\n- `ThemeSwagger::SELOREX_SWAGGER`\n\n![image](./screenshots/image.png)\n\n## Referencias\n\n- [Swagger](https://swagger.io/)\n- [Swagger UI](https://swagger.io/tools/swagger-ui/)\n\n## Licencia\n\nEste proyecto está bajo la licencia MIT. Consulte el archivo [LICENSE](LICENSE) para obtener más información.\n\n## Contacto\n\n- [Gmail](mailto:castillo20182017@gmail.com)\n- [Linkedin](https://www.linkedin.com/in/isaac-castillo-b4a213225/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepmyas2022%2Flaravel-swagger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fepmyas2022%2Flaravel-swagger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepmyas2022%2Flaravel-swagger/lists"}