{"id":29085884,"url":"https://github.com/linode/linodego","last_synced_at":"2026-03-04T17:01:01.596Z","repository":{"id":27461666,"uuid":"108883568","full_name":"linode/linodego","owner":"linode","description":"Go client for Linode REST v4 API","archived":false,"fork":false,"pushed_at":"2026-03-03T06:37:03.000Z","size":5869,"stargazers_count":162,"open_issues_count":20,"forks_count":99,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-03-03T10:19:29.160Z","etag":null,"topics":["api-client","go","golang","linode","linode-api"],"latest_commit_sha":null,"homepage":null,"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/linode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":"support.go","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":"2017-10-30T17:16:22.000Z","updated_at":"2026-03-03T06:37:07.000Z","dependencies_parsed_at":"2023-10-10T22:15:41.516Z","dependency_job_id":"63eaa867-e5e6-4796-922a-f88c37568218","html_url":"https://github.com/linode/linodego","commit_stats":{"total_commits":754,"total_committers":59,"mean_commits":"12.779661016949152","dds":0.7294429708222812,"last_synced_commit":"e7939e8955a75d98c60025fa96b47f8de53df35e"},"previous_names":["chiefy/linodego","chiefy/go-linode"],"tags_count":160,"template":false,"template_full_name":null,"purl":"pkg:github/linode/linodego","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linode%2Flinodego","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linode%2Flinodego/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linode%2Flinodego/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linode%2Flinodego/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linode","download_url":"https://codeload.github.com/linode/linodego/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linode%2Flinodego/sbom","scorecard":{"id":277460,"data":{"date":"2025-08-11","repo":{"name":"github.com/linode/linodego","commit":"bcb371a74603592702d10b4c45a0a06febd9fe68"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.6,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"29 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/security_pr.yml:8","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Warn: no topLevel permission defined: .github/workflows/integration_tests_pr.yml:1","Warn: no topLevel permission defined: .github/workflows/labeler.yml:1","Warn: no topLevel permission defined: .github/workflows/nightly_smoke_tests.yml:1","Warn: no topLevel permission defined: .github/workflows/release-cross-repo-test.yml:1","Warn: no topLevel permission defined: .github/workflows/release-notify-slack.yml:1","Warn: no topLevel permission defined: .github/workflows/security_pr.yml:1","Warn: no topLevel permission defined: .github/workflows/stale.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/integration_tests_pr.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/integration_tests_pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/integration_tests_pr.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/integration_tests_pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/integration_tests_pr.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/integration_tests_pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/integration_tests_pr.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/integration_tests_pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/integration_tests_pr.yml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/integration_tests_pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/integration_tests_pr.yml:109: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/integration_tests_pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/integration_tests_pr.yml:135: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/integration_tests_pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/labeler.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/labeler.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nightly_smoke_tests.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/nightly_smoke_tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nightly_smoke_tests.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/nightly_smoke_tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/nightly_smoke_tests.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/nightly_smoke_tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-cross-repo-test.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/release-cross-repo-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-cross-repo-test.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/release-cross-repo-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-cross-repo-test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/release-cross-repo-test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-notify-slack.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/release-notify-slack.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/security_pr.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/security_pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/security_pr.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/security_pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/security_pr.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/security_pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/security_pr.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/security_pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stale.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/linode/linodego/stale.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:59","Warn: goCommand not pinned by hash: .github/workflows/ci.yml:62","Warn: pipCommand not pinned by hash: .github/workflows/integration_tests_pr.yml:141","Info:   0 out of  23 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   8 third-party GitHubAction dependencies pinned","Info:   1 out of   2 goCommand dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (30) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T14:53:52.436Z","repository_id":27461666,"created_at":"2025-08-17T14:53:52.436Z","updated_at":"2025-08-17T14:53:52.436Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30086512,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T15:40:14.053Z","status":"ssl_error","status_checked_at":"2026-03-04T15:40:13.655Z","response_time":59,"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":["api-client","go","golang","linode","linode-api"],"created_at":"2025-06-27T23:06:41.524Z","updated_at":"2026-03-04T17:01:01.581Z","avatar_url":"https://github.com/linode.png","language":"Go","readme":"# linodego\n\n![Tests](https://img.shields.io/github/actions/workflow/status/linode/linodego/ci.yml?branch=main)\n[![Release](https://img.shields.io/github/v/release/linode/linodego)](https://github.com/linode/linodego/releases/latest)\n[![GoDoc](https://godoc.org/github.com/linode/linodego?status.svg)](https://godoc.org/github.com/linode/linodego)\n[![Go Report Card](https://goreportcard.com/badge/github.com/linode/linodego)](https://goreportcard.com/report/github.com/linode/linodego)\n\nGo client for [Linode REST v4 API](https://techdocs.akamai.com/linode-api/reference/api)\n\n## Installation\n\n```sh\ngo get -u github.com/linode/linodego\n```\n\n## Documentation\n\nSee [godoc](https://godoc.org/github.com/linode/linodego) for a complete reference.\n\nThe API generally follows the naming patterns prescribed in the [OpenAPIv3 document for Linode APIv4](https://techdocs.akamai.com/linode-api/reference/api).\n\nDeviations in naming have been made to avoid using \"Linode\" and \"Instance\" redundantly or inconsistently.\n\nA brief summary of the features offered in this API client are shown here.\n\n## Examples\n\n### General Usage\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"net/http\"\n\t\"os\"\n\n\t\"github.com/linode/linodego\"\n\t\"golang.org/x/oauth2\"\n)\n\nfunc main() {\n\tapiKey, ok := os.LookupEnv(\"LINODE_TOKEN\")\n\tif !ok {\n\t\tlog.Fatal(\"Could not find LINODE_TOKEN, please assert it is set.\")\n\t}\n\ttokenSource := oauth2.StaticTokenSource(\u0026oauth2.Token{AccessToken: apiKey})\n\n\toauth2Client := \u0026http.Client{\n\t\tTransport: \u0026oauth2.Transport{\n\t\t\tSource: tokenSource,\n\t\t},\n\t}\n\n\tlinodeClient := linodego.NewClient(oauth2Client)\n\tlinodeClient.SetDebug(true)\n\n\tres, err := linodeClient.GetInstance(context.Background(), 4090913)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%v\", res)\n}\n```\n\n### Pagination\n\n#### Auto-Pagination Requests\n\n```go\nkernels, err := linodego.ListKernels(context.Background(), nil)\n// len(kernels) == 218\n```\n\nOr, use a page value of \"0\":\n\n```go\nopts := linodego.NewListOptions(0,\"\")\nkernels, err := linodego.ListKernels(context.Background(), opts)\n// len(kernels) == 218\n```\n\n#### Single Page\n\n```go\nopts := linodego.NewListOptions(2,\"\")\n// or opts := linodego.ListOptions{PageOptions: \u0026linodego.PageOptions{Page: 2}, PageSize: 500}\nkernels, err := linodego.ListKernels(context.Background(), opts)\n// len(kernels) == 100\n```\n\nListOptions are supplied as a pointer because the Pages and Results\nvalues are set in the supplied ListOptions.\n\n```go\n// opts.Results == 218\n```\n\n\u003e **_NOTES:_**  \n\u003e\t- The ListOptions will be mutated by list endpoint functions.\n\u003e\t- Instances of ListOptions should NOT be shared across multiple list endpoint functions.\n\u003e\t- The resulting number of results and pages can be accessed through the user-supplied ListOptions instance.\n\n#### Filtering\n\n```go\nf := linodego.Filter{}\nf.AddField(linodego.Eq, \"mine\", true)\nfStr, err := f.MarshalJSON()\nif err != nil {\n    log.Fatal(err)\n}\nopts := linodego.NewListOptions(0, string(fStr))\nstackscripts, err := linodego.ListStackscripts(context.Background(), opts)\n```\n\n### Error Handling\n\n#### Getting Single Entities\n\n```go\nlinode, err := linodego.GetInstance(context.Background(), 555) // any Linode ID that does not exist or is not yours\n// linode == nil: true\n// err.Error() == \"[404] Not Found\"\n// err.Code == \"404\"\n// err.Message == \"Not Found\"\n```\n\n#### Lists\n\nFor lists, the list is still returned as `[]`, but `err` works the same way as on the `Get` request.\n\n```go\nlinodes, err := linodego.ListInstances(context.Background(), linodego.NewListOptions(0, \"{\\\"foo\\\":bar}\"))\n// linodes == []\n// err.Error() == \"[400] [X-Filter] Cannot filter on foo\"\n```\n\nOtherwise sane requests beyond the last page do not trigger an error, just an empty result:\n\n```go\nlinodes, err := linodego.ListInstances(context.Background(), linodego.NewListOptions(9999, \"\"))\n// linodes == []\n// err = nil\n```\n\n### Response Caching\n\nBy default, certain endpoints with static responses will be cached into memory. \nEndpoints with cached responses are identified in their [accompanying documentation](https://pkg.go.dev/github.com/linode/linodego?utm_source=godoc).\n\nThe default cache entry expiry time is `15` minutes. Certain endpoints may override this value to allow for more frequent refreshes (e.g. `client.GetRegion(...)`).\nThe global cache expiry time can be customized using the `client.SetGlobalCacheExpiration(...)` method.\n\nResponse caching can be globally disabled or enabled for a client using the `client.UseCache(...)` method.\n\nThe global cache can be cleared and refreshed using the `client.InvalidateCache()` method.\n\n### Writes\n\nWhen performing a `POST` or `PUT` request, multiple field related errors will be returned as a single error, currently like:\n\n```go\n// err.Error() == \"[400] [field1] foo problem; [field2] bar problem; [field3] baz problem\"\n```\n\n## Tests\n\nRun `make test-unit` to run the unit tests. \n\nRun `make test-int` to run the integration tests. The integration tests use fixtures.\n\nTo update the test fixtures, run `make fixtures`.  This will record the API responses into the `fixtures/` directory.\nBe careful about committing any sensitive account details.  An attempt has been made to sanitize IP addresses and\ndates, but no automated sanitization will be performed against `fixtures/*Account*.yaml`, for example.\n\nTo prevent disrupting unaffected fixtures, target fixture generation like so: `make TEST_ARGS=\"-run TestListVolumes\" fixtures`.\n\n## Discussion / Help\n\nJoin us at [#linodego](https://gophers.slack.com/messages/CAG93EB2S) on the [gophers slack](https://gophers.slack.com)\n\n## License\n\n[MIT License](LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinode%2Flinodego","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinode%2Flinodego","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinode%2Flinodego/lists"}