{"id":50370140,"url":"https://github.com/keyfunc/goas","last_synced_at":"2026-05-30T06:31:07.958Z","repository":{"id":330421003,"uuid":"1122029876","full_name":"keyfunc/goas","owner":"keyfunc","description":"Go comments to OpenAPI 3.2.","archived":false,"fork":false,"pushed_at":"2025-12-30T14:50:08.000Z","size":12575,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-24T08:39:42.466Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","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/keyfunc.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-24T01:41:52.000Z","updated_at":"2025-12-30T14:47:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/keyfunc/goas","commit_stats":null,"previous_names":["promonkeyli/goas","keyfunc/goas"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/keyfunc/goas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keyfunc%2Fgoas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keyfunc%2Fgoas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keyfunc%2Fgoas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keyfunc%2Fgoas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keyfunc","download_url":"https://codeload.github.com/keyfunc/goas/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keyfunc%2Fgoas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33682998,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"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":[],"created_at":"2026-05-30T06:31:07.252Z","updated_at":"2026-05-30T06:31:07.939Z","avatar_url":"https://github.com/keyfunc.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# goas - Go + OAS (OpenAPI Specification)\n\nPure OpenAPI 3.2 generator for Go.\n\nParses Go code comments to generate OpenAPI 3.2 specification JSON.\n\n## Features\n\n- **Global Annotations**: Configure Info, Servers, Tags, Security in `main.go`.\n- **API Annotations**: Define Router, Params, Request Body, Responses in handler functions.\n- **Type Resolution**: Automatically converts Go structs to OpenAPI Schemas.\n- **Generics Support**: Full support for Go 1.18+ generic types (e.g., `Response[User]`).\n- **Standard Library Parsing**: Supports standard library types like `time.Time`, `os.File`.\n\n## Status\n\n**Current Version**: 0.1.0 (Development)\n\n- [x] Global Annotation Parsing\n- [x] API Operation Parsing\n- [x] Schema Generation (Generics support included)\n- [x] CLI Tool\n\n## Installation\n\n### Method 1: Global Installation (CLI)\n\nInstall the command-line tool globally:\n\n```bash\ngo install github.com/promonkeyli/goas/cmd/goas@latest\n```\n\n### Method 2: Project Dependency (Library)\n\nAdd as a dependency to your project:\n\n```bash\ngo get github.com/promonkeyli/goas\n```\n\n## Usage\n\n### 1. CLI Usage\n\nIf installed globally, run directly:\n\n```bash\ngoas -dir ./cmd,./internal -output ./api\n```\n\nOr run via go run in your project:\n\n```bash\ngo run github.com/promonkeyli/goas/cmd/goas -dir ./cmd,./internal -output ./api\n```\n\n### 2. Library Usage (Function Call)\n\nYou can also integrate goas directly into your Go code (e.g., in a generator script):\n\n```go\npackage main\n\nimport (\n    \"log\"\n    \"github.com/promonkeyli/goas/pkg/goas\"\n)\n\nfunc main() {\n    config := goas.Config{\n        Dirs:   []string{\"./cmd\", \"./internal\"},\n        Output: \"./api\",\n    }\n\n    if err := goas.Run(config); err != nil {\n        log.Fatalf(\"Failed to generate OpenAPI: %v\", err)\n    }\n}\n```\n\n## Quick Start\n\n### 1. Global Configuration (main.go)\n\n```go\npackage main\n\n// @OpenAPI 3.2.0\n// @Title Pet Store API\n// @Version 1.0.0\n// @Description Supports user management and file uploads.\n// @Server http://localhost:8080/v1 name=dev Development\n// @SecurityScheme ApiKeyAuth apiKey header X-API-KEY\nfunc main() {\n    // ...\n}\n```\n\n### 2. Implementation (handler.go)\n\n```go\npackage handler\n\n// Response Generic Response\ntype Response[T any] struct {\n    Code    int    `json:\"code\"`\n    Message string `json:\"message\"`\n    Data    T      `json:\"data\"`\n}\n\n// User Model\ntype User struct {\n    ID   int    `json:\"id\" desc:\"User ID\"`\n    Name string `json:\"name\" desc:\"Username\"`\n}\n\n// GetUser Get User Info\n// @Summary Get User Info\n// @Tags user\n// @Param id path int true \"User ID\"\n// @Success 200 {object} Response[User] \"Success\"\n// @Router /users/{id} [get]\nfunc GetUser() {\n    // ...\n}\n```\n\n## Flags\n\n- `-dir`: Comma-separated list of directories to scan (recursive).\n- `-output`: Output directory for `openapi.json`.\n\n## Documentation\n\n- [GOAS Annotation Specification](docs/GOAS_COMMOENT.md): Detailed guide on using goas annotations.\n- [OpenAPI 3.2.0 Field Reference](docs/OAS_FIELD.md): Quick reference for OpenAPI 3.2.0 objects and fields.\n- [OpenAPI Specification 3.2.0](docs/OAS_STANDARD.md): Full OpenAPI 3.2.0 Specification.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeyfunc%2Fgoas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeyfunc%2Fgoas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeyfunc%2Fgoas/lists"}