{"id":40722888,"url":"https://github.com/cushydigit/go-freelancer-sdk","last_synced_at":"2026-01-21T13:39:37.375Z","repository":{"id":331126219,"uuid":"1120114653","full_name":"cushydigit/go-freelancer-sdk","owner":"cushydigit","description":"A Go (Golang) SDK for interacting with the Freelancer.com API","archived":false,"fork":false,"pushed_at":"2025-12-31T19:19:38.000Z","size":162,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-03T11:23:43.688Z","etag":null,"topics":["client","freelancer-api","freelancer-tools","golang","golang-sdk","sdk"],"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/cushydigit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-20T14:18:12.000Z","updated_at":"2025-12-31T19:16:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cushydigit/go-freelancer-sdk","commit_stats":null,"previous_names":["cushydigit/go-freelancer-sdk"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/cushydigit/go-freelancer-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cushydigit%2Fgo-freelancer-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cushydigit%2Fgo-freelancer-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cushydigit%2Fgo-freelancer-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cushydigit%2Fgo-freelancer-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cushydigit","download_url":"https://codeload.github.com/cushydigit/go-freelancer-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cushydigit%2Fgo-freelancer-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28633795,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["client","freelancer-api","freelancer-tools","golang","golang-sdk","sdk"],"created_at":"2026-01-21T13:39:36.600Z","updated_at":"2026-01-21T13:39:37.363Z","avatar_url":"https://github.com/cushydigit.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable MD033 --\u003e\n\u003ch1 align=\"center\"\u003e️Unofficial Freelancer.com SDK (Go)\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pkg.go.dev/github.com/cushydigit/go-freelancer-sdk\"\u003e\n    \u003cimg src=\"https://pkg.go.dev/badge/github.com/cushydigit/go-freelancer-sdk.svg\" alt=\"Go Reference\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/cushydigit/go-freelancer-sdk/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License MIT\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"go.mod\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/go-mod/go-version/cushydigit/go-freelancer-sdk\" alt=\"Go Version\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/cushydigit/go-freelancer-sdk/actions\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/cushydigit/go-freelancer-sdk/test.yml?branch=main\" alt=\"Build Status\"\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/status-unofficial-orange\" alt=\"Unofficial Status\"\u003e\n\u003c/p\u003e\n\u003c!-- markdownlint-enable MD033 --\u003e\n\n# Freelancer.com Go SDK\n\nA Go (Golang) SDK for interacting with the [Freelancer.com API](https://developers.freelancer.com/).\n\nThis library provides a simple, typed client for accessing Freelancer.com services like projects, bids, users, currencies, and more.\n\n---\n\n## Why I built this SDK?\n\nAs a freelancer, I spend a lot of time on the platform. I wanted to build automated tools (like bidding bots and project monitors) to streamline my workflow, but I realized there was no comprehensive Go client available.\n\nI spent a significant amount of time hand-coding these service wrappers to handle the platform's API nuances. This project is built out of necessity to give Go developers the same power that Python developers have on the platform.\n\n## Features\n\n- **Authentication:** Easy authentication using API Key\n- **Endpoints:** Covers major Freelancer.com endpoints (Users, Projects, Common)\n- **Design**: Clean, idiomatic Go design\n- **Context Support:** All methods support `context.Context` for timeouts and cancellation.\n- **License:** MIT Licensed — free to use and modify\n\n---\n\n## Installation\n\n```bash\ngo get github.com/cushydigit/freelancer-go-sdk\n```\n\n## Usage\n\n### Authentication\n\nYou will need an OAuth2 access token from Freelancer.com. You can generate one in the [Freelancer Developer Portal](https://accounts.freelancer.com/).\n\n### Quick Examples\n\nfetch active projects\n\n```Go\nimport (\n \"log\"\n \"github.com/cushydigit/go-freelancer-sdk/freelancer\"\n)\nfunc QuickExample() {\n// create client with access token\n client = freelancer.NewClient(apiAccessToken)\n opts := freelancer.SearchActiveProjectsOptions{\n  FullDescription: freelancer.Bool(true),\n  Limit:           freelancer.Int(10),\n  Offset:          freelancer.Int(5),\n  Query:           freelancer.String(\"golang\"),\n }\n\n res, err := client.Services.Projects.SearchActive(context.Background(), \u0026opts)\n // set parameters\n if err != nil {\n  log.Printf(\"error: %v\", err)\n  return\n }\n for index, p := range res.Result.Projects {\n  log.Println(index, p)\n }\n```\n\nfetch timezones\n\n```GO\nfunc ListTimezones() {\nres, err := client.Services.Common.ListTimezones(context.Background(), nil)\n if err != nil {\n  log.Printf(\"error: %v\", err)\n  return\n }\n for index, t := range res.Result.Timezones {\n  log.Println(index, t)\n }\n}\n```\n\nfetch countries\n\n```GO\nfunc ListCountries() {\n res, err := client.Services.Common.ListCountries(context.Background(), nil)\n if err != nil {\n  log.Printf(\"error: %v\", err)\n  return\n }\n for index, c := range res.Result.Countries {\n  fmt.Println(index, c)\n }\n}\n\n```\n\nfetch budgets\n\n```Go\n\nfunc ListBudgets() {\n res, err := client.Services.Projects.Extras.Budgets.List(context.Background(), nil)\n if err != nil {\n  log.Printf(\"error: %v\", err)\n  return\n }\n for index, b := range res.Result.Budgets {\n  fmt.Println(index, b)\n }\n}\n```\n\nfetch categories\n\n```Go\nfunc ListCategories() {\n res, err := client.Services.Projects.Extras.Categories.List(context.Background(), nil)\n if err != nil {\n  log.Printf(\"error: %v\", err)\n  return\n }\n for index, c := range res.Result.Categories {\n  fmt.Println(index, c)\n }\n}\n```\n\n## Project Structure\n\nThis SDK follows a modular service design. All core logic is located in `freelancer`.\n\n- **`client.go`**: It holds core logic\n- **`types.go`**: Shared data structures\n- **`responses`**: The wrappers for API replies\n- **`enums.go`**: Custom types and constants for statuses, roles, and types\n- **`services.go`**: The entry point for all services.\n- **`service_*.go`**: Each file encapsulates logic for a specific API domain\n\n## Documentation\n\nFull documentation is available at [pkg.go.dev](https://pkg.go.dev/github.com/cushydigit/go-freelancer-sdk).\n\nFor details on the underlying API endpoints and parameters, refer to the official [Freelancer.com API Documentation](https://developers.freelancer.com/).\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n### Development\n\nWe use a `Makefile` to automate common tasks:\n\n```bash\nmake test    # Run all unit tests\nmake build   # Compile the project\n```\n\n## Roadmap\n\nCurrent version covers **Projects**, **Users**, and **Common** services.\n\n### Stability \u0026 Quality\n\n- [x] **Static Analysis:**\n- [x] **Unit Testing:** (32% coverage)\n- [ ] **Use Case:**\n\n### Upcoming Features\n\n- [ ] **Messaging:** Threads and direct message handling.\n- [ ] **Contests:** Browsing and participating in contests.\n\n## Changelog\n\nFor a detailed list of changes, please see the [CHANGELOG.md](CHANGELOG.md).\n\n## Disclaimer\n\nThis is an unofficial library and is not affiliated with, endorsed by, or associated with Freelancer.com.\nPlease ensure you comply with the [Freelancer API Terms](https://www.freelancer.com/about/terms) and Conditions when using this software.\n\n## Contact\n\nFeel free to reach out if you have question or suggestions:\n\n- 📧 [sh.rahimi.dev@gmail.com](mailto:sh.rahimi.dev@gmail.com)\n- 💼 [LinkedIn](https://www.linkedin.com/in/shahin-rahimi-828447254/)\n- 🧑‍💻 [Freelancer](https://www.freelancer.com/u/shahinrahimi)\n- 🕊️ [X](https://x.com/cushydigit)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcushydigit%2Fgo-freelancer-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcushydigit%2Fgo-freelancer-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcushydigit%2Fgo-freelancer-sdk/lists"}