{"id":22428611,"url":"https://github.com/go-tapd/tapd","last_synced_at":"2026-04-07T02:05:50.541Z","repository":{"id":254941499,"uuid":"845290804","full_name":"go-tapd/tapd","owner":"go-tapd","description":"The Go Tapd SDK is a Go client library for accessing the Tapd API","archived":false,"fork":false,"pushed_at":"2026-04-04T04:46:27.000Z","size":939,"stargazers_count":10,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-04-04T06:32:40.813Z","etag":null,"topics":["golang","library","sdk","tapd","tapd-webhook","webhook"],"latest_commit_sha":null,"homepage":"https://github.com/go-tapd/tapd","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/go-tapd.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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2024-08-21T00:54:34.000Z","updated_at":"2026-04-04T04:46:30.000Z","dependencies_parsed_at":"2024-08-27T04:01:42.697Z","dependency_job_id":"79fa9530-3db4-4eb1-bb72-e0e0951ef615","html_url":"https://github.com/go-tapd/tapd","commit_stats":null,"previous_names":["flc1125/go-tapd","go-tapd/tapd"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/go-tapd/tapd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-tapd%2Ftapd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-tapd%2Ftapd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-tapd%2Ftapd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-tapd%2Ftapd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/go-tapd","download_url":"https://codeload.github.com/go-tapd/tapd/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-tapd%2Ftapd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31496770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"online","status_checked_at":"2026-04-07T02:00:07.164Z","response_time":105,"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":["golang","library","sdk","tapd","tapd-webhook","webhook"],"created_at":"2024-12-05T20:16:24.609Z","updated_at":"2026-04-07T02:05:50.533Z","avatar_url":"https://github.com/go-tapd.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Go-Tapd-SDK\n\n![Supported Go Versions](https://img.shields.io/badge/Go-%3E%3D1.25-blue)\n[![Package Version](https://badgen.net/github/release/go-tapd/tapd/stable)](https://github.com/go-tapd/tapd/releases)\n[![GoDoc](https://pkg.go.dev/badge/github.com/go-tapd/tapd)](https://pkg.go.dev/github.com/go-tapd/tapd)\n[![codecov](https://codecov.io/gh/go-tapd/tapd/graph/badge.svg?token=QPTHZ5L9GT)](https://codecov.io/gh/go-tapd/tapd)\n[![Go Report Card](https://goreportcard.com/badge/github.com/go-tapd/tapd)](https://goreportcard.com/report/github.com/go-tapd/tapd)\n[![lint](https://github.com/go-tapd/tapd/actions/workflows/lint.yml/badge.svg)](https://github.com/go-tapd/tapd/actions/workflows/lint.yml)\n[![tests](https://github.com/go-tapd/tapd/actions/workflows/test.yml/badge.svg)](https://github.com/go-tapd/tapd/actions/workflows/test.yml)\n[![MIT license](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)\n\nThe Go-Tapd-SDK is a Go client library for accessing the [Tapd API](https://www.tapd.cn/).\n\n\u003e [!WARNING]  \n\u003e This is currently still a non-stable version, is not recommended for production use. \n\nIf you encounter any issues, you are welcome to [submit an issue](https://github.com/go-tapd/tapd/issues/new).\n\n## 📥 Installation\n\n```bash\ngo get github.com/go-tapd/tapd\n```\n\n## ✨ Features\n\nsee [features.md](features.md)\n\n## 🔧 Usage\n\n### API Service\n\n- Example of using the Basic Authentication API service:\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/go-tapd/tapd\"\n)\n\nfunc main() {\n\tclient, err := tapd.NewClient(\"client_id\", \"client_secret\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// example: get labels\n\tlabels, _, err := client.LabelService.GetLabels(context.Background(), \u0026tapd.GetLabelsRequest{\n\t\tWorkspaceID: tapd.Ptr(123456),\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tlog.Printf(\"labels: %+v\", labels)\n}\n```\n\n- Example of using the Personal Access Token (PAT) API service:\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/go-tapd/tapd\"\n)\n\nfunc main() {\n\tclient, err := tapd.NewPATClient(\"your_access_token\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// example: get stories\n\tstories, _, err := client.StoryService.GetStories(context.Background(), \u0026tapd.GetStoriesRequest{\n\t\tWorkspaceID: tapd.Ptr(123456),\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tlog.Printf(\"stories: %+v\", stories)\n}\n```\n\n### Webhook Server Example\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\t\"net/http\"\n\n\t\"github.com/go-tapd/tapd/webhook\"\n)\n\ntype StoreUpdateListener struct{}\n\nfunc (l *StoreUpdateListener) OnStoryUpdate(ctx context.Context, event *webhook.StoryUpdateEvent) error {\n\tlog.Printf(\"StoreUpdateListener: %+v\", event)\n\treturn nil\n}\n\nfunc main() {\n\tdispatcher := webhook.NewDispatcher(\n\t\twebhook.WithRegisters(\u0026StoreUpdateListener{}),\n\t)\n\tdispatcher.Registers(\u0026StoreUpdateListener{})\n\n\tsrv := http.NewServeMux()\n\tsrv.HandleFunc(\"/webhook\", func(w http.ResponseWriter, r *http.Request) {\n\t\tlog.Println(\"Received webhook request\")\n\t\tif err := dispatcher.DispatchRequest(r); err != nil {\n\t\t\tlog.Println(err)\n\t\t}\n\t\tw.Write([]byte(\"ok\"))\n\t})\n\n\thttp.ListenAndServe(\":8080\", srv)\n}\n```\n\n## 📜 License\n\nThe MIT License (MIT). Please see [License File](LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgo-tapd%2Ftapd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgo-tapd%2Ftapd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgo-tapd%2Ftapd/lists"}