{"id":18907184,"url":"https://github.com/42atomys/gw2api-go","last_synced_at":"2026-03-05T19:35:47.762Z","repository":{"id":104032801,"uuid":"395987606","full_name":"42atomys/gw2api-go","owner":"42atomys","description":"A simple go SDK for Guild Wars 2 API  ","archived":false,"fork":false,"pushed_at":"2021-08-28T23:30:23.000Z","size":1783,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-12-31T11:44:32.295Z","etag":null,"topics":["api","api-wrapper","guildwars2","sdk"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/42atomys.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":"2021-08-14T11:26:27.000Z","updated_at":"2022-02-15T10:57:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"f2490c3e-25fd-4123-ba2d-6ae6f0f8738b","html_url":"https://github.com/42atomys/gw2api-go","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42atomys%2Fgw2api-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42atomys%2Fgw2api-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42atomys%2Fgw2api-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42atomys%2Fgw2api-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/42atomys","download_url":"https://codeload.github.com/42atomys/gw2api-go/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239890979,"owners_count":19714053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-wrapper","guildwars2","sdk"],"created_at":"2024-11-08T09:19:59.680Z","updated_at":"2026-03-05T19:35:47.697Z","avatar_url":"https://github.com/42atomys.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gw2api-go\n\nA Go Wrapper to your GuildWars 2 Go Project\n\n### What's is GW2-API \n\nAt the start GW2-API as created to be a wrapper of the GuildWars2 Official API.\nAfter few months of use in private projects, I decide to make it public and rewrite the library.\n\nGW2-API is a complete and up-to-date wrapper in Golang.\n\n### Getting Start / How to use ?\n\nTo use Gw2APIGO, it's really simple. All requests and API context is managed by a `gw2api.Requestor`\n\n```go\n  // Create a new gw2api Requestor\n  r := gw2api.NewRequestor()\n\n  // Initialize api object \n  var world gw2api.World\n\n  // Perform a request with our defined api object\n  r.World(\u0026world, 2101)\n\n  // Show magic\n  log.Printf(\"Awesome world: %s\", world.Name)\n```\n\n\nThe best pratice is ti check if the request pipeline encountered an error \n```go\n  // Create a new gw2api Requestor\n  if err := r.World(\u0026world, 2101).Err(); err != nil {\n    panic(err.Error())\n  }\n```\n\n\nIn some endpoints you can need a translation, you can do a request with a specific\nlang with `.Lang(gw2api.Lang)`\n```go\n  r.Lang(gw2api.LangFR).Title(\u0026title, 1)\n```\n\n\nOn endpoints who needs API Key and permission, you can give to requestor an APIKey,\nthe requestor will fetch permission of APIKey to prevent any call to the API if your API\nKey don't have needed permission\n```go\n  r.Auth(apiKey).Account(\u0026account)\n```\n\nIn some advanced case, you can edit the timeout of the requestor too with `.Timeout(time.Duration)`\n```go\n  r.Timeout(5 * time.Second).Title(\u0026title, 1)\n```\n\n\nWhen you try to call an authenticated endpoints without APIKey, the Requestor will return you\nan error accessible on `.Err()` method. You can check the Err wirh `errors` package.\nIts the same process when your API Key dont have the required scope\n```go\n  err := r.Account(\u0026account).Err()\n  if errors.Is(err, gw2api.ErrRequireAuthentication) { // =\u003e true\n    log.Printf(\"Give an api key\")\n  }\n```\n\n| Err  | Description     |\n|-----|------------------|\n| ErrTooManyRequest | too many request: 429. You have reach API limitations |\n| ErrRequireAuthentication | API endpoint needs authentication |\n| ErrMissingScope | missing scope permissions for this endpoint |\n\n\n\n### TODO\n\n- [x] Core wrapper\n- [x] Language support\n- [x] API Token Permissions\n- [ ] Route active support\n- [x] Subtoken support\n- [ ] v2/\n  - [x] account\n    - [x] account/achievements\n    - [x] account/bank\n    - [x] account/buildstorage\n    - [x] account/dailycrafting\n    - [x] account/dungeons\n    - [x] account/dyes\n    - [x] account/emotes\n    - [x] account/finishers\n    - [x] account/gliders\n    - [x] account/home\n      - [x] account/home/cats\n      - [x] account/home/nodes\n    - [x] account/inventory\n    - [x] account/legendaryarmory\n    - [x] account/luck\n    - [-] account/mail (API not active)\n    - [x] account/mailcarriers\n    - [x] account/mapchests\n    - [x] account/masteries\n    - [x] account/mastery/points\n    - [x] account/materials\n    - [x] account/minis\n    - [x] account/mounts\n      - [x] account/mounts/skins\n      - [x] account/mounts/types\n    - [x] account/novelties\n    - [x] account/outfits\n    - [x] account/pvp/heroes\n    - [x] account/raids\n    - [x] account/recipes\n    - [x] account/skins\n    - [x] account/titles\n    - [x] account/wallet\n    - [x] account/worldbosses\n  - [x] achievements\n    - [x] achievements/categories\n    - [x] achievements/daily\n    - [x] achievements/daily/tomorrow\n    - [x] achievements/groups\n  - [-] adventures (API not active)\n    - [-] adventures/:id/leaderboards (API not active)\n      - [-] adventures/:id/leaderboards/:board/:region (API not active)\n  - [x] backstory/answers\n  - [x] backstory/questions\n  - [x] build\n  - [x] characters\n    - [x] (characters all and single)\n    - [x] characters/:id/backstory\n    - [x] characters/:id/buildtabs\n    - [x] characters/:id/buildtabs/active\n    - [x] characters/:id/core\n    - [x] characters/:id/crafting\n    - [-] characters/:id/dungeons (API not active)\n    - [x] characters/:id/equipment\n    - [x] characters/:id/equipmenttabs\n    - [x] characters/:id/equipmenttabs/active\n    - [x] characters/:id/heropoints\n    - [x] characters/:id/inventory\n    - [x] characters/:id/quests\n    - [x] characters/:id/recipes\n    - [x] characters/:id/sab\n    - [x] characters/:id/skills\n    - [x] characters/:id/specializations\n    - [x] characters/:id/training\n  - [x] colors\n  - [x] commerce/delivery\n  - [x] commerce/exchange\n  - [x] commerce/listings\n  - [x] commerce/prices\n  - [x] commerce/transactions\n    - [ ] Pagination System\n  - [x] continents\n  - [x] createsubtoken\n  - [x] currencies\n  - [x] dailycrafting\n  - [x] dungeons\n  - [x] emblem\n  - [x] emotes\n  - [-] events (API not active)\n  - [-] events-state (API not active)\n  - [x] files\n  - [x] finishers\n  - [-] gemstore/catalog (API not active)\n  - [x] gliders\n  - [x] guild/:id\n    - [x] guild/:id/log\n    - [x] guild/:id/members\n    - [x] guild/:id/ranks\n    - [x] guild/:id/stash\n    - [x] guild/:id/storage\n    - [ ] guild/:id/teams - needs /v2/pvp/stats.\n    - [x] guild/:id/treasury\n    - [x] guild/:id/upgrades\n  - [x] guild/permissions\n  - [x] guild/search\n  - [x] guild/upgrades\n  - [ ] home\n    - [ ] home/cats\n    - [ ] home/nodes\n  - [ ] items\n  - [ ] itemstats\n  - [ ] legendaryarmory\n  - [ ] legends\n  - [ ] mailcarriers\n  - [ ] mapchests\n  - [ ] maps\n  - [ ] masteries\n  - [ ] materials\n  - [ ] minis\n  - [ ] mounts\n    - [ ] mounts/skins\n    - [ ] mounts/types\n  - [ ] novelties\n  - [ ] outfits\n  - [ ] pets\n  - [ ] professions\n  - [ ] pvp\n    - [ ] pvp/amulets\n    - [ ] pvp/games\n    - [ ] pvp/heroes\n    - [ ] pvp/ranks\n    - [ ] pvp/rewardtracks\n    - [ ] pvp/runes\n    - [ ] pvp/seasons\n      - [ ] pvp/seasons/:id/leaderboards\n        - [ ] pvp/seasons/:id/leaderboards/:board/:region\n    - [ ] pvp/sigils\n    - [ ] pvp/standings\n    - [ ] pvp/stats\n  - [ ] quaggans\n  - [ ] quests\n  - [ ] races\n  - [ ] raids\n  - [ ] recipes\n    - [ ] recipes/search\n  - [ ] skills\n  - [ ] skins\n  - [ ] specializations\n  - [x] stories\n    - [x] stories/seasons\n  - [x] titles\n  - [x] tokeninfo\n  - [ ] traits\n  - [-] vendors (API not active)\n  - [x] worldbosses\n  - [x] worlds\n  - [x] wvw/abilities\n  - [x] wvw/matches\n  - [x] wvw/matches/overview\n  - [x] wvw/matches/scores\n  - [x] wvw/matches/stats\n  - [ ] wvw/matches/stats/:id/guilds/:guild_id (no doc)\n  - [ ] wvw/matches/stats/:id/teams/:team/top/kdr (no doc)\n  - [ ] wvw/matches/stats/:id/teams/:team/top/kills (no doc)\n  - [x] wvw/objectives\n  - [x] wvw/ranks\n  - [-] wvw/rewardtracks (API not active)\n  - [x] wvw/upgrades","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F42atomys%2Fgw2api-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F42atomys%2Fgw2api-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F42atomys%2Fgw2api-go/lists"}