{"id":24322013,"url":"https://github.com/malomohq/digital-ocean-elixir","last_synced_at":"2025-07-14T12:39:40.504Z","repository":{"id":41805250,"uuid":"297121840","full_name":"malomohq/digital-ocean-elixir","owner":"malomohq","description":"DigitalOcean API client for Elixir","archived":false,"fork":false,"pushed_at":"2025-01-14T21:32:25.000Z","size":146,"stargazers_count":5,"open_issues_count":1,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-14T22:19:44.593Z","etag":null,"topics":["digitalocean","digitalocean-api","digitalocean-apiv2-library","elixir-lang","made-by-malomo"],"latest_commit_sha":null,"homepage":"","language":"Elixir","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/malomohq.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}},"created_at":"2020-09-20T16:54:29.000Z","updated_at":"2025-01-14T21:31:45.000Z","dependencies_parsed_at":"2025-01-14T22:19:14.227Z","dependency_job_id":"e6868ed7-9e0c-4814-a399-f6f5cdcb3eca","html_url":"https://github.com/malomohq/digital-ocean-elixir","commit_stats":{"total_commits":121,"total_committers":5,"mean_commits":24.2,"dds":"0.25619834710743805","last_synced_commit":"d00739bdbb91f4175ca1b22011ee245e53cd17df"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malomohq%2Fdigital-ocean-elixir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malomohq%2Fdigital-ocean-elixir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malomohq%2Fdigital-ocean-elixir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malomohq%2Fdigital-ocean-elixir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/malomohq","download_url":"https://codeload.github.com/malomohq/digital-ocean-elixir/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234403536,"owners_count":18826987,"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":["digitalocean","digitalocean-api","digitalocean-apiv2-library","elixir-lang","made-by-malomo"],"created_at":"2025-01-17T17:36:54.755Z","updated_at":"2025-01-17T17:36:57.920Z","avatar_url":"https://github.com/malomohq.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DigitalOcean v2 API client for Elixir\n\n## Installation\n\n`digital_ocean` is published on Hex. Add it to your list of dependencies in\n`mix.exs`:\n\n```elixir\ndefp deps do\n  {:digital_ocean, \"~\u003e 0.5\"}\nend\n```\n\n`digital_ocean` requires you to provide an HTTP client and JSON codec. `hackney`\nand `jason` are used by default. If you wish to use these defaults you will\nalso need to specify `hackney` and `jason` as dependencies.\n\n## Usage\n\nEach resource module (e.g. `DigitalOcean.Droplet`) provides functions for\nbuilding a request that can be sent to the DigitalOcean v2 API using the\n`DigitalOcean.request/2` function.\n\n**Example**\n\n```elixir\nDigitalOcean.Account.get() |\u003e DigitalOcean.request(access_token: \"...\")\n```\n\nFor details on individual resource types [please see our documentation on\nHexDocs](https://hexdocs.pm/digital_ocean).\n\n## Configuration\n\nAll configuration must be provided on a per-request basis as a keyword list to\nthe second argument of `DigitalOcean.request/2`.\n\nPossible configuration values are provided below:\n\n* `:access_token` - an OAuth access token or a personal access token used by\n  DigitalOcean to authenticate your requests\n* `:http_client` - client used when making HTTP requests. Defaults to\n  `DigitalOcean.Http.Hackney`.\n* `:http_client_opts` - options or configuration passed to the HTTP client when\n  a request is made. Defaults to `[]`.\n* `:http_host` - host used to send requests to. Defaults to\n  `api.digitalocean.com`.\n* `:http_path_prefix` - path prefixed to all request URLs. Defaults to `/v2`.\n* `:http_port` - port to send requests to\n* `:http_protocol` - protocol used when sending requests. Defaults to `https`.\n* `:json_codec` - JSON codec used to encode/decode request and response bodies.\n  Defaults to `Jason`.\n* `:retry` - module implementing a strategy for retrying requests. Disabled when\n  set to `false`. Defaults to `false`.\n* `:retry_opts` - options for configuring retry behavior. Defaults to `[]`.\n  * `:max_attempts` - the number of attempts before failing a request. Defaults\n    to `3`.\n\n## Retries\n\n`digital_ocean` has a built-in mechanism for retrying requests that either\nreturn an HTTP status code of 500 or a client error. You can enabled retries\nby providing a module that implements the `DigitalOcean.Retry` behaviour to the\n`:retry` option when calling `DigitalOcean.request/2`.\n\nCurrently, `digital_ocean` provides a `DigitalOcean.Retry.Linear` strategy for\nretrying requests. This strategy will automatically retry a request on a set\ninterval. You can configure the interval by adding `:retry_in` with the number\nof milliseconds to wait before sending another request to the `:retry_opts`\noption.\n\n**Example**\n\n```elixir\nDigitalOcean.Account.get() |\u003e DigitalOcean.request(retry: DigitalOcean.Retry.Linear, retry_opts: [retry_in: 250])\n```\n\nThe example above would retry a failed request after 250 milliseconds. By\ndefault `DigitalOcean.Retry.Linear` will retry a request immediately if\n`:retry_in` has no value\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmalomohq%2Fdigital-ocean-elixir","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmalomohq%2Fdigital-ocean-elixir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmalomohq%2Fdigital-ocean-elixir/lists"}