openapi: 3.0.0
info:
title: DigitalOcean API
version: '2.0'
description: >
# Introduction
The DigitalOcean API allows you to manage Droplets and resources within the
DigitalOcean cloud in a simple, programmatic way using conventional HTTP
requests.
All of the functionality that you are familiar with in the DigitalOcean
control panel is also available through the API, allowing you to script the
complex actions that your situation requires.
The API documentation will start with a general overview about the design
and technology that has been implemented, followed by reference information
about specific endpoints.
## Requests
Any tool that is fluent in HTTP can communicate with the API simply by
requesting the correct URI. Requests should be made using the HTTPS protocol
so that traffic is encrypted. The interface responds to different methods
depending on the action required.
|Method|Usage|
|--- |--- |
|GET|For simple retrieval of information about your account, Droplets, or
environment, you should use the GET method. The information you request
will be returned to you as a JSON object. The attributes defined by the JSON
object can be used to form additional requests. Any request using the GET
method is read-only and will not affect any of the objects you are
querying.|
|DELETE|To destroy a resource and remove it from your account and
environment, the DELETE method should be used. This will remove the
specified object if it is found. If it is not found, the operation will
return a response indicating that the object was not found. This idempotency
means that you do not have to check for a resource's availability prior to
issuing a delete command, the final state will be the same regardless of its
existence.|
|PUT|To update the information about a resource in your account, the PUT
method is available. Like the DELETE Method, the PUT method is idempotent.
It sets the state of the target using the provided values, regardless of
their current values. Requests using the PUT method do not need to check the
current attributes of the object.|
|PATCH|Some resources support partial modification. In these cases, the
PATCH method is available. Unlike PUT which generally requires a complete
representation of a resource, a PATCH request is a set of instructions on
how to modify a resource updating only specific attributes.|
|POST|To create a new object, your request should specify the POST method.
The POST request includes all of the attributes necessary to create a new
object. When you wish to create a new object, send a POST request to the
target endpoint.|
|HEAD|Finally, to retrieve metadata information, you should use the HEAD
method to get the headers. This returns only the header of what would be
returned with an associated GET request. Response headers contain some
useful information about your API access and the results that are available
for your request. For instance, the headers contain your current rate-limit
value and the amount of time available until the limit resets. It also
contains metrics about the total number of objects found, pagination
information, and the total content length.|
## HTTP Statuses
Along with the HTTP methods that the API responds to, it will also return
standard HTTP statuses, including error codes.
In the event of a problem, the status will contain the error code, while the
body of the response will usually contain additional information about the
problem that was encountered.
In general, if the status returned is in the 200 range, it indicates that
the request was fulfilled successfully and that no error was encountered.
Return codes in the 400 range typically indicate that there was an issue
with the request that was sent. Among other things, this could mean that you
did not authenticate correctly, that you are requesting an action that you
do not have authorization for, that the object you are requesting does not
exist, or that your request is malformed.
If you receive a status in the 500 range, this generally indicates a
server-side problem. This means that we are having an issue on our end and
cannot fulfill your request currently.
400 and 500 level error responses will include a JSON object in their body,
including the following attributes:
|Name|Type|Description|
|--- |--- |--- |
|id|string|A short identifier corresponding to the HTTP status code
returned. For example, the ID for a response returning a 404 status code
would be "not_found."|
|message|string|A message providing additional information about the error,
including details to help resolve it when possible.|
|request_id|string|Optionally, some endpoints may include a request ID that
should be provided when reporting bugs or opening support tickets to help
identify the issue.|
### Example Error Response
```
HTTP/1.1 403 Forbidden
{
"id": "forbidden",
"message": "You do not have access for the attempted action."
}
```
## Responses
When a request is successful, a response body will typically be sent back in
the form of a JSON object. An exception to this is when a DELETE request is
processed, which will result in a successful HTTP 204 status and an empty
response body.
Inside of this JSON object, the resource root that was the target of the
request will be set as the key. This will be the singular form of the word
if the request operated on a single object, and the plural form of the word
if a collection was processed.
For example, if you send a GET request to `/v2/droplets/$DROPLET_ID` you
will get back an object with a key called "`droplet`". However, if you send
the GET request to the general collection at `/v2/droplets`, you will get
back an object with a key called "`droplets`".
The value of these keys will generally be a JSON object for a request on a
single object and an array of objects for a request on a collection of
objects.
### Response for a Single Object
```json
{
"droplet": {
"name": "example.com"
. . .
}
}
```
### Response for an Object Collection
```json
{
"droplets": [
{
"name": "example.com"
. . .
},
{
"name": "second.com"
. . .
}
]
}
```
## Meta
In addition to the main resource root, the response may also contain a
`meta` object. This object contains information about the response itself.
The `meta` object contains a `total` key that is set to the total number of
objects returned by the request. This has implications on the `links` object
and pagination.
The `meta` object will only be displayed when it has a value. Currently, the
`meta` object will have a value when a request is made on a collection (like
`droplets` or `domains`).
### Sample Meta Object
```json
{
. . .
"meta": {
"total": 43
}
. . .
}
```
## Links & Pagination
The `links` object is returned as part of the response body when pagination
is enabled. By default, 20 objects are returned per page. If the response
contains 20 objects or fewer, no `links` object will be returned. If the
response contains more than 20 objects, the first 20 will be returned along
with the `links` object.
You can request a different pagination limit or force pagination by
appending `?per_page=` to the request with the number of items you would
like per page. For instance, to show only two results per page, you could
add `?per_page=2` to the end of your query. The maximum number of results
per page is 200.
The `links` object contains a `pages` object. The `pages` object, in turn,
contains keys indicating the relationship of additional pages. The values of
these are the URLs of the associated pages. The keys will be one of the
following:
* **first**: The URI of the first page of results.
* **prev**: The URI of the previous sequential page of results.
* **next**: The URI of the next sequential page of results.
* **last**: The URI of the last page of results.
The `pages` object will only include the links that make sense. So for the
first page of results, no `first` or `prev` links will ever be set. This
convention holds true in other situations where a link would not make sense.
### Sample Links Object
```json
{
. . .
"links": {
"pages": {
"last": "https://api.digitalocean.com/v2/images?page=2",
"next": "https://api.digitalocean.com/v2/images?page=2"
}
}
. . .
}
```
## Rate Limit
Requests through the API are rate limited per OAuth token. Current rate
limits:
* 5,000 requests per hour
* 250 requests per minute (5% of the hourly total)
Once you exceed either limit, you will be rate limited until the next cycle
starts. Space out any requests that you would otherwise issue in bursts for
the best results.
The rate limiting information is contained within the response headers of
each request. The relevant headers are:
* **ratelimit-limit**: The number of requests that can be made per hour.
* **ratelimit-remaining**: The number of requests that remain before you
hit your request limit. See the information below for how the request limits
expire.
* **ratelimit-reset**: This represents the time when the oldest request
will expire. The value is given in [Unix epoch
time](http://en.wikipedia.org/wiki/Unix_time). See below for more
information about how request limits expire.
More rate limiting information is returned only within burst limit error
response headers:
* **retry-after**: The number of seconds to wait before making another
request when rate limited.
As long as the `ratelimit-remaining` count is above zero, you will be able
to make additional requests.
The way that a request expires and is removed from the current limit count
is important to understand. Rather than counting all of the requests for an
hour and resetting the `ratelimit-remaining` value at the end of the hour,
each request instead has its own timer.
This means that each request contributes toward the `ratelimit-remaining`
count for one complete hour after the request is made. When that request's
timer runs out, it is no longer counted towards the request limit.
This has implications on the meaning of the `ratelimit-reset` header as
well. Because the entire rate limit is not reset at one time, the value of
this header is set to the time when the _oldest_ request will expire.
Keep this in mind if you see your `ratelimit-reset` value change, but not
move an entire hour into the future.
If the `ratelimit-remaining` reaches zero, subsequent requests will receive
a 429 error code until the request reset has been reached.
`ratelimit-remaining` reaching zero can also indicate that the "burst limit"
of 250
requests per minute limit was met, even if the 5,000 requests per hour limit
was not.
In this case, the 429 error response will include a `retry-after` header to
indicate how
long to wait (in seconds) until the request may be retried.
You can see the format of the response in the examples.
**Note:** The following endpoints have special rate limit requirements that
are independent of the limits defined above.
* Only 12 `POST` requests to the `/v2/floating_ips` endpoint to create
Floating IPs can be made per 60 seconds.
* Only 10 `GET` requests to the `/v2/account/keys` endpoint to list SSH
keys can be made per 60 seconds.
* Only 5 requests to any and all `v2/cdn/endpoints` can be made per 10
seconds. This includes `v2/cdn/endpoints`,
`v2/cdn/endpoints/$ENDPOINT_ID`, and `v2/cdn/endpoints/$ENDPOINT_ID/cache`.
* Only 50 strings within the `files` json struct in the
`v2/cdn/endpoints/$ENDPOINT_ID/cache`
[payload](https://docs.digitalocean.com/reference/api/api-reference/#operation/cdn_purge_cache)
can be requested every 20 seconds.
### Sample Rate Limit Headers
```
. . .
ratelimit-limit: 1200
ratelimit-remaining: 1193
rateLimit-reset: 1402425459
. . .
```
### Sample Rate Limit Headers When Burst Limit is Reached:
```
. . .
ratelimit-limit: 5000
ratelimit-remaining: 0
rateLimit-reset: 1402425459
retry-after: 29
. . .
```
### Sample Rate Exceeded Response
```
429 Too Many Requests
{
id: "too_many_requests",
message: "API Rate limit exceeded."
}
```
## Curl Examples
Throughout this document, some example API requests will be given using the
`curl` command. This will allow us to demonstrate the various endpoints in a
simple, textual format.
These examples assume that you are using a Linux or macOS command line. To run
these commands on a Windows machine, you can either use cmd.exe, PowerShell,
or WSL:
* For cmd.exe, use the `set VAR=VALUE`
[syntax](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/set_1)
to define environment variables, call them with `%VAR%`, then replace all
backslashes (`\`) in the examples with carets (`^`).
* For PowerShell, use the `$Env:VAR = "VALUE"`
[syntax](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-7.2)
to define environment variables, call them with `$Env:VAR`, then replace
`curl` with `curl.exe` and all backslashes (`\`) in the examples with
backticks (`` ` ``).
* WSL is a compatibility layer that allows you to emulate a Linux terminal
on a Windows machine.
Install WSL with our [community
tutorial](https://www.digitalocean.com/community/tutorials/how-to-install-the-windows-subsystem-for-linux-2-on-microsoft-windows-10),
then follow this API documentation normally.
The names of account-specific references (like Droplet IDs, for instance)
will be represented by variables. For instance, a Droplet ID may be
represented by a variable called `$DROPLET_ID`. You can set the associated
variables in your environment if you wish to use the examples without
modification.
The first variable that you should set to get started is your OAuth
authorization token. The next section will go over the details of this, but
you can set an environmental variable for it now.
Generate a token by going to the [Apps &
API](https://cloud.digitalocean.com/settings/applications)
section of the DigitalOcean control panel. Use an existing token if you have
saved one, or generate a new token with the "Generate new token" button.
Copy the generated token and use it to set and export the TOKEN variable in
your environment as the example shows.
You may also wish to set some other variables now or as you go along. For
example, you may wish to set the `DROPLET_ID` variable to one of your
Droplet IDs since this will be used frequently in the API.
If you are following along, make sure you use a Droplet ID that you control
so that your commands will execute correctly.
If you need access to the headers of a response through `curl`, you can pass
the `-i` flag to display the header information along with the body. If you
are only interested in the header, you can instead pass the `-I` flag, which
will exclude the response body entirely.
### Set and Export your OAuth Token
```
export DIGITALOCEAN_TOKEN=your_token_here
```
### Set and Export a Variable
```
export DROPLET_ID=1111111
```
## Parameters
There are two different ways to pass parameters in a request with the API.
When passing parameters to create or update an object, parameters should be
passed as a JSON object containing the appropriate attribute names and
values as key-value pairs. When you use this format, you should specify that
you are sending a JSON object in the header. This is done by setting the
`Content-Type` header to `application/json`. This ensures that your request
is interpreted correctly.
When passing parameters to filter a response on GET requests, parameters can
be passed using standard query attributes. In this case, the parameters
would be embedded into the URI itself by appending a `?` to the end of the
URI and then setting each attribute with an equal sign. Attributes can be
separated with a `&`. Tools like `curl` can create the appropriate URI when
given parameters and values; this can also be done using the `-F` flag and
then passing the key and value as an argument. The argument should take the
form of a quoted string with the attribute being set to a value with an
equal sign.
### Pass Parameters as a JSON Object
```
curl -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "example.com", "ip_address": "127.0.0.1"}' \
-X POST "https://api.digitalocean.com/v2/domains"
```
### Pass Filter Parameters as a Query String
```
curl -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-X GET \
"https://api.digitalocean.com/v2/images?private=true"
```
## Cross Origin Resource Sharing
In order to make requests to the API from other domains, the API implements
Cross Origin Resource Sharing (CORS) support.
CORS support is generally used to create AJAX requests outside of the domain
that the request originated from. This is necessary to implement projects
like control panels utilizing the API. This tells the browser that it can
send requests to an outside domain.
The procedure that the browser initiates in order to perform these actions
(other than GET requests) begins by sending a "preflight" request. This sets
the `Origin` header and uses the `OPTIONS` method. The server will reply
back with the methods it allows and some of the limits it imposes. The
client then sends the actual request if it falls within the allowed
constraints.
This process is usually done in the background by the browser, but you can
use curl to emulate this process using the example provided. The headers
that will be set to show the constraints are:
* **Access-Control-Allow-Origin**: This is the domain that is sent by the
client or browser as the origin of the request. It is set through an
`Origin` header.
* **Access-Control-Allow-Methods**: This specifies the allowed options for
requests from that domain. This will generally be all available methods.
* **Access-Control-Expose-Headers**: This will contain the headers that
will be available to requests from the origin domain.
* **Access-Control-Max-Age**: This is the length of time that the access
is considered valid. After this expires, a new preflight should be sent.
* **Access-Control-Allow-Credentials**: This will be set to `true`. It
basically allows you to send your OAuth token for authentication.
You should not need to be concerned with the details of these headers,
because the browser will typically do all of the work for you.
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
contact:
name: DigitalOcean API Team
email: api-engineering@digitalocean.com
termsOfService: https://www.digitalocean.com/legal/terms-of-service-agreement/
servers:
- url: https://api.digitalocean.com
description: production
tags:
- name: 1-Click Applications
description: >-
1-Click applications are pre-built Droplet images or Kubernetes apps with
software,
features, and configuration details already set up for you. They can be
found in the
[DigitalOcean Marketplace](https://marketplace.digitalocean.com/).
- name: Account
description: Provides information about your current account.
- name: Actions
description: >-
Actions are records of events that have occurred on the resources in your
account.
These can be things like rebooting a Droplet, or transferring an image to
a new region.
An action object is created every time one of these actions is initiated.
The action
object contains information about the current status of the action, start
and complete
timestamps, and the associated resource type and ID.
Every action that creates an action object is available through this
endpoint. Completed
actions are not removed from this list and are always available for
querying.
**Note:** You can pass the following HTTP header with the request to have
the API return
the `reserved_ips` stanza instead of the `floating_ips` stanza:
- `Accept: application/vnd.digitalocean.reserveip+json`
- name: Apps
description: >-
App Platform is a Platform-as-a-Service (PaaS) offering from DigitalOcean
that allows
developers to publish code directly to DigitalOcean servers without
worrying about the
underlying infrastructure.
Most API operations are centered around a few core object types. Following
are the
definitions of these types. These definitions will be omitted from the
operation-specific
documentation.
For documentation on app specifications (`AppSpec` objects), please refer
to the
[product
documentation](https://docs.digitalocean.com/products/app-platform/reference/app-spec/)).
- name: Billing
description: >-
The billing endpoints allow you to retrieve your account balance, invoices
and billing history.
**Balance:** By sending requests to the `/v2/customers/my/balance`
endpoint, you can
retrieve the balance information for the requested customer account.
**Invoices:**
[Invoices](https://docs.digitalocean.com/platform/billing/invoices/)
are generated on the first of each month for every DigitalOcean
customer. An invoice preview is generated daily, which can be accessed
with the `preview` keyword in place of `$INVOICE_UUID`. To interact with
invoices, you will generally send requests to the invoices endpoint at
`/v2/customers/my/invoices`.
**Billing History:** Billing history is a record of billing events for
your account.
For example, entries may include events like payments made, invoices
issued, or credits granted. To interact with invoices, you
will generally send requests to the invoices endpoint at
`/v2/customers/my/billing_history`.
- name: Block Storage
description: >-
[DigitalOcean Block Storage
Volumes](https://docs.digitalocean.com/products/volumes/)
provide expanded storage capacity for your Droplets and can be moved
between Droplets within a specific region.
Volumes function as raw block devices, meaning they appear to the
operating system as locally attached storage which can be formatted using
any file system supported by the OS. They may be created in sizes from
1GiB to 16TiB.
By sending requests to the `/v2/volumes` endpoint, you can list, create,
or
delete volumes as well as attach and detach them from Droplets
- name: Block Storage Actions
description: |-
Block storage actions are commands that can be given to a DigitalOcean
Block Storage Volume. An example would be detaching or attaching a volume
from a Droplet. These requests are made on the
`/v2/volumes/$VOLUME_ID/actions` endpoint.
An action object is returned. These objects hold the current status of the
requested action.
- name: CDN Endpoints
description: |-
Content hosted in DigitalOcean's object storage solution,
[Spaces](https://docs.digitalocean.com/products/spaces/),
can optionally be served by our globally distributed Content Delivery
Network (CDN). By sending requests to `/v2/cdn/endpoints`, you can list,
create, or delete CDN Endpoints as well as purge cached content. To use a
custom subdomain to access the CDN Endpoint, provide the ID of a
DigitalOcean managed TLS certificate and the fully qualified domain name
for the custom subdomain.
CDN endpoints have a rate limit of five requests per 10 seconds.
- name: Certificates
description: >-
In order to perform SSL termination on load balancers, DigitalOcean offers
two types of [SSL certificate
management](https://docs.digitalocean.com/platform/teams/manage-certificates):
* **Custom**: User-generated certificates may be uploaded to DigitalOcean
where they will be placed in a fully encrypted and isolated storage
system.
* **Let's Encrypt**: Certificates may be automatically generated by
DigitalOcean utilizing an integration with Let's Encrypt, the free and
open certificate authority. These certificates will also be automatically
renewed as required.
- name: Container Registry
description: >-
DigitalOcean offers the ability for you to create a
[private container
registry](https://docs.digitalocean.com/products/container-registry/)
to store your Docker images for use with your Kubernetes clusters. This
container registry runs inside the same datacenters as your cluster,
ensuring reliable and performant rollout of image deployments.
You can only create one registry per DigitalOcean account, but you can use
that registry to create as many repositories as you wish.
- name: Databases
description: >-
DigitalOcean's [managed database
service](https://docs.digitalocean.com/products/databases)
simplifies the creation and management of highly available database
clusters. Currently, it
offers support for
[PostgreSQL](http://docs.digitalocean.com/products/databases/postgresql/),
[Redis](https://docs.digitalocean.com/products/databases/redis/),
[MySQL](https://docs.digitalocean.com/products/databases/mysql/),
[MongoDB](https://docs.digitalocean.com/products/databases/mongodb/), and
[OpenSearch](https://docs.digitalocean.com/products/databases/opensearch/).
By sending requests to the `/v2/databases` endpoint, you can list, create,
or delete
database clusters as well as scale the size of a cluster, add or remove
read-only replicas,
and manage other configuration details.
Database clusters may be deployed in a multi-node, high-availability
configuration.
If your machine type is above the basic nodes, your node plan is above the
smallest option,
or you are running MongoDB, you may additionally include up to two standby
nodes in your cluster.
The size of individual nodes in a database cluster is represented by a
human-readable slug,
which is used in some of the following requests. Each slug denotes the
node's identifier,
CPU count, and amount of RAM, in that order.
For a list of currently available database slugs and options, use the
`/v2/databases/options` endpoint or use the
`doctl databases options`
[command](https://docs.digitalocean.com/reference/doctl/reference/databases/options).
- name: Domain Records
description: >-
Domain record resources are used to set or retrieve information about the
individual DNS records configured for a domain. This allows you to build
and manage DNS zone files by adding and modifying individual records for a
domain.
The [DigitalOcean DNS management
interface](https://docs.digitalocean.com/products/networking/dns/)
allows you to configure the following DNS records:
Name |
Description
|
------|----------------------------------------------------------------------------------------------------------------------------------------------------|
A | This record type is used to map an IPv4 address to a
hostname.
|
AAAA | This record type is used to map an IPv6 address to a
hostname.
|
CAA | As specified in RFC-6844, this record type can be used to restrict
which certificate authorities are permitted to issue certificates for a
domain. |
CNAME | This record type defines an alias for your canonical hostname (the
one defined by an A or AAAA
record). |
MX | This record type is used to define the mail exchanges used for the
domain.
|
NS | This record type defines the name servers that are used for this
zone.
|
TXT | This record type is used to associate a string of text with a
hostname, primarily used for
verification. |
SRV | This record type specifies the location (hostname and port number)
of servers for specific
services. |
SOA | This record type defines administrative information about the
zone. Can only have ttl changed, cannot be
deleted |
- name: Domains
description: >-
Domain resources are domain names that you have purchased from a domain
name registrar that you are managing through the
[DigitalOcean DNS
interface](https://docs.digitalocean.com/products/networking/dns/).
This resource establishes top-level control over each domain. Actions that
affect individual domain records should be taken on the
[Domain Records](#tag/Domain-Records) resource.
- name: Droplet Actions
description: |-
Droplet actions are tasks that can be executed on a Droplet. These can be
things like rebooting, resizing, snapshotting, etc.
Droplet action requests are generally targeted at one of the "actions"
endpoints for a specific Droplet. The specific actions are usually
initiated by sending a POST request with the action and arguments as
parameters.
Droplet action requests create a Droplet actions object, which can be used
to get information about the status of an action. Creating a Droplet
action is asynchronous: the HTTP call will return the action object before
the action has finished processing on the Droplet. The current status of
an action can be retrieved from either the Droplet actions endpoint or the
global actions endpoint. If a Droplet action is uncompleted it may block
the creation of a subsequent action for that Droplet, the locked attribute
of the Droplet will be true and attempts to create a Droplet action will
fail with a status of 422.
- name: Droplets
description: >-
A [Droplet](https://docs.digitalocean.com/products/droplets/) is a
DigitalOcean
virtual machine. By sending requests to the Droplet endpoint, you can
list, create, or delete Droplets.
Some of the attributes will have an object value. The `region` and `image`
objects will all contain the standard attributes of their associated
types. Find more information about each of these objects in their
respective sections.
- name: Droplet Autoscale Pools
description: >-
Droplet autoscale pools manage automatic horizontal scaling for your
applications based on resource usage (CPU, memory, or both) or a static
configuration.
- name: Firewalls
description: >-
[DigitalOcean Cloud
Firewalls](https://docs.digitalocean.com/products/networking/firewalls/)
provide the ability to restrict network access to and from a Droplet
allowing you to define which ports will accept inbound or outbound
connections. By sending requests to the `/v2/firewalls` endpoint, you can
list, create, or delete firewalls as well as modify access rules.
- name: Floating IP Actions
description: >-
As of 16 June 2022, we have renamed the Floating IP product to [Reserved
IPs](https://docs.digitalocean.com/reference/api/api-reference/#tag/Reserved-IPs).
The Reserved IP product's endpoints function the exact same way as
Floating IPs.
The only difference is the name change throughout the URLs and fields.
For example, the `floating_ips` field is now the `reserved_ips` field.
The Floating IP endpoints will remain active until fall 2023 before being
permanently deprecated.
With the exception of the [Projects
API](https://docs.digitalocean.com/reference/api/api-reference/#tag/Projects),
we will reflect this change as an additional field in the responses across
the API
where the `floating_ip` field is used. For example, the Droplet metadata
response
will contain the field `reserved_ips` in addition to the `floating_ips`
field.
Floating IPs retrieved using the Projects API will retain the original
name.
Floating IP actions are commands that can be given to a DigitalOcean
floating IP. These requests are made on the actions endpoint of a specific
floating IP.
An action object is returned. These objects hold the current status of the
requested action.
- name: Floating IPs
description: >-
As of 16 June 2022, we have renamed the Floating IP product to [Reserved
IPs](https://docs.digitalocean.com/reference/api/api-reference/#tag/Reserved-IPs).
The Reserved IP product's endpoints function the exact same way as
Floating IPs.
The only difference is the name change throughout the URLs and fields.
For example, the `floating_ips` field is now the `reserved_ips` field.
The Floating IP endpoints will remain active until fall 2023 before being
permanently deprecated.
With the exception of the [Projects
API](https://docs.digitalocean.com/reference/api/api-reference/#tag/Projects),
we will reflect this change as an additional field in the responses across
the API
where the `floating_ip` field is used. For example, the Droplet metadata
response
will contain the field `reserved_ips` in addition to the `floating_ips`
field.
Floating IPs retrieved using the Projects API will retain the original
name.
[DigitalOcean Floating
IPs](https://docs.digitalocean.com/products/networking/reserved-ips/)
are publicly-accessible static IP addresses that can be mapped to one of
your Droplets. They can be used to create highly available setups or other
configurations requiring movable addresses.
Floating IPs are bound to a specific region.
- name: Functions
description: >-
[Serverless functions](https://docs.digitalocean.com/products/functions)
are blocks of code that run on demand without the need to manage any
infrastructure.
You can develop functions on your local machine and then deploy them to a
namespace using `doctl`, the [official DigitalOcean CLI
tool](https://docs.digitalocean.com/reference/doctl).
The Serverless Functions API currently only supports creating and managing
namespaces.
- name: Image Actions
description: |-
Image actions are commands that can be given to a DigitalOcean image. In
general, these requests are made on the actions endpoint of a specific
image.
An image action object is returned. These objects hold the current status
of the requested action.
- name: Images
description: >-
A DigitalOcean [image](https://docs.digitalocean.com/products/images/) can
be
used to create a Droplet and may come in a number of flavors. Currently,
there are five types of images: snapshots, backups, applications,
distributions, and custom images.
* [Snapshots](https://docs.digitalocean.com/products/snapshots/) provide
a full copy of an existing Droplet instance taken on demand.
* [Backups](https://docs.digitalocean.com/products/backups/) are similar
to snapshots but are created automatically at regular intervals when
enabled for a Droplet.
* [Custom images](https://docs.digitalocean.com/products/custom-images/)
are Linux-based virtual machine images (raw, qcow2, vhdx, vdi, and vmdk
formats are supported) that you may upload for use on DigitalOcean.
* Distributions are the public Linux distributions that are available to
be used as a base to create Droplets.
* Applications, or [1-Click
Apps](https://docs.digitalocean.com/products/marketplace/),
are distributions pre-configured with additional software.
To interact with images, you will generally send requests to the images
endpoint at /v2/images.
- name: Kubernetes
description: >-
[DigitalOcean
Kubernetes](https://docs.digitalocean.com/products/kubernetes/)
allows you to quickly deploy scalable and secure Kubernetes clusters. By
sending requests to the `/v2/kubernetes/clusters` endpoint, you can list,
create, or delete clusters as well as scale node pools up and down,
recycle individual nodes, and retrieve the kubeconfig file for use with
a cluster.
- name: Load Balancers
description: >-
[DigitalOcean Load
Balancers](https://docs.digitalocean.com/products/networking/load-balancers/)
provide a way to distribute traffic across multiple Droplets. By sending
requests to the `/v2/load_balancers` endpoint, you can list, create, or
delete load balancers as well as add or remove Droplets, forwarding rules,
and other configuration details.
- name: Monitoring
description: >-
The DigitalOcean Monitoring API makes it possible to programmatically
retrieve metrics as well as configure alert
policies based on these metrics. The Monitoring API can help you gain
insight into how your apps are performing
and consuming resources.
- name: Project Resources
description: >-
Project Resources are resources that can be grouped into your projects.
You can group resources (like Droplets, Spaces, load balancers, domains,
and floating IPs) in ways that align with the applications you host on
DigitalOcean.
### Supported Resource Types Examples
Projects resources are identified by uniform resource names or URNs. A
valid URN has the following format: `do:resource_type:resource_id`. The
following resource types are supported:
Resource Type | Example URN
-------------------|------------
App Platform App | `do:app:be5aab85-851b-4cab-b2ed-98d5a63ba4e8`
Database | `do:dbaas:83c7a55f-0d84-4760-9245-aba076ec2fb2`
Domain | `do:domain:example.com`
Droplet | `do:droplet:4126873`
Floating IP | `do:floatingip:192.168.99.100`
Kubernetes Cluster | `do:kubernetes:bd5f5959-5e1e-4205-a714-a914373942af`
Load Balancer |
`do:loadbalancer:39052d89-8dd4-4d49-8d5a-3c3b6b365b5b`
Space | `do:space:my-website-assets`
Volume | `do:volume:6fc4c277-ea5c-448a-93cd-dd496cfef71f`
### Resource Status Codes
When assigning and retrieving resources in projects, a `status` attribute
is returned that indicates if a resource was successfully retrieved or
assigned. The status codes can be one of the following:
Status Code | Explanation
-------------------|------------
`ok` | There was no problem retrieving or assigning a
resource.
`not_found` | The resource was not found.
`assigned` | The resource was successfully assigned.
`already_assigned` | The resource was already assigned.
`service_down` | There was a problem retrieving or assigning a
resource. Please try again.
- name: Projects
description: |-
Projects allow you to organize your resources into groups that fit the way
you work. You can group resources (like Droplets, Spaces, load balancers,
domains, and floating IPs) in ways that align with the applications
you host on DigitalOcean.
- name: Regions
description: Provides information about DigitalOcean data center regions.
- name: Reserved IP Actions
description: >-
As of 16 June 2022, we have renamed the [Floating
IP](https://docs.digitalocean.com/reference/api/api-reference/#tag/Floating-IPs)
product to Reserved IPs. The Reserved IP product's endpoints function the
exact
same way as Floating IPs. The only difference is the name change
throughout the
URLs and fields. For example, the `floating_ips` field is now the
`reserved_ips` field.
The Floating IP endpoints will remain active until fall 2023 before being
permanently deprecated.
With the exception of the [Projects
API](https://docs.digitalocean.com/reference/api/api-reference/#tag/Projects),
we will reflect this change as an additional field in the responses across
the API
where the `floating_ip` field is used. For example, the Droplet metadata
response
will contain the field `reserved_ips` in addition to the `floating_ips`
field.
Floating IPs retrieved using the Projects API will retain the original
name.
Reserved IP actions are commands that can be given to a DigitalOcean
reserved IP. These requests are made on the actions endpoint of a specific
reserved IP.
An action object is returned. These objects hold the current status of the
requested action.
- name: Reserved IPs
description: >-
As of 16 June 2022, we have renamed the [Floating
IP](https://docs.digitalocean.com/reference/api/api-reference/#tag/Floating-IPs)
product to Reserved IPs. The Reserved IP product's endpoints function the
exact
same way as Floating IPs. The only difference is the name change
throughout the
URLs and fields. For example, the `floating_ips` field is now the
`reserved_ips` field.
The Floating IP endpoints will remain active until fall 2023 before being
permanently deprecated.
With the exception of the [Projects
API](https://docs.digitalocean.com/reference/api/api-reference/#tag/Projects),
we will reflect this change as an additional field in the responses across
the API
where the `floating_ip` field is used. For example, the Droplet metadata
response
will contain the field `reserved_ips` in addition to the `floating_ips`
field.
Floating IPs retrieved using the Projects API will retain the original
name.
DigitalOcean Reserved IPs are publicly-accessible static IP addresses that
can be
mapped to one of your Droplets. They can be used to create highly
available
setups or other configurations requiring movable addresses.
Reserved IPs are bound to a specific region.
- name: Sizes
description: |-
The sizes objects represent different packages of hardware resources that
can be used for Droplets. When a Droplet is created, a size must be
selected so that the correct resources can be allocated.
Each size represents a plan that bundles together specific sets of
resources. This includes the amount of RAM, the number of virtual CPUs,
disk space, and transfer. The size object also includes the pricing
details and the regions that the size is available in.
- name: Snapshots
description: |-
[Snapshots](https://docs.digitalocean.com/products/snapshots/) are saved
instances of a Droplet or a block storage volume, which is reflected in
the `resource_type` attribute. In order to avoid problems with compressing
filesystems, each defines a `min_disk_size` attribute which is the minimum
size of the Droplet or volume disk when creating a new resource from the
saved snapshot.
To interact with snapshots, you will generally send requests to the
snapshots endpoint at `/v2/snapshots`.
- name: SSH Keys
description: Manage SSH keys available on your account.
- name: Tags
description: >-
A tag is a label that can be applied to a resource (currently Droplets,
Images, Volumes, Volume Snapshots, and Database clusters) in order to
better organize or facilitate the lookups and actions on it.
Tags have two attributes: a user defined `name` attribute and an embedded
`resources` attribute with information about resources that have been
tagged.
- name: Uptime
description: >-
[DigitalOcean Uptime
Checks](https://docs.digitalocean.com/products/uptime/) provide the
ability to monitor your endpoints from around the world, and alert you
when they're slow, unavailable, or SSL certificates are expiring.
To interact with Uptime, you will generally send requests to the Uptime
endpoint at `/v2/uptime/`.
- name: VPC Peerings
description: >-
[VPC
Peerings](https://docs.digitalocean.com/products/networking/vpc/how-to/create-peering/)
join two VPC networks with a secure, private connection. This allows
resources in those networks to connect to each other's private IP
addresses
as if they were in the same network.
- name: VPCs
description: >-
[VPCs (virtual private
clouds)](https://docs.digitalocean.com/products/networking/vpc/)
allow you to create virtual networks containing resources that can
communicate with each other in full isolation using private IP addresses.
By sending requests to the `/v2/vpcs` endpoint, you can create, configure,
list, and delete custom VPCs as well as retrieve information about the
resources assigned to them.
paths:
/v2/1-clicks:
get:
operationId: oneClicks_list
summary: List 1-Click Applications
description: >
To list all available 1-Click applications, send a GET request to
`/v2/1-clicks`. The `type` may
be provided as query paramater in order to restrict results to a certain
type of 1-Click, for
example: `/v2/1-clicks?type=droplet`. Current supported types are
`kubernetes` and `droplet`.
The response will be a JSON object with a key called `1_clicks`. This
will be set to an array of
1-Click application data, each of which will contain the the slug and
type for the 1-Click.
tags:
- 1-Click Applications
parameters:
- $ref: '#/components/parameters/oneClicks_type'
responses:
'200':
$ref: '#/components/responses/oneClicks_all'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/1-clicks"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.getenv("$DIGITALOCEAN_TOKEN"))
one_click_apps = client.one_clicks.list()
security:
- bearer_auth:
- 1click:read
/v2/1-clicks/kubernetes:
post:
operationId: oneClicks_install_kubernetes
summary: Install Kubernetes 1-Click Applications
description: >
To install a Kubernetes 1-Click application on a cluster, send a POST
request to
`/v2/1-clicks/kubernetes`. The `addon_slugs` and `cluster_uuid` must be
provided as body
parameter in order to specify which 1-Click application(s) to install.
To list all available
1-Click Kubernetes applications, send a request to
`/v2/1-clicks?type=kubernetes`.
tags:
- 1-Click Applications
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/oneClicks_create'
responses:
'200':
$ref: '#/components/responses/oneClicks_create'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"addon_slugs": ["kube-state-metrics", "loki"], "cluster_uuid": "50a994b6-c303-438f-9495-7e896cfe6b08"}'' \
"https://api.digitalocean.com/v2/1-clicks/kubernetes"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
install_req = {
"addon_slugs": ["kube-state-metrics", "loki"],
"cluster_uuid": "50a994b6-c303-438f-9495-7e896cfe6b08",
}
install_resp = client.one_clicks.install_kubernetes(install_req)
security:
- bearer_auth:
- 1click:create
/v2/account:
get:
operationId: account_get
summary: Get User Information
description: >-
To show information about the current user account, send a GET request
to `/v2/account`.
tags:
- Account
responses:
'200':
$ref: '#/components/responses/account'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/account"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.getenv("$DIGITALOCEAN_TOKEN"))
account_info = client.account.get()
security:
- bearer_auth:
- account:read
/v2/account/keys:
get:
operationId: sshKeys_list
summary: List All SSH Keys
description: >-
To list all of the keys in your account, send a GET request to
`/v2/account/keys`. The response will be a JSON object with a key set to
`ssh_keys`. The value of this will be an array of ssh_key objects, each
of which contains the standard ssh_key attributes.
tags:
- SSH Keys
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/sshKeys_all'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/account/keys"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
keys, _, err := client.Keys.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
ssh_keys = client.ssh_keys.all
ssh_keys.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.ssh_keys.list()
security:
- bearer_auth:
- ssh_key:read
post:
operationId: sshKeys_create
summary: Create a New SSH Key
description: >-
To add a new SSH public key to your DigitalOcean account, send a POST
request to `/v2/account/keys`. Set the `name` attribute to the name you
wish to use and the `public_key` attribute to the full public key you
are adding.
tags:
- SSH Keys
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/sshKeys'
responses:
'201':
$ref: '#/components/responses/sshKeys_new'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"My SSH Public Key","public_key":"ssh-rsa AEXAMPLEaC1yc2EAAAADAQABAAAAQQDDHr/jh2Jy4yALcK4JyWbVkPRaWmhck3IgCoeOO3z1e2dBowLh64QAM+Qb72pxekALga2oi4GvT+TlWNhzPH4V example"}' \
"https://api.digitalocean.com/v2/account/keys"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &godo.KeyCreateRequest{
Name: "My SSH Public Key",
PublicKey: "ssh-rsa AEXAMPLEaC1yc2EAAAADAQABAAAAQQDDHr/jh2Jy4yALcK4JyWbVkPRaWmhck3IgCoeOO3z1e2dBowLh64QAM+Qb72pxekALga2oi4GvT+TlWNhzPH4V example",
}
transfer, _, err := client.Keys.Create(ctx, createRequest)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
ssh_key = DropletKit::SSHKey.new(
name: 'My SSH Public Key',
public_key: 'ssh-rsa AEXAMPLEaC1yc2EAAAADAQABAAAAQQDDHr/jh2Jy4yALcK4JyWbVkPRaWmhck3IgCoeOO3z1e2dBowLh64QAM+Qb72pxekALga2oi4GvT+TlWNhzPH4V example'
)
client.ssh_keys.create(ssh_key)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"public_key": "ssh-rsa AEXAMPLEaC1yc2EAAAADAQABAAAAQQDDHr/jh2Jy4yALcK4JyWbVkPRaWmhck3IgCoeOO3z1e2dBowLh64QAM+Qb72pxekALga2oi4GvT+TlWNhzPH4V example",
"name": "My SSH Public Key"
}
resp = client.ssh_keys.create(body=req)
security:
- bearer_auth:
- ssh_key:create
/v2/account/keys/{ssh_key_identifier}:
get:
operationId: sshKeys_get
summary: Retrieve an Existing SSH Key
description: >-
To get information about a key, send a GET request to
`/v2/account/keys/$KEY_ID` or `/v2/account/keys/$KEY_FINGERPRINT`.
The response will be a JSON object with the key `ssh_key` and value an
ssh_key object which contains the standard ssh_key attributes.
tags:
- SSH Keys
parameters:
- $ref: '#/components/parameters/ssh_key_identifier'
responses:
'200':
$ref: '#/components/responses/sshKeys_existing'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/account/keys/512190"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
key, _, err := client.Keys.GetByID(ctx, 512190)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.ssh_keys.find(id: 512190)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.ssh_keys.get(ssh_key_identifier=512190)
security:
- bearer_auth:
- ssh_key:read
put:
operationId: sshKeys_update
summary: Update an SSH Key's Name
description: >-
To update the name of an SSH key, send a PUT request to either
`/v2/account/keys/$SSH_KEY_ID` or
`/v2/account/keys/$SSH_KEY_FINGERPRINT`. Set the `name` attribute to the
new name you want to use.
tags:
- SSH Keys
parameters:
- $ref: '#/components/parameters/ssh_key_identifier'
requestBody:
description: Set the `name` attribute to the new name you want to use.
required: true
content:
application/json:
schema:
type: object
properties:
name:
$ref: '#/components/schemas/ssh_key_name'
responses:
'200':
$ref: '#/components/responses/sshKeys_existing'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"Renamed SSH Key"}' \
"https://api.digitalocean.com/v2/account/keys/512190"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
updateRequest := &godo.KeyUpdateRequest{
Name: "Renamed SSH Key",
}
key, _, err := client.Keys.UpdateByID(ctx, 512190, updateRequest)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
ssh_key = DropletKit::SSHKey.new(name: 'Renamed SSH Key')
client.ssh_keys.update(ssh_key, id: 512190)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "My SSH Public Key"
}
resp = client.ssh_keys.update(ssh_key_identifier=512190, body=req)
security:
- bearer_auth:
- ssh_key:update
delete:
operationId: sshKeys_delete
summary: Delete an SSH Key
description: >-
To destroy a public SSH key that you have in your account, send a DELETE
request to `/v2/account/keys/$KEY_ID` or
`/v2/account/keys/$KEY_FINGERPRINT`.
A 204 status will be returned, indicating that the action was successful
and that the response body is empty.
tags:
- SSH Keys
parameters:
- $ref: '#/components/parameters/ssh_key_identifier'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/account/keys/512190"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Keys.DeleteByID(ctx, 512190)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.ssh_keys.delete(id: 512190)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.ssh_keys.delete(ssh_key_identifier=512190)
security:
- bearer_auth:
- ssh_key:delete
/v2/actions:
get:
operationId: actions_list
summary: List All Actions
description: >-
This will be the entire list of actions taken on your account, so it
will be quite large. As with any large collection returned by the API,
the results will be paginated with only 20 on each page by default.
tags:
- Actions
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/actions'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/actions?page=1&per_page=1"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
actions, _, err := client.Actions.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
actions = client.actions.all
actions.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.getenv("$DIGITALOCEAN_TOKEN"))
list_resp = client.actions.list()
security:
- bearer_auth:
- actions:read
/v2/actions/{action_id}:
get:
operationId: actions_get
summary: Retrieve an Existing Action
description: >-
To retrieve a specific action object, send a GET request to
`/v2/actions/$ACTION_ID`.
tags:
- Actions
parameters:
- $ref: '#/components/parameters/action_id'
responses:
'200':
$ref: '#/components/responses/action'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/actions/36804636"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
action, _, err := client.Actions.Get(ctx, 36804636)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.actions.find(id: 36804636)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.getenv("$DIGITALOCEAN_TOKEN"))
get_resp = client.actions.get(action_id=36804636)
security:
- bearer_auth:
- actions:read
/v2/apps:
get:
operationId: apps_list
summary: List All Apps
description: >-
List all apps on your account. Information about the current active
deployment as well as any in progress ones will also be included for
each app.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/with_projects'
responses:
'200':
$ref: '#/components/responses/list_apps'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.apps.list()
security:
- bearer_auth:
- app:read
post:
operationId: apps_create
summary: Create a New App
description: >-
Create a new app by submitting an app specification. For documentation
on app specifications (`AppSpec` objects), please refer to [the product
documentation](https://docs.digitalocean.com/products/app-platform/reference/app-spec/).
tags:
- Apps
parameters:
- $ref: '#/components/parameters/accept'
- $ref: '#/components/parameters/content-type'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/apps_create_app_request'
example:
spec:
name: web-app
region: nyc
services:
- name: api
github:
branch: main
deploy_on_push: true
repo: digitalocean/sample-golang
run_command: bin/api
environment_slug: node-js
instance_count: 2
instance_size_slug: apps-s-1vcpu-0.5gb
routes:
- path: /api
egress:
type: DEDICATED_IP
required: true
responses:
'200':
$ref: '#/components/responses/new_app'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps"
-d '{"spec":{"name":"web-app","region":"nyc", \
"services":[{"name":"api","github":{"branch":"main",\
"deploy_on_push":true,"repo":"digitalocean/sample-golang"}, \
"run_command":"bin/api","environment_slug":"node-js", \
"instance_count":2,"instance_size_slug":"apps-s-1vcpu-0.5gb", \
"routes":[{"path":"/api"}]}]}}'
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
create_resp = client.apps.create(
{
"spec": {
"name": "web-app",
"region": "nyc",
"services": [
{
"name": "api",
"github": {},
"run_command": "bin/api",
"environment_slug": "node-js",
"instance_count": 2,
"instance_size_slug": "apps-s-1vcpu-0.5gb",
"routes": [],
}
],
}
}
)
security:
- bearer_auth:
- app:create
/v2/apps/{id}:
delete:
operationId: apps_delete
summary: Delete an App
description: >-
Delete an existing app. Once deleted, all active deployments will be
permanently shut down and the app deleted. If needed, be sure to back up
your app specification so that you may re-create it at a later time.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/id_app'
responses:
'200':
$ref: '#/components/responses/delete_app'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{id}"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
delete_resp = client.apps.delete(id="b7d64052")
security:
- bearer_auth:
- app:delete
get:
operationId: apps_get
summary: Retrieve an Existing App
description: >-
Retrieve details about an existing app by either its ID or name. To
retrieve an app by its name, do not include an ID in the request path.
Information about the current active deployment as well as any in
progress ones will also be included in the response.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/id_app'
- $ref: '#/components/parameters/app_name'
responses:
'200':
$ref: '#/components/responses/apps_get'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{id}"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
create_resp = client.apps.get(id="4f6c71e2")
security:
- bearer_auth:
- app:read
put:
operationId: apps_update
summary: Update an App
description: >-
Update an existing app by submitting a new app specification. For
documentation on app specifications (`AppSpec` objects), please refer to
[the product
documentation](https://docs.digitalocean.com/products/app-platform/reference/app-spec/).
tags:
- Apps
parameters:
- $ref: '#/components/parameters/id_app'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/apps_update_app_request'
required: true
responses:
'200':
$ref: '#/components/responses/update_app'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: >-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{id}" \
-d
'{"alerts":[{"rule":"DEPLOYMENT_FAILED"},{"rule":"DOMAIN_FAILED"}],"domains":[{"domain":"example.com","type":"PRIMARY","zone":"example.com"}],"envs":[{"key":"API_KEY","scope":"RUN_AND_BUILD_TIME","type":"SECRET","value":"EV[1:zqiRIeaaYK/NqctZDYzy6t0pTrtRDez8:wqGpZRrsKN5nPhWQrS479cfBiXT0WQ==]"}],"features":["buildpack-stack=ubuntu-22"],"ingress":{},"name":"example-app","region":"nyc","services":[{"autoscaling":{"max_instance_count":4,"metrics":{"cpu":{"percent":70}},"min_instance_count":2},"git":{"branch":"main","repo_clone_url":"https://github.com/digitalocean/sample-nodejs.git"},"internal_ports":[8080],"log_destinations":[{"name":"your_log_consumer_name","open_search":{"endpoint":"logs.example.com:12345","basic_auth":{"user":"doadmin","password":"1234567890abcdef"},"index_name":"example-index","cluster_name":"example-cluster"}}],"name":"sample-nodejs","run_command":"yarn
start","source_dir":"/"}]}'
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"spec": {
"name": "web-app-01",
"region": "nyc",
"domains": [
{
"domain": "app.example.com",
"type": "DEFAULT",
"wildcard": True,
"zone": "example.com",
"minimum_tls_version": "1.3",
}
],
"services": [],
"static_sites": [
{
"cors": {
"allow_origins": [
{"exact": "https://www.example.com"},
{"regex": "^.*example.com"},
],
"allow_methods": [
"GET",
"OPTIONS",
"POST",
"PUT",
"PATCH",
"DELETE",
],
"allow_headers": ["Content-Type", "X-Custom-Header"],
"expose_headers": ["Content-Encoding", "X-Custom-Header"],
"max_age": "5h30m",
"allow_credentials": False,
},
"routes": [{"path": "/api", "preserve_path_prefix": True}],
}
],
"jobs": [
{
"name": "api",
"gitlab": {
"branch": "main",
"deploy_on_push": True,
"repo": "digitalocean/sample-golang",
},
"image": {
"registry": "registry.hub.docker.com",
"registry_type": "DOCR",
"repository": "origin/master",
"tag": "latest",
},
"dockerfile_path": "path/to/Dockerfile",
"build_command": "npm run build",
"run_command": "bin/api",
"source_dir": "path/to/dir",
"envs": [
{
"key": "BASE_URL",
"scope": "BUILD_TIME",
"type": "GENERAL",
"value": "http://example.com",
}
],
"environment_slug": "node-js",
"log_destinations": {
"name": "my_log_destination",
"papertrail": {
"endpoint": "https://mypapertrailendpoint.com"
},
"datadog": {
"endpoint": "https://mydatadogendpoint.com",
"api_key": "abcdefghijklmnopqrstuvwxyz0123456789",
},
"logtail": {
"token": "abcdefghijklmnopqrstuvwxyz0123456789"
},
"open_search": {
"endpoint": "https://myopensearchendpoint.com:9300"
"index_name": "logs"
"basic_auth": {
"user": "doadmin",
"password": "password"
}
},
},
"instance_count": 2,
"instance_size_slug": "apps-s-1vcpu-0.5gb",
"kind": "PRE_DEPLOY",
}
],
"workers": [
{
"name": "api",
"gitlab": {
"branch": "main",
"deploy_on_push": True,
"repo": "digitalocean/sample-golang",
},
"image": {
"registry": "registry.hub.docker.com",
"registry_type": "DOCR",
"repository": "origin/master",
"tag": "latest",
},
"dockerfile_path": "path/to/Dockerfile",
"build_command": "npm run build",
"run_command": "bin/api",
"source_dir": "path/to/dir",
"envs": [
{
"key": "BASE_URL",
"scope": "BUILD_TIME",
"type": "GENERAL",
"value": "http://example.com",
}
],
"environment_slug": "node-js",
"log_destinations": {
"name": "my_log_destination",
"papertrail": {
"endpoint": "https://mypapertrailendpoint.com"
},
"datadog": {
"endpoint": "https://mydatadogendpoint.com",
"api_key": "abcdefghijklmnopqrstuvwxyz0123456789",
},
"logtail": {
"token": "abcdefghijklmnopqrstuvwxyz0123456789"
},
"open_search": {
"endpoint": "https://myopensearchendpoint.com:9300"
"index_name": "logs"
"basic_auth": {
"user": "doadmin",
"password": "password"
}
},
},
"instance_count": 2,
"instance_size_slug": "apps-s-1vcpu-0.5gb",
}
],
"functions": [
{
"cors": {
"allow_origins": [
{"exact": "https://www.example.com"},
{"regex": "^.*example.com"},
],
"allow_methods": [
"GET",
"OPTIONS",
"POST",
"PUT",
"PATCH",
"DELETE",
],
"allow_headers": ["Content-Type", "X-Custom-Header"],
"expose_headers": ["Content-Encoding", "X-Custom-Header"],
"max_age": "5h30m",
"allow_credentials": False,
},
"routes": [{"path": "/api", "preserve_path_prefix": True}],
"name": "api",
"source_dir": "path/to/dir",
"alerts": [
{
"rule": "CPU_UTILIZATION",
"disabled": False,
"operator": "GREATER_THAN",
"value": 2.32,
"window": "FIVE_MINUTES",
}
],
"envs": [
{
"key": "BASE_URL",
"scope": "BUILD_TIME",
"type": "GENERAL",
"value": "http://example.com",
}
],
"gitlab": {
"branch": "main",
"deploy_on_push": True,
"repo": "digitalocean/sample-golang",
},
"log_destinations": {
"name": "my_log_destination",
"papertrail": {
"endpoint": "https://mypapertrailendpoint.com"
},
"datadog": {
"endpoint": "https://mydatadogendpoint.com",
"api_key": "abcdefghijklmnopqrstuvwxyz0123456789",
},
"logtail": {
"token": "abcdefghijklmnopqrstuvwxyz0123456789"
},
"open_search": {
"endpoint": "https://myopensearchendpoint.com:9300"
"index_name": "logs"
"basic_auth": {
"user": "doadmin",
"password": "password"
}
},
},
}
],
"databases": [
{
"cluster_name": "cluster_name",
"db_name": "my_db",
"db_user": "superuser",
"engine": "PG",
"name": "prod-db",
"production": True,
"version": "12",
}
],
}
}
update_resp = client.apps.update(id="bb245ba", body=req)
security:
- bearer_auth:
- app:update
/v2/apps/{app_id}/restart:
post:
operationId: apps_restart
summary: Restart an App
description: Perform a rolling restart of all or specific components in an app.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/apps_restart_request'
responses:
'200':
$ref: '#/components/responses/new_app_deployment'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/restart"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
create_resp = client.apps.restart(app_id="b6bdf840",
body={"components": ["component1", "component2"]})
security:
- bearer_auth:
- app:update
/v2/apps/{app_id}/components/{component_name}/logs:
get:
operationId: apps_get_logs_active_deployment
summary: Retrieve Active Deployment Logs
description: >-
Retrieve the logs of the active deployment if one exists. The response
will include links to either real-time logs of an in-progress or active
deployment or archived logs of a past deployment. Note log_type=BUILD
logs will return logs associated with the current active deployment
(being served). To view build logs associated with in-progress build,
the query must explicitly reference the deployment id.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
- $ref: '#/components/parameters/component'
- $ref: '#/components/parameters/live_updates'
- $ref: '#/components/parameters/log_type'
- $ref: '#/components/parameters/time_wait'
responses:
'200':
$ref: '#/components/responses/list_logs'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/components/{component_name}/logs"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.apps.get_logs_active_deployment(app_id="a6adf840",
component_name="component")
security:
- bearer_auth:
- app:read
/v2/apps/{app_id}/components/{component_name}/exec:
get:
operationId: apps_get_exec_active_deployment
summary: Retrieve Exec URL
description: >-
Returns a websocket URL that allows sending/receiving console input and
output to a component of the active deployment if one exists.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
- $ref: '#/components/parameters/component'
responses:
'200':
$ref: '#/components/responses/get_exec'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/components/{component_name}/exec"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.apps.get_exec_active_deployment(app_id="a6adf840",
component_name="component")
security:
- bearer_auth:
- app:update
/v2/apps/{app_id}/deployments:
get:
operationId: apps_list_deployments
summary: List App Deployments
description: List all deployments of an app.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/per_page'
responses:
'200':
$ref: '#/components/responses/existing_deployments'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/deployments"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.apps.list_deployments(app_id="4f6c71e2")
security:
- bearer_auth:
- app:read
post:
operationId: apps_create_deployment
summary: Create an App Deployment
description: >-
Creating an app deployment will pull the latest changes from your
repository and schedule a new deployment for your app.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/apps_create_deployment_request'
required: true
responses:
'200':
$ref: '#/components/responses/new_app_deployment'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/deployments"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
create_resp = client.apps.create_deployment(app_id="b6bdf840",
body={"force_build": True})
security:
- bearer_auth:
- app:create
/v2/apps/{app_id}/deployments/{deployment_id}:
get:
operationId: apps_get_deployment
summary: Retrieve an App Deployment
description: Retrieve information about an app deployment.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
- $ref: '#/components/parameters/deployment_id'
responses:
'200':
$ref: '#/components/responses/list_deployment'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/deployments/{deployment_id}"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.apps.get_deployment(app_id="a6adf840",
deployment_id="b6bdf840")
security:
- bearer_auth:
- app:read
/v2/apps/{app_id}/deployments/{deployment_id}/cancel:
post:
operationId: apps_cancel_deployment
summary: Cancel a Deployment
description: Immediately cancel an in-progress deployment.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
- $ref: '#/components/parameters/deployment_id'
responses:
'200':
$ref: '#/components/responses/cancel_deployment'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/deployments/{deployment_id}/cancel"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
cancel_resp = client.apps.cancel_deployment("12345", "24556")
security:
- bearer_auth:
- app:update
/v2/apps/{app_id}/deployments/{deployment_id}/components/{component_name}/logs:
get:
operationId: apps_get_logs
summary: Retrieve Deployment Logs
description: >-
Retrieve the logs of a past, in-progress, or active deployment. The
response will include links to either real-time logs of an in-progress
or active deployment or archived logs of a past deployment.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
- $ref: '#/components/parameters/deployment_id'
- $ref: '#/components/parameters/component'
- $ref: '#/components/parameters/live_updates'
- $ref: '#/components/parameters/log_type'
- $ref: '#/components/parameters/time_wait'
responses:
'200':
$ref: '#/components/responses/list_logs'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/deployments/{deployment_id}/components/{component_name}/logs"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.apps.get_logs(app_id="4f6c71e2",
deployment_id="3aa4d20e", component_name="component")
security:
- bearer_auth:
- app:read
/v2/apps/{app_id}/deployments/{deployment_id}/logs:
get:
operationId: apps_get_logs_aggregate
summary: Retrieve Aggregate Deployment Logs
description: >-
Retrieve the logs of a past, in-progress, or active deployment. If a
component name is specified, the logs will be limited to only that
component. The response will include links to either real-time logs of
an in-progress or active deployment or archived logs of a past
deployment.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
- $ref: '#/components/parameters/deployment_id'
- $ref: '#/components/parameters/live_updates'
- $ref: '#/components/parameters/log_type'
- $ref: '#/components/parameters/time_wait'
responses:
'200':
$ref: '#/components/responses/list_logs'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/deployments/{deployment_id}/logs"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.apps.get_logs_aggregate(app_id="b6bdf840",
deployment_id="a6adf840")
security:
- bearer_auth:
- app:read
/v2/apps/{app_id}/deployments/{deployment_id}/components/{component_name}/exec:
get:
operationId: apps_get_exec
summary: Retrieve Exec URL for Deployment
description: >-
Returns a websocket URL that allows sending/receiving console input and
output to a component of the specified deployment if one exists.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
- $ref: '#/components/parameters/deployment_id'
- $ref: '#/components/parameters/component'
responses:
'200':
$ref: '#/components/responses/get_exec'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/deployments/{deployment_id}/components/{component_name}/exec"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.apps.get_exec(app_id="4f6c71e2",
deployment_id="3aa4d20e", component_name="component")
security:
- bearer_auth:
- app:update
/v2/apps/{app_id}/logs:
get:
operationId: apps_get_logs_active_deployment_aggregate
summary: Retrieve Active Deployment Aggregate Logs
description: >-
Retrieve the logs of the active deployment if one exists. The response
will include links to either real-time logs of an in-progress or active
deployment or archived logs of a past deployment. Note log_type=BUILD
logs will return logs associated with the current active deployment
(being served). To view build logs associated with in-progress build,
the query must explicitly reference the deployment id.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
- $ref: '#/components/parameters/live_updates'
- $ref: '#/components/parameters/log_type'
- $ref: '#/components/parameters/time_wait'
responses:
'200':
$ref: '#/components/responses/list_logs'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/logs"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.apps.get_logs_active_deployment_aggregate(app_id="a6adf840")
security:
- bearer_auth:
- app:read
/v2/apps/tiers/instance_sizes:
get:
operationId: apps_list_instanceSizes
summary: List Instance Sizes
description: List all instance sizes for `service`, `worker`, and `job` components.
tags:
- Apps
responses:
'200':
$ref: '#/components/responses/list_instance'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/tiers/instance_sizes"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.apps.list_instance_sizes()
security:
- bearer_auth:
- app:read
/v2/apps/tiers/instance_sizes/{slug}:
get:
operationId: apps_get_instanceSize
summary: Retrieve an Instance Size
description: >-
Retrieve information about a specific instance size for `service`,
`worker`, and `job` components.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/slug_size'
responses:
'200':
$ref: '#/components/responses/get_instance'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/tiers/instance_sizes/{slug}"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.apps.get_instance_size(slug="apps-s-1vcpu-0.5gb")
security:
- bearer_auth:
- app:read
/v2/apps/regions:
get:
operationId: apps_list_regions
summary: List App Regions
description: List all regions supported by App Platform.
tags:
- Apps
responses:
'200':
$ref: '#/components/responses/list_regions'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/regions"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.apps.list_regions()
security:
- bearer_auth:
- app:read
/v2/apps/propose:
post:
operationId: apps_validate_appSpec
summary: Propose an App Spec
description: >-
To propose and validate a spec for a new or existing app, send a POST
request to the `/v2/apps/propose` endpoint. The request returns some
information about the proposed app, including app cost and upgrade cost.
If an existing app ID is specified, the app spec is treated as a
proposed update to the existing app.
tags:
- Apps
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/app_propose'
example:
spec:
name: web-app
region: nyc
services:
- name: api
github:
branch: main
deploy_on_push: true
repo: digitalocean/sample-golang
run_command: bin/api
environment_slug: node-js
instance_count: 2
instance_size_slug: apps-s-1vcpu-0.5gb
routes:
- path: /api
app_id: b6bdf840-2854-4f87-a36c-5f231c617c84
required: true
responses:
'200':
$ref: '#/components/responses/propose_app'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
security:
- bearer_auth:
- app:read
/v2/apps/{app_id}/alerts:
get:
operationId: apps_list_alerts
summary: List all app alerts
description: >-
List alerts associated to the app and any components. This includes
configuration information about the alerts including emails, slack
webhooks, and triggering events or conditions.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
responses:
'200':
$ref: '#/components/responses/list_alerts'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/alerts"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.apps.list_alerts(app_id="4f6c71e2")
security:
- bearer_auth:
- app:read
/v2/apps/{app_id}/alerts/{alert_id}/destinations:
post:
operationId: apps_assign_alertDestinations
summary: Update destinations for alerts
description: >-
Updates the emails and slack webhook destinations for app alerts. Emails
must be associated to a user with access to the app.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
- $ref: '#/components/parameters/alert_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/apps_assign_app_alert_destinations_request'
required: true
responses:
'200':
$ref: '#/components/responses/assign_alert_destinations'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{id}/alerts/{alert_id}/destinations"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"emails": ["sammy@digitalocean.com"],
"slack_webhooks": [
{
"url": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
"channel": "Channel Name",
}
],
}
post_resp = client.apps.assign_alert_destinations("12345", "24556",
req)
security:
- bearer_auth:
- app:update
/v2/apps/{app_id}/rollback:
post:
operationId: apps_create_rollback
summary: Rollback App
description: >
Rollback an app to a previous deployment. A new deployment will be
created to perform the rollback.
The app will be pinned to the rollback deployment preventing any new
deployments from being created,
either manually or through Auto Deploy on Push webhooks. To resume
deployments, the rollback must be
either committed or reverted.
It is recommended to use the Validate App Rollback endpoint to double
check if the rollback is
valid and if there are any warnings.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/apps_rollback_app_request'
required: true
responses:
'200':
$ref: '#/components/responses/new_app_deployment'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{ "deployment_id": "3aa4d20e-5527-4c00-b496-601fbd22520a" }' \
"https://api.digitalocean.com/v2/apps/{app_id}/rollback"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
create_resp = client.apps.create_rollback(app_id="b6bdf840")
security:
- bearer_auth:
- app:update
/v2/apps/{app_id}/rollback/validate:
post:
operationId: apps_validate_rollback
summary: Validate App Rollback
description: >
Check whether an app can be rolled back to a specific deployment. This
endpoint can also be used
to check if there are any warnings or validation conditions that will
cause the rollback to proceed
under unideal circumstances. For example, if a component must be rebuilt
as part of the rollback
causing it to take longer than usual.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/apps_rollback_app_request'
required: true
responses:
'200':
$ref: '#/components/responses/apps_validate_rollback'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{ "deployment_id": "3aa4d20e-5527-4c00-b496-601fbd22520a" }' \
"https://api.digitalocean.com/v2/apps/{app_id}/rollback/validate"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
validate_req = {"deployment_id": "2", "skip_pin": False}
validate_resp = client.apps.validate_rollback("1", validate_req)
security:
- bearer_auth:
- app:update
/v2/apps/{app_id}/rollback/commit:
post:
operationId: apps_commit_rollback
summary: Commit App Rollback
description: >
Commit an app rollback. This action permanently applies the rollback and
unpins the app to resume new deployments.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
responses:
'200':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/rollback/commit"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
commit_resp = client.apps.commit_rollback("1")
security:
- bearer_auth:
- app:update
/v2/apps/{app_id}/rollback/revert:
post:
operationId: apps_revert_rollback
summary: Revert App Rollback
description: >
Revert an app rollback. This action reverts the active rollback by
creating a new deployment from the
latest app spec prior to the rollback and unpins the app to resume new
deployments.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
responses:
'200':
$ref: '#/components/responses/new_app_deployment'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{app_id}/rollback/revert"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
revert_resp = client.apps.revert_rollback("1")
security:
- bearer_auth:
- app:update
/v2/apps/{app_id}/metrics/bandwidth_daily:
get:
operationId: apps_get_metrics_bandwidth_daily
summary: Retrieve App Daily Bandwidth Metrics
description: Retrieve daily bandwidth usage metrics for a single app.
tags:
- Apps
parameters:
- $ref: '#/components/parameters/app_id'
- name: date
description: >-
Optional day to query. Only the date component of the timestamp will
be considered. Default: yesterday.
in: query
schema:
type: string
format: date-time
example: '2023-01-17T00:00:00Z'
responses:
'200':
$ref: '#/components/responses/get_metrics_bandwidth_usage'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/{id}/metrics/bandwidth_daily"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.apps.get_metrics_bandwidth_daily(app_id="4f6c71e2")
security:
- bearer_auth:
- app:read
/v2/apps/metrics/bandwidth_daily:
post:
operationId: apps_list_metrics_bandwidth_daily
summary: Retrieve Multiple Apps' Daily Bandwidth Metrics
description: Retrieve daily bandwidth usage metrics for multiple apps.
tags:
- Apps
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/app_metrics_bandwidth_usage_request'
example:
app_ids:
- 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
- c2a93513-8d9b-4223-9d61-5e7272c81cf5
date: '2023-01-17T00:00:00Z'
required: true
responses:
'200':
$ref: '#/components/responses/list_metrics_bandwidth_usage'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/apps/metrics/bandwidth_daily" \
-d '{ "app_ids": ["4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf"] }'
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"app_ids": [
"4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf",
"c2a93513-8d9b-4223-9d61-5e7272c81cf5",
],
"date": "2023-01-17T00:00:00Z",
}
get_resp = client.apps.list_metrics_bandwidth_daily(body=req)
security:
- bearer_auth:
- app:read
/v2/cdn/endpoints:
get:
operationId: cdn_list_endpoints
summary: List All CDN Endpoints
description: >-
To list all of the CDN endpoints available on your account, send a GET
request to `/v2/cdn/endpoints`.
tags:
- CDN Endpoints
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_cdn_endpoints'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/cdn/endpoints"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
cdns, _, err := client.CDNs.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
cdns = client.cdns.all
cdns.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.cdn.list_endpoints()
security:
- bearer_auth:
- cdn:read
post:
operationId: cdn_create_endpoint
summary: Create a New CDN Endpoint
description: >
To create a new CDN endpoint, send a POST request to
`/v2/cdn/endpoints`. The
origin attribute must be set to the fully qualified domain name (FQDN)
of a
DigitalOcean Space. Optionally, the TTL may be configured by setting the
`ttl`
attribute.
A custom subdomain may be configured by specifying the `custom_domain`
and
`certificate_id` attributes.
tags:
- CDN Endpoints
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/cdn_endpoint'
examples:
CDN Endpoint:
value:
origin: static-images.nyc3.digitaloceanspaces.com
ttl: 3600
CDN Endpoint With Custom Domain:
value:
origin: static-images.nyc3.digitaloceanspaces.com
certificate_id: 892071a0-bb95-49bc-8021-3afd67a210bf
custom_domain: static.example.com
ttl: 3600
responses:
'201':
$ref: '#/components/responses/existing_endpoint'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"origin": "static-images.nyc3.digitaloceanspaces.com","certificate_id": "892071a0-bb95-49bc-8021-3afd67a210bf","custom_domain": "static.example.com","ttl": 3600}' \
"https://api.digitalocean.com/v2/cdn/endpoints"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &godo.CDNCreateRequest{
Origin: "static-images.nyc3.digitaloceanspaces.com",
TTL: 3600,
CustomDomain: "static.example.com",
CertificateID: "892071a0-bb95-49bc-8021-3afd67a210b",
}
cdn, _, err := client.CDNs.Create(ctx, createRequest)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
cdn = DropletKit::CDN.new(
origin: 'static-images.nyc3.digitaloceanspaces.com',
custom_domain: 'static.example.com',
certificate_id: '892071a0-bb95-49bc-8021-3afd67a210bf',
ttl: 3600
)
client.cdns.create(cdn)
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
create_req = {"origin": "static-images.nyc3.digitaloceanspaces.com",
"ttl": 3600}
create_resp = client.cdn.create_endpoint(create_req)
security:
- bearer_auth:
- cdn:create
/v2/cdn/endpoints/{cdn_id}:
get:
operationId: cdn_get_endpoint
summary: Retrieve an Existing CDN Endpoint
description: >-
To show information about an existing CDN endpoint, send a GET request
to `/v2/cdn/endpoints/$ENDPOINT_ID`.
tags:
- CDN Endpoints
parameters:
- $ref: '#/components/parameters/cdn_endpoint_id'
responses:
'200':
$ref: '#/components/responses/existing_endpoint'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/cdn/endpoints/19f06b6a-3ace-4315-b086-499a0e521b76"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
cdn, _, err := client.CDNs.Get(ctx, "19f06b6a-3ace-4315-b086-499a0e521b76")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.cdns.find(id: '19f06b6a-3ace-4315-b086-499a0e521b76')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.cdn.get_endpoint(cdn_id="aa34ba1")
security:
- bearer_auth:
- cdn:read
put:
operationId: cdn_update_endpoints
summary: Update a CDN Endpoint
description: >
To update the TTL, certificate ID, or the FQDN of the custom subdomain
for
an existing CDN endpoint, send a PUT request to
`/v2/cdn/endpoints/$ENDPOINT_ID`.
tags:
- CDN Endpoints
parameters:
- $ref: '#/components/parameters/cdn_endpoint_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/update_endpoint'
responses:
'200':
$ref: '#/components/responses/existing_endpoint'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: >-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"ttl": 1800}' \
"https://api.digitalocean.com/v2/cdn/endpoints/19f06b6a-3ace-4315-b086-499a0e521b76"
- lang: Go
source: |-
import (
"context"
"github.com/digitalocean/godo"
)
func main() {
pat := "mytoken"
client := godo.NewFromToken(pat)
ctx := context.TODO()
updateRequest := &godo.CDNUpdateTTLRequest{TTL: 1800}
cdn, _, err := client.CDNs.UpdateTTL(ctx, "19f06b6a-3ace-4315-b086-499a0e521b76", updateRequest)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token =
'16f79fc8cd5adcfe528a0994311fa63cc877737b385b6ff7d12ed6684ba4fef5'
client = DropletKit::Client.new(access_token: token)
client.cdns.update_ttl(id: '19f06b6a-3ace-4315-b086-499a0e521b76',
ttl: 1800)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
update_req = {
"ttl": 3600,
"certificate_id": "892071a0-bb95-49bc-8021-3afd67a210bf",
"custom_domain": "static.example.com",
}
update_resp = client.cdn.update_endpoints("19f06b6a", update_req)
security:
- bearer_auth:
- cdn:update
delete:
operationId: cdn_delete_endpoint
summary: Delete a CDN Endpoint
description: >
To delete a specific CDN endpoint, send a DELETE request to
`/v2/cdn/endpoints/$ENDPOINT_ID`.
A status of 204 will be given. This indicates that the request was
processed
successfully, but that no response body is needed.
tags:
- CDN Endpoints
parameters:
- $ref: '#/components/parameters/cdn_endpoint_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/cdn/endpoints/19f06b6a-3ace-4315-b086-499a0e521b76"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.CDNs.Delete(ctx, "19f06b6a-3ace-4315-b086-499a0e521b76")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.cdns.delete(id: '19f06b6a-3ace-4315-b086-499a0e521b76')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
delete_resp = client.cdn.delete_endpoint(cdn_id="bba23af")
security:
- bearer_auth:
- cdn:delete
/v2/cdn/endpoints/{cdn_id}/cache:
delete:
operationId: cdn_purge_cache
summary: Purge the Cache for an Existing CDN Endpoint
description: >
To purge cached content from a CDN endpoint, send a DELETE request to
`/v2/cdn/endpoints/$ENDPOINT_ID/cache`. The body of the request should
include
a `files` attribute containing a list of cached file paths to be purged.
A
path may be for a single file or may contain a wildcard (`*`) to
recursively
purge all files under a directory. When only a wildcard is provided, all
cached
files will be purged. There is a rate limit of 50 files per 20 seconds
that can
be purged. CDN endpoints have a rate limit of 5 requests per 10
seconds.
Purging files using a wildcard path counts as a single request against
the API's
rate limit. Two identical purge requests cannot be sent at the same
time.
tags:
- CDN Endpoints
parameters:
- $ref: '#/components/parameters/cdn_endpoint_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/purge_cache'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"files": ["assets/img/hero.png","assets/css/*"]}' \
"https://api.digitalocean.com/v2/cdn/endpoints/19f06b6a-3ace-4315-b086-499a0e521b76/cache"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
flushRequest := &godo.CDNFlushCacheRequest{
Files: []string{"assets/img/hero.png","assets/css/*"},
}
_, err := client.CDNs.FlushCache(ctx, "19f06b6a-3ace-4315-b086-499a0e521b76", flushRequest)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.cdns.flush_cache(
id: '19f06b6a-3ace-4315-b086-499a0e521b76',
files: ['assets/img/hero.png','assets/css/*']
)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
purge_req = {"files": ["path/to/image.png", "path/to/css/*"]}
purge_resp = client.cdn.purge_cache("19f06b6a", purge_req)
security:
- bearer_auth:
- cdn:delete
/v2/certificates:
get:
operationId: certificates_list
summary: List All Certificates
description: >-
To list all of the certificates available on your account, send a GET
request to `/v2/certificates`.
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/certificate_name'
tags:
- Certificates
responses:
'200':
$ref: '#/components/responses/all_certificates'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/certificates"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
certs, _, err := client.Certificates.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
certificates = client.certificates.all
certificates.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.certificates.list()
security:
- bearer_auth:
- certificate:read
post:
operationId: certificates_create
summary: Create a New Certificate
description: >
To upload new SSL certificate which you have previously generated, send
a POST
request to `/v2/certificates`.
When uploading a user-generated certificate, the `private_key`,
`leaf_certificate`, and optionally the `certificate_chain` attributes
should
be provided. The type must be set to `custom`.
When using Let's Encrypt to create a certificate, the `dns_names`
attribute
must be provided, and the type must be set to `lets_encrypt`.
tags:
- Certificates
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/certificate_request_lets_encrypt'
- $ref: '#/components/schemas/certificate_request_custom'
responses:
'201':
$ref: '#/components/responses/new_certificate'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "web-cert-01", "type": "custom", "private_key": "'"$(-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
key = File.open('/path/to/privkey1.pem', 'r'){ |file| file.read }
cert = File.open('/path/to/cert1.pem', 'r'){ |file| file.read }
chain = File.open('/path/to/fullchain1.pem', 'r'){ |file| file.read
}
certificate = DropletKit::Certificate.new(
name: 'web-cert-01',
private_key: key,
leaf_certificate: cert,
certificate_chain: chain,
type: 'custom'
)
client.certificates.create(certificate)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
create_resp = client.certificates.create(
{
"name": "web-cert-01",
"type": "lets_encrypt",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBIZMz8pnK6V52\nSVf+CYssOfCQHAx5f0Ou5rYbq3xNh8VHAIYJCQ1QxQIxKSP6+uODSYrb2KWyurP1\nDwGb8OYm0J3syEDtCUQik1cpCzpeNlAZ2f8FzXyYQAqPopxdRpsFz8DtZnVvu86X\nwrE4oFPl9MReICmZfBNWylpV5qgFPoXyJ70ZAsTm3cEe3n+LBXEnY4YrVDRWxA3w\nZ2mzZ03HZ1hHrxK9CMnS829U+8sK+UneZpCO7yLRPuxwhmps0wpK/YuZZfRAKF1F\nZRnak/SIQ28rnWufmdg16YqqHgl5JOgnb3aslKRvL4dI2Gwnkd2IHtpZnTR0gxFX\nfqqbQwuRAgMBAAECggEBAILLmkW0JzOkmLTDNzR0giyRkLoIROqDpfLtjKdwm95l\n9NUBJcU4vCvXQITKt/NhtnNTexcowg8pInb0ksJpg3UGE+4oMNBXVi2UW5MQZ5cm\ncVkQqgXkBF2YAY8FMaB6EML+0En2+dGR/3gIAr221xsFiXe1kHbB8Nb2c/d5HpFt\neRpLVJnK+TxSr78PcZA8DDGlSgwvgimdAaFUNO2OqB9/0E9UPyKk2ycdff/Z6ldF\n0hkCLtdYTTl8Kf/OwjcuTgmA2O3Y8/CoQX/L+oP9Rvt9pWCEfuebiOmHJVPO6Y6x\ngtQVEXwmF1pDHH4Qtz/e6UZTdYeMl9G4aNO2CawwcaYECgYEA57imgSOG4XsJLRh\nGGncV9R/xhy4AbDWLtAMzQRX4ktvKCaHWyQV2XK2we/cu29NLv2Y89WmerTNPOU+\nP8+pB31uty2ELySVn15QhKpQClVEAlxCnnNjXYrii5LOM80+lVmxvQwxVd8Yz8nj\nIntyioXNBEnYS7V2RxxFGgFun1cCgYEA1V3W+Uyamhq8JS5EY0FhyGcXdHd70K49\nW1ou7McIpncf9tM9acLS1hkI98rd2T69Zo8mKoV1V2hjFaKUYfNys6tTkYWeZCcJ\n3rW44j9DTD+FmmjcX6b8DzfybGLehfNbCw6n67/r45DXIV/fk6XZfkx6IEGO4ODt\nNfnvx4TuI1cCgYBACDiKqwSUvmkUuweOo4IuCxyb5Ee8v98P5JIE/VRDxlCbKbpx\npxEam6aBBQVcDi+n8o0H3WjjlKc6UqbW/01YMoMrvzotxNBLz8Y0QtQHZvR6KoCG\nRKCKstxTcWflzKuknbqN4RapAhNbKBDJ8PMSWfyDWNyaXzSmBdvaidbF1QKBgDI0\no4oD0Xkjg1QIYAUu9FBQmb9JAjRnW36saNBEQS/SZg4RRKknM683MtoDvVIKJk0E\nsAlfX+4SXQZRPDMUMtA+Jyrd0xhj6zmhbwClvDMr20crF3fWdgcqtft1BEFmsuyW\nJUMe5OWmRkjPI2+9ncDPRAllA7a8lnSV/Crph5N/AoGBAIK249temKrGe9pmsmAo\nQbNuYSmwpnMoAqdHTrl70HEmK7ob6SIVmsR8QFAkH7xkYZc4Bxbx4h1bdpozGB+/\nAangbiaYJcAOD1QyfiFbflvI1RFeHgrk7VIafeSeQv6qu0LLMi2zUbpgVzxt78Wg\neTuK2xNR0PIM8OI7pRpgyj1I\n-----END PRIVATE KEY-----",
"leaf_certificate": "-----BEGIN CERTIFICATE-----\nMIIFFjCCA/6gAwIBAgISA0AznUJmXhu08/89ZuSPC/kRMA0GCSqGSIb3DQEBCwUA\nMEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD\nExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNjExMjQwMDIzMDBaFw0x\nNzAyMjIwMDIzMDBaMCQxIjAgBgNVBAMTGWNsb3VkLmFuZHJld3NvbWV0aGluZy5j\nb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBIZMz8pnK6V52SVf+\nCYssOfCQHAx5f0Ou5rYbq3xNh8VWHIYJCQ1QxQIxKSP6+uODSYrb2KWyurP1DwGb\n8OYm0J3syEDtCUQik1cpCzpeNlAZ2f8FzXyYQAqPopxdRpsFz8DtZnVvu86XwrE4\noFPl9MReICmZfBNWylpV5qgFPoXyJ70ZAsTm3cEe3n+LBXEnY4YrVDRWxA3wZ2mz\nZ03HZ1hHrxK9CMnS829U+8sK+UneZpCO7yLRPuxwhmps0wpK/YuZZfRAKF1FZRna\nk/SIQ28rnWufmdg16YqqHgl5JOgnb3aslKRvL4dI2Gwnkd2IHtpZnTR0gxFXfqqb\nQwuRAgMBAAGjggIaMIICFjAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB\nBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLsAFcxAhFX1\nMbCnzr9hEO5rL4jqMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMHAG\nCCsGAQUFBwEBBGQwYjAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuaW50LXgzLmxl\ndHNlbmNyeXB0Lm9yZy8wLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5s\nZXRzZW5jcnlwdC5vcmcvMCQGA1UdEQQdMBuCGWNsb3VkLmFuZHJld3NvbWV0aGlu\nZy5jb20wgf4GA1UdIASB9jCB8zAIBgZngQwBAgWrgeYGCysGAQQBgt8TAQEBMIHW\nMCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCBqwYIKwYB\nBQUHAgIwgZ4MgZtUaGlzIENlcnRpZmljYXRlIG1heSBvbmx5IGJlIHJlbGllZCB1\ncG9uIGJ5IFJlbHlpbmcgUGFydGllcyBhbmQgb25seSQ2ziBhY2NvcmRhbmNlIHdp\ndGggdGhlIENlcnRpZmljYXRlIFBvbGljeSBmb3VuZCBhdCBodHRwczovL2xldHNl\nbmNyeXB0Lm9yZy9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAOZVQvrjM\nPKXLARTjB5XsgfyDN3/qwLl7SmwGkPe+B+9FJpfScYG1JzVuCj/SoaPaK34G4x/e\niXwlwOXtMOtqjQYzNu2Pr2C+I+rVmaxIrCUXFmC205IMuUBEeWXG9Y/HvXQLPabD\nD3Gdl5+Feink9SDRP7G0HaAwq13hI7ARxkL9p+UIY39X0dV3WOboW2Re8nrkFXJ7\nq9Z6shK5QgpBfsLjtjNsQzaGV3ve1gOg25aTJGearBWOvEjJNA1wGMoKVXOtYwm/\nWyWoVdCQ8HmconcbJB6xc0UZ1EjvzRr5ZIvSa5uHZD0L3m7/kpPWlAlFJ7hHASPu\nUlF1zblDmg2Iaw==\n-----END CERTIFICATE-----",
"certificate_chain": "-----BEGIN CERTIFICATE-----\nMIIFFjCCA/6gAwIBAgISA0AznUJmXhu08/89ZuSPC/kRMA0GCSqGSIb3DQEBCwUA\nMEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD\nExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNjExMjQwMDIzMDBaFw0x\nNzAyMjIwMDIzMDBaMCQxIjAgBgNVBAMTGWNsb3VkLmFuZHJld3NvbWV0aGluZy5j\nb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBIZMz7tnK6V52SVf+\nCYssOfCQHAx5f0Ou5rYbq3xNh8VHAIYJCQ1QxQIxKSP6+uODSYrb2KWyurP1DwGb\n8OYm0J3syEDtCUQik1cpCzpeNlAZ2f8FzXyYQAqPopxdRpsFz8DtZnVvu86XwrE4\noFPl9MReICmZfBNWylpV5qgFPoXyJ70ZAsTm3cEe3n+LBXEnY4YrVDRWxA3wZ2mz\nZ03HZ1hHrxK9CMnS829U+8sK+UneZpCO7yLRPuxwhmps0wpK/YuZZfRAKF1FZRna\nk/SIQ28rnWufmdg16YqqHgl5JOgnb3aslKRvL4dI2Gwnkd2IHtpZnTR0gxFXfqqb\nQwuRAgMBAAGjggIaMIICFjAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB\nBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLsAFcxAhFX1\nMbCnzr9hEO5rL4jqMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMHAG\nCCsGAQUFBwEBBGQwYjAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuaW50LXgzLmxl\ndHNlbmNyeXB0Lm9yZy8wLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5s\nZXRzZW5jcnlwdC5vcmcvMCQGA1UdEQQdMBuCGWNsb3VkLmFuZHJld3NvbWV0aGlu\nZy5jb20wgf4GA1UdIASB9jCB8zAIBgZngQwBAgEwgeWECysGAQQBgt8TAQEBMIHW\nMCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCBqwYIKwYB\nBQUHAgIwgZ4MgZtUaGlzIENlcnRpZmljYXRlIG1heSBvbmx5IGJlIHJlbGllZCB1\ncG9uIGJ5IFJlbHlpbmcgUGFydGllcyBhbmQgb25seSQ2ziBhY2NvcmRhbmNlIHdp\ndGggdGhlIENlcnRpZmljYXRlIFBvbGljeSBmb3VuZCBhdCBsdHRwczovL2xldHNl\nbmNyeXB0Lm9yZy9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAOZVQvrjM\nPKXLARTjB5XsgfyDN3/qwLl7SmwGkPe+B+9FJpfScYG1JzVuCj/SoaPaK34G4x/e\niXwlwOXtMOtqjQYzNu2Pr2C+I+rVmaxIrCUXFmC205IMuUBEeWXG9Y/HvXQLPabD\nD3Gdl5+Feink9SDRP7G0HaAwq13hI7ARxkL3o+UIY39X0dV3WOboW2Re8nrkFXJ7\nq9Z6shK5QgpBfsLjtjNsQzaGV3ve1gOg25aTJGearBWOvEjJNA1wGMoKVXOtYwm/\nWyWoVdCQ8HmconcbJB6xc0UZ1EjvzRr5ZIvSa5uHZD0L3m7/kpPWlAlFJ7hHASPu\nUlF1zblDmg2Iaw==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/\nMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\nDkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow\nSjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT\nGkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEAnNMM8FrlLsd3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF\nq6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8\nSMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0\nZ8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA\na6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj\n/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIPOIUo4IBfTCCAXkwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG\nCCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv\nbTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k\nc3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw\nVAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC\nARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz\nMDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu\nY3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF\nAAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo\nuM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/\nwApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu\nX4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG\nPfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6\nKOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==\n-----END CERTIFICATE-----",
}
)
security:
- bearer_auth:
- certificate:create
/v2/certificates/{certificate_id}:
get:
operationId: certificates_get
summary: Retrieve an Existing Certificate
description: >-
To show information about an existing certificate, send a GET request to
`/v2/certificates/$CERTIFICATE_ID`.
tags:
- Certificates
parameters:
- $ref: '#/components/parameters/certificate_id'
responses:
'200':
$ref: '#/components/responses/existing_certificate'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/certificates/892071a0-bb95-49bc-8021-3afd67a210bf"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
cert, _, err := client.Certificates.Get(ctx, "892071a0-bb95-49bc-8021-3afd67a210bf")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.certificates.find(id: '892071a0-bb95-49bc-8021-3afd67a210bf')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.certificates.get(
certificate_id="892071a0-bb95-49bc-8021-3afd67a210bf"
)
security:
- bearer_auth:
- certificate:read
delete:
operationId: certificates_delete
summary: Delete a Certificate
description: |
To delete a specific certificate, send a DELETE request to
`/v2/certificates/$CERTIFICATE_ID`.
tags:
- Certificates
parameters:
- $ref: '#/components/parameters/certificate_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/certificates/892071a0-bb95-49bc-8021-3afd67a210bf"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Certificates.Delete(ctx, "892071a0-bb95-49bc-8021-3afd67a210bf")
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.certificates.delete(id:
'892071a0-bb95-49bc-8021-3afd67a210bf')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
del_resp = client.certificates.delete(
certificate_id="892071a0-bb95-49bc-8021-3afd67a210bf"
)
security:
- bearer_auth:
- certificate:delete
/v2/customers/my/balance:
get:
operationId: balance_get
summary: Get Customer Balance
description: >-
To retrieve the balances on a customer's account, send a GET request to
`/v2/customers/my/balance`.
tags:
- Billing
responses:
'200':
$ref: '#/components/responses/balance'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/customers/my/balance"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
balance = client.balance.get()
security:
- bearer_auth:
- billing:read
/v2/customers/my/billing_history:
get:
operationId: billingHistory_list
summary: List Billing History
description: >-
To retrieve a list of all billing history entries, send a GET request to
`/v2/customers/my/billing_history`.
tags:
- Billing
responses:
'200':
$ref: '#/components/responses/billing_history'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/customers/my/billing_history"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
balance = client.billing_history.list()
security:
- bearer_auth:
- billing:read
/v2/customers/my/invoices:
get:
operationId: invoices_list
summary: List All Invoices
description: >-
To retrieve a list of all invoices, send a GET request to
`/v2/customers/my/invoices`.
tags:
- Billing
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/invoices'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/customers/my/invoices"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
balance = client.invoices.list()
security:
- bearer_auth:
- billing:read
/v2/customers/my/invoices/{invoice_uuid}:
get:
operationId: invoices_get_byUUID
summary: Retrieve an Invoice by UUID
description: >-
To retrieve the invoice items for an invoice, send a GET request to
`/v2/customers/my/invoices/$INVOICE_UUID`.
tags:
- Billing
parameters:
- $ref: '#/components/parameters/invoice_uuid'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/invoice'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/customers/my/invoices/22737513-0ea7-4206-8ceb-98a575af7681"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
invoices = client.invoices.get_by_uuid(invoice_uuid=1)
security:
- bearer_auth:
- billing:read
/v2/customers/my/invoices/{invoice_uuid}/csv:
get:
operationId: invoices_get_csvByUUID
summary: Retrieve an Invoice CSV by UUID
description: >-
To retrieve a CSV for an invoice, send a GET request to
`/v2/customers/my/invoices/$INVOICE_UUID/csv`.
tags:
- Billing
parameters:
- $ref: '#/components/parameters/invoice_uuid'
responses:
'200':
$ref: '#/components/responses/invoice_csv'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: text/csv" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/customers/my/invoices/22737513-0ea7-4206-8ceb-98a575af7681/csv" --output invoice.csv
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
invoices = client.invoices.get_csv_by_uuid(invoice_uuid=1)
security:
- bearer_auth:
- billing:read
/v2/customers/my/invoices/{invoice_uuid}/pdf:
get:
operationId: invoices_get_pdfByUUID
summary: Retrieve an Invoice PDF by UUID
description: >-
To retrieve a PDF for an invoice, send a GET request to
`/v2/customers/my/invoices/$INVOICE_UUID/pdf`.
tags:
- Billing
parameters:
- $ref: '#/components/parameters/invoice_uuid'
responses:
'200':
$ref: '#/components/responses/invoice_pdf'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/pdf" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/customers/my/invoices/22737513-0ea7-4206-8ceb-98a575af7681/pdf" --output invoice.pdf
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
invoices = client.invoices.get_pdf_by_uuid(invoice_uuid=1)
security:
- bearer_auth:
- billing:read
/v2/customers/my/invoices/{invoice_uuid}/summary:
get:
operationId: invoices_get_summaryByUUID
summary: Retrieve an Invoice Summary by UUID
description: >-
To retrieve a summary for an invoice, send a GET request to
`/v2/customers/my/invoices/$INVOICE_UUID/summary`.
tags:
- Billing
parameters:
- $ref: '#/components/parameters/invoice_uuid'
responses:
'200':
$ref: '#/components/responses/invoice_summary'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/customers/my/invoices/22737513-0ea7-4206-8ceb-98a575af7681/summary"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
invoice = client.invoices.get_summary_by_uuid(invoice_uuid="1")
security:
- bearer_auth:
- billing:read
/v2/databases/options:
get:
operationId: databases_list_options
summary: List Database Options
description: >-
To list all of the options available for the offered database engines,
send a GET request to `/v2/databases/options`.
The result will be a JSON object with an `options` key.
tags:
- Databases
responses:
'200':
$ref: '#/components/responses/options'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/options"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
options, _, err := client.Databases.ListOptions(ctx)
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.databases.list_options()
security:
- bearer_auth:
- database:read
/v2/databases:
get:
operationId: databases_list_clusters
summary: List All Database Clusters
description: >-
To list all of the database clusters available on your account, send a
GET request to `/v2/databases`. To limit the results to database
clusters with a specific tag, include the `tag_name` query parameter set
to the name of the tag. For example, `/v2/databases?tag_name=$TAG_NAME`.
The result will be a JSON object with a `databases` key. This will be
set to an array of database objects, each of which will contain the
standard database attributes.
The embedded `connection` and `private_connection` objects will contain
the information needed to access the database cluster. For multi-node
clusters, the `standby_connection` and `standby_private_connection`
objects will contain the information needed to connect to the cluster's
standby node(s).
The embedded `maintenance_window` object will contain information about
any scheduled maintenance for the database cluster.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/tag_name'
responses:
'200':
$ref: '#/components/responses/database_clusters'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
clusters, _, err := client.Databases.List(ctx, opt)
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.databases.list_clusters(tag_name="production")
security:
- bearer_auth:
- database:read
post:
operationId: databases_create_cluster
summary: Create a New Database Cluster
description: >-
To create a database cluster, send a POST request to `/v2/databases`.
The response will be a JSON object with a key called `database`. The
value of this will be an object that contains the standard attributes
associated with a database cluster. The initial value of the database
cluster's `status` attribute will be `creating`. When the cluster is
ready to receive traffic, this will transition to `online`.
The embedded `connection` and `private_connection` objects will contain
the information needed to access the database cluster. For multi-node
clusters, the `standby_connection` and `standby_private_connection`
objects will contain the information needed to connect to the cluster's
standby node(s).
DigitalOcean managed PostgreSQL and MySQL database clusters take
automated daily backups. To create a new database cluster based on a
backup of an existing cluster, send a POST request to `/v2/databases`.
In addition to the standard database cluster attributes, the JSON body
must include a key named `backup_restore` with the name of the original
database cluster and the timestamp of the backup to be restored.
Creating a database from a backup is the same as forking a database in
the control panel.
Note: Backups are not supported for Redis clusters.
tags:
- Databases
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/database_cluster'
- type: object
properties:
backup_restore:
$ref: '#/components/schemas/database_backup'
examples:
Create a New Database Cluster:
value:
name: backend
engine: pg
version: '14'
region: nyc3
size: db-s-2vcpu-4gb
storage_size_mib: 61440
num_nodes: 2
tags:
- production
Create a New Database Cluster with trusted sources:
value:
name: backend
engine: pg
version: '14'
region: nyc3
size: db-s-2vcpu-4gb
num_nodes: 2
storage_size_mib: 61440
tags:
- production
rules:
- type: ip_addr
value: 192.168.1.1
- type: k8s
value: ff2a6c52-5a44-4b63-b99c-0e98e7a63d61
- type: droplet
value: '163973392'
- type: tag
value: test
Restore from a Database Cluster Backup:
value:
name: backend-restored
backup_restore:
database_name: backend
backup_created_at: '2019-01-31T19:25:22Z'
engine: pg
version: '14'
region: nyc3
size: db-s-2vcpu-4gb
num_nodes: 2
responses:
'201':
$ref: '#/components/responses/database_cluster'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "backend", "engine": "pg", "version": "14", "region": "nyc3", "size": "db-s-2vcpu-4gb", "num_nodes": 2, "storage_size_mib": 61440, "tags": ["production"]}' \
"https://api.digitalocean.com/v2/databases"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &godo.DatabaseCreateRequest{
Name: "backend",
EngineSlug: "pg",
Version: "14",
Region: "nyc3",
SizeSlug: "db-s-2vcpu-4gb",
NumNodes: 2,
StorageSizeMiB : 61440,
}
cluster, _, err := client.Databases.Create(ctx, createRequest)
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
create_req = {
"name": "backend",
"engine": "pg",
"version": "14",
"region": "nyc3",
"size": "db-s-2vcpu-4gb",
"num_nodes": 2,
"storage_size_mib": 61440,
"tags": [
"production"
]
}
create_resp = client.databases.create_cluster(body=create_req)
security:
- bearer_auth:
- database:create
/v2/databases/{database_cluster_uuid}:
get:
operationId: databases_get_cluster
summary: Retrieve an Existing Database Cluster
description: >-
To show information about an existing database cluster, send a GET
request to `/v2/databases/$DATABASE_ID`.
The response will be a JSON object with a database key. This will be set
to an object containing the standard database cluster attributes.
The embedded `connection` and `private_connection` objects will contain
the information needed to access the database cluster. For multi-node
clusters, the `standby_connection` and `standby_private_connection`
objects contain the information needed to connect to the cluster's
standby node(s).
The embedded maintenance_window object will contain information about
any scheduled maintenance for the database cluster.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/database_cluster'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
cluster, _, err := client.Databases.Get(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.databases.get_cluster(database_cluster_uuid="a7a89a")
security:
- bearer_auth:
- database:read
delete:
operationId: databases_destroy_cluster
summary: Destroy a Database Cluster
description: >-
To destroy a specific database, send a DELETE request to
`/v2/databases/$DATABASE_ID`.
A status of 204 will be given. This indicates that the request was
processed successfully, but that no response body is needed.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: >-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30"
- lang: Go
source: |-
import (
"context"
"github.com/digitalocean/godo"
)
func main() {
pat := "mytoken"
client := godo.NewFromToken(pat)
ctx := context.TODO()
_, err := client.Databases.Delete(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
delete_resp =
client.databases.destroy_cluster(database_cluster_uuid="a7abba8")
security:
- bearer_auth:
- database:delete
/v2/databases/{database_cluster_uuid}/config:
get:
operationId: databases_get_config
summary: Retrieve an Existing Database Cluster Configuration
description: >
Shows configuration parameters for an existing database cluster by
sending a GET request to
`/v2/databases/$DATABASE_ID/config`.
The response is a JSON object with a `config` key, which is set to an
object
containing any database configuration parameters.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/database_config'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/config"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.databases.get_config(database_cluster_uuid="a7a90ab")
security:
- bearer_auth:
- database:read
patch:
operationId: databases_patch_config
summary: Update the Database Configuration for an Existing Database
description: >
To update the configuration for an existing database cluster, send a
PATCH request to
`/v2/databases/$DATABASE_ID/config`.
tags:
- Databases
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/database_config'
example:
config:
sql_mode: >-
ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,STRICT_ALL_TABLES
sql_require_primary_key: true
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"config": {"sql_mode": "ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,STRICT_ALL_TABLES","sql_require_primary_key": true}}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/config"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.databases.patch_config(database_cluster_uuid="a7aba9d")
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/ca:
get:
operationId: databases_get_ca
summary: Retrieve the Public Certificate
description: >
To retrieve the public certificate used to secure the connection to the
database cluster send a GET request to
`/v2/databases/$DATABASE_ID/ca`.
The response will be a JSON object with a `ca` key. This will be set to
an object
containing the base64 encoding of the public key certificate.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/ca'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/ca"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
ca, _, err := client.Databases.GetCA(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30")
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.databases.get_ca(database_cluster_uuid="aba77ada")
security:
- bearer_auth:
- database:read
/v2/databases/{database_cluster_uuid}/online-migration:
get:
operationId: databases_get_migrationStatus
summary: Retrieve the Status of an Online Migration
description: >-
To retrieve the status of the most recent online migration, send a GET
request to `/v2/databases/$DATABASE_ID/online-migration`.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/online_migration'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: >-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/online-migration"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.databases.get_migration_status(database_cluster_uuid="a7a7ab90")
security:
- bearer_auth:
- database:read
put:
operationId: databases_update_onlineMigration
summary: Start an Online Migration
description: >-
To start an online migration, send a PUT request to
`/v2/databases/$DATABASE_ID/online-migration` endpoint. Migrating a
cluster establishes a connection with an existing cluster and replicates
its contents to the target cluster. Online migration is only available
for MySQL, PostgreSQL, and Redis clusters.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/source_database'
example:
source:
host: source-do-user-6607903-0.b.db.ondigitalocean.com
dbname: defaultdb
port: 25060
username: doadmin
password: paakjnfe10rsrsmf
disable_ssl: false
ignore_dbs:
- db0
- db1
responses:
'200':
$ref: '#/components/responses/online_migration'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: >-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d
'{"source":{"host":"source-do-user-6607903-0.b.db.ondigitalocean.com","dbname":"defaultdb","port":25060,"username":"doadmin","password":"paakjnfe10rsrsmf"},"disable_ssl":false,"ignore_dbs":["db0","db1"]}'
\
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/online-migration"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"source": {
"host": "source-do-user-6607903-0.b.db.ondigitalocean.com",
"dbname": "defaultdb",
"port": 25060,
"username": "doadmin",
"password": "paakjnfe10rsrsmf"
},
"disable_ssl": False
"ignore_dbs": ["db0","db1"]
}
update_resp =
client.databases.update_online_migration(database_cluster_uuid="a7a8bas",
body=req)
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/online-migration/{migration_id}:
delete:
operationId: databases_delete_onlineMigration
summary: Stop an Online Migration
description: >
To stop an online migration, send a DELETE request to
`/v2/databases/$DATABASE_ID/online-migration/$MIGRATION_ID`.
A status of 204 will be given. This indicates that the request was
processed successfully, but that no response body is needed.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/migration_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: >-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/online-migration/77b28fc8-19ff-11eb-8c9c-c68e24557488"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
delete_resp =
client.databases.delete_online_migration(database_cluster_uuid="9cc10173",
migration="77b28fc8")
security:
- bearer_auth:
- database:delete
/v2/databases/{database_cluster_uuid}/migrate:
put:
operationId: databases_update_region
summary: Migrate a Database Cluster to a New Region
description: >
To migrate a database cluster to a new region, send a `PUT` request to
`/v2/databases/$DATABASE_ID/migrate`. The body of the request must
specify a
`region` attribute.
A successful request will receive a 202 Accepted status code with no
body in
response. Querying the database cluster will show that its `status`
attribute
will now be set to `migrating`. This will transition back to `online`
when the
migration has completed.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
region:
type: string
example: lon1
description: >-
A slug identifier for the region to which the database
cluster will be migrated.
required:
- region
example:
region: lon1
responses:
'202':
$ref: '#/components/responses/accepted'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"region":"lon1"}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/migrate"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
migrateRequest := &godo.DatabaseMigrateRequest{
Region: "lon1",
}
_, err := client.Databases.Migrate(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", migrateRequest)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"region": "lon1"
}
update_resp =
client.databases.update_region(database_cluster_uuid="a7a8bas",
body=req)
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/resize:
put:
operationId: databases_update_clusterSize
summary: Resize a Database Cluster
description: >-
To resize a database cluster, send a PUT request to
`/v2/databases/$DATABASE_ID/resize`. The body of the request must
specify both the size and num_nodes attributes.
A successful request will receive a 202 Accepted status code with no
body in response. Querying the database cluster will show that its
status attribute will now be set to resizing. This will transition back
to online when the resize operation has completed.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/database_cluster_resize'
example:
size: db-s-4vcpu-8gb
num_nodes: 3
storage_size_mib: 163840
responses:
'202':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: >-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"size":"db-s-4vcpu-8gb", "num_nodes":3,
"storage_size_mib":163840}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/resize"
- lang: Go
source: |-
import (
"context"
"github.com/digitalocean/godo"
)
func main() {
pat := "mytoken"
client := godo.NewFromToken(pat)
ctx := context.TODO()
resizeRequest := &godo.DatabaseResizeRequest{
SizeSlug: "db-s-4vcpu-8gb",
NumNodes: 3,
StorageSizeMib: 163840,
}
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"size": "db-s-4vcpu-8gb",
"num_nodes": 3,
"storage_size_mib": 163840
}
update_resp =
client.databases.update_cluster_size(database_cluster_uuid="a7a8bas",
body=req)
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/firewall:
get:
operationId: databases_list_firewall_rules
summary: List Firewall Rules (Trusted Sources) for a Database Cluster
description: >-
To list all of a database cluster's firewall rules (known as "trusted
sources" in the control panel), send a GET request to
`/v2/databases/$DATABASE_ID/firewall`.
The result will be a JSON object with a `rules` key.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/firewall_rules'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/firewall"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
rules, _, err := client.Databases.GetFirewallRules(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.databases.list_firewall_rules(database_cluster_uuid="a7aab9a")
security:
- bearer_auth:
- database:read
put:
operationId: databases_update_firewall_rules
summary: Update Firewall Rules (Trusted Sources) for a Database
description: >-
To update a database cluster's firewall rules (known as "trusted
sources" in the control panel), send a PUT request to
`/v2/databases/$DATABASE_ID/firewall` specifying which resources should
be able to open connections to the database. You may limit connections
to specific Droplets, Kubernetes clusters, or IP addresses. When a tag
is provided, any Droplet or Kubernetes node with that tag applied to it
will have access. The firewall is limited to 100 rules (or trusted
sources). When possible, we recommend [placing your databases into a VPC
network](https://docs.digitalocean.com/products/networking/vpc/) to
limit access to them instead of using a firewall.
A successful
tags:
- Databases
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
rules:
type: array
items:
$ref: '#/components/schemas/firewall_rule'
example:
rules:
- type: ip_addr
value: 192.168.1.1
- type: k8s
value: ff2a6c52-5a44-4b63-b99c-0e98e7a63d61
- type: droplet
value: '163973392'
- type: tag
value: backend
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"rules": [{"type": "ip_addr","value": "192.168.1.1"},{"type": "droplet","value": "163973392"},{"type": "k8s","value": "ff2a6c52-5a44-4b63-b99c-0e98e7a63d61"},{"type": "tag","value": "backend"}]}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/firewall"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
req := godo.DatabaseUpdateFirewallRulesRequest{
Rules: []*godo.DatabaseFirewallRule{
{
Type: "ip_addr",
Value: "192.168.1.1",
},
{
Type: "droplet",
Value: "163973392",
},
{
Type: "k8s",
Value: "ff2a6c52-5a44-4b63-b99c-0e98e7a63d61",
},
},
}
_, err := client.Databases.UpdateFirewallRules(ctx, dbID, &req)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"rules": [
{
"type": "ip_addr",
"value": "192.168.1.1"
},
{
"type": "k8s",
"value": "ff2a6c52-5a44-4b63-b99c-0e98e7a63d61"
},
{
"type": "droplet",
"value": "163973392"
},
{
"type": "tag",
"value": "backend"
}
]
}
update_resp =
client.databases.update_firewall_rules(database_cluster_uuid="a7a8bas",
body=req)
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/maintenance:
put:
operationId: databases_update_maintenanceWindow
summary: Configure a Database Cluster's Maintenance Window
description: >-
To configure the window when automatic maintenance should be performed
for a database cluster, send a PUT request to
`/v2/databases/$DATABASE_ID/maintenance`.
A successful request will receive a 204 No Content status code with no
body in response.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/database_maintenance_window'
example:
day: tuesday
hour: '14:00'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"day": "tuesday", "hour": "14:00"}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/maintenance"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
maintenanceRequest := &godo.DatabaseUpdateMaintenanceRequest{
Day: "thursday",
Hour: "16:00",
}
_, err := client.Databases.UpdateMaintenance(ctx, "88055188-9e54-4f21-ab11-8a918ed79ee2", maintenanceRequest)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"day": "tuesday",
"hour": "14:00"
}
update_resp =
client.databases.update_maintenance_window(database_cluster_uuid="a7a8bas",
body=req)
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/install_update:
put:
operationId: databases_install_update
summary: Start Database Maintenance
description: >-
To start the installation of updates for a database cluster, send a PUT
request to `/v2/databases/$DATABASE_ID/install_update`.
A successful request will receive a 204 No Content status code with no
body in response.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/install_update"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Databases.InstallUpdate(ctx, "88055188-9e54-4f21-ab11-8a918ed79ee2")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
update_resp =
client.databases.install_update(database_cluster_uuid="a7a8bas")
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/backups:
get:
operationId: databases_list_backups
summary: List Backups for a Database Cluster
description: >-
To list all of the available backups of a PostgreSQL or MySQL database
cluster, send a GET request to `/v2/databases/$DATABASE_ID/backups`.
**Note**: Backups are not supported for Redis clusters.
The result will be a JSON object with a `backups key`. This will be set
to an array of backup objects, each of which will contain the size of
the backup and the timestamp at which it was created.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/database_backups'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/backups"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
backups, _, err := client.Databases.ListBackups(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", nil)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.databases.list_backups(database_cluster_uuid="a9a8a77")
security:
- bearer_auth:
- database:read
/v2/databases/{database_cluster_uuid}/replicas:
get:
operationId: databases_list_replicas
summary: List All Read-only Replicas
description: >-
To list all of the read-only replicas associated with a database
cluster, send a GET request to `/v2/databases/$DATABASE_ID/replicas`.
**Note**: Read-only replicas are not supported for Redis clusters.
The result will be a JSON object with a `replicas` key. This will be set
to an array of database replica objects, each of which will contain the
standard database replica attributes.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/database_replicas'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/replicas"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
replicas, _, err := client.Databases.ListReplicas(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", nil)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.databases.list_replicas(database_cluster_uuid="a7aba3")
security:
- bearer_auth:
- database:read
post:
operationId: databases_create_replica
summary: Create a Read-only Replica
description: >-
To create a read-only replica for a PostgreSQL or MySQL database
cluster, send a POST request to `/v2/databases/$DATABASE_ID/replicas`
specifying the name it should be given, the size of the node to be used,
and the region where it will be located.
**Note**: Read-only replicas are not supported for Redis clusters.
The response will be a JSON object with a key called `replica`. The
value of this will be an object that contains the standard attributes
associated with a database replica. The initial value of the read-only
replica's `status` attribute will be `forking`. When the replica is
ready to receive traffic, this will transition to `active`.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/database_replica'
required:
- name
- size
example:
name: read-nyc3-01
region: nyc3
size: db-s-2vcpu-4gb
storage_size_mib: 61440
responses:
'201':
$ref: '#/components/responses/database_replica'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"read-nyc3-01", "region":"nyc3", "size": "db-s-2vcpu-4gb", "storage_size_mib": 61440}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/replicas"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
replicaRequest := &godo.DatabaseCreateReplicaRequest{
Name: "read-nyc3-01",
Region: "nyc3",
Size: "db-s-2vcpu-4gb",
StorageSizeMiB : 61440,
}
replica, _, err := client.Databases.CreateReplica(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", replicaRequest)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
create_req = {
"name": "read-nyc3-01",
"region": "nyc3",
"size": "db-s-2vcpu-4gb",
"storage_size_mib": 61440,
}
create_resp =
client.databases.create_replica(database_cluster_uuid="9cc10173",
body=create_req)
security:
- bearer_auth:
- database:create
/v2/databases/{database_cluster_uuid}/events:
get:
operationId: databases_list_events_logs
summary: List all Events Logs
description: |
To list all of the cluster events, send a GET request to
`/v2/databases/$DATABASE_ID/events`.
The result will be a JSON object with a `events` key.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/events_logs'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/events"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
replicas, _, err := client.Databases.ListProjectEvents(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", nil)
}
security:
- bearer_auth:
- database:read
/v2/databases/{database_cluster_uuid}/replicas/{replica_name}:
get:
operationId: databases_get_replica
summary: Retrieve an Existing Read-only Replica
description: >-
To show information about an existing database replica, send a GET
request to `/v2/databases/$DATABASE_ID/replicas/$REPLICA_NAME`.
**Note**: Read-only replicas are not supported for Redis clusters.
The response will be a JSON object with a `replica key`. This will be
set to an object containing the standard database replica attributes.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/replica_name'
responses:
'200':
$ref: '#/components/responses/database_replica'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/replicas/read-nyc3-01"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
replica, _, err := client.Databases.GetReplica(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", "read-nyc3-01")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.databases.get_replica(database_cluster_uuid="a7a90a",
replica_name="backend-replica")
security:
- bearer_auth:
- database:read
delete:
operationId: databases_destroy_replica
summary: Destroy a Read-only Replica
description: >-
To destroy a specific read-only replica, send a DELETE request to
`/v2/databases/$DATABASE_ID/replicas/$REPLICA_NAME`.
**Note**: Read-only replicas are not supported for Redis clusters.
A status of 204 will be given. This indicates that the request was
processed successfully, but that no response body is needed.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/replica_name'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/replicas/read-nyc3-01"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Databases.DeleteReplica(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", "read-nyc3-01")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
delete_resp =
client.databases.destroy_replica(database_cluster_uuid="ba88aab",
replica_name="read_nyc_3")
security:
- bearer_auth:
- database:delete
/v2/databases/{database_cluster_uuid}/replicas/{replica_name}/promote:
put:
operationId: databases_promote_replica
summary: Promote a Read-only Replica to become a Primary Cluster
description: >-
To promote a specific read-only replica, send a PUT request to
`/v2/databases/$DATABASE_ID/replicas/$REPLICA_NAME/promote`.
**Note**: Read-only replicas are not supported for Redis clusters.
A status of 204 will be given. This indicates that the request was
processed successfully, but that no response body is needed.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/replica_name'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/replicas/read-nyc3-01/promote"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Databases.PromoteReplicaToPrimary(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", "read-nyc3-01")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.databases.promote_replica(database_cluster_uuid="a7a8bas",
replica_name="ba8ab22")
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/users:
get:
operationId: databases_list_users
summary: List all Database Users
description: >
To list all of the users for your database cluster, send a GET request
to
`/v2/databases/$DATABASE_ID/users`.
Note: User management is not supported for Redis clusters.
The result will be a JSON object with a `users` key. This will be set to
an array
of database user objects, each of which will contain the standard
database user attributes.
For MySQL clusters, additional options will be contained in the
mysql_settings object.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/users'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/users"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
users, _, err := client.Databases.ListUsers(ctx, "88055188-9e54-4f21-ab11-8a918ed79ee2", nil)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.databases.list_users(database_cluster_uuid="a7aba3")
security:
- bearer_auth:
- database:read
post:
operationId: databases_add_user
summary: Add a Database User
description: >
To add a new database user, send a POST request to
`/v2/databases/$DATABASE_ID/users`
with the desired username.
Note: User management is not supported for Redis clusters.
When adding a user to a MySQL cluster, additional options can be
configured in the
`mysql_settings` object.
When adding a user to a Kafka cluster, additional options can be
configured in
the `settings` object.
The response will be a JSON object with a key called `user`. The value
of this will be an
object that contains the standard attributes associated with a database
user including
its randomly generated password.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/database_user'
- type: object
properties:
readonly:
type: boolean
example: true
description: >
For MongoDB clusters, set to `true` to create a
read-only user.
This option is not currently supported for other
database engines.
examples:
Add New User:
value:
name: app-01
Add New User with MySQL Auth Plugin:
value:
name: app-02
mysql_settings:
auth_plugin: mysql_native_password
Add New Read Only User (MongoDB Only):
value:
name: my-readonly
readonly: true
Add New User for Postgres with replication rights:
value:
name: app-02
settings:
pg_allow_replication: true
Add New User with Kafka ACLs:
value:
name: app-03
settings:
acl:
- permission: produceconsume
topic: customer-events
- permission: produce
topic: customer-events.*
- permission: consume
topic: customer-events
responses:
'201':
$ref: '#/components/responses/user'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "app-01"}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/users"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
addUserRequest := &godo.DatabaseCreateUserRequest{
Name: "app-01",
}
user, _, err := client.Databases.CreateUser(ctx, "88055188-9e54-4f21-ab11-8a918ed79ee2", addUserRequest)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
add_user_resp =
client.databases.add_user(database_cluster_uuid="ab7bb7a",
body={"name": "app-01"})
security:
- bearer_auth:
- database:create
/v2/databases/{database_cluster_uuid}/users/{username}:
get:
operationId: databases_get_user
summary: Retrieve an Existing Database User
description: >
To show information about an existing database user, send a GET request
to
`/v2/databases/$DATABASE_ID/users/$USERNAME`.
Note: User management is not supported for Redis clusters.
The response will be a JSON object with a `user` key. This will be set
to an object
containing the standard database user attributes.
For MySQL clusters, additional options will be contained in the
`mysql_settings`
object.
For Kafka clusters, additional options will be contained in the
`settings` object.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/username'
responses:
'200':
$ref: '#/components/responses/user'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/users/app-01"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
user, _, err := client.Databases.GetUser(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", "app-01")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.databases.get_user(database_cluster_uuid="9a9aba",
username="admin")
security:
- bearer_auth:
- database:read
delete:
operationId: databases_delete_user
summary: Remove a Database User
description: >
To remove a specific database user, send a DELETE request to
`/v2/databases/$DATABASE_ID/users/$USERNAME`.
A status of 204 will be given. This indicates that the request was
processed
successfully, but that no response body is needed.
Note: User management is not supported for Redis clusters.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/username'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/users/app-01"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Databases.DeleteUser(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", "app-01")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
delete_resp =
client.databases.delete_user(database_cluster_uuid="aba134a",
username="backend_user1")
security:
- bearer_auth:
- database:delete
put:
operationId: databases_update_user
summary: Update a Database User
description: >
To update an existing database user, send a PUT request to
`/v2/databases/$DATABASE_ID/users/$USERNAME`
with the desired settings.
**Note**: only `settings` can be updated via this type of request. If
you wish to change the name of a user,
you must recreate a new user.
The response will be a JSON object with a key called `user`. The value
of this will be an
object that contains the name of the update database user, along with
the `settings` object that
has been updated.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/username'
requestBody:
required: true
content:
application/json:
schema:
allOf:
- type: object
properties:
settings:
$ref: '#/components/schemas/user_settings'
required:
- settings
examples:
Update User Kafka ACLs:
value:
settings:
acl:
- id: acl128aaaa99239
permission: produceconsume
topic: customer-events
- id: acl293098flskdf
permission: produce
topic: customer-events.*
- id: acl128ajei20123
permission: consume
topic: customer-events
responses:
'201':
$ref: '#/components/responses/user'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"settings": {"acl": [{"topic": "events", "permission": "produce"}]}}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/users"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
userName := "test-user"
updateUserRequest := &godo.DatabaseUpdateUserRequest{
Settings: {
ACL: [
{
Permssion: "consume",
Topic: "events",
}
{
Permission: "produce",
Topic: "metrics",
}
]
}
}
user, _, err := client.Databases.UpdateUser(ctx, "88055188-9e54-4f21-ab11-8a918ed79ee2", userName, updateUserRequest)
}
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/users/{username}/reset_auth:
post:
operationId: databases_reset_auth
summary: Reset a Database User's Password or Authentication Method
description: >
To reset the password for a database user, send a POST request to
`/v2/databases/$DATABASE_ID/users/$USERNAME/reset_auth`.
For `mysql` databases, the authentication method can be specifying by
including a key in the JSON body called `mysql_settings` with the
`auth_plugin`
value specified.
The response will be a JSON object with a `user` key. This will be set
to an
object containing the standard database user attributes.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/username'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
mysql_settings:
$ref: '#/components/schemas/mysql_settings'
example:
mysql_settings:
auth_plugin: caching_sha2_password
responses:
'200':
$ref: '#/components/responses/user'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"mysql_settings":{"auth_plugin": "caching_sha2_password"}}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/users/app-01/reset_auth"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
resetUserAuthRequest := &godo.DatabaseResetUserAuthRequest{
MySQLSettings: &DatabaseMySQLUserSettings{
AuthPlugin: "caching_sha2_password",
},
}
user, _, err := client.Databases.ResetUserAuth(ctx, "88055188-9e54-4f21-ab11-8a918ed79ee2", "app-01", resetuserAuthRequest)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"mysql_settings": {
"auth_plugin": "caching_sha2_password"
}
}
get_resp =
client.databases.reset_auth(database_cluster_uuid="a7a8bas",
username="admin", body=req)
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/dbs:
get:
operationId: databases_list
summary: List All Databases
description: >
To list all of the databases in a clusters, send a GET request to
`/v2/databases/$DATABASE_ID/dbs`.
The result will be a JSON object with a `dbs` key. This will be set to
an array
of database objects, each of which will contain the standard database
attributes.
Note: Database management is not supported for Redis clusters.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/databases'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/dbs"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
dbs, _, err := client.Databases.ListDBs(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", nil)
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.databases.list(database_cluster_uuid="a7aba9d")
security:
- bearer_auth:
- database:read
post:
operationId: databases_add
summary: Add a New Database
description: >
To add a new database to an existing cluster, send a POST request to
`/v2/databases/$DATABASE_ID/dbs`.
Note: Database management is not supported for Redis clusters.
The response will be a JSON object with a key called `db`. The value of
this will be
an object that contains the standard attributes associated with a
database.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/database'
example:
name: alpha
responses:
'201':
$ref: '#/components/responses/database'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "alpha"}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/dbs"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createDBReq := &godo.DatabaseCreateDBRequest{
Name: "alpha",
}
db, _, err := client.Databases.CreateDB(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", createDBReq)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
add_resp = client.databases.add(database_cluster_uuid="9cc10173",
body={"name": "alpha"})
security:
- bearer_auth:
- database:create
/v2/databases/{database_cluster_uuid}/dbs/{database_name}:
get:
operationId: databases_get
summary: Retrieve an Existing Database
description: >
To show information about an existing database cluster, send a GET
request to
`/v2/databases/$DATABASE_ID/dbs/$DB_NAME`.
Note: Database management is not supported for Redis clusters.
The response will be a JSON object with a `db` key. This will be set to
an object
containing the standard database attributes.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/database_name'
responses:
'200':
$ref: '#/components/responses/database'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/dbs/alpha"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
db, _, err := client.Databases.GetDB(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", "alpha")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.databases.get(database_cluster_uuid="a9a8a77",
database_name="admin")
security:
- bearer_auth:
- database:read
delete:
operationId: databases_delete
summary: Delete a Database
description: >
To delete a specific database, send a DELETE request to
`/v2/databases/$DATABASE_ID/dbs/$DB_NAME`.
A status of 204 will be given. This indicates that the request was
processed
successfully, but that no response body is needed.
Note: Database management is not supported for Redis clusters.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/database_name'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/dbs/alpha"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Databases.DeleteDB(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", "alpha")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
delete_resp =
client.databases.delete(database_cluster_uuid="a7abda",
database_name="ba1341")
security:
- bearer_auth:
- database:delete
/v2/databases/{database_cluster_uuid}/pools:
get:
operationId: databases_list_connectionPools
summary: List Connection Pools (PostgreSQL)
description: >-
To list all of the connection pools available to a PostgreSQL database
cluster, send a GET request to `/v2/databases/$DATABASE_ID/pools`.
The result will be a JSON object with a `pools` key. This will be set to
an array of connection pool objects.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/connection_pools'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: >-
curl -X GET /
-H "Content-Type: application/json" /
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" /
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/pools"
- lang: Go
source: |-
import (
"context"
"github.com/digitalocean/godo"
)
func main() {
pat := "mytoken"
client := godo.NewFromToken(pat)
ctx := context.TODO()
pools, _, err := client.Databases.ListPools(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", nil)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.databases.list_connection_pools(database_cluster_uuid="a7aab9a")
security:
- bearer_auth:
- database:read
post:
operationId: databases_add_connectionPool
summary: Add a New Connection Pool (PostgreSQL)
description: >
For PostgreSQL database clusters, connection pools can be used to allow
a
database to share its idle connections. The popular PostgreSQL
connection
pooling utility PgBouncer is used to provide this service. [See here for
more
information](https://docs.digitalocean.com/products/databases/postgresql/how-to/manage-connection-pools/)
about how and why to use PgBouncer connection pooling including
details about the available transaction modes.
To add a new connection pool to a PostgreSQL database cluster, send a
POST
request to `/v2/databases/$DATABASE_ID/pools` specifying a name for the
pool,
the user to connect with, the database to connect to, as well as its
desired
size and transaction mode.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/connection_pool'
example:
name: backend-pool
mode: transaction
size: 10
db: defaultdb
user: doadmin
responses:
'201':
$ref: '#/components/responses/connection_pool'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: >-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "backend-pool","mode": "transaction","size": 10,"db":
"defaultdb","user": "doadmin"}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/pools"
- lang: Go
source: |-
import (
"context"
"github.com/digitalocean/godo"
)
func main() {
pat := "mytoken"
client := godo.NewFromToken(pat)
ctx := context.TODO()
createPoolReq := &godo.DatabaseCreatePoolRequest{
Name: "backend-pool",
Database: "defaultdb",
Size: 10,
User: "doadmin",
Mode: "transaction",
}
pool, _, err := client.Databases.CreatePool(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", createPoolReq)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
add_conn_pool_req = {
"name": "backend-pool",
"mode": "transaction",
"size": 10,
"db": "defaultdb",
"user": "doadmin"
}
add_conn_pool_resp =
client.databases.add_connection_pool(database_cluster_uuid="9cc10173",
body=add_conn_pool_req)
security:
- bearer_auth:
- database:create
/v2/databases/{database_cluster_uuid}/pools/{pool_name}:
get:
operationId: databases_get_connectionPool
summary: Retrieve Existing Connection Pool (PostgreSQL)
description: >-
To show information about an existing connection pool for a PostgreSQL
database cluster, send a GET request to
`/v2/databases/$DATABASE_ID/pools/$POOL_NAME`.
The response will be a JSON object with a `pool` key.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/pool_name'
responses:
'200':
$ref: '#/components/responses/connection_pool'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: >-
curl -X GET /
-H "Content-Type: application/json" /
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" /
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/pools/backend-pool"
- lang: Go
source: |-
import (
"context"
"github.com/digitalocean/godo"
)
func main() {
pat := "mytoken"
client := godo.NewFromToken(pat)
ctx := context.TODO()
pool, _, err := client.Databases.GetPool(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", "backend-pool")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.databases.get_connection_pool(database_cluster_uuid="a7aba8a",
pool_name="backend-pool")
security:
- bearer_auth:
- database:read
put:
operationId: databases_update_connectionPool
summary: Update Connection Pools (PostgreSQL)
description: >-
To update a connection pool for a PostgreSQL database cluster, send a
PUT request to `/v2/databases/$DATABASE_ID/pools/$POOL_NAME`.
tags:
- Databases
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/connection_pool_update'
example:
mode: transaction
size: 10
db: defaultdb
user: doadmin
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/pool_name'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: >-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"mode": "transaction", "size": 15, "db": "defaultdb", "user":
"doadmin"}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/pools/backend-pool"
- lang: Go
source: |-
import (
"context"
"github.com/digitalocean/godo"
)
func main() {
pat := "mytoken"
client := godo.NewFromToken(pat)
ctx := context.TODO()
updateReq := &godo.DatabaseUpdatePoolRequest{
User: "doadmin",
Size: 15,
Database: "defaultdb",
Mode: "transaction",
}
_, err := client.Databases.UpdatePool(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", "backend-pool", updateReq)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"mode": "transaction",
"size": 10,
"db": "defaultdb",
"user": "doadmin"
}
update_resp =
client.databases.update_connection_pool(database_cluster_uuid="a7a8bas",
pool_name="conn_pool", body=req)
security:
- bearer_auth:
- database:update
delete:
operationId: databases_delete_connectionPool
summary: Delete a Connection Pool (PostgreSQL)
description: >
To delete a specific connection pool for a PostgreSQL database cluster,
send
a DELETE request to `/v2/databases/$DATABASE_ID/pools/$POOL_NAME`.
A status of 204 will be given. This indicates that the request was
processed
successfully, but that no response body is needed.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/pool_name'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: >-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/pools/backend-pool"
- lang: Go
source: |-
import (
"context"
"github.com/digitalocean/godo"
)
func main() {
pat := "mytoken"
client := godo.NewFromToken(pat)
ctx := context.TODO()
_, err := client.Databases.DeletePool(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", "backend-pool")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
delete_conn_pool =
client.databases.delete_connection_pool(database_cluster_uuid="9cc10173",
pool_name="backend-pool")
security:
- bearer_auth:
- database:delete
/v2/databases/{database_cluster_uuid}/eviction_policy:
get:
operationId: databases_get_evictionPolicy
summary: Retrieve the Eviction Policy for a Redis Cluster
description: >-
To retrieve the configured eviction policy for an existing Redis
cluster, send a GET request to
`/v2/databases/$DATABASE_ID/eviction_policy`.
The response will be a JSON object with an `eviction_policy` key. This
will be set to a string representing the eviction policy.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/eviction_policy_response'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cdb64e5-61e4-4b30-b711-11ef66d84558/eviction_policy"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
db, _, err := client.Databases.GetEvictionPolicy(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.databases.get_eviction_policy(database_cluster_uuid="a7aa89a")
security:
- bearer_auth:
- database:read
put:
operationId: databases_update_evictionPolicy
summary: Configure the Eviction Policy for a Redis Cluster
description: >-
To configure an eviction policy for an existing Redis cluster, send a
PUT request to `/v2/databases/$DATABASE_ID/eviction_policy` specifying
the desired policy.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- eviction_policy
properties:
eviction_policy:
$ref: '#/components/schemas/eviction_policy_model'
example:
eviction_policy: allkeys_lru
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"eviction_policy":"allkeys_lru"}' \
"https://api.digitalocean.com/v2/databases/9cdb64e5-61e4-4b30-b711-11ef66d84558/eviction_policy"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
db, _, err := client.Databases.SetEvictionPolicy(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", "allkeys_lru")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"eviction_policy": "allkeys_lru"
}
update_resp =
client.databases.update_eviction_policy(database_cluster_uuid="a7a8bas",
body=req)
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/sql_mode:
get:
operationId: databases_get_sql_mode
summary: Retrieve the SQL Modes for a MySQL Cluster
description: >-
To retrieve the configured SQL modes for an existing MySQL cluster, send
a GET request to `/v2/databases/$DATABASE_ID/sql_mode`.
The response will be a JSON object with a `sql_mode` key. This will be
set to a string representing the configured SQL modes.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/sql_mode'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cdb64e5-61e4-4b30-b711-11ef66d84558/sql_mode"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
sqlMode, _, err := client.Databases.GetSQLMode(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp =
client.databases.get_sql_mode(database_cluster_uuid="90abaa8")
security:
- bearer_auth:
- database:read
put:
operationId: databases_update_sql_mode
summary: Update SQL Mode for a Cluster
description: >-
To configure the SQL modes for an existing MySQL cluster, send a PUT
request to `/v2/databases/$DATABASE_ID/sql_mode` specifying the desired
modes. See the official MySQL 8 documentation for a [full list of
supported SQL
modes](https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sql-mode-full).
A successful request will receive a 204 No Content status code with no
body in response.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/sql_mode'
example:
sql_mode: >-
ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"sql_mode":"ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE"}' \
"https://api.digitalocean.com/v2/databases/9cdb64e5-61e4-4b30-b711-11ef66d84558/sql_mode"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
sqlMode := "ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE"
_, err := client.Databases.SetSQLMode(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", sqlMode)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"sql_mode": "ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE"
}
update_resp =
client.databases.update_sql_mode(database_cluster_uuid="a7a8bas",
body=req)
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/upgrade:
put:
operationId: databases_update_major_version
summary: Upgrade Major Version for a Database
description: >-
To upgrade the major version of a database, send a PUT request to
`/v2/databases/$DATABASE_ID/upgrade`, specifying the target version.
A successful request will receive a 204 No Content status code with no
body in response.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/version-2'
example:
version: '14'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"version":"14"}' \
"https://api.digitalocean.com/v2/databases/9cdb64e5-61e4-4b30-b711-11ef66d84558/upgrade"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"version": "14"
}
update_resp =
client.databases.update_major_version(database_cluster_uuid="a7a8bas",
body=req)
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/topics:
get:
operationId: databases_list_kafka_topics
summary: List Topics for a Kafka Cluster
description: |
To list all of a Kafka cluster's topics, send a GET request to
`/v2/databases/$DATABASE_ID/topics`.
The result will be a JSON object with a `topics` key.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/kafka_topics'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/topics"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
replicas, _, err := client.Databases.ListTopics(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", nil)
}
security:
- bearer_auth:
- database:read
post:
operationId: databases_create_kafka_topic
summary: Create Topic for a Kafka Cluster
description: |
To create a topic attached to a Kafka cluster, send a POST request to
`/v2/databases/$DATABASE_ID/topics`.
The result will be a JSON object with a `topic` key.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/kafka_topic_create'
required:
- name
example:
name: customer-events
partitions: 3
replication: 2
config:
retention_bytes: -1
retention_ms: 100000
responses:
'201':
$ref: '#/components/responses/kafka_topic'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"customer-events", "partition_count":3, "replication_factor": 3, "config": {"retentionMS": 1000000}}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/topics"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &DatabaseCreateTopicRequest{
Name: "events",
PartitionCount: 3,
ReplicationFactor: 2,
Config: &TopicConfig{
RetentionMS: 60000,
}
},
cluster, _, err := client.Databases.CreateTopic(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", createRequest)
}
security:
- bearer_auth:
- database:create
/v2/databases/{database_cluster_uuid}/topics/{topic_name}:
get:
operationId: databases_get_kafka_topic
summary: Get Topic for a Kafka Cluster
description: >
To retrieve a given topic by name from the set of a Kafka cluster's
topics,
send a GET request to `/v2/databases/$DATABASE_ID/topics/$TOPIC_NAME`.
The result will be a JSON object with a `topic` key.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/kafka_topic_name'
responses:
'200':
$ref: '#/components/responses/kafka_topic'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/topics/customer-events"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
topicName := "events"
user, _, err := client.Databases.GetTopic(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", topicName)
}
security:
- bearer_auth:
- database:read
put:
operationId: databases_update_kafka_topic
summary: Update Topic for a Kafka Cluster
description: |
To update a topic attached to a Kafka cluster, send a PUT request to
`/v2/databases/$DATABASE_ID/topics/$TOPIC_NAME`.
The result will be a JSON object with a `topic` key.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/kafka_topic_name'
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/kafka_topic_update'
example:
partitions: 3
replication: 2
config:
retention_bytes: -1
retention_ms: 100000
responses:
'200':
$ref: '#/components/responses/kafka_topic'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"partition_count":3, "replication_factor": 3, "config": {"retentionMS": 1000000}}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/topics/customer-events"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
topicName := "events"
updateRequest := &DatabaseUpdateTopicRequest{
PartitionCount: 3,
ReplicationFactor: 2,
Config: &TopicConfig{
RetentionMS: 60000,
},
}
_, err := client.Databases.UpdateTopic(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", topicName, updateRequest)
}
security:
- bearer_auth:
- database:update
delete:
operationId: databases_delete_kafka_topic
summary: Delete Topic for a Kafka Cluster
description: |
To delete a single topic within a Kafka cluster, send a DELETE request
to `/v2/databases/$DATABASE_ID/topics/$TOPIC_NAME`.
A status of 204 will be given. This indicates that the request was
processed successfully, but that no response body is needed.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/kafka_topic_name'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/topics/customer-events"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
topicName := "events"
_, err := client.Databases.DeleteTopic(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", topicName)
}
security:
- bearer_auth:
- database:delete
/v2/databases/{database_cluster_uuid}/logsink:
get:
operationId: databases_list_logsink
summary: |
List Logsinks for a Database Cluster
description: |
To list logsinks for a database cluster, send a GET request to
`/v2/databases/$DATABASE_ID/logsink`.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'201':
$ref: '#/components/responses/logsinks'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/logsink"
security:
- bearer_auth:
- database:read
post:
operationId: databases_create_logsink
summary: |
Create Logsink for a Database Cluster
description: |
To create logsink for a database cluster, send a POST request to
`/v2/databases/$DATABASE_ID/logsink`.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/logsink_create'
required:
- sink_name
- sink_type
- config
examples:
Create an opensearch logsink:
value:
sink_name: logs-sink
sink_type: opensearch
config:
url: https://user:passwd@192.168.0.1:25060
index_prefix: opensearch-logs
index_days_max: 5
Create an elasticsearch logsink:
value:
sink_name: logs-sink
sink_type: elasticsearch
config:
url: https://user:passwd@192.168.0.1:25060
index_prefix: elasticsearch-logs
index_days_max: 5
Create a rsyslog logsink:
value:
sink_name: logs-sink
sink_type: rsyslog
config:
server: 192.168.0.1
port: 514
tls: false
format: rfc5424
responses:
'201':
$ref: '#/components/responses/logsink'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"sink_name": "logsink", "sink_type": "rsyslog", "config": {"server": "192.168.10.1", "port": 514, "tls": false, "format": "rfc5424"}}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/logsink"
security:
- bearer_auth:
- database:create
/v2/databases/{database_cluster_uuid}/logsink/{logsink_id}:
get:
operationId: databases_get_logsink
summary: |
Get Logsink for a Database Cluster
description: |
To get a logsink for a database cluster, send a GET request to
`/v2/databases/$DATABASE_ID/logsink/$LOGSINK_ID`.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/logsink_id'
responses:
'201':
$ref: '#/components/responses/logsink'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/logsink/77b28fc8-19ff-11eb-8c9c-c68e24557488"
security:
- bearer_auth:
- database:read
put:
operationId: databases_update_logsink
summary: |
Update Logsink for a Database Cluster
description: |
To update a logsink for a database cluster, send a PUT request to
`/v2/databases/$DATABASE_ID/logsink/$LOGSINK_ID`.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/logsink_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/logsink_update'
example:
config:
server: 192.168.0.1
port: 514
tls: false
format: rfc3164
responses:
'200':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"config": {"server": "192.168.1.1", "port": 514, "tls": false, "format": "rfc3164"}}' \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/logsink/77b28fc8-19ff-11eb-8c9c-c68e24557488"
security:
- bearer_auth:
- database:update
delete:
operationId: databases_delete_logsink
summary: |
Delete Logsink for a Database Cluster
description: |
To delete a logsink for a database cluster, send a DELETE request to
`/v2/databases/$DATABASE_ID/logsink/$LOGSINK_ID`.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/logsink_id'
responses:
'200':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/logsink/77b28fc8-19ff-11eb-8c9c-c68e24557488"
security:
- bearer_auth:
- database:delete
/v2/databases/metrics/credentials:
get:
operationId: databases_get_cluster_metrics_credentials
summary: Retrieve Database Clusters' Metrics Endpoint Credentials
description: >-
To show the credentials for all database clusters' metrics endpoints,
send a GET request to `/v2/databases/metrics/credentials`. The result
will be a JSON object with a `credentials` key.
tags:
- Databases
responses:
'200':
$ref: '#/components/responses/database_metrics_auth'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/metrics/credentials"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
creds, _, _ := client.Databases.GetMetricsCredentials(ctx)
}
security:
- bearer_auth:
- database:update
put:
operationId: databases_update_cluster_metrics_credentials
summary: Update Database Clusters' Metrics Endpoint Credentials
description: >-
To update the credentials for all database clusters' metrics endpoints,
send a PUT request to `/v2/databases/metrics/credentials`. A successful
request will receive a 204 No Content status code with no body in
response.
tags:
- Databases
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/database_metrics_credentials'
example:
credentials:
basic_auth_username: new_username
basic_auth_password: new_password
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"credentials": {"basic_auth_username": "new_username", "basic_auth_password": "new_password"}}'\
"https://api.digitalocean.com/v2/databases/metrics/credentials"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, _ = client.Databases.UpdateMetricsCredentials(ctx, &godo.DatabaseUpdateMetricsCredentialsRequest{
Credentials: &godo.DatabaseMetricsCredentials{
BasicAuthUsername: "a_new_username",
BasicAuthPassword: "a_new_password",
},
})
}
security:
- bearer_auth:
- database:update
/v2/databases/{database_cluster_uuid}/indexes:
get:
operationId: databases_list_opeasearch_indexes
summary: List Indexes for a OpenSearch Cluster
description: |
To list all of a OpenSearch cluster's indexes, send a GET request to
`/v2/databases/$DATABASE_ID/indexes`.
The result will be a JSON object with a `indexes` key.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
responses:
'200':
$ref: '#/components/responses/opensearch_indexes'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/indexes"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
replicas, _, err := client.Databases.ListIndexes(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", nil)
}
security:
- bearer_auth:
- database:read
/v2/databases/{database_cluster_uuid}/indexes/{index_name}:
delete:
operationId: databases_delete_opensearch_index
summary: Delete Index for OpenSearch Cluster
description: >
To delete a single index within OpenSearch cluster, send a DELETE
request
to `/v2/databases/$DATABASE_ID/indexes/$INDEX_NAME`.
A status of 204 will be given. This indicates that the request was
processed successfully, but that no response body is needed.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/database_cluster_uuid'
- $ref: '#/components/parameters/opensearch_index_name'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases/9cc10173-e9ea-4176-9dbc-a4cee4c4ff30/indexes/sample-index"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
indexName := "sampe-index"
_, err := client.Databases.DeleteIndex(ctx, "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30", indexName)
}
security:
- bearer_auth:
- database:delete
/v2/domains:
get:
operationId: domains_list
summary: List All Domains
description: >-
To retrieve a list of all of the domains in your account, send a GET
request to `/v2/domains`.
tags:
- Domains
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_domains_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/domains"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
domains, _, err := client.Domains.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
domains = client.domains.all
domains.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.domains.list()
security:
- bearer_auth:
- domain:read
post:
operationId: domains_create
summary: Create a New Domain
description: >
To create a new domain, send a POST request to `/v2/domains`. Set the
"name"
attribute to the domain name you are adding. Optionally, you may set the
"ip_address" attribute, and an A record will be automatically created
pointing
to the apex domain.
tags:
- Domains
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/domain'
example:
name: example.com
responses:
'201':
$ref: '#/components/responses/create_domain_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"example.com","ip_address":"1.2.3.4"}' \
"https://api.digitalocean.com/v2/domains"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &godo.DomainCreateRequest{
Name: "example.com",
IPAddress: "1.2.3.4",
}
domain, _, err := client.Domains.Create(ctx, createRequest)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
domain = DropletKit::Domain.new(
name: 'example.com',
ip_address: '1.2.3.4'
)
client.domains.create(domain)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "example.com"
}
resp = client.domains.create(body=req)
security:
- bearer_auth:
- domain:create
/v2/domains/{domain_name}:
get:
operationId: domains_get
summary: Retrieve an Existing Domain
description: >-
To get details about a specific domain, send a GET request to
`/v2/domains/$DOMAIN_NAME`.
tags:
- Domains
parameters:
- $ref: '#/components/parameters/domain_name'
responses:
'200':
$ref: '#/components/responses/existing_domain'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/domains/example.com"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
domain, _, err := client.Domains.Get(ctx, "example.com")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.domains.find(name: 'example.com')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.domains.get(domain_name="example.com")
security:
- bearer_auth:
- domain:read
delete:
operationId: domains_delete
summary: Delete a Domain
description: |
To delete a domain, send a DELETE request to `/v2/domains/$DOMAIN_NAME`.
tags:
- Domains
parameters:
- $ref: '#/components/parameters/domain_name'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/domains/example.com"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Domains.Delete(ctx, "example.com")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.domains.delete(name: 'example.com')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
delete_resp = client.domains.delete(domain_name="example.com")
security:
- bearer_auth:
- domain:delete
/v2/domains/{domain_name}/records:
get:
operationId: domains_list_records
summary: List All Domain Records
description: >+
To get a listing of all records configured for a domain, send a GET
request to `/v2/domains/$DOMAIN_NAME/records`.
The list of records returned can be filtered by using the `name` and
`type` query parameters. For example, to only include A records for a
domain, send a GET request to `/v2/domains/$DOMAIN_NAME/records?type=A`.
`name` must be a fully qualified record name. For example, to only
include records matching `sub.example.com`, send a GET request to
`/v2/domains/$DOMAIN_NAME/records?name=sub.example.com`. Both name and
type may be used together.
tags:
- Domain Records
parameters:
- $ref: '#/components/parameters/domain_name'
- $ref: '#/components/parameters/domain_name_query'
- $ref: '#/components/parameters/domain_type_query'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_domain_records_response'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/domains/example.com/records"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
domains, _, err := client.Domains.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
records = client.domain_records.all(for_domain: 'example.com')
records.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.domains.list_records(domain_name="example.com")
security:
- bearer_auth:
- domain:read
post:
operationId: domains_create_record
summary: Create a New Domain Record
description: >
To create a new record to a domain, send a POST request to
`/v2/domains/$DOMAIN_NAME/records`.
The request must include all of the required fields for the domain
record type
being added.
See the [attribute table](#tag/Domain-Records) for details regarding
record
types and their respective required attributes.
tags:
- Domain Records
parameters:
- $ref: '#/components/parameters/domain_name'
requestBody:
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/domain_record_a'
- $ref: '#/components/schemas/domain_record_aaaa'
- $ref: '#/components/schemas/domain_record_caa'
- $ref: '#/components/schemas/domain_record_cname'
- $ref: '#/components/schemas/domain_record_mx'
- $ref: '#/components/schemas/domain_record_ns'
- $ref: '#/components/schemas/domain_record_soa'
- $ref: '#/components/schemas/domain_record_srv'
- $ref: '#/components/schemas/domain_record_txt'
discriminator:
propertyName: type
mapping:
A: '#/components/schemas/domain_record_a'
AAAA: '#/components/schemas/domain_record_aaaa'
CAA: '#/components/schemas/domain_record_caa'
CNAME: '#/components/schemas/domain_record_cname'
MX: '#/components/schemas/domain_record_mx'
NS: '#/components/schemas/domain_record_ns'
SOA: '#/components/schemas/domain_record_soa'
SRV: '#/components/schemas/domain_record_srv'
TXT: '#/components/schemas/domain_record_txt'
example:
type: A
name: www
data: 162.10.66.0
priority: null
port: null
ttl: 1800
weight: null
flags: null
tag: null
responses:
'201':
$ref: '#/components/responses/created_domain_record'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"A","name":"www","data":"162.10.66.0","priority":null,"port":null,"ttl":1800,"weight":null,"flags":null,"tag":null}' \
"https://api.digitalocean.com/v2/domains/example.com/records"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &godo.DomainRecordEditRequest{
Type: "A",
Name: "www",
Data: "1.2.3.4",
}
domainRecord, _, err := client.Domains.CreateRecord(ctx, "example.com", createRequest)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
record = DropletKit::DomainRecord.new(
type: 'A',
name: 'www',
data: '162.10.66.0'
)
client.domain_records.create(record, for_domain: 'example.com')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"type": "A",
"name": "www",
"data": "162.10.66.0",
"priority": None,
"port": None,
"ttl": 1800,
"weight": None,
"flags": None,
"tag": None
}
resp = client.domains.create_record(domain_name="example.com",
body=req)
security:
- bearer_auth:
- domain:create
/v2/domains/{domain_name}/records/{domain_record_id}:
get:
operationId: domains_get_record
summary: Retrieve an Existing Domain Record
description: >-
To retrieve a specific domain record, send a GET request to
`/v2/domains/$DOMAIN_NAME/records/$RECORD_ID`.
tags:
- Domain Records
parameters:
- $ref: '#/components/parameters/domain_name'
- $ref: '#/components/parameters/domain_record_id'
responses:
'200':
$ref: '#/components/responses/domain_record'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/domains/example.com/records/3352896"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
record, _, err := client.Domains.Record(ctx, "example.com", 3352896)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.domain_records.find(for_domain: 'example.com', id: 3352896)
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
get_resp = client.domains.get_record(domain_name="example.com",
domain_record_id=3352896)
security:
- bearer_auth:
- domain:read
patch:
operationId: domains_patch_record
summary: Update a Domain Record
description: >
To update an existing record, send a PATCH request to
`/v2/domains/$DOMAIN_NAME/records/$DOMAIN_RECORD_ID`. Any attribute
valid for
the record type can be set to a new value for the record.
See the [attribute table](#tag/Domain-Records) for details regarding
record
types and their respective attributes.
tags:
- Domain Records
parameters:
- $ref: '#/components/parameters/domain_name'
- $ref: '#/components/parameters/domain_record_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/domain_record'
example:
name: blog
type: A
responses:
'200':
$ref: '#/components/responses/domain_record'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"blog","type":"A"}' \
"https://api.digitalocean.com/v2/domains/example.com/records/3352896"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "blog",
"type": "A"
}
resp = client.domains.patch_record(domain_name="example.com",
domain_record_id=2432342, body=req)
security:
- bearer_auth:
- domain:update
put:
operationId: domains_update_record
summary: Update a Domain Record
description: >
To update an existing record, send a PUT request to
`/v2/domains/$DOMAIN_NAME/records/$DOMAIN_RECORD_ID`. Any attribute
valid for
the record type can be set to a new value for the record.
See the [attribute table](#tag/Domain-Records) for details regarding
record
types and their respective attributes.
tags:
- Domain Records
parameters:
- $ref: '#/components/parameters/domain_name'
- $ref: '#/components/parameters/domain_record_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/domain_record'
example:
name: blog
type: CNAME
responses:
'200':
$ref: '#/components/responses/domain_record'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"blog"}' \
"https://api.digitalocean.com/v2/domains/example.com/records/3352896"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
editRequest := &godo.DomainRecordEditRequest{
Type: "A",
Name: "blog",
}
domainRecord, _, err := client.Domains.EditRecord(ctx, "example.com", 3352896, editRequest)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
record = DropletKit::DomainRecord.new(name: 'blog')
client.domain_records.update(record, for_domain: 'example.com', id:
3352896)
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "blog",
"type": "CNAME"
}
resp = client.domains.update_record(domain_name="example.com",
domain_record_id=2432342, body=req)
security:
- bearer_auth:
- domain:update
delete:
operationId: domains_delete_record
summary: Delete a Domain Record
description: |
To delete a record for a domain, send a DELETE request to
`/v2/domains/$DOMAIN_NAME/records/$DOMAIN_RECORD_ID`.
The record will be deleted and the response status will be a 204. This
indicates a successful request with no body returned.
tags:
- Domain Records
parameters:
- $ref: '#/components/parameters/domain_name'
- $ref: '#/components/parameters/domain_record_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/domains/example.com/records/3352896"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Domains.DeleteRecord(ctx, "example.com", 3352896)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.domain_records.delete(for_domain: 'example.com', id: 3352896)
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "example.com"
}
resp = client.domains.delete_record(domain_name="example.com",
domain_record_id=3352896)
security:
- bearer_auth:
- domain:delete
/v2/droplets:
get:
operationId: droplets_list
summary: List All Droplets
description: >
To list all Droplets in your account, send a GET request to
`/v2/droplets`.
The response body will be a JSON object with a key of `droplets`. This
will be
set to an array containing objects each representing a Droplet. These
will
contain the standard Droplet attributes.
### Filtering Results by Tag
It's possible to request filtered results by including certain query
parameters.
To only list Droplets assigned to a specific tag, include the `tag_name`
query
parameter set to the name of the tag in your GET request. For example,
`/v2/droplets?tag_name=$TAG_NAME`.
### GPU Droplets
By default, only non-GPU Droplets are returned. To list only GPU
Droplets, set
the `type` query parameter to `gpus`. For example,
`/v2/droplets?type=gpus`.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/droplet_tag_name'
- $ref: '#/components/parameters/droplet_name'
- $ref: '#/components/parameters/droplet_type'
responses:
'200':
$ref: '#/components/responses/all_droplets'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets?page=1&per_page=1"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
droplets, _, err := client.Droplets.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
droplets = client.droplets.all
droplets.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplets.list()
security:
- bearer_auth:
- droplet:read
post:
operationId: droplets_create
summary: Create a New Droplet
description: >
To create a new Droplet, send a POST request to `/v2/droplets` setting
the
required attributes.
A Droplet will be created using the provided information. The response
body
will contain a JSON object with a key called `droplet`. The value will
be an
object containing the standard attributes for your new Droplet. The
response
code, 202 Accepted, does not indicate the success or failure of the
operation,
just that the request has been accepted for processing. The `actions`
returned
as part of the response's `links` object can be used to check the status
of the Droplet create event.
### Create Multiple Droplets
Creating multiple Droplets is very similar to creating a single Droplet.
Instead of sending `name` as a string, send `names` as an array of
strings. A
Droplet will be created for each name you send using the associated
information. Up to ten Droplets may be created this way at a time.
Rather than returning a single Droplet, the response body will contain a
JSON
array with a key called `droplets`. This will be set to an array of JSON
objects, each of which will contain the standard Droplet attributes. The
response code, 202 Accepted, does not indicate the success or failure of
any
operation, just that the request has been accepted for processing. The
array
of `actions` returned as part of the response's `links` object can be
used to
check the status of each individual Droplet create event.
tags:
- Droplets
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/droplet_single_create'
- $ref: '#/components/schemas/droplet_multi_create'
examples:
Single Droplet Create Request:
$ref: '#/components/examples/droplet_create_request'
Multiple Droplet Create Request:
$ref: '#/components/examples/droplet_multi_create_request'
responses:
'202':
$ref: '#/components/responses/droplet_create'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"example.com","region":"nyc3","size":"s-1vcpu-1gb","image":"ubuntu-20-04-x64","ssh_keys":[289794,"3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45"],"backups":true,"ipv6":true,"monitoring":true,"tags":["env:prod","web"],"user_data":"#cloud-config\nruncmd:\n - touch /test.txt\n","vpc_uuid":"760e09ef-dc84-11e8-981e-3cfdfeaae000"}' \
"https://api.digitalocean.com/v2/droplets"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &godo.DropletCreateRequest{
Name: "example.com",
Region: "nyc3",
Size: "s-1vcpu-1gb",
Image: godo.DropletCreateImage{
Slug: "ubuntu-20-04-x64",
},
SSHKeys: []godo.DropletCreateSSHKey{
godo.DropletCreateSSHKey{ID: 289794},
godo.DropletCreateSSHKey{Fingerprint: "3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45"}
},
Backups: true,
IPv6: true,
Monitoring: true,
Tags: []string{"env:prod","web"},
UserData: "#cloud-config\nruncmd:\n - touch /test.txt\n",
VPCUUID: "760e09ef-dc84-11e8-981e-3cfdfeaae000",
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
droplet = DropletKit::Droplet.new(
name: 'example.com',
region: 'nyc3',
size: 's-1vcpu-1gb',
image: 'ubuntu-20-04-x64',
ssh_keys: [289794,"3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45"],
backups: true,
ipv6: true,
monitoring: true,
tags: ["env:prod","web"],
user_data: "#cloud-config\nruncmd:\n - touch /test.txt\n",
vpc_uuid: "760e09ef-dc84-11e8-981e-3cfdfeaae000",
)
client.droplets.create(droplet)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "example.com",
"region": "nyc3",
"size": "s-1vcpu-1gb",
"image": "ubuntu-20-04-x64",
"ssh_keys": [
289794,
"3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45"
],
"backups": True,
"ipv6": True,
"monitoring": True,
"tags": [
"env:prod",
"web"
],
"user_data": "#cloud-config\nruncmd:\n - touch /test.txt\n",
"vpc_uuid": "760e09ef-dc84-11e8-981e-3cfdfeaae000"
}
resp = client.droplets.create(body=req)
security:
- bearer_auth:
- droplet:create
delete:
operationId: droplets_destroy_byTag
summary: Deleting Droplets by Tag
description: >
To delete **all** Droplets assigned to a specific tag, include the
`tag_name`
query parameter set to the name of the tag in your DELETE request. For
example, `/v2/droplets?tag_name=$TAG_NAME`.
A successful request will receive a 204 status code with no body in
response.
This indicates that the request was processed successfully.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_delete_tag_name'
responses:
'204':
$ref: '#/components/responses/no_content_with_content_type'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets?tag_name=awesome"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
client.Droplets.DeleteByTag(ctx, "awesome")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.droplets.delete_for_tag(tag_name: awesome)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplets.destroy_by_tag(tag_name="production")
security:
- bearer_auth:
- droplet:delete
/v2/droplets/{droplet_id}:
get:
operationId: droplets_get
summary: Retrieve an Existing Droplet
description: |
To show information about an individual Droplet, send a GET request to
`/v2/droplets/$DROPLET_ID`.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_id'
responses:
'200':
$ref: '#/components/responses/existing_droplet'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/3164494"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
droplet, _, err := client.Droplets.Get(ctx, 3164494)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.droplets.find(id: 3164494)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplets.get(droplet_id=594828)
security:
- bearer_auth:
- droplet:read
delete:
operationId: droplets_destroy
summary: Delete an Existing Droplet
description: >
To delete a Droplet, send a DELETE request to
`/v2/droplets/$DROPLET_ID`.
A successful request will receive a 204 status code with no body in
response.
This indicates that the request was processed successfully.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_id'
responses:
'204':
$ref: '#/components/responses/no_content_with_content_type'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/3164494"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Droplets.Delete(ctx, 3164494)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.droplets.delete(id: 3164494)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplets.destroy(droplet_id=553456)
security:
- bearer_auth:
- droplet:delete
/v2/droplets/{droplet_id}/backups:
get:
operationId: droplets_list_backups
summary: List Backups for a Droplet
description: >
To retrieve any backups associated with a Droplet, send a GET request to
`/v2/droplets/$DROPLET_ID/backups`.
You will get back a JSON object that has a `backups` key. This will be
set to
an array of backup objects, each of which contain the standard
Droplet backup attributes.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_id'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_droplet_backups'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/3067509/backups"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
backups, _, err := client.Droplets.Backups(ctx, 3164494, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
backups = client.droplets.backups(id: 3164494)
backups.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplets.list_backups(droplet_id=594828)
security:
- bearer_auth:
- droplet:read
/v2/droplets/{droplet_id}/backups/policy:
get:
operationId: droplets_get_backup_policy
summary: Retrieve the Backup Policy for an Existing Droplet
description: >
To show information about an individual Droplet's backup policy, send a
GET
request to `/v2/droplets/$DROPLET_ID/backups/policy`.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_id'
responses:
'200':
$ref: '#/components/responses/droplet_backup_policy'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/3164494/backups/policy"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
droplet, _, err := client.Droplets.GetBackupPolicy(ctx, 444909706)
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplets.get_backup_policy(droplet_id=444909706)
security:
- bearer_auth:
- droplet:read
/v2/droplets/backups/policies:
get:
operationId: droplets_list_backup_policies
summary: List Backup Policies for All Existing Droplets
description: >
To list information about the backup policies for all Droplets in the
account,
send a GET request to `/v2/droplets/backups/policies`.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_droplet_backup_policies'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/backups/policies"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
droplet, _, err := client.Droplets.ListBackupPolicies(ctx)
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplets.list_backup_policies()
security:
- bearer_auth:
- droplet:read
/v2/droplets/backups/supported_policies:
get:
operationId: droplets_list_supported_backup_policies
summary: List Supported Droplet Backup Policies
description: |
To retrieve a list of all supported Droplet backup policies, send a GET
request to `/v2/droplets/backups/supported_policies`.
tags:
- Droplets
responses:
'200':
$ref: '#/components/responses/droplets_supported_backup_policies'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/backups/supported_policies"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
droplet, _, err := client.Droplets.ListSupportedBackupPolicies(ctx)
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplets.list_supported_backup_policies()
security:
- bearer_auth:
- droplet:read
/v2/droplets/{droplet_id}/snapshots:
get:
operationId: droplets_list_snapshots
summary: List Snapshots for a Droplet
description: >
To retrieve the snapshots that have been created from a Droplet, send a
GET
request to `/v2/droplets/$DROPLET_ID/snapshots`.
You will get back a JSON object that has a `snapshots` key. This will be
set
to an array of snapshot objects, each of which contain the standard
Droplet
snapshot attributes.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_id'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_droplet_snapshots'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/3164494/snapshots?page=1&per_page=1"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
snapshots, _, err := client.Droplets.Snapshots(ctx, 3164494, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
snapshots = client.droplets.snapshots(id: 3164494)
snapshots.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplets.list_snapshots(droplet_id=3929391)
security:
- bearer_auth:
- droplet:read
/v2/droplets/{droplet_id}/actions:
get:
operationId: dropletActions_list
summary: List Actions for a Droplet
description: >
To retrieve a list of all actions that have been executed for a Droplet,
send
a GET request to `/v2/droplets/$DROPLET_ID/actions`.
The results will be returned as a JSON object with an `actions` key.
This will
be set to an array filled with `action` objects containing the standard
`action` attributes.
tags:
- Droplet Actions
parameters:
- $ref: '#/components/parameters/droplet_id'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_droplet_actions'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/3164494/actions?page=1&per_page=1"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
actions, _, err := client.Droplets.Actions(ctx, 3164494, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
actions = client.droplets.actions(id: 3164494)
actions.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "blog",
"type": "CNAME"
}
resp = client.droplet_actions.list(droplet_id=3164494)
security:
- bearer_auth:
- droplet:read
post:
operationId: dropletActions_post
summary: Initiate a Droplet Action
description: >
To initiate an action on a Droplet send a POST request to
`/v2/droplets/$DROPLET_ID/actions`. In the JSON body to the request,
set the `type` attribute to on of the supported action types:
| Action | Details |
| ---------------------------------------- | ----------- |
| `enable_backups` | Enables backups for a
Droplet |
| `disable_backups` | Disables backups for a
Droplet |
| `change_backup_policy` | Update the backup policy
for a Droplet |
| `reboot` | Reboots a Droplet. A
`reboot` action is an attempt to reboot the Droplet in a graceful way,
similar to using the `reboot` command from the console. |
| `power_cycle` | Power cycles a Droplet. A
`powercycle` action is similar to pushing the reset button on a physical
machine, it's similar to booting from scratch. |
| `shutdown` | Shutsdown a Droplet. A
shutdown action is an attempt to shutdown the Droplet in a graceful way,
similar to using the `shutdown` command from the console. Since a
`shutdown` command can fail, this action guarantees that the command is
issued, not that it succeeds. The preferred way to turn off a Droplet is
to attempt a shutdown, with a reasonable timeout, followed by a
`power_off` action to ensure the Droplet is off. |
| `power_off` | Powers off a Droplet. A
`power_off` event is a hard shutdown and should only be used if the
`shutdown` action is not successful. It is similar to cutting the power
on a server and could lead to complications. |
| `power_on` | Powers on a Droplet. |
| `restore` | Restore a Droplet using a
backup image. The image ID that is passed in must be a backup of the
current Droplet instance. The operation will leave any embedded SSH keys
intact. |
| `password_reset` | Resets the root password
for a Droplet. A new password will be provided via email. It must be
changed after first use. |
| `resize` | Resizes a Droplet. Set the
`size` attribute to a size slug. If a permanent resize with disk changes
included is desired, set the `disk` attribute to `true`. |
| `rebuild` | Rebuilds a Droplet from a
new base image. Set the `image` attribute to an image ID or slug. |
| `rename` | Renames a Droplet. |
| `change_kernel` | Changes a Droplet's kernel.
Only applies to Droplets with externally managed kernels. All Droplets
created after March 2017 use internal kernels by default. |
| `enable_ipv6` | Enables IPv6 for a Droplet.
Once enabled for a Droplet, IPv6 can not be disabled. When enabling IPv6
on an existing Droplet, [additional OS-level
configuration](https://docs.digitalocean.com/products/networking/ipv6/how-to/enable/#on-existing-droplets)
is required. |
| `snapshot` | Takes a snapshot of a
Droplet. |
tags:
- Droplet Actions
parameters:
- $ref: '#/components/parameters/droplet_id'
requestBody:
description: >
The `type` attribute set in the request body will specify the action
that
will be taken on the Droplet. Some actions will require additional
attributes to be set as well.
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/droplet_action'
- $ref: '#/components/schemas/droplet_action_enable_backups'
- $ref: '#/components/schemas/droplet_action_change_backup_policy'
- $ref: '#/components/schemas/droplet_action_restore'
- $ref: '#/components/schemas/droplet_action_resize'
- $ref: '#/components/schemas/droplet_action_rebuild'
- $ref: '#/components/schemas/droplet_action_rename'
- $ref: '#/components/schemas/droplet_action_change_kernel'
- $ref: '#/components/schemas/droplet_action_snapshot'
discriminator:
propertyName: type
mapping:
enable_backups: '#/components/schemas/droplet_action_enable_backups'
disable_backups: '#/components/schemas/droplet_action'
change_backup_policy: '#/components/schemas/droplet_action_change_backup_policy'
reboot: '#/components/schemas/droplet_action'
power_cycle: '#/components/schemas/droplet_action'
shutdown: '#/components/schemas/droplet_action'
power_off: '#/components/schemas/droplet_action'
power_on: '#/components/schemas/droplet_action'
password_reset: '#/components/schemas/droplet_action'
restore: '#/components/schemas/droplet_action_restore'
resize: '#/components/schemas/droplet_action_resize'
rebuild: '#/components/schemas/droplet_action_rebuild'
rename: '#/components/schemas/droplet_action_rename'
change_kernel: '#/components/schemas/droplet_action_change_kernel'
enable_ipv6: '#/components/schemas/droplet_action'
snapshot: '#/components/schemas/droplet_action_snapshot'
responses:
'201':
$ref: '#/components/responses/droplet_action'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
# Enable Backups
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"enable_backups"}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Disable Backups
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"disable_backups"}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Reboot a Droplet
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"reboot"}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Power cycle a Droplet
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"power_cycle"}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Shutdown and Droplet
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"shutdown"}' \
"https://api.digitalocean.com/v2/droplets/3067649/actions"
# Power off a Droplet
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"power_off"}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Power on a Droplet
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"power_on"}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Restore a Droplet
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"restore", "image": 12389723 }' \
"https://api.digitalocean.com/v2/droplets/3067649/actions"
# Password Reset a Droplet
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"password_reset"}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Resize a Droplet
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"resize","size":"1gb"}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Rebuild a Droplet
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"rebuild","image":"ubuntu-16-04-x64"}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Rename a Droplet
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"rename","name":"nifty-new-name"}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Change the Kernel
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"change_kernel","kernel":991}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Enable IPv6
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"enable_ipv6"}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Enable Private Networking
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"enable_private_networking"}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Snapshot a Droplet
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"snapshot","name":"Nifty New Snapshot"}' \
"https://api.digitalocean.com/v2/droplets/3164450/actions"
# Acting on Tagged Droplets
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"enable_backups"}' \
"https://api.digitalocean.com/v2/droplets/actions?tag_name=awesome"
# Retrieve a Droplet Action
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/3164444/actions/36804807"
- lang: Go
source: >-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
// Enable Backups
action, _, err := client.DropletActions.EnableBackups(ctx, 3164450)
// Disable Backups
// action, _, err := client.DropletActions.DisableBackups(ctx,
3164450)
// Reboot a Droplet
// action, _, err := client.DropletActions.Reboot(ctx, 3164450)
// Power Cycle a Droplet
// action, _, err := client.DropletActions.PowerCycle(ctx, 3164450)
// Shutdown a Droplet
// action, _, err := client.DropletActions.Shutdown(ctx, 3067649)
// Power Off a Droplet
// action, _, err := client.DropletActions.PowerOff(ctx, 3164450)
// Power On a Droplet
// action, _, err := client.DropletActions.PowerOn(ctx, 3164450)
// Restore a Droplet
// action, _, err := client.DropletActions.Restore(ctx, 3164449,
12389723)
// Password Reset a Droplet
// action, _, err := client.DropletActions.PasswordReset(ctx,
3164450)
// Resize a Droplet
// action, _, err := client.DropletActions.Resize(ctx, 3164450,
"1gb", true)
// Rebuild a Droplet
// action, _, err := client.DropletActions.RebuildByImageSlug(ctx,
3164450, "ubuntu-16-04-x64")
// Rename a Droplet
// action, _, err := client.DropletActions.Rename(ctx, 3164450,
"nifty-new-name")
// Change the Kernel
// action, _, err := client.DropletActions.ChangeKernel(ctx,
3164450, 991)
// Enable IPv6
// action, _, err := client.DropletActions.EnableIPv6(ctx, 3164450)
// Enable Private Networking
// action, _, err :=
client.DropletActions.EnablePrivateNetworking(ctx, 3164450)
// Snapshot a Droplet
// action, _, err := client.DropletActions.Snapshot(ctx, 3164450,
"Nifty New Snapshot")
// Retrieve a Droplet Action
// action, _, err := client.DropletActions.Get(ctx, 3164450,
36804807)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
# Enable Backups
client.droplet_actions.enable_backups(droplet_id: 3164450)
# Disable Backups
# client.droplet_actions.disable_backups(droplet_id: 3164450)
# Reboot a Droplet
# client.droplet_actions.reboot(droplet_id: 3164450)
# Power Cycle a Droplet
# client.droplet_actions.power_cycle(droplet_id: 3164450)
# Shutdown a Droplet
# client.droplet_actions.shutdown(droplet_id: 3067649)
# Power Off a Droplet
# client.droplet_actions.power_off(droplet_id: 3164450)
# Power On a Droplet
# client.droplet_actions.power_on(droplet_id: 3164450)
# Restore a Droplet
# client.droplet_actions.restore(droplet_id: 3067649, image:
12389723)
# Password Reset a Droplet
# client.droplet_actions.password_reset(droplet_id: 3164450)
# Resize a Droplet
# client.droplet_actions.resize(droplet_id: 3164450, size: '1gb')
# Rebuild a Droplet
# client.droplet_actions.rebuild(droplet_id: 3164450, image:
'ubuntu-16-04-x64')
# Rename a Droplet
# client.droplet_actions.rename(droplet_id: 3164450, name:
'nifty-new-name')
# Change the Kernel
# client.droplet_actions.change_kernel(droplet_id: 3164450, kernel:
991)
# Enable IPv6
# client.droplet_actions.enable_ipv6(droplet_id: 3164450)
# Enable Private Networking
# client.droplet_actions.enable_private_networking(droplet_id:
3164450)
# Snapshot a Droplet
# client.droplet_actions.snapshot(droplet_id: 3164450, name: 'Nifty
New Snapshot')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
# enable back ups example
req = {
"type": "enable_backups"
}
resp = client.droplet_actions.post(droplet_id=346652, body=req)
security:
- bearer_auth:
- droplet:update
/v2/droplets/actions:
post:
operationId: dropletActions_post_byTag
summary: Acting on Tagged Droplets
description: >
Some actions can be performed in bulk on tagged Droplets. The actions
can be
initiated by sending a POST to `/v2/droplets/actions?tag_name=$TAG_NAME`
with
the action arguments.
Only a sub-set of action types are supported:
- `power_cycle`
- `power_on`
- `power_off`
- `shutdown`
- `enable_ipv6`
- `enable_backups`
- `disable_backups`
- `snapshot`
tags:
- Droplet Actions
parameters:
- $ref: '#/components/parameters/droplet_tag_name'
requestBody:
description: >
The `type` attribute set in the request body will specify the action
that
will be taken on the Droplet. Some actions will require additional
attributes to be set as well.
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/droplet_action'
- $ref: '#/components/schemas/droplet_action_snapshot'
discriminator:
propertyName: type
mapping:
enable_backups: '#/components/schemas/droplet_action'
disable_backups: '#/components/schemas/droplet_action'
power_cycle: '#/components/schemas/droplet_action'
shutdown: '#/components/schemas/droplet_action'
power_off: '#/components/schemas/droplet_action'
power_on: '#/components/schemas/droplet_action'
enable_ipv6: '#/components/schemas/droplet_action'
snapshot: '#/components/schemas/droplet_action_snapshot'
responses:
'201':
$ref: '#/components/responses/droplet_actions_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"enable_backups"}' \
"https://api.digitalocean.com/v2/droplets/actions?tag_name=awesome"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
action, _, err := client.DropletActions.PowerOffByTag(ctx, "awesome")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.droplet_actions.power_off_for_tag(tag: 'awesome')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"type": "enable_backups"
}
resp =
client.droplet_actions.post_by_tag(tag_name="production",body=req)
security:
- bearer_auth:
- droplet:update
/v2/droplets/{droplet_id}/actions/{action_id}:
get:
operationId: dropletActions_get
summary: Retrieve a Droplet Action
description: >
To retrieve a Droplet action, send a GET request to
`/v2/droplets/$DROPLET_ID/actions/$ACTION_ID`.
The response will be a JSON object with a key called `action`. The value
will
be a Droplet action object.
tags:
- Droplet Actions
parameters:
- $ref: '#/components/parameters/droplet_id'
- $ref: '#/components/parameters/action_id'
responses:
'200':
$ref: '#/components/responses/action'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/3164444/actions/36804807"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
action, _, err := client.DropletActions.Get(ctx, 3164450, 36804807)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.droplet_actions.find(droplet_id: 3164444, id: 36804807)
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplet_actions.get(droplet_id=3934132,
action_id=2432342)
security:
- bearer_auth:
- droplet:read
/v2/droplets/{droplet_id}/kernels:
get:
operationId: droplets_list_kernels
summary: List All Available Kernels for a Droplet
description: >
To retrieve a list of all kernels available to a Droplet, send a GET
request
to `/v2/droplets/$DROPLET_ID/kernels`
The response will be a JSON object that has a key called `kernels`. This
will
be set to an array of `kernel` objects, each of which contain the
standard
`kernel` attributes.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_id'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_kernels'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/3164494/kernels?page=1&per_page=1"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
kernels, _, err := client.Droplets.Kernels(ctx, 3164494, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
kernels = client.droplets.kernels(id: 3164494)
kernels.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplets.list_kernels(droplet_id=594828)
security:
- bearer_auth:
- droplet:read
/v2/droplets/{droplet_id}/firewalls:
get:
operationId: droplets_list_firewalls
summary: List all Firewalls Applied to a Droplet
description: >
To retrieve a list of all firewalls available to a Droplet, send a GET
request
to `/v2/droplets/$DROPLET_ID/firewalls`
The response will be a JSON object that has a key called `firewalls`.
This will
be set to an array of `firewall` objects, each of which contain the
standard
`firewall` attributes.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_id'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_firewalls'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
security:
- bearer_auth:
- firewall:read
/v2/droplets/{droplet_id}/neighbors:
get:
operationId: droplets_list_neighbors
summary: List Neighbors for a Droplet
description: >
To retrieve a list of any "neighbors" (i.e. Droplets that are co-located
on
the same physical hardware) for a specific Droplet, send a GET request
to
`/v2/droplets/$DROPLET_ID/neighbors`.
The results will be returned as a JSON object with a key of `droplets`.
This
will be set to an array containing objects representing any other
Droplets
that share the same physical hardware. An empty array indicates that the
Droplet is not co-located any other Droplets associated with your
account.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_id'
responses:
'200':
$ref: '#/components/responses/neighbor_droplets'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/3164494/neighbors"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplets.list_neighbors(droplet_id=594828)
security:
- bearer_auth:
- droplet:read
/v2/droplets/{droplet_id}/destroy_with_associated_resources:
get:
operationId: droplets_list_associatedResources
summary: List Associated Resources for a Droplet
description: >
To list the associated billable resources that can be destroyed along
with a
Droplet, send a GET request to the
`/v2/droplets/$DROPLET_ID/destroy_with_associated_resources` endpoint.
The response will be a JSON object containing `snapshots`, `volumes`,
and
`volume_snapshots` keys. Each will be set to an array of objects
containing
information about the associated resources.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_id'
responses:
'200':
$ref: '#/components/responses/associated_resources_list'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/3164494/destroy_with_associated_resources"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplets.list_associated_resources(droplet_id=594828)
security:
- bearer_auth:
- droplet:delete
/v2/droplets/{droplet_id}/destroy_with_associated_resources/selective:
delete:
operationId: droplets_destroy_withAssociatedResourcesSelective
summary: Selectively Destroy a Droplet and its Associated Resources
description: >
To destroy a Droplet along with a sub-set of its associated resources,
send a
DELETE request to the
`/v2/droplets/$DROPLET_ID/destroy_with_associated_resources/selective`
endpoint. The JSON body of the request should include `reserved_ips`,
`snapshots`, `volumes`,
or `volume_snapshots` keys each set to an array of IDs for the
associated
resources to be destroyed. The IDs can be found by querying the
Droplet's
associated resources. Any associated resource not included in the
request
will remain and continue to accrue changes on your account.
A successful response will include a 202 response code and no content.
Use
the status endpoint to check on the success or failure of the
destruction of
the individual resources.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/selective_destroy_associated_resource'
responses:
'202':
$ref: '#/components/responses/accepted'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"reserved_ips":["6186916"],"snapshots": ["61486916"],"volumes": ["ba49449a-7435-11ea-b89e-0a58ac14480f"],"volume_snapshots": ["edb0478d-7436-11ea-86e6-0a58ac144b91"]}' \
"https://api.digitalocean.com/v2/droplets/187000742/destroy_with_associated_resources/selective"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.droplets.destroy_with_associated_resources_selective(droplet_id=524512)
security:
- bearer_auth:
- droplet:delete
/v2/droplets/{droplet_id}/destroy_with_associated_resources/dangerous:
delete:
operationId: droplets_destroy_withAssociatedResourcesDangerous
summary: Destroy a Droplet and All of its Associated Resources (Dangerous)
description: >
To destroy a Droplet along with all of its associated resources, send a
DELETE
request to the
`/v2/droplets/$DROPLET_ID/destroy_with_associated_resources/dangerous`
endpoint. The headers of this request must include an `X-Dangerous` key
set to
`true`. To preview which resources will be destroyed, first query the
Droplet's associated resources. This operation _can not_ be reverse and
should
be used with caution.
A successful response will include a 202 response code and no content.
Use the
status endpoint to check on the success or failure of the destruction of
the
individual resources.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_id'
- $ref: '#/components/parameters/x_dangerous'
responses:
'202':
$ref: '#/components/responses/accepted'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE -H "X-Dangerous: true" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/187000742/destroy_with_associated_resources/dangerous"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.droplets.destroy_with_associated_resources_dangerous(droplet_id=524512)
security:
- bearer_auth:
- droplet:delete
/v2/droplets/{droplet_id}/destroy_with_associated_resources/status:
get:
operationId: droplets_get_DestroyAssociatedResourcesStatus
summary: Check Status of a Droplet Destroy with Associated Resources Request
description: >
To check on the status of a request to destroy a Droplet with its
associated
resources, send a GET request to the
`/v2/droplets/$DROPLET_ID/destroy_with_associated_resources/status`
endpoint.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_id'
responses:
'200':
$ref: '#/components/responses/associated_resources_status'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/3164494/destroy_with_associated_resources/status"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.droplets.get_destroy_associated_resources_status(droplet_id=5624512)
security:
- bearer_auth:
- droplet:delete
/v2/droplets/{droplet_id}/destroy_with_associated_resources/retry:
post:
operationId: droplets_destroy_retryWithAssociatedResources
summary: Retry a Droplet Destroy with Associated Resources Request
description: >
If the status of a request to destroy a Droplet with its associated
resources
reported any errors, it can be retried by sending a POST request to the
`/v2/droplets/$DROPLET_ID/destroy_with_associated_resources/retry`
endpoint.
Only one destroy can be active at a time per Droplet. If a retry is
issued
while another destroy is in progress for the Droplet a 409 status code
will
be returned. A successful response will include a 202 response code and
no
content.
tags:
- Droplets
parameters:
- $ref: '#/components/parameters/droplet_id'
responses:
'202':
$ref: '#/components/responses/accepted'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'409':
$ref: '#/components/responses/conflict'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/3164494/destroy_with_associated_resources/retry"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.droplets.destroy_retry_with_associated_resources(droplet_id=524512)
security:
- bearer_auth:
- droplet:delete
/v2/droplets/autoscale:
get:
operationId: autoscalepools_list
summary: List All Autoscale Pools
description: >
To list all autoscale pools in your team, send a GET request to
`/v2/droplets/autoscale`.
The response body will be a JSON object with a key of `autoscale_pools`
containing an array of autoscale pool objects.
These each contain the standard autoscale pool attributes.
tags:
- Droplet Autoscale Pools
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/autoscale_pool_name'
responses:
'200':
$ref: '#/components/responses/all_autoscale_pools'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/autoscale?page=1&per_page=1"
security:
- bearer_auth:
- droplet:read
post:
operationId: autoscalepools_create
summary: Create a New Autoscale Pool
description: >
To create a new autoscale pool, send a POST request to
`/v2/droplets/autoscale` setting the required attributes.
The response body will contain a JSON object with a key called
`autoscale_pool` containing the standard attributes for the new
autoscale pool.
tags:
- Droplet Autoscale Pools
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/autoscale_pool_create'
examples:
Autoscale Create Request Dynamic Config:
$ref: '#/components/examples/autoscale_create_request_dynamic'
Autoscale Create Request Static Config:
$ref: '#/components/examples/autoscale_create_request_static'
responses:
'202':
$ref: '#/components/responses/autoscale_pool_create'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{
"name": "test-autoscalergroup",
"config": {
"min_instances": 1,
"max_instances": 5,
"target_cpu_utilization": 0.5,
"cooldown_minutes": 5
},
"droplet_template": {
"size": "c-2",
"region": "tor1",
"image": "ubuntu-20-04-x64",
"tags": [
"test-ag-01"
],
"ssh_keys": [
"392594",
"385255"
],
"vpc_uuid": "c472520a-831e-4770-8135-542c57a69daa",
"ipv6": true,
"user_data": "\n#cloud-config\nruncmd:\n- apt-get update\n"
}
}' \
"https://api.digitalocean.com/v2/droplets/autoscale"
security:
- bearer_auth:
- droplet:create
/v2/droplets/autoscale/{autoscale_pool_id}:
get:
operationId: autoscalepools_get
summary: Retrieve an Existing Autoscale Pool
description: >
To show information about an individual autoscale pool, send a GET
request to
`/v2/droplets/autoscale/$AUTOSCALE_POOL_ID`.
tags:
- Droplet Autoscale Pools
parameters:
- $ref: '#/components/parameters/autoscale_pool_id'
responses:
'200':
$ref: '#/components/responses/existing_autoscale_pool'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/autoscale/880fee37-d07a-4f94-94a0-f07d9fc7bbb4"
security:
- bearer_auth:
- droplet:read
put:
operationId: autoscalepools_update
summary: Update Autoscale Pool
description: >
To update the configuration of an existing autoscale pool, send a PUT
request to
`/v2/droplets/autoscale/$AUTOSCALE_POOL_ID`. The request must contain a
full representation
of the autoscale pool including existing attributes.
tags:
- Droplet Autoscale Pools
parameters:
- $ref: '#/components/parameters/autoscale_pool_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/autoscale_pool_create'
examples:
Autoscale Update Request:
$ref: '#/components/examples/autoscale_update_request'
responses:
'200':
$ref: '#/components/responses/autoscale_pool_create'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{
"name": "test-autoscalergroup-01",
"config": {
"min_instances": 1,
"max_instances": 5,
"target_cpu_utilization": 0.5,
"cooldown_minutes": 10
},
"droplet_template": {
"size": "c-2",
"region": "tor1",
"image": "ubuntu-20-04-x64",
"tags": [
"test-ag-01"
],
"ssh_keys": [
"372862",
"367582",
"355790"
],
"vpc_uuid": "4637280e-3842-4661-a628-a6f0392959d3",
"with_droplet_agent": true,
"ipv6": true,
"user_data": "\n#cloud-config\nruncmd:\n- apt-get update\n"
}
}' \
"https://api.digitalocean.com/v2/droplets/autoscale/d0067f19-c9bd-4d8c-b28b-e464fd1fb250"
security:
- bearer_auth:
- droplet:create
delete:
operationId: autoscalepools_delete
summary: Delete autoscale pool
description: >
To destroy an autoscale pool, send a DELETE request to the
`/v2/droplets/autoscale/$AUTOSCALE_POOL_ID` endpoint.
A successful response will include a 202 response code and no content.
tags:
- Droplet Autoscale Pools
parameters:
- $ref: '#/components/parameters/autoscale_pool_id'
responses:
'202':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/autoscale/880fee37-d07a-4f94-94a0-f07d9fc7bbb4"
security:
- bearer_auth:
- droplet:delete
/v2/droplets/autoscale/{autoscale_pool_id}/dangerous:
delete:
operationId: autoscalepools_delete_dangerous
summary: Delete autoscale pool and resources
description: >
To destroy an autoscale pool and its associated resources (Droplets),
send a DELETE request to the
`/v2/droplets/autoscale/$AUTOSCALE_POOL_ID/dangerous` endpoint.
tags:
- Droplet Autoscale Pools
parameters:
- $ref: '#/components/parameters/autoscale_pool_id'
- $ref: '#/components/parameters/parameters_x_dangerous'
responses:
'202':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-H "X-Dangerous: true" \
"https://api.digitalocean.com/v2/droplets/autoscale/880fee37-d07a-4f94-94a0-f07d9fc7bbb4/dangerous"
security:
- bearer_auth:
- droplet:delete
/v2/droplets/autoscale/{autoscale_pool_id}/members:
get:
operationId: autoscalepools_list_members
summary: List members
description: >
To list the Droplets in an autoscale pool, send a GET request to
`/v2/droplets/autoscale/$AUTOSCALE_POOL_ID/members`.
The response body will be a JSON object with a key of `droplets`. This
will be
set to an array containing information about each of the Droplets in the
autoscale pool.
tags:
- Droplet Autoscale Pools
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/autoscale_pool_id'
responses:
'200':
$ref: '#/components/responses/all_members'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/autoscale/d0067f19-c9bd-4d8c-b28b-e464fd1fb250/members"
security:
- bearer_auth:
- droplet:read
/v2/droplets/autoscale/{autoscale_pool_id}/history:
get:
operationId: autoscalepools_list_history
summary: List history events
description: >
To list all of the scaling history events of an autoscale pool, send a
GET request to `/v2/droplets/autoscale/$AUTOSCALE_POOL_ID/history`.
The response body will be a JSON object with a key of `history`. This
will be
set to an array containing objects each representing a history event.
tags:
- Droplet Autoscale Pools
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/autoscale_pool_id'
responses:
'200':
$ref: '#/components/responses/history_events'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/droplets/autoscale/07445b1b-1dc1-414d-b0a7-239ac66a9148/history"
security:
- bearer_auth:
- droplet:read
/v2/firewalls:
get:
operationId: firewalls_list
summary: List All Firewalls
description: >-
To list all of the firewalls available on your account, send a GET
request to `/v2/firewalls`.
tags:
- Firewalls
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/list_firewalls_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/firewalls"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
firewalls, _, err := client.Firewalls.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
firewalls = client.firewalls.all
firewalls.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.firewalls.list()
security:
- bearer_auth:
- firewall:read
post:
operationId: firewalls_create
summary: Create a New Firewall
description: >
To create a new firewall, send a POST request to `/v2/firewalls`. The
request
must contain at least one inbound or outbound access rule.
tags:
- Firewalls
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/firewall'
- required:
- name
- anyOf:
- title: Inbound Rules
required:
- inbound_rules
- title: Outbound Rules
required:
- outbound_rules
example:
name: firewall
inbound_rules:
- protocol: tcp
ports: '80'
sources:
load_balancer_uids:
- 4de7ac8b-495b-4884-9a69-1050c6793cd6
- protocol: tcp
ports: '22'
sources:
tags:
- gateway
addresses:
- 18.0.0.0/8
outbound_rules:
- protocol: tcp
ports: '80'
destinations:
addresses:
- 0.0.0.0/0
- '::/0'
droplet_ids:
- 8043964
responses:
'202':
$ref: '#/components/responses/create_firewall_response'
'400':
$ref: '#/components/responses/bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"firewall","inbound_rules":[{"protocol":"tcp","ports":"80","sources":{"load_balancer_uids": ["4de7ac8b-495b-4884-9a69-1050c6793cd6"]}},{"protocol": "tcp","ports": "22","sources":{"tags": ["gateway"],"addresses": ["18.0.0.0/8"]}}],"outbound_rules":[{"protocol":"tcp","ports":"80","destinations":{"addresses":["0.0.0.0/0","::/0"]}}],"droplet_ids":[8043964]}' \
"https://api.digitalocean.com/v2/firewalls"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &godo.FirewallRequest{
Name: 'firewall',
InboundRules: []godo.InboundRule{
{
Protocol: 'tcp',
PortRange: '80',
Sources: &godo.Sources{
LoadBalancerUIDs: []string{'4de7ac8b-495b-4884-9a69-1050c6793cd6'},
},
},
{
Protocol: 'tcp',
PortRange: '22',
Sources: &godo.Sources{
Addresses: []string{'18.0.0.0/8'},
Tags: []string{'gateway'},
},
},
},
OutboundRules: []godo.OutboundRule{
{
Protocol: 'tcp',
PortRange: '80',
Destinations: &godo.Destinations{
Addresses: []string{'0.0.0.0/0', '::/0'},
},
},
},
DropletIDs: []int{8043964},
}
firewall, req, err := client.Firewalls.Create(ctx, createRequest)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
firewall = DropletKit::Firewall.new(
name: 'firewall',
inbound_rules: [
DropletKit::FirewallInboundRule.new(
protocol: 'tcp',
ports: '80',
sources: {
load_balancer_uids: ['4de7ac8b-495b-4884-9a69-1050c6793cd6']
}
),
DropletKit::FirewallInboundRule.new(
protocol: 'tcp',
ports: '22',
sources: {
tags: ['gateway'],
addresses: ['18.0.0.0/8']
}
)
],
outbound_rules: [
DropletKit::FirewallOutboundRule.new(
protocol: 'tcp',
ports: '80',
destinations: {
addresses: ['0.0.0.0/0', '::/0'],
}
)
],
droplet_ids: [8043964]
)
client.firewalls.create(firewall)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "firewall",
"inbound_rules": [
{
"protocol": "tcp",
"ports": "80",
"sources": {
"load_balancer_uids": [
"4de7ac8b-495b-4884-9a69-1050c6793cd6"
]
}
},
{
"protocol": "tcp",
"ports": "22",
"sources": {
"tags": [
"gateway"
],
"addresses": [
"18.0.0.0/8"
]
}
}
],
"outbound_rules": [
{
"protocol": "tcp",
"ports": "80",
"destinations": {
"addresses": [
"0.0.0.0/0",
"::/0"
]
}
}
],
"droplet_ids": [
8043964
]
}
resp = client.firewalls.create(body=req)
security:
- bearer_auth:
- firewall:create
/v2/firewalls/{firewall_id}:
get:
operationId: firewalls_get
summary: Retrieve an Existing Firewall
description: >-
To show information about an existing firewall, send a GET request to
`/v2/firewalls/$FIREWALL_ID`.
tags:
- Firewalls
parameters:
- $ref: '#/components/parameters/firewall_id'
responses:
'200':
$ref: '#/components/responses/get_firewall_response'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/firewalls/bb4b2611-3d72-467b-8602-280330ecd65c"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
firewall, _, err := client.Firewalls.Get(ctx, 'bb4b2611-3d72-467b-8602-280330ecd65c')
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.firewalls.find(id: 'bb4b2611-3d72-467b-8602-280330ecd65c')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.firewalls.get(firewall_id= "as9di9d")
security:
- bearer_auth:
- firewall:read
put:
operationId: firewalls_update
summary: Update a Firewall
description: >
To update the configuration of an existing firewall, send a PUT request
to
`/v2/firewalls/$FIREWALL_ID`. The request should contain a full
representation
of the firewall including existing attributes. **Note that any
attributes that
are not provided will be reset to their default values.**
tags:
- Firewalls
parameters:
- $ref: '#/components/parameters/firewall_id'
requestBody:
content:
application/json:
schema:
required:
- name
allOf:
- $ref: '#/components/schemas/firewall'
- anyOf:
- title: Inbound Rules
required:
- inbound_rules
- title: Outbound Rules
required:
- outbound_rules
example:
name: frontend-firewall
inbound_rules:
- protocol: tcp
ports: '8080'
sources:
load_balancer_uids:
- 4de7ac8b-495b-4884-9a69-1050c6793cd6
- protocol: tcp
ports: '22'
sources:
tags:
- gateway
addresses:
- 18.0.0.0/8
outbound_rules:
- protocol: tcp
ports: '8080'
destinations:
addresses:
- 0.0.0.0/0
- '::/0'
droplet_ids:
- 8043964
tags:
- frontend
responses:
'200':
$ref: '#/components/responses/put_firewall_response'
'400':
$ref: '#/components/responses/bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"firewall","inbound_rules":[{"protocol":"tcp","ports":"8080","sources":{"load_balancer_uids": ["4de7ac8b-495b-4884-9a69-1050c6793cd6"]}},{"protocol": "tcp","ports": "22","sources":{"tags": ["gateway"],"addresses": ["18.0.0.0/8"]}}],"outbound_rules":[{"protocol":"tcp","ports":"8080","destinations":{"addresses":["0.0.0.0/0","::/0"]}}],"droplet_ids":[8043964],"tags":["frontend"]}' \
"https://api.digitalocean.com/v2/firewalls/bb4b2611-3d72-467b-8602-280330ecd65c"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
updateRequest := &godo.FirewallRequest{
Name: 'firewall',
InboundRules: []godo.InboundRule{
{
Protocol: 'tcp',
PortRange: '8080',
Sources: &godo.Sources{
LoadBalancerUIDs: []string{'4de7ac8b-495b-4884-9a69-1050c6793cd6'},
},
},
{
Protocol: 'tcp',
PortRange: '22',
Sources: &godo.Sources{
Addresses: []string{'18.0.0.0/8'},
Tags: []string{'gateway'},
},
},
},
OutboundRules: []godo.OutboundRule{
{
Protocol: 'tcp',
PortRange: '8080',
Destinations: &godo.Destinations{
Addresses: []string{'0.0.0.0/0', '::/0'},
},
},
},
DropletIDs: []int{8043964},
Tags: []string{'frontend'}
}
firewall, req, err := client.Firewalls.Create(ctx, 'bb4b2611-3d72-467b-8602-280330ecd65c', updateRequest)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
firewall = DropletKit::Firewall.new(
name: 'firewall',
inbound_rules: [
DropletKit::FirewallInboundRule.new(
protocol: 'tcp',
ports: '8080',
sources: {
load_balancer_uids: ['4de7ac8b-495b-4884-9a69-1050c6793cd6']
}
),
DropletKit::FirewallInboundRule.new(
protocol: 'tcp',
ports: '22',
sources: {
tags: ['gateway'],
addresses: ['18.0.0.0/8']
}
)
],
outbound_rules: [
DropletKit::FirewallOutboundRule.new(
protocol: 'tcp',
ports: '8080',
destinations: {
addresses: ['0.0.0.0/0', '::/0'],
}
)
],
droplet_ids: [8043964],
tags: ['frontend']
)
client.firewalls.update(firewall, id:
'bb4b2611-3d72-467b-8602-280330ecd65c')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "frontend-firewall",
"inbound_rules": [
{
"protocol": "tcp",
"ports": "8080",
"sources": {
"load_balancer_uids": [
"4de7ac8b-495b-4884-9a69-1050c6793cd6"
]
}
},
{
"protocol": "tcp",
"ports": "22",
"sources": {
"tags": [
"gateway"
],
"addresses": [
"18.0.0.0/8"
]
}
}
],
"outbound_rules": [
{
"protocol": "tcp",
"ports": "8080",
"destinations": {
"addresses": [
"0.0.0.0/0",
"::/0"
]
}
}
],
"droplet_ids": [
8043964
],
"tags": [
"frontend"
]
}
resp = client.firewalls.update(firewall_id="3afda9", body=req)
security:
- bearer_auth:
- firewall:update
delete:
operationId: firewalls_delete
summary: Delete a Firewall
description: >
To delete a firewall send a DELETE request to
`/v2/firewalls/$FIREWALL_ID`.
No response body will be sent back, but the response code will indicate
success. Specifically, the response code will be a 204, which means that
the
action was successful with no returned body data.
tags:
- Firewalls
parameters:
- $ref: '#/components/parameters/firewall_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/firewalls/bb4b2611-3d72-467b-8602-280330ecd65c"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Firewalls.Delete(ctx, 'bb4b2611-3d72-467b-8602-280330ecd65c')
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.firewalls.delete(id: 'bb4b2611-3d72-467b-8602-280330ecd65c')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.firewalls.delete(firewall_id= "as9di9d")
security:
- bearer_auth:
- firewall:delete
/v2/firewalls/{firewall_id}/droplets:
post:
operationId: firewalls_assign_droplets
summary: Add Droplets to a Firewall
description: >
To assign a Droplet to a firewall, send a POST request to
`/v2/firewalls/$FIREWALL_ID/droplets`. In the body of the request, there
should be a `droplet_ids` attribute containing a list of Droplet IDs.
No response body will be sent back, but the response code will indicate
success. Specifically, the response code will be a 204, which means that
the
action was successful with no returned body data.
tags:
- Firewalls
parameters:
- $ref: '#/components/parameters/firewall_id'
requestBody:
content:
application/json:
schema:
properties:
droplet_ids:
type: array
description: >-
An array containing the IDs of the Droplets to be assigned
to the firewall.
items:
type: integer
example:
- 49696269
required:
- droplet_ids
example:
droplet_ids:
- 49696269
responses:
'204':
$ref: '#/components/responses/no_content'
'400':
$ref: '#/components/responses/bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"droplet_ids":[49696269]}' \
"https://api.digitalocean.com/v2/firewalls/bb4b2611-3d72-467b-8602-280330ecd65c/droplets"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Firewalls.AddDroplets(ctx, 'bb4b2611-3d72-467b-8602-280330ecd65c', 49696269)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.firewalls.add_droplets([49696269], id:
'bb4b2611-3d72-467b-8602-280330ecd65c')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"droplet_ids": [
49696269
]
}
resp = client.firewalls.assign_droplets(firewall_id="39fa4gz",
body=req)
security:
- bearer_auth:
- firewall:update
delete:
operationId: firewalls_delete_droplets
summary: Remove Droplets from a Firewall
description: >
To remove a Droplet from a firewall, send a DELETE request to
`/v2/firewalls/$FIREWALL_ID/droplets`. In the body of the request, there
should
be a `droplet_ids` attribute containing a list of Droplet IDs.
No response body will be sent back, but the response code will indicate
success. Specifically, the response code will be a 204, which means that
the
action was successful with no returned body data.
tags:
- Firewalls
parameters:
- $ref: '#/components/parameters/firewall_id'
requestBody:
content:
application/json:
schema:
properties:
droplet_ids:
type: array
description: >-
An array containing the IDs of the Droplets to be removed
from the firewall.
items:
type: integer
example:
- 49696269
required:
- droplet_ids
example:
droplet_ids:
- 49696269
responses:
'204':
$ref: '#/components/responses/no_content'
'400':
$ref: '#/components/responses/bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"droplet_ids":[49696269]}' \
"https://api.digitalocean.com/v2/firewalls/bb4b2611-3d72-467b-8602-280330ecd65c/droplets"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Firewalls.RemoveDroplets(ctx, 'bb4b2611-3d72-467b-8602-280330ecd65c', 49696269)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.firewalls.remove_droplets([49696269], id:
'bb4b2611-3d72-467b-8602-280330ecd65c')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"droplet_ids": [
49696269
]
}
resp = client.firewalls.delete_droplets(firewall_id="39fa4gz",
body=req)
security:
- bearer_auth:
- firewall:update
/v2/firewalls/{firewall_id}/tags:
post:
operationId: firewalls_add_tags
summary: Add Tags to a Firewall
description: >
To assign a tag representing a group of Droplets to a firewall, send a
POST
request to `/v2/firewalls/$FIREWALL_ID/tags`. In the body of the
request,
there should be a `tags` attribute containing a list of tag names.
No response body will be sent back, but the response code will indicate
success. Specifically, the response code will be a 204, which means that
the
action was successful with no returned body data.
tags:
- Firewalls
parameters:
- $ref: '#/components/parameters/firewall_id'
requestBody:
content:
application/json:
schema:
properties:
tags:
allOf:
- $ref: '#/components/schemas/existing_tags_array'
- description: >-
An array containing the names of the Tags to be assigned
to the firewall.
required:
- tags
example:
tags:
- frontend
responses:
'204':
$ref: '#/components/responses/no_content'
'400':
$ref: '#/components/responses/bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"tags":["frontend"]}' \
"https://api.digitalocean.com/v2/firewalls/bb4b2611-3d72-467b-8602-280330ecd65c/tags"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Firewalls.AddTags(ctx, 'bb4b2611-3d72-467b-8602-280330ecd65c', 'frontend')
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.firewalls.add_tags(['frontend'], id:
'bb4b2611-3d72-467b-8602-280330ecd65c')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"tags": [
"frontend"
]
}
resp = client.firewalls.add_tags(firewall_id="39fa4gz", body=req)
security:
- bearer_auth:
- firewall:update
delete:
operationId: firewalls_delete_tags
summary: Remove Tags from a Firewall
description: >
To remove a tag representing a group of Droplets from a firewall, send a
DELETE request to `/v2/firewalls/$FIREWALL_ID/tags`. In the body of the
request, there should be a `tags` attribute containing a list of tag
names.
No response body will be sent back, but the response code will indicate
success. Specifically, the response code will be a 204, which means that
the
action was successful with no returned body data.
tags:
- Firewalls
parameters:
- $ref: '#/components/parameters/firewall_id'
requestBody:
content:
application/json:
schema:
properties:
tags:
allOf:
- $ref: '#/components/schemas/existing_tags_array'
- description: >-
An array containing the names of the Tags to be removed
from the firewall.
required:
- tags
example:
tags:
- frontend
responses:
'204':
$ref: '#/components/responses/no_content'
'400':
$ref: '#/components/responses/bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"tags":["frontend"]}' \
"https://api.digitalocean.com/v2/firewalls/bb4b2611-3d72-467b-8602-280330ecd65c/tags"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Firewalls.RemoveTags(ctx, 'bb4b2611-3d72-467b-8602-280330ecd65c', 'frontend')
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.firewalls.remove_tags(['frontend'], id:
'bb4b2611-3d72-467b-8602-280330ecd65c')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"tags": [
"frontend"
]
}
resp = client.firewalls.delete_tags(firewall_id="39fa4gz", body=req)
security:
- bearer_auth:
- firewall:update
/v2/firewalls/{firewall_id}/rules:
post:
operationId: firewalls_add_rules
summary: Add Rules to a Firewall
description: >
To add additional access rules to a firewall, send a POST request to
`/v2/firewalls/$FIREWALL_ID/rules`. The body of the request may include
an
inbound_rules and/or outbound_rules attribute containing an array of
rules to
be added.
No response body will be sent back, but the response code will indicate
success. Specifically, the response code will be a 204, which means that
the
action was successful with no returned body data.
tags:
- Firewalls
parameters:
- $ref: '#/components/parameters/firewall_id'
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/firewall_rules'
- anyOf:
- title: Inbound Rules
required:
- inbound_rules
- title: Outbound Rules
required:
- outbound_rules
example:
inbound_rules:
- protocol: tcp
ports: '3306'
sources:
droplet_ids:
- 49696269
outbound_rules:
- protocol: tcp
ports: '3306'
destinations:
droplet_ids:
- 49696269
responses:
'204':
$ref: '#/components/responses/no_content'
'400':
$ref: '#/components/responses/bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"inbound_rules":[{"protocol":"tcp","ports":"3306","sources":{"droplet_ids":[49696269]}}],"outbound_rules":[{"protocol":"tcp","ports":"3306","destinations":{"droplet_ids":[49696269]}}]}' \
"https://api.digitalocean.com/v2/firewalls/bb4b2611-3d72-467b-8602-280330ecd65c/rules"
- lang: Go
source: >-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
ruleRequest := &godo.FirewallRulesRequest{
InboundRules: []godo.InboundRule{
{
Protocol: 'tcp',
PortRange: '3306',
Sources: &godo.Sources{
DropletIDs: []int{49696269},
},
},
},
OutboundRules: []godo.OutboundRule{
{
Protocol: 'tcp',
PortRange: '3306',
Destinations: &godo.Destinations{
DropletIDs: []int{49696269},
},
},
},
}
_, err := c.Firewalls.AddRules(ctx,
'bb4b2611-3d72-467b-8602-280330ecd65c', ruleRequest)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
inbound_rule = DropletKit::FirewallInboundRule.new(
protocol: 'tcp',
ports: '3306',
sources: {
droplet_ids: [49696269]
}
)
outbound_rule = DropletKit::FirewallOutboundRule.new(
protocol: 'tcp',
ports: '3306',
destinations: {
droplet_ids: [49696269]
}
)
client.firewalls.add_rules(inbound_rules: [inbound_rule],
outbound_rules: [outbound_rule], id:
'bb4b2611-3d72-467b-8602-280330ecd65c')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"inbound_rules": [
{
"protocol": "tcp",
"ports": "3306",
"sources": {
"droplet_ids": [
49696269
]
}
}
],
"outbound_rules": [
{
"protocol": "tcp",
"ports": "3306",
"destinations": {
"droplet_ids": [
49696269
]
}
}
]
}
resp = client.firewalls.add_rules(firewall_id="39fa4gz", body=req)
security:
- bearer_auth:
- firewall:update
delete:
operationId: firewalls_delete_rules
summary: Remove Rules from a Firewall
description: >
To remove access rules from a firewall, send a DELETE request to
`/v2/firewalls/$FIREWALL_ID/rules`. The body of the request may include
an
`inbound_rules` and/or `outbound_rules` attribute containing an array of
rules
to be removed.
No response body will be sent back, but the response code will indicate
success. Specifically, the response code will be a 204, which means that
the
action was successful with no returned body data.
tags:
- Firewalls
parameters:
- $ref: '#/components/parameters/firewall_id'
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/firewall_rules'
- anyOf:
- title: Inbound Rules
required:
- inbound_rules
- title: Outbound Rules
required:
- outbound_rules
example:
inbound_rules:
- protocol: tcp
ports: '3306'
sources:
droplet_ids:
- 49696269
outbound_rules:
- protocol: tcp
ports: '3306'
destinations:
droplet_ids:
- 49696269
responses:
'204':
$ref: '#/components/responses/no_content'
'400':
$ref: '#/components/responses/bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"inbound_rules":[{"protocol":"tcp","ports":"3306","sources":{"droplet_ids":[49696269]}}],"outbound_rules":[{"protocol":"tcp","ports":"3306","destinations":{"droplet_ids":[49696269]}}]}' \
"https://api.digitalocean.com/v2/firewalls/bb4b2611-3d72-467b-8602-280330ecd65c/rules"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
ruleRequest := &godo.FirewallRulesRequest{
InboundRules: []godo.InboundRule{
{
Protocol: 'tcp',
PortRange: '3306',
Sources: &godo.Sources{
DropletIDs: []int{49696269},
},
},
},
OutboundRules: []godo.OutboundRule{
{
Protocol: 'tcp',
PortRange: '3306',
Destinations: &godo.Destinations{
DropletIDs: []int{49696269},
},
},
},
}
_, err := c.Firewalls.RemoveRules(ctx, 'bb4b2611-3d72-467b-8602-280330ecd65c', ruleRequest)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
inbound_rule = DropletKit::FirewallInboundRule.new(
protocol: 'tcp',
ports: '3306',
sources: {
droplet_ids: [49696269]
}
)
outbound_rule = DropletKit::FirewallOutboundRule.new(
protocol: 'tcp',
ports: '3306',
destinations: {
droplet_ids: [49696269]
}
)
client.firewalls.remove_rules(inbound_rules: [inbound_rule],
outbound_rules: [outbound_rule], id:
'bb4b2611-3d72-467b-8602-280330ecd65c')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"inbound_rules": [
{
"protocol": "tcp",
"ports": "3306",
"sources": {
"droplet_ids": [
49696269
]
}
}
],
"outbound_rules": [
{
"protocol": "tcp",
"ports": "3306",
"destinations": {
"droplet_ids": [
49696269
]
}
}
]
}
resp = client.firewalls.delete_rules(firewall_id="39fa4gz",
body=req)
security:
- bearer_auth:
- firewall:update
/v2/floating_ips:
get:
operationId: floatingIPs_list
summary: List All Floating IPs
description: >-
To list all of the floating IPs available on your account, send a GET
request to `/v2/floating_ips`.
tags:
- Floating IPs
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/floating_ip_list'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/floating_ips?page=1&per_page=20"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
floatingIPs, _, err := client.FloatingIPs.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
floating_ips = client.floating_ips.all
floating_ips.each
security:
- bearer_auth:
- firewall:read
post:
operationId: floatingIPs_create
summary: Create a New Floating IP
description: >-
On creation, a floating IP must be either assigned to a Droplet or
reserved to a region.
* To create a new floating IP assigned to a Droplet, send a POST
request to `/v2/floating_ips` with the `droplet_id` attribute.
* To create a new floating IP reserved to a region, send a POST request
to
`/v2/floating_ips` with the `region` attribute.
**Note**: In addition to the standard rate limiting, only 12 floating
IPs may be created per 60 seconds.
tags:
- Floating IPs
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/floating_ip_create'
responses:
'202':
$ref: '#/components/responses/floating_ip_created'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"droplet_id": 123456}' \
"https://api.digitalocean.com/v2/floating_ips"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &godo.FloatingIPCreateRequest{
DropletID: 123456,
}
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
floating_ip = DropletKit::FloatingIp.new(droplet_id: 123456)
client.floating_ips.create(floating_ip)
security:
- bearer_auth:
- reserved_ip:create
/v2/floating_ips/{floating_ip}:
get:
operationId: floatingIPs_get
summary: Retrieve an Existing Floating IP
description: >-
To show information about a floating IP, send a GET request to
`/v2/floating_ips/$FLOATING_IP_ADDR`.
tags:
- Floating IPs
parameters:
- $ref: '#/components/parameters/floating_ip'
responses:
'200':
$ref: '#/components/responses/floating_ip'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/floating_ips/45.55.96.47"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
floatingIP, _, err := client.FloatingIPs.Get(ctx, "45.55.96.47")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.floating_ips.find(ip: '45.55.96.47')
security:
- bearer_auth:
- firewall:read
delete:
operationId: floatingIPs_delete
summary: Delete a Floating IP
description: >
To delete a floating IP and remove it from your account, send a DELETE
request
to `/v2/floating_ips/$FLOATING_IP_ADDR`.
A successful request will receive a 204 status code with no body in
response.
This indicates that the request was processed successfully.
tags:
- Floating IPs
parameters:
- $ref: '#/components/parameters/floating_ip'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/floating_ips/45.55.96.47"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.FloatingIPs.Delete(ctx, "45.55.96.34")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.floating_ips.delete(ip: '45.55.96.47')
security:
- bearer_auth:
- reserved_ip:delete
/v2/floating_ips/{floating_ip}/actions:
get:
operationId: floatingIPsAction_list
summary: List All Actions for a Floating IP
description: >-
To retrieve all actions that have been executed on a floating IP, send a
GET request to `/v2/floating_ips/$FLOATING_IP/actions`.
tags:
- Floating IP Actions
parameters:
- $ref: '#/components/parameters/floating_ip'
responses:
'200':
$ref: '#/components/responses/floating_ip_actions'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/floating_ips/45.55.96.47/actions?page=1&per_page=1"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
actions, _, err := client.FloatingIPActions.List(ctx, '45.55.96.47', opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
actions = client.floating_ip_actions.all(ip: '45.55.96.47')
actions.each
security:
- bearer_auth:
- firewall:read
post:
operationId: floatingIPsAction_post
summary: Initiate a Floating IP Action
description: >
To initiate an action on a floating IP send a POST request to
`/v2/floating_ips/$FLOATING_IP/actions`. In the JSON body to the
request,
set the `type` attribute to on of the supported action types:
| Action | Details
|------------|--------
| `assign` | Assigns a floating IP to a Droplet
| `unassign` | Unassign a floating IP from a Droplet
tags:
- Floating IP Actions
parameters:
- $ref: '#/components/parameters/floating_ip'
requestBody:
description: >
The `type` attribute set in the request body will specify the action
that
will be taken on the floating IP.
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/floating_ip_action_unassign'
- $ref: '#/components/schemas/floating_ip_action_assign'
discriminator:
propertyName: type
mapping:
unassign: '#/components/schemas/floating_ip_action_unassign'
assign: '#/components/schemas/floating_ip_action_assign'
responses:
'201':
$ref: '#/components/responses/floating_ip_action'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
# Assign a Floating IP to a Droplet
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"assign","droplet_id":8219222}' \
"https://api.digitalocean.com/v2/floating_ips/45.55.96.47/actions"
# Unassign a Floating IP
# curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"unassign"}' \
"https://api.digitalocean.com/v2/floating_ips/45.55.96.47/actions"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
// Assign a Floating IP to a Droplet
action, _, err := client.FloatingIPActions.Assign(ctx, "45.55.96.47", 8219222)
// Unassign a Floating IP
// action, _, err := client.FloatingIPActions.Unassign(ctx, "45.55.96.47")
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
# Assign a Floating IP to a Droplet
client.floating_ip_actions.assign(ip: '45.55.96.47', droplet_id:
8219222)
# Unassign a Floating IP
# client.floating_ip_actions.unassign(ip: '45.55.96.47')
security:
- bearer_auth:
- reserved_ip:update
/v2/floating_ips/{floating_ip}/actions/{action_id}:
get:
operationId: floatingIPsAction_get
summary: Retrieve an Existing Floating IP Action
description: >-
To retrieve the status of a floating IP action, send a GET request to
`/v2/floating_ips/$FLOATING_IP/actions/$ACTION_ID`.
tags:
- Floating IP Actions
parameters:
- $ref: '#/components/parameters/floating_ip'
- $ref: '#/components/parameters/action_id'
responses:
'200':
$ref: '#/components/responses/floating_ip_action'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/floating_ips/45.55.96.47/actions/72531856"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
action, _, err := client.FloatingIPActions.Get(ctx, "45.55.96.47", 72531856)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.floating_ip_actions.find(ip: '45.55.96.47', id: 72531856)
security:
- bearer_auth:
- firewall:read
/v2/functions/namespaces:
get:
operationId: functions_list_namespaces
summary: List Namespaces
description: >-
Returns a list of namespaces associated with the current user. To get
all namespaces, send a GET request to `/v2/functions/namespaces`.
tags:
- Functions
responses:
'200':
$ref: '#/components/responses/list_namespaces'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/functions/namespaces"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.functions.list_namespaces()
security:
- bearer_auth:
- function:read
- function:admin
post:
operationId: functions_create_namespace
summary: Create Namespace
description: >-
Creates a new serverless functions namespace in the desired region and
associates it with the provided label. A namespace is a collection of
functions and their associated packages, triggers, and project
specifications. To create a namespace, send a POST request to
`/v2/functions/namespaces` with the `region` and `label` properties.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/create_namespace'
tags:
- Functions
responses:
'200':
$ref: '#/components/responses/namespace_created'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/namespace_bad_request'
'422':
$ref: '#/components/responses/namespace_limit_reached'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"region": "nyc1", "label": "my namespace label"}' \
"https://api.digitalocean.com/v2/functions/namespaces"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"region": "nyc1",
"label": "my namespace"
}
resp = client.functions.create_namespace(body=req)
security:
- bearer_auth:
- function:create
- function:admin
/v2/functions/namespaces/{namespace_id}:
get:
operationId: functions_get_namespace
summary: Get Namespace
description: >-
Gets the namespace details for the given namespace UUID. To get
namespace details, send a GET request to
`/v2/functions/namespaces/$NAMESPACE_ID` with no parameters.
tags:
- Functions
parameters:
- $ref: '#/components/parameters/namespace_id'
responses:
'200':
$ref: '#/components/responses/namespace_created'
'401':
$ref: '#/components/responses/unauthorized'
'403':
$ref: '#/components/responses/namespace_not_allowed'
'404':
$ref: '#/components/responses/namespace_not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/functions/namespaces/{{namespace_id}}"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.functions.get_namespace(namespace_id="aff93af3")
security:
- bearer_auth:
- function:admin
delete:
operationId: functions_delete_namespace
summary: Delete Namespace
description: >-
Deletes the given namespace. When a namespace is deleted all assets, in
the namespace are deleted, this includes packages, functions and
triggers. Deleting a namespace is a destructive operation and assets in
the namespace are not recoverable after deletion. Some metadata is
retained, such as activations, or soft deleted for reporting purposes.
To delete namespace, send a DELETE request to
`/v2/functions/namespaces/$NAMESPACE_ID`.
A successful deletion returns a 204 response.
tags:
- Functions
parameters:
- $ref: '#/components/parameters/namespace_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/namespace_not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/functions/namespaces/{{namespace_id}}"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.functions.delete_namespace(namespace_id="aff93af3")
security:
- bearer_auth:
- function:delete
- function:admin
/v2/functions/namespaces/{namespace_id}/triggers:
get:
operationId: functions_list_triggers
summary: List Triggers
description: >-
Returns a list of triggers associated with the current user and
namespace. To get all triggers, send a GET request to
`/v2/functions/namespaces/$NAMESPACE_ID/triggers`.
parameters:
- $ref: '#/components/parameters/namespace_id'
tags:
- Functions
responses:
'200':
$ref: '#/components/responses/list_triggers'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/namespace_not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/functions/namespaces/{{namespace_id}}/triggers"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.functions.list_triggers(namespace_id="39f3ca")
security:
- bearer_auth:
- function:read
- function:admin
post:
operationId: functions_create_trigger
summary: Create Trigger
description: >-
Creates a new trigger for a given function in a namespace. To create a
trigger, send a POST request to
`/v2/functions/namespaces/$NAMESPACE_ID/triggers` with the `name`,
`function`, `type`, `is_enabled` and `scheduled_details` properties.
parameters:
- $ref: '#/components/parameters/namespace_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/create_trigger'
tags:
- Functions
responses:
'200':
$ref: '#/components/responses/trigger_response'
'400':
$ref: '#/components/responses/trigger_bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/namespace_not_found'
'422':
$ref: '#/components/responses/trigger_limit_reached'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "my trigger", "function": "hello", "type": "SCHEDULED", "is_enabled": true, "scheduled_details": {"cron": "* * * * *", "body": {"name": "Welcome to DO!"}}}' \
"https://api.digitalocean.com/v2/functions/namespaces/{{namespace_id}}/triggers"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "my trigger",
"function": "hello",
"type": "SCHEDULED",
"is_enabled": True,
"scheduled_details": {
"cron": "* * * * *",
"body": {
"name": "Welcome to DO!"
}
}
}
resp = client.functions.create_trigger(namespace_id="aff93af3",
body=req)
security:
- bearer_auth:
- function:create
- function:admin
/v2/functions/namespaces/{namespace_id}/triggers/{trigger_name}:
get:
operationId: functions_get_trigger
summary: Get Trigger
description: >-
Gets the trigger details. To get the trigger details, send a GET request
to `/v2/functions/namespaces/$NAMESPACE_ID/triggers/$TRIGGER_NAME`.
parameters:
- $ref: '#/components/parameters/namespace_id'
- $ref: '#/components/parameters/trigger_name'
tags:
- Functions
responses:
'200':
$ref: '#/components/responses/trigger_response'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/trigger_not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/functions/namespaces/{{namespace_id}}/triggers/{{trigger_name}}"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.functions.get_trigger(namespace_id="aff93af3",
trigger_name="trig_name")
security:
- bearer_auth:
- function:read
- function:admin
put:
operationId: functions_update_trigger
summary: Update Trigger
description: >-
Updates the details of the given trigger. To update a trigger, send a
PUT request to
`/v2/functions/namespaces/$NAMESPACE_ID/triggers/$TRIGGER_NAME` with new
values for the `is_enabled ` or `scheduled_details` properties.
parameters:
- $ref: '#/components/parameters/namespace_id'
- $ref: '#/components/parameters/trigger_name'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/update_trigger'
tags:
- Functions
responses:
'200':
$ref: '#/components/responses/trigger_response'
'400':
$ref: '#/components/responses/trigger_bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/trigger_not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"is_enabled": true, "scheduled_details": {"cron": "* * * * *", "body": {"name": "Welcome to DO!"}}}' \
"https://api.digitalocean.com/v2/functions/namespaces/{{namespace_id}}/triggers/{{trigger_name}}"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"is_enabled": true,
"scheduled_details": {
"cron": "* * * * *",
"body": {
"name": "Welcome to DO!"
}
}
}
resp = client.functions.update_trigger(namespace_id="39f3ca",
trigger_name="trig_name", body=req)
security:
- bearer_auth:
- function:update
- function:admin
delete:
operationId: functions_delete_trigger
summary: Delete Trigger
description: >-
Deletes the given trigger.
To delete trigger, send a DELETE request to
`/v2/functions/namespaces/$NAMESPACE_ID/triggers/$TRIGGER_NAME`.
A successful deletion returns a 204 response.
tags:
- Functions
parameters:
- $ref: '#/components/parameters/namespace_id'
- $ref: '#/components/parameters/trigger_name'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/trigger_not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/functions/namespaces/{{namespace_id}}/triggers/{{trigger_name}}"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.functions.delete_trigger(namespace_id="aff93af3",
trigger_name="trig_name")
security:
- bearer_auth:
- function:delete
- function:admin
/v2/images:
get:
operationId: images_list
summary: List All Images
description: >
To list all of the images available on your account, send a GET request
to /v2/images.
## Filtering Results
-----
It's possible to request filtered results by including certain query
parameters.
**Image Type**
Either 1-Click Application or OS Distribution images can be filtered by
using the `type` query parameter.
> Important: The `type` query parameter does not directly relate to the
`type` attribute.
To retrieve only ***distribution*** images, include the `type` query
parameter set to distribution, `/v2/images?type=distribution`.
To retrieve only ***application*** images, include the `type` query
parameter set to application, `/v2/images?type=application`.
**User Images**
To retrieve only the private images of a user, include the `private`
query parameter set to true, `/v2/images?private=true`.
**Tags**
To list all images assigned to a specific tag, include the `tag_name`
query parameter set to the name of the tag in your GET request. For
example, `/v2/images?tag_name=$TAG_NAME`.
tags:
- Images
parameters:
- $ref: '#/components/parameters/type'
- $ref: '#/components/parameters/private'
- $ref: '#/components/parameters/tag'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_images'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/images?page=1&per_page=1"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
// List all images
images, _, err := client.Images.List(ctx, opt)
// List all application images
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
images, _, err := client.Images.ListApplication(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
# List all images
images = client.images.all
images.each
# List all application images
images = client.images.all(type: 'application')
images.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.images.list()
security:
- bearer_auth:
- image:read
post:
operationId: images_create_custom
summary: Create a Custom Image
description: >
To create a new custom image, send a POST request to /v2/images.
The body must contain a url attribute pointing to a Linux virtual
machine
image to be imported into DigitalOcean.
The image must be in the raw, qcow2, vhdx, vdi, or vmdk format.
It may be compressed using gzip or bzip2 and must be smaller than 100 GB
after
being decompressed.
tags:
- Images
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/image_new_custom'
responses:
'202':
$ref: '#/components/responses/new_custom_image'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "ubuntu-18.04-minimal", "url": "http://cloud-images.ubuntu.com/minimal/releases/bionic/release/ubuntu-18.04-minimal-cloudimg-amd64.img", "distribution": "Ubuntu", "region": "nyc3", "description": "Cloud-optimized image w/ small footprint", "tags":["base-image", "prod"]}' \
"https://api.digitalocean.com/v2/images"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "ubuntu-18.04-minimal",
"url": "http://cloud-images.ubuntu.com/minimal/releases/bionic/release/ubuntu-18.04-minimal-cloudimg-amd64.img",
"distribution": "Ubuntu",
"region": "nyc3",
"description": "Cloud-optimized image w/ small footprint",
"tags": [
"base-image",
"prod"
]
}
resp = client.images.create_custom(body=req)
security:
- bearer_auth:
- image:create
/v2/images/{image_id}:
get:
operationId: images_get
summary: Retrieve an Existing Image
description: |
To retrieve information about an image, send a `GET` request to
`/v2/images/$IDENTIFIER`.
tags:
- Images
parameters:
- in: path
name: image_id
description: >
A unique number (id) or string (slug) used to identify and reference
a
specific image.
**Public** images can be identified by image `id` or `slug`.
**Private** images *must* be identified by image `id`.
required: true
schema:
anyOf:
- type: integer
- type: string
examples:
byId:
summary: Retrieve a public or private image by id
value: 62137902
bySlug:
summary: Retrieve a public image by slug
value: ubuntu-16-04-x64
responses:
'200':
$ref: '#/components/responses/existing_image'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
# Get existing image by ID
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/images/7555620"
# Get existing image by slug
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/images/ubuntu-16-04-x64"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
// Get existing image by ID
image, _, err := client.Images.GetByID(ctx, 7555620)
// Get existing image by slug
// image, _, err := client.Images.GetBySlug(ctx, "ubuntu-16-04-x64")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
# Retrieve image by ID
client.images.find(id: '7555620')
# Retrieve image by slug
client.images.find(id: 'ubuntu-16-04-x64')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.images.get(image_id=134215)
security:
- bearer_auth:
- image:read
put:
operationId: images_update
summary: Update an Image
description: >
To update an image, send a `PUT` request to `/v2/images/$IMAGE_ID`.
Set the `name` attribute to the new value you would like to use.
For custom images, the `description` and `distribution` attributes may
also be updated.
tags:
- Images
parameters:
- $ref: '#/components/parameters/image_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/image_update'
responses:
'200':
$ref: '#/components/responses/updated_image'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"new-image-name"}' \
"https://api.digitalocean.com/v2/images/7938391"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
updateRequest := &godo.ImageUpdateRequest{
Name: "new-image-name",
}
image, _, err := client.Images.Update(ctx, id, updateRequest)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
image = DropletKit::Image.new(name: 'new-image-name')
client.images.update(image, id: 7938391)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "Nifty New Snapshot",
"distribution": "Ubuntu",
"description": " "
}
resp = client.images.update(image_id=234532, body=req)
security:
- bearer_auth:
- image:update
delete:
operationId: images_delete
summary: Delete an Image
description: >
To delete a snapshot or custom image, send a `DELETE` request to
`/v2/images/$IMAGE_ID`.
tags:
- Images
parameters:
- $ref: '#/components/parameters/image_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/images/7938391"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Images.Delete(ctx, 7938391)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.images.delete(id: 7938391)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.images.delete(image_id=134215)
security:
- bearer_auth:
- image:delete
/v2/images/{image_id}/actions:
get:
operationId: imageActions_list
summary: List All Actions for an Image
description: >-
To retrieve all actions that have been executed on an image, send a GET
request to `/v2/images/$IMAGE_ID/actions`.
tags:
- Image Actions
parameters:
- $ref: '#/components/parameters/image_id'
responses:
'200':
$ref: '#/components/responses/get_image_actions_response'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/images/7555620/actions?page=1&per_page=1"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.image_actions.list(image_id=7938269)
security:
- bearer_auth:
- image:read
post:
operationId: imageActions_post
summary: Initiate an Image Action
description: >
The following actions are available on an Image.
## Convert an Image to a Snapshot
To convert an image, for example, a backup to a snapshot, send a POST
request
to `/v2/images/$IMAGE_ID/actions`. Set the `type` attribute to
`convert`.
## Transfer an Image
To transfer an image to another region, send a POST request to
`/v2/images/$IMAGE_ID/actions`. Set the `type` attribute to `transfer`
and set
`region` attribute to the slug identifier of the region you wish to
transfer
to.
tags:
- Image Actions
parameters:
- $ref: '#/components/parameters/image_id'
requestBody:
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/image_action_base'
- $ref: '#/components/schemas/image_action_transfer'
discriminator:
propertyName: type
mapping:
convert: '#/components/schemas/image_action_base'
transfer: '#/components/schemas/image_action_transfer'
responses:
'201':
$ref: '#/components/responses/post_image_action_response'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
# Transfer an Existing Image
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"transfer","region":"nyc2"}' \
"https://api.digitalocean.com/v2/images/7938269/actions"
# Convert an Image into a Snapshot
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"convert"}' \
"https://api.digitalocean.com/v2/images/7938291/actions"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
// Transfer an existing image
transferRequest := &godo.ActionRequest{
"type": "transfer",
"region": "nyc2",
}
# Transfer an Image
transfer, _, err := client.ImageActions.Transfer(ctx, 7938269, transferRequest)
# Convert an Image to a Snapshot
# client.image_actions.convert(image_id: 7938269)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
# Transfer an Image
client.image_actions.transfer(image_id: 7938269, region: 'nyc2')
# Convert an Image to a Snapshot
# client.image_actions.convert(image_id: 7938269)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"type": "convert"
}
resp = client.image_actions.post(image_id=342341, body=req)
security:
- bearer_auth:
- image:create
/v2/images/{image_id}/actions/{action_id}:
get:
operationId: imageActions_get
summary: Retrieve an Existing Action
description: >-
To retrieve the status of an image action, send a GET request to
`/v2/images/$IMAGE_ID/actions/$IMAGE_ACTION_ID`.
tags:
- Image Actions
parameters:
- $ref: '#/components/parameters/image_id'
- $ref: '#/components/parameters/action_id'
responses:
'200':
$ref: '#/components/responses/get_image_action_response'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/images/7938269/actions/36805527"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
action, _, err := client.ImageActions.Get(ctx, 7938269, 36805527)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.image_actions.find(image_id: 7938269, id: 36805527)
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.image_actions.get(action_id=36805527,
image_id=7938269)
security:
- bearer_auth:
- image:read
/v2/kubernetes/clusters:
get:
operationId: kubernetes_list_clusters
summary: List All Kubernetes Clusters
description: >
To list all of the Kubernetes clusters on your account, send a GET
request
to `/v2/kubernetes/clusters`.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_clusters'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
clusters, _, err := client.Kubernetes.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
clusters = client.kubernetes_clusters.all
clusters.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.kubernetes.list_clusters()
security:
- bearer_auth:
- kubernetes:read
post:
operationId: kubernetes_create_cluster
summary: Create a New Kubernetes Cluster
description: >
To create a new Kubernetes cluster, send a POST request to
`/v2/kubernetes/clusters`. The request must contain at least one node
pool
with at least one worker.
The request may contain a maintenance window policy describing a time
period
when disruptive maintenance tasks may be carried out. Omitting the
policy
implies that a window will be chosen automatically. See
[here](https://docs.digitalocean.com/products/kubernetes/how-to/upgrade-cluster/)
for details.
tags:
- Kubernetes
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/cluster'
examples:
Kubernetes Cluster Request:
$ref: '#/components/examples/kubernetes_clusters_basic_request'
Kubernetes Cluster with Multiple Node Pools Request:
$ref: '#/components/examples/kubernetes_clusters_multi_pool_request'
responses:
'201':
$ref: '#/components/responses/cluster_create'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "prod-cluster-01","region": "nyc1","version": "1.14.1\
-do.4","tags": ["production","web-team"],"node_pools": [{"size": "s-1vcpu-2gb","count": 3,"name": "frontend-pool","tags": ["frontend"],"labels": {"service": "frontend", "priority": "high"}},{"size": "c-4","count": 2,"name": "backend-pool"}]}' \
"https://api.digitalocean.com/v2/kubernetes/clusters"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &godo.KubernetesClusterCreateRequest{
Name: "prod-cluster-01",
RegionSlug: "nyc1",
VersionSlug: "1.14.1-do.4",
Tags: []string{"production", "web-team"},
NodePools: []*godo.KubernetesNodePoolCreateRequest{
&godo.KubernetesNodePoolCreateRequest{
Name: "frontend-pool",
Size: "s-2vcpu-2gb",
Count: 3,
Tags: []string{"frontend"},
Labels: map[string]string{"service": "frontend", "priority": "high"},
},
&godo.KubernetesNodePoolCreateRequest{
Name: "backend-pool",
Size: "c-4",
Count: 2,
},
},
}
cluster, _, err := client.Kubernetes.Create(ctx, createRequest)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
cluster = DropletKit::KubernetesCluster.new(
name: 'prod-cluster-01',
region: 'nyc1',
version: '1.14.1-do.4',
tags: ['production', 'web-team'],
node_pools: [
{
name: 'frontend-pool',
size: 's-2vcpu-2gb',
count: 3,
tags: ['frontend'],
labels: {service: 'frontend', priority: 'high'}
},
{
name: 'backend-pool',
size: 'c-4',
count: 2
}
]
)
client.kubernetes_clusters.create(cluster)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "prod-cluster-01",
"region": "nyc1",
"version": "1.18.6-do.0",
"node_pools": [
{
"size": "s-1vcpu-2gb",
"count": 3,
"name": "worker-pool"
}
]
}
resp = client.kubernetes.create_cluster(body=req)
security:
- bearer_auth:
- kubernetes:create
/v2/kubernetes/clusters/{cluster_id}:
get:
operationId: kubernetes_get_cluster
summary: Retrieve an Existing Kubernetes Cluster
description: >
To show information about an existing Kubernetes cluster, send a GET
request
to `/v2/kubernetes/clusters/$K8S_CLUSTER_ID`.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
responses:
'200':
$ref: '#/components/responses/existing_cluster'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
cluster, _, err := client.Kubernetes.Get(ctx, "bd5f5959-5e1e-4205-a714-a914373942af")
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.kubernetes_clusters.find(id:
'bd5f5959-5e1e-4205-a714-a914373942af')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.kubernetes.get_cluster(cluster_id="da8fda8")
security:
- bearer_auth:
- kubernetes:read
put:
operationId: kubernetes_update_cluster
summary: Update a Kubernetes Cluster
description: |
To update a Kubernetes cluster, send a PUT request to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID` and specify one or more of the
attributes below.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/cluster_update'
responses:
'202':
$ref: '#/components/responses/updated_cluster'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "stage-cluster-01", "tags":["staging", "web-team"]}' \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
updateRequest := &godo.KubernetesClusterUpdateRequest{
Name: "stage-cluster-01",
Tags: []string{"staging", "web-team"},
}
cluster, _, err := client.Kubernetes.Update(ctx, "bd5f5959-5e1e-4205-a714-a914373942af", updateRequest)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
cluster = DropletKit::KubernetesCluster.new(
name: 'foo',
tags: ['staging', 'web-team']
)
client.kubernetes_clusters.update(cluster, id:
'bd5f5959-5e1e-4205-a714-a914373942af')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "prod-cluster-01",
"tags": [
"k8s",
"k8s:bd5f5959-5e1e-4205-a714-a914373942af",
"production",
"web-team"
],
"maintenance_policy": {
"start_time": "12:00",
"day": "any"
},
"auto_upgrade": True,
"surge_upgrade": True,
"ha": True
}
resp = client.kubernetes.update_cluster(cluster_id="1fd32a",
body=req)
security:
- bearer_auth:
- kubernetes:update
delete:
operationId: kubernetes_delete_cluster
summary: Delete a Kubernetes Cluster
description: >
To delete a Kubernetes cluster and all services deployed to it, send a
DELETE
request to `/v2/kubernetes/clusters/$K8S_CLUSTER_ID`.
A 204 status code with no body will be returned in response to a
successful
request.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Kubernetes.Delete(ctx, "bd5f5959-5e1e-4205-a714-a914373942af")
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.kubernetes_clusters.delete(id:
'bd5f5959-5e1e-4205-a714-a914373942af')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.kubernetes.delete_cluster(cluster_id="da8fda8")
security:
- bearer_auth:
- kubernetes:delete
/v2/kubernetes/clusters/{cluster_id}/destroy_with_associated_resources:
get:
operationId: kubernetes_list_associatedResources
summary: List Associated Resources for Cluster Deletion
description: >-
To list the associated billable resources that can be destroyed along
with a cluster, send a GET request to the
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/destroy_with_associated_resources`
endpoint.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
responses:
'200':
$ref: '#/components/responses/associated_kubernetes_resources_list'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/destroy_with_associated_resources"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Kubernetes.ListAssociatedResourcesForDeletion(ctx, "bd5f5959-5e1e-4205-a714-a914373942af")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.kubernetes.list_associated_resources(cluster_id="da8fda8")
security:
- bearer_auth:
- kubernetes:read
/v2/kubernetes/clusters/{cluster_id}/destroy_with_associated_resources/selective:
delete:
operationId: kubernetes_destroy_associatedResourcesSelective
summary: Selectively Delete a Cluster and its Associated Resources
description: >
To delete a Kubernetes cluster along with a subset of its associated
resources,
send a DELETE request to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/destroy_with_associated_resources/selective`.
The JSON body of the request should include `load_balancers`, `volumes`,
or
`volume_snapshots` keys each set to an array of IDs for the associated
resources to be destroyed.
The IDs can be found by querying the cluster's associated resources
endpoint.
Any associated resource not included in the request will remain and
continue
to accrue changes on your account.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/destroy_associated_kubernetes_resources'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"load_balancers": ["4de7ac8b-495b-4884-9a69-1050c6793cd6"],"volumes": ["ba49449a-7435-11ea-b89e-0a58ac14480f"],"volume_snapshots": ["edb0478d-7436-11ea-86e6-0a58ac144b91"]}' \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/destroy_with_associated_resources/selective"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
deleteReq := &godo.KubernetesClusterDeleteSelectiveRequest{Volumes: []string{"ba49449a-7435-11ea-b89e-0a58ac14480f"}}, _, err := client.Kubernetes.DeleteSelective(ctx, "bd5f5959-5e1e-4205-a714-a914373942af", deleteReq)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"load_balancers": [
"4de7ac8b-495b-4884-9a69-1050c6793cd6"
],
"volumes": [
"ba49449a-7435-11ea-b89e-0a58ac14480f"
],
"volume_snapshots": [
"edb0478d-7436-11ea-86e6-0a58ac144b91"
]
}
resp =
client.kubernetes.destroy_associated_resources_selective(cluster_id="da8fda8",
body=req)
security:
- bearer_auth:
- kubernetes:delete
/v2/kubernetes/clusters/{cluster_id}/destroy_with_associated_resources/dangerous:
delete:
operationId: kubernetes_destroy_associatedResourcesDangerous
summary: Delete a Cluster and All of its Associated Resources (Dangerous)
description: >
To delete a Kubernetes cluster with all of its associated resources,
send a
DELETE request to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/destroy_with_associated_resources/dangerous`.
A 204 status code with no body will be returned in response to a
successful request.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/destroy_with_associated_resources/dangerous"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Kubernetes.DeleteDangerous(ctx, "bd5f5959-5e1e-4205-a714-a914373942af")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.kubernetes.destroy_associated_resources_dangerous(cluster_id="da8fda8")
security:
- bearer_auth:
- kubernetes:delete
/v2/kubernetes/clusters/{cluster_id}/kubeconfig:
get:
operationId: kubernetes_get_kubeconfig
summary: Retrieve the kubeconfig for a Kubernetes Cluster
description: >
This endpoint returns a kubeconfig file in YAML format. It can be used
to
connect to and administer the cluster using the Kubernetes command line
tool,
`kubectl`, or other programs supporting kubeconfig files (e.g., client
libraries).
The resulting kubeconfig file uses token-based authentication for
clusters
supporting it, and certificate-based authentication otherwise. For a
list of
supported versions and more information, see "[How to Connect to a
DigitalOcean
Kubernetes
Cluster](https://docs.digitalocean.com/products/kubernetes/how-to/connect-to-cluster/)".
To retrieve a kubeconfig file for use with a Kubernetes cluster, send a
GET
request to `/v2/kubernetes/clusters/$K8S_CLUSTER_ID/kubeconfig`.
Clusters supporting token-based authentication may define an expiration
by
passing a duration in seconds as a query parameter to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/kubeconfig?expiry_seconds=$DURATION_IN_SECONDS`.
If not set or 0, then the token will have a 7 day expiry. The query
parameter
has no impact in certificate-based authentication.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
- $ref: '#/components/parameters/kubernetes_expiry_seconds'
responses:
'200':
$ref: '#/components/responses/kubeconfig'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/kubeconfig"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
config, _, err := client.Kubernetes.GetKubeConfig(ctx, "bd5f5959-5e1e-4205-a714-a914373942af")
kubeConfigFile := string(config.KubeconfigYAML)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.kubernetes_clusters.kubeconfig(id:
'bd5f5959-5e1e-4205-a714-a914373942af')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.kubernetes.get_kubeconfig(cluster_id="da8fda8")
security:
- bearer_auth:
- kubernetes:access_cluster
/v2/kubernetes/clusters/{cluster_id}/credentials:
get:
operationId: kubernetes_get_credentials
summary: Retrieve Credentials for a Kubernetes Cluster
description: >
This endpoint returns a JSON object . It can be used to programmatically
construct Kubernetes clients which cannot parse kubeconfig files.
The resulting JSON object contains token-based authentication for
clusters
supporting it, and certificate-based authentication otherwise. For a
list of
supported versions and more information, see "[How to Connect to a
DigitalOcean
Kubernetes
Cluster](https://docs.digitalocean.com/products/kubernetes/how-to/connect-to-cluster/)".
To retrieve credentials for accessing a Kubernetes cluster, send a GET
request to `/v2/kubernetes/clusters/$K8S_CLUSTER_ID/credentials`.
Clusters supporting token-based authentication may define an expiration
by
passing a duration in seconds as a query parameter to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/credentials?expiry_seconds=$DURATION_IN_SECONDS`.
If not set or 0, then the token will have a 7 day expiry. The query
parameter
has no impact in certificate-based authentication.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
- $ref: '#/components/parameters/kubernetes_expiry_seconds'
responses:
'200':
$ref: '#/components/responses/credentials'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/credentials"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
credentials, _, err := client.Kubernetes.GetCredentials(ctx, "bd5f5959-5e1e-4205-a714-a914373942af")
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.kubernetes_clusters.credentials(id:
'bd5f5959-5e1e-4205-a714-a914373942af')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.kubernetes.get_credentials(cluster_id="da8fda8")
security:
- bearer_auth:
- kubernetes:access_cluster
/v2/kubernetes/clusters/{cluster_id}/upgrades:
get:
operationId: kubernetes_get_availableUpgrades
summary: Retrieve Available Upgrades for an Existing Kubernetes Cluster
description: >
To determine whether a cluster can be upgraded, and the versions to
which it
can be upgraded, send a GET request to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/upgrades`.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
responses:
'200':
$ref: '#/components/responses/available_upgrades'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/upgrades"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
upgrades, _, err := client.Kubernetes.GetUpgrades(ctx, "bd5f5959-5e1e-4205-a714-a914373942af")
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.kubernetes.get_available_upgrades(cluster_id="da8fda8")
security:
- bearer_auth:
- kubernetes:read
/v2/kubernetes/clusters/{cluster_id}/upgrade:
post:
operationId: kubernetes_upgrade_cluster
summary: Upgrade a Kubernetes Cluster
description: >
To immediately upgrade a Kubernetes cluster to a newer patch release of
Kubernetes, send a POST request to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/upgrade`.
The body of the request must specify a version attribute.
Available upgrade versions for a cluster can be fetched from
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/upgrades`.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
requestBody:
required: true
content:
application/json:
schema:
properties:
version:
type: string
example: 1.16.13-do.0
description: >-
The slug identifier for the version of Kubernetes that the
cluster will be upgraded to.
responses:
'202':
$ref: '#/components/responses/accepted'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/upgrades"
- lang: Go
source: "import (\n \"context\"\n \"os\"\n\n \"github.com/digitalocean/godo\"\n)\n\nfunc main() {\n token := os.Getenv(\"DIGITALOCEAN_TOKEN\")\n\n client := godo.NewFromToken(token)\n ctx := context.TODO()\n\n upgradeRequest := &godo.KubernetesClusterUpgradeRequest{\n \tVersionSlug: \"1.12.3-do.1\",\n }\n}"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"version": "1.16.13-do.0"
}
resp = client.kubernetes.upgrade_cluster(cluster_id="1fd32a",
body=req)
security:
- bearer_auth:
- kubernetes:update
/v2/kubernetes/clusters/{cluster_id}/node_pools:
get:
operationId: kubernetes_list_nodePools
summary: List All Node Pools in a Kubernetes Clusters
description: >
To list all of the node pools in a Kubernetes clusters, send a GET
request to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/node_pools`.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
responses:
'200':
$ref: '#/components/responses/all_node_pools'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/node_pools"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
nodePools, _, err := client.Kubernetes.ListNodePools(ctx, "9b729d1c-730c-42e1-b136-59326fb1b3bb", opt)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
node_pools = client.kubernetes_clusters.node_pools(id:
'bd5f5959-5e1e-4205-a714-a914373942af')
node_pools.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.kubernetes.list_node_pools(cluster_id="a8fsa8d")
security:
- bearer_auth:
- kubernetes:read
post:
operationId: kubernetes_add_nodePool
summary: Add a Node Pool to a Kubernetes Cluster
description: >
To add an additional node pool to a Kubernetes clusters, send a POST
request
to `/v2/kubernetes/clusters/$K8S_CLUSTER_ID/node_pools` with the
following
attributes.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/kubernetes_node_pool'
example:
size: s-1vcpu-2gb
count: 3
name: new-pool
tags:
- frontend
auto_scale: true
min_nodes: 3
max_nodes: 6
responses:
'201':
$ref: '#/components/responses/node_pool_create'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"size": "s-2vcpu-4gb","count": 1,"name": "pool-02","tags": ["web"], "labels": {"service": "web", "priority": "high"}}' \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/node_pools"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &godo.KubernetesNodePoolCreateRequest{
Name: "pool-02",
Size: "s-2vcpu-4gb",
Count: 1,
Tags: []string{"web"},
Labels: map[string]string{"service": "web", "priority": "high"},
}
nodePool, _, err := client.Kubernetes.CreateNodePool(ctx, "bd5f5959-5e1e-4205-a714-a914373942af", createRequest)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
node_pool = DropletKit::KubernetesNodePool.new(
name: 'pool-02',
size: 's-2vcpu-4gb',
count: 1,
tags: ['web']
labels: {service: 'web', priority: 'high'}
)
client.kubernetes_clusters.create_node_pool(node_pool, id:
'bd5f5959-5e1e-4205-a714-a914373942af')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"size": "s-1vcpu-2gb",
"count": 3,
"name": "new-pool",
"tags": [
"frontend"
],
"auto_scale": True,
"min_nodes": 3,
"max_nodes": 6
}
resp = client.kubernetes.add_node_pool(cluster_id="ba9d8da",
body=req)
security:
- bearer_auth:
- kubernetes:create
/v2/kubernetes/clusters/{cluster_id}/node_pools/{node_pool_id}:
get:
operationId: kubernetes_get_nodePool
summary: Retrieve a Node Pool for a Kubernetes Cluster
description: >
To show information about a specific node pool in a Kubernetes cluster,
send
a GET request to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/node_pools/$NODE_POOL_ID`.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
- $ref: '#/components/parameters/kubernetes_node_pool_id'
responses:
'200':
$ref: '#/components/responses/existing_node_pool'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/credentials"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
nodePool, _, err := client.Kubernetes.GetNodePool(ctx, "bd5f5959-5e1e-4205-a714-a914373942af", "cdda885e-7663-40c8-bc74-3a036c66545d")
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.kubernetes_clusters.find_node_pool(id:
'bd5f5959-5e1e-4205-a714-a914373942af', pool_id:
'cdda885e-7663-40c8-bc74-3a036c66545d')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.kubernetes.get_node_pool(cluster_id="da8fda8",
node_pool_id="a8a8fsa")
security:
- bearer_auth:
- kubernetes:read
put:
operationId: kubernetes_update_nodePool
summary: Update a Node Pool in a Kubernetes Cluster
description: >
To update the name of a node pool, edit the tags applied to it, or
adjust its
number of nodes, send a PUT request to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/node_pools/$NODE_POOL_ID` with
the
following attributes.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
- $ref: '#/components/parameters/kubernetes_node_pool_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/kubernetes_node_pool_update'
responses:
'202':
$ref: '#/components/responses/node_pool_update'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "frontend","count": 1, "tags":["frontend"], "labels": {"service": "frontend", "priority": "high"}}' \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/node_pools/86c9bc8c-b2c3-4d40-8000-b0c7bee27305"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
updateRequest := &godo.KubernetesNodePoolUpdateRequest{
Name: "frontend",
Count: 1,
Tags: []string{"frontend"},
Labels: map[string]string{"service": "frontend", "priority": "high"},
}
nodePool, _, err := client.Kubernetes.UpdateNodePool(ctx, "9b729d1c-730c-42e1-b136-59326fb1b3bb", "e7ed8f7c-6c1e-472f-adfb-4a9a1688b999", updateRequest)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
node_pool = DropletKit::KubernetesNodePool.new(
name: 'frontend',
count: 1,
tags: ['frontend']
labels: {service: 'frontend', priority: 'high'}
)
client.kubernetes_clusters.update_node_pool(node_pool, id:
'bd5f5959-5e1e-4205-a714-a914373942af', pool_id:
'86c9bc8c-b2c3-4d40-8000-b0c7bee27305')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "frontend-pool",
"count": 3,
"tags": [
"k8s",
"k8s:bd5f5959-5e1e-4205-a714-a914373942af",
"k8s-worker",
"production",
"web-team"
],
"labels": None,
"taints": [
{
"key": "priority",
"value": "high",
"effect": "NoSchedule"
}
],
"auto_scale": True,
"min_nodes": 3,
"max_nodes": 6
}
resp = client.kubernetes.update_node_pool(cluster_id="1fd32a",
node_pool_id="392fa3a", body=req)
security:
- bearer_auth:
- kubernetes:update
delete:
operationId: kubernetes_delete_nodePool
summary: Delete a Node Pool in a Kubernetes Cluster
description: >
To delete a node pool, send a DELETE request to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/node_pools/$NODE_POOL_ID`.
A 204 status code with no body will be returned in response to a
successful
request. Nodes in the pool will subsequently be drained and deleted.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
- $ref: '#/components/parameters/kubernetes_node_pool_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/node_pools/86c9bc8c-b2c3-4d40-8000-b0c7bee27305"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Kubernetes.DeleteNodePool(ctx, "bd5f5959-5e1e-4205-a714-a914373942af", "86c9bc8c-b2c3-4d40-8000-b0c7bee27305")
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.kubernetes_clusters.delete_node_pool(id:
'bd5f5959-5e1e-4205-a714-a914373942af', pool_id:
'86c9bc8c-b2c3-4d40-8000-b0c7bee27305')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.kubernetes.delete_node_pool(cluster_id="da8fda8",
node_pool_id="a8f3da")
security:
- bearer_auth:
- kubernetes:delete
/v2/kubernetes/clusters/{cluster_id}/node_pools/{node_pool_id}/nodes/{node_id}:
delete:
operationId: kubernetes_delete_node
summary: Delete a Node in a Kubernetes Cluster
description: >
To delete a single node in a pool, send a DELETE request to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/node_pools/$NODE_POOL_ID/nodes/$NODE_ID`.
Appending the `skip_drain=1` query parameter to the request causes node
draining to be skipped. Omitting the query parameter or setting its
value to
`0` carries out draining prior to deletion.
Appending the `replace=1` query parameter to the request causes the node
to
be replaced by a new one after deletion. Omitting the query parameter or
setting its value to `0` deletes without replacement.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
- $ref: '#/components/parameters/kubernetes_node_pool_id'
- $ref: '#/components/parameters/kubernetes_node_id'
- $ref: '#/components/parameters/kubernetes_node_skip_drain'
- $ref: '#/components/parameters/kubernetes_node_replace'
responses:
'202':
$ref: '#/components/responses/accepted'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/node_pools/86c9bc8c-b2c3-4d40-8000-b0c7bee27305/nodes/478247f8-b1bb-4f7a-8db9-2a5f8d4b8f8f?skip_drain=0&replace=1"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
recycleRequest := &godo.KubernetesNodePoolRecycleNodesRequest{
Nodes: []string{"3385619f-8ec3-42ba-bb23-8d21b8ba7518", "4b8f60ff-ba06-4523-a6a4-b8148244c7e6"},
}
_, err := client.Kubernetes.RecycleNodePoolNodes(ctx, "bd5f5959-5e1e-4205-a714-a914373942af", "86c9bc8c-b2c3-4d40-8000-b0c7bee27305", recycleRequest)
}
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.kubernetes.delete_node(cluster_id="da8fda8",
node_pool_id="a8f3da", node_id="fa09daf")
security:
- bearer_auth:
- kubernetes:delete
/v2/kubernetes/clusters/{cluster_id}/node_pools/{node_pool_id}/recycle:
post:
operationId: kubernetes_recycle_node_pool
deprecated: true
summary: Recycle a Kubernetes Node Pool
description: >
The endpoint has been deprecated. Please use the DELETE
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/node_pools/$NODE_POOL_ID/nodes/$NODE_ID`
method instead.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
- $ref: '#/components/parameters/kubernetes_node_pool_id'
requestBody:
required: true
content:
application/json:
schema:
properties:
nodes:
type: array
items:
type: string
example:
- d8db5e1a-6103-43b5-a7b3-8a948210a9fc
responses:
'202':
$ref: '#/components/responses/accepted'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
security:
- bearer_auth:
- kubernetes:delete
/v2/kubernetes/clusters/{cluster_id}/user:
get:
operationId: kubernetes_get_clusterUser
summary: Retrieve User Information for a Kubernetes Cluster
description: >
To show information the user associated with a Kubernetes cluster, send
a GET
request to `/v2/kubernetes/clusters/$K8S_CLUSTER_ID/user`.
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
responses:
'200':
$ref: '#/components/responses/cluster_user'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/user"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.kubernetes.get_cluster_user(cluster_id="da8fda8")
security:
- bearer_auth:
- kubernetes:read
/v2/kubernetes/options:
get:
operationId: kubernetes_list_options
summary: List Available Regions, Node Sizes, and Versions of Kubernetes
description: >-
To list the versions of Kubernetes available for use, the regions that
support Kubernetes, and the available node sizes, send a GET request to
`/v2/kubernetes/options`.
tags:
- Kubernetes
responses:
'200':
$ref: '#/components/responses/all_options'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/options"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
options, _, err := client.Kubernetes.GetOptions(ctx)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.kubernetes_options.all
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.kubernetes.list_options()
security:
- bearer_auth:
- kubernetes:read
/v2/kubernetes/clusters/{cluster_id}/clusterlint:
post:
operationId: kubernetes_run_clusterLint
summary: Run Clusterlint Checks on a Kubernetes Cluster
description: >
Clusterlint helps operators conform to Kubernetes best practices around
resources, security and reliability to avoid common problems while
operating
or upgrading the clusters.
To request a clusterlint run on your cluster, send a POST request to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/clusterlint`. This will run all
checks present in the `doks` group by default, if a request body is not
specified. Optionally specify the below attributes.
For information about the available checks, please refer to
[the clusterlint check
documentation](https://github.com/digitalocean/clusterlint/blob/master/checks.md).
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/clusterlint_request'
responses:
'202':
$ref: '#/components/responses/clusterlint_run'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"include_groups": ["basic"], "include_checks": ["bare-pods"]}' \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/clusterlint"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"include_groups": [
"basic",
"doks",
"security"
],
"include_checks": [
"bare-pods",
"resource-requirements"
],
"exclude_groups": [
"workload-health"
],
"exclude_checks": [
"default-namespace"
]
}
resp = client.kubernetes.run_cluster_lint(cluster_id="1fd32a",
body=req)
security:
- bearer_auth:
- kubernetes:create
get:
operationId: kubernetes_get_clusterLintResults
summary: Fetch Clusterlint Diagnostics for a Kubernetes Cluster
description: >
To request clusterlint diagnostics for your cluster, send a GET request
to
`/v2/kubernetes/clusters/$K8S_CLUSTER_ID/clusterlint`. If the `run_id`
query
parameter is provided, then the diagnostics for the specific run is
fetched.
By default, the latest results are shown.
To find out how to address clusterlint feedback, please refer to
[the clusterlint check
documentation](https://github.com/digitalocean/clusterlint/blob/master/checks.md).
tags:
- Kubernetes
parameters:
- $ref: '#/components/parameters/kubernetes_cluster_id'
- $ref: '#/components/parameters/clusterlint_run_id'
responses:
'200':
$ref: '#/components/responses/clusterlint_results'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/kubernetes/clusters/bd5f5959-5e1e-4205-a714-a914373942af/clusterlint"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.kubernetes.get_cluster_lint_results(cluster_id="da8fda8")
security:
- bearer_auth:
- kubernetes:read
/v2/kubernetes/registry:
post:
operationId: kubernetes_add_registry
summary: Add Container Registry to Kubernetes Clusters
description: >-
To integrate the container registry with Kubernetes clusters, send a
POST request to `/v2/kubernetes/registry`.
tags:
- Kubernetes
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cluster_registries'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"cluster_uuids": ["bd5f5959-5e1e-4205-a714-a914373942af", "50c2f44c-011d-493e-aee5-361a4a0d1844"]}' \
"https://api.digitalocean.com/v2/kubernetes/registry"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Kubernetes.AddRegistry(ctx, &godo.KubernetesClusterRegistryRequest{ClusterUUIDs: []string{"bd5f5959-5e1e-4205-a714-a914373942af"}})
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"cluster_uuids": [
"bd5f5959-5e1e-4205-a714-a914373942af",
"50c2f44c-011d-493e-aee5-361a4a0d1844"
]
}
resp = client.kubernetes.add_registry(body=req)
security:
- bearer_auth:
- kubernetes:create
delete:
operationId: kubernetes_remove_registry
summary: Remove Container Registry from Kubernetes Clusters
description: >-
To remove the container registry from Kubernetes clusters, send a DELETE
request to `/v2/kubernetes/registry`.
tags:
- Kubernetes
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/cluster_registries'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"cluster_uuids": ["bd5f5959-5e1e-4205-a714-a914373942af", "50c2f44c-011d-493e-aee5-361a4a0d1844"]}' \
"https://api.digitalocean.com/v2/kubernetes/registry"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Kubernetes.RemoveRegistry(ctx, &godo.KubernetesClusterRegistryRequest{ClusterUUIDs: []string{"bd5f5959-5e1e-4205-a714-a914373942af"}})
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"cluster_uuids": [
"bd5f5959-5e1e-4205-a714-a914373942af",
"50c2f44c-011d-493e-aee5-361a4a0d1844"
]
}
resp = client.kubernetes.remove_registry(body=req)
security:
- bearer_auth:
- kubernetes:delete
/v2/load_balancers:
post:
operationId: loadBalancers_create
summary: Create a New Load Balancer
description: >
To create a new load balancer instance, send a POST request to
`/v2/load_balancers`.
You can specify the Droplets that will sit behind the load balancer
using one
of two methods:
* Set `droplet_ids` to a list of specific Droplet IDs.
* Set `tag` to the name of a tag. All Droplets with this tag applied
will be
assigned to the load balancer. Additional Droplets will be automatically
assigned as they are tagged.
These methods are mutually exclusive.
tags:
- Load Balancers
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/load_balancer_create'
examples:
Basic Create Request:
$ref: '#/components/examples/load_balancer_basic_create_request'
SSL Termination Create Request:
$ref: >-
#/components/examples/load_balancer_ssl_termination_create_request
Create Request Using Droplet Tag:
$ref: '#/components/examples/load_balancer_using_tag_create_request'
Sticky Sessions and Custom Health Check:
$ref: >-
#/components/examples/load_balancer_sticky_sessions_and_health_check_create_request
responses:
'202':
$ref: '#/components/responses/load_balancer_create'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
# Create new load balancer
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "example-lb-01","size_unit": 1, "region": "nyc3", "forwarding_rules":[{"entry_protocol":"http","entry_port":80,"target_protocol":"http","target_port":80,"certificate_id":"","tls_passthrough":false}, {"entry_protocol": "https","entry_port": 444,"target_protocol": "https","target_port": 443,"tls_passthrough": true}], "health_check":{"protocol":"http","port":80,"path":"/","check_interval_seconds":10,"response_timeout_seconds":5,"healthy_threshold":5,"unhealthy_threshold":3}, "sticky_sessions":{"type":"none"}, "firewall":{"deny":["ip:1.2.3.4","cidr:2.3.4.0/24"],"allow":["cidr:1.2.0.0/16","ip:2.3.4.5"]}, "droplet_ids": [3164444, 3164445]}' \
"https://api.digitalocean.com/v2/load_balancers"
# Create new load balancer with Droplet tag
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "example-lb-01", "region": "nyc3", "size_unit": 1, "forwarding_rules":[{"entry_protocol":"http","entry_port":80,"target_protocol":"http","target_port":80,"certificate_id":"","tls_passthrough":false}, {"entry_protocol": "https","entry_port": 444,"target_protocol": "https","target_port": 443,"tls_passthrough": true}], "health_check":{"protocol":"http","port":80,"path":"/","check_interval_seconds":10,"response_timeout_seconds":5,"healthy_threshold":5,"unhealthy_threshold":3}, "sticky_sessions":{"type":"none"}, "firewall":{"deny":["ip:1.2.3.4", "cidr:2.3.4.0/24"],"allow":["cidr:1.2.0.0/16","ip:2.3.4.5"]}, "tag": "web:prod"}' \
"https://api.digitalocean.com/v2/load_balancers"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &godo.LoadBalancerRequest{
Name: "example-01",
SizeUnit: "1",
Algorithm: "round_robin",
Region: "nyc3",
ForwardingRules: []godo.ForwardingRule{
{
EntryProtocol: "http",
EntryPort: 80,
TargetProtocol: "http",
TargetPort: 80,
},
{
EntryProtocol: "https",
EntryPort: 443,
TargetProtocol: "https",
TargetPort: 443,
TlsPassthrough: true,
},
},
HealthCheck: &godo.HealthCheck{
Protocol: "http",
Port: 80,
Path: "/",
CheckIntervalSeconds: 10,
ResponseTimeoutSeconds: 5,
HealthyThreshold: 5,
UnhealthyThreshold: 3,
},
StickySessions: &godo.StickySessions{
Type: "none",
},
DropletIDs: []int{3164444, 3164445},
RedirectHttpToHttps: false,
Firewall: &godo.LBFirewall{
Deny: []string{"ip:1.2.3.4", "cidr:2.3.4.0/24"},
Allow: []string{"cidr:1.2.0.0/16", "ip:2.3.4.5"},
}
// Create new load balancer with Droplet tag
// Tag: "web:prod",
// RedirectHttpToHttps: false,
}
lb, _, err := client.LoadBalancers.Create(ctx, createRequest)
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
load_balancer = DropletKit::LoadBalancer.new(
name: 'example-lb-01',
size_unit: '1',
algorithm: 'round_robin',
# Create new load balancer with Droplet tag
# tag: 'web:prod',
droplet_ids: [ 3164444, 3164445],
redirect_http_to_https: true,
region: 'nyc3',
forwarding_rules: [
DropletKit::ForwardingRule.new(
entry_protocol: 'http',
entry_port: 80,
target_protocol: 'http',
target_port: 80,
certificate_id: '',
tls_passthrough: false
),
DropletKit::ForwardingRule.new(
entry_protocol: 'https',
entry_port: 443,
target_protocol: 'https',
target_port: 443,
certificate_id: '',
tls_passthrough: true
)
],
sticky_sessions: DropletKit::StickySession.new(
type: 'cookies',
cookie_name: 'DO-LB',
cookie_ttl_seconds: 5
),
health_check: DropletKit::HealthCheck.new(
protocol: 'http',
port: 80,
path: '/',
check_interval_seconds: 10,
response_timeout_seconds: 5,
healthy_threshold: 5,
unhealthy_threshold: 3
)
)
client.load_balancers.create(load_balancer)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "example-lb-01",
"region": "nyc3",
"forwarding_rules": [
{
"entry_protocol": "http",
"entry_port": 80,
"target_protocol": "http",
"target_port": 80
},
{
"entry_protocol": "https",
"entry_port": 443,
"target_protocol": "https",
"target_port": 443,
"tls_passthrough": True
}
],
"droplet_ids": [
3164444,
3164445
],
"project_id": "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30",
"http_idle_timeout_seconds": 60,
"firewall": {
"deny": [
"cidr:1.2.0.0/16",
"ip:2.3.4.5"
],
"allow": [
"ip:1.2.3.4",
"cidr:2.3.4.0/24"
]
}
}
resp = client.load_balancers.create(body=req)
security:
- bearer_auth:
- load_balancer:create
get:
operationId: loadBalancers_list
summary: List All Load Balancers
description: >
To list all of the load balancer instances on your account, send a GET
request
to `/v2/load_balancers`.
tags:
- Load Balancers
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_load_balancers'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/load_balancers"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
lbs, _, err := c.LoadBalancers.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
load_balancers = client.load_balancers.all
load_balancers.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.load_balancers.list()
security:
- bearer_auth:
- load_balancer:read
/v2/load_balancers/{lb_id}:
get:
operationId: loadBalancers_get
summary: Retrieve an Existing Load Balancer
description: >
To show information about a load balancer instance, send a GET request
to
`/v2/load_balancers/$LOAD_BALANCER_ID`.
tags:
- Load Balancers
parameters:
- $ref: '#/components/parameters/load_balancer_id'
responses:
'200':
$ref: '#/components/responses/existing_load_balancer'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/load_balancers/4de7ac8b-495b-4884-9a69-1050c6793cd6"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
lb, _, err := client.LoadBalancers.Get(ctx, "4de7ac8b-495b-4884-9a69-1050c6793cd6")
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.load_balancers.find(id:
'4de7ac8b-495b-4884-9a69-1050c6793cd6')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.load_balancers.get(lb_id="afda3ad")
security:
- bearer_auth:
- load_balancer:read
put:
operationId: loadBalancers_update
summary: Update a Load Balancer
description: >
To update a load balancer's settings, send a PUT request to
`/v2/load_balancers/$LOAD_BALANCER_ID`. The request should contain a
full
representation of the load balancer including existing attributes. It
may
contain _one of_ the `droplets_ids` or `tag` attributes as they are
mutually
exclusive. **Note that any attribute that is not provided will be reset
to its
default value.**
tags:
- Load Balancers
parameters:
- $ref: '#/components/parameters/load_balancer_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/load_balancer_create'
examples:
load_balancer_update_request:
$ref: '#/components/examples/load_balancer_update_request'
responses:
'200':
$ref: '#/components/responses/updated_load_balancer'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"example-lb-01","size_unit":"2","region":"nyc3","algorithm":"least_connections","forwarding_rules":[{"entry_protocol":"http","entry_port":80,"target_protocol":"http","target_port":80},{"entry_protocol":"https","entry_port":444,"target_protocol":"https","target_port":443,"tls_passthrough":true}],"health_check":{"protocol":"http","port":80,"path":"/","check_interval_seconds":10,"response_timeout_seconds":5,"healthy_threshold":5,"unhealthy_threshold":3},"sticky_sessions":{"type":"cookies", "cookie_name": "DO_LB", "cookie_ttl_seconds": 300}, "firewall":{"deny":["ip:1.2.3.4","cidr:2.3.4.0/24"], "allow":["cidr:1.2.0.0/16","ip:2.3.4.5"]}, "droplet_ids": [3164444, 3164445]}' \
"https://api.digitalocean.com/v2/load_balancers/4de7ac8b-495b-4884-9a69-1050c6793cd6"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
updateRequest := &godo.LoadBalancerRequest{
Name: "example-01",
SizeUnit: "2",
Algorithm: "round_robin",
Region: "nyc3",
ForwardingRules: []godo.ForwardingRule{
{
EntryProtocol: "http",
EntryPort: 80,
TargetProtocol: "http",
TargetPort: 80,
},
{
EntryProtocol: "https",
EntryPort: 443,
TargetProtocol: "https",
TargetPort: 443,
TlsPassthrough: true,
},
},
HealthCheck: &godo.HealthCheck{
Protocol: "http",
Port: 80,
Path: "/",
CheckIntervalSeconds: 10,
ResponseTimeoutSeconds: 5,
HealthyThreshold: 5,
UnhealthyThreshold: 3,
},
StickySessions: &godo.StickySessions{
Type: "cookies",
CookieName: "DO_LB",
CookieTtlSeconds: 300,
},
DropletIDs: []int{3164444, 3164445},
RedirectHttpToHttps: false,
Firewall: &godo.LBFirewall{
Deny: []string{"ip:1.2.3.4", "cidr:2.3.4.0/24"},
Allow: []string{"cidr:1.2.0.0/16", "ip:2.3.4.5"},
}
}
lb, _, err := c.LoadBalancers.Update(ctx, "c2c97ca7-6f63-4e23-8909-906fd86efb5e", updateRequest)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
load_balancer = DropletKit::LoadBalancer.new(
name: 'example-lb-01',
size_unit: '2',
algorithm: 'round_robin',
droplet_ids: [ 3164444, 3164445],
redirect_http_to_https: true,
region: 'nyc3',
forwarding_rules: [
DropletKit::ForwardingRule.new(
entry_protocol: 'http',
entry_port: 80,
target_protocol: 'http',
target_port: 80,
certificate_id: '',
tls_passthrough: false
),
DropletKit::ForwardingRule.new(
entry_protocol: 'https',
entry_port: 443,
target_protocol: 'https',
target_port: 443,
certificate_id: '',
tls_passthrough: true
)
],
sticky_sessions: DropletKit::StickySession.new(
type: 'cookies',
cookie_name: 'DO-LB-COOKIE',
cookie_ttl_seconds: 5
),
health_check: DropletKit::HealthCheck.new(
protocol: 'http',
port: 80,
path: '/',
check_interval_seconds: 10,
response_timeout_seconds: 5,
healthy_threshold: 5,
unhealthy_threshold: 3
)
)
client.load_balancers.update(load_balancer, id:
'4de7ac8b-495b-4884-9a69-1050c6793cd6')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "updated-example-lb-01",
"region": "nyc3",
"droplet_ids": [
3164444,
3164445
],
"algorithm": "round_robin",
"forwarding_rules": [
{
"entry_protocol": "http",
"entry_port": 80,
"target_protocol": "http",
"target_port": 80,
"certificate_id": "",
"tls_passthrough": false
},
{
"entry_protocol": "https",
"entry_port": 443,
"target_protocol": "https",
"target_port": 443,
"certificate_id": "",
"tls_passthrough": true
}
],
"health_check": {
"protocol": "http",
"port": 80,
"path": "/",
"check_interval_seconds": 10,
"response_timeout_seconds": 5,
"healthy_threshold": 5,
"unhealthy_threshold": 3
},
"sticky_sessions": {
"type": "none"
},
"redirect_http_to_https": False,
"enable_proxy_protocol": True,
"enable_backend_keepalive": True,
"vpc_uuid": "c33931f2-a26a-4e61-b85c-4e95a2ec431b",
"project_id": "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30",
"http_idle_timeout_seconds": 60,
"firewall": {
"deny": [
"cidr:1.2.0.0/16",
"ip:2.3.4.5"
],
"allow": [
"ip:1.2.3.4",
"cidr:2.3.4.0/24"
]
}
}
resp = client.load_balancers.update(lb_id="fda9fda", body=req)
security:
- bearer_auth:
- load_balancer:update
delete:
operationId: loadBalancers_delete
summary: Delete a Load Balancer
description: >
To delete a load balancer instance, disassociating any Droplets assigned
to it
and removing it from your account, send a DELETE request to
`/v2/load_balancers/$LOAD_BALANCER_ID`.
A successful request will receive a 204 status code with no body in
response.
This indicates that the request was processed successfully.
tags:
- Load Balancers
parameters:
- $ref: '#/components/parameters/load_balancer_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/load_balancers/4de7ac8b-495b-4884-9a69-1050c6793cd6"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.LoadBalancers.Delete(ctx, "4de7ac8b-495b-4884-9a69-1050c6793cd6")
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.load_balancers.delete(id:
'4de7ac8b-495b-4884-9a69-1050c6793cd6')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.load_balancers.delete(lb_id="afda3ad")
security:
- bearer_auth:
- load_balancer:delete
/v2/load_balancers/{lb_id}/droplets:
post:
operationId: loadBalancers_add_droplets
summary: Add Droplets to a Load Balancer
description: >
To assign a Droplet to a load balancer instance, send a POST request to
`/v2/load_balancers/$LOAD_BALANCER_ID/droplets`. In the body of the
request,
there should be a `droplet_ids` attribute containing a list of Droplet
IDs.
Individual Droplets can not be added to a load balancer configured with
a
Droplet tag. Attempting to do so will result in a "422 Unprocessable
Entity"
response from the API.
No response body will be sent back, but the response code will indicate
success. Specifically, the response code will be a 204, which means that
the
action was successful with no returned body data.
tags:
- Load Balancers
parameters:
- $ref: '#/components/parameters/load_balancer_id'
requestBody:
required: true
content:
application/json:
schema:
properties:
droplet_ids:
type: array
items:
type: integer
example:
- 3164444
- 3164445
description: >-
An array containing the IDs of the Droplets assigned to the
load balancer.
required:
- droplet_ids
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"droplet_ids": [3164446, 3164447]}' \
"https://api.digitalocean.com/v2/load_balancers/4de7ac8b-495b-4884-9a69-1050c6793cd6/droplets"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
droplets := []int{3164446, 3164447}
_, err := client.LoadBalancers.AddDroplets(ctx, "4de7ac8b-495b-4884-9a69-1050c6793cd6", droplets...)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.load_balancers.add_droplets([3164446, 3164447], id:
'4de7ac8b-495b-4884-9a69-1050c6793cd6')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"droplet_ids": [
3164444,
3164445
]
}
resp = client.load_balancers.add_droplets(lb_id="1fd32a", body=req)
security:
- bearer_auth:
- load_balancer:update
delete:
operationId: loadBalancers_remove_droplets
summary: Remove Droplets from a Load Balancer
description: >
To remove a Droplet from a load balancer instance, send a DELETE request
to
`/v2/load_balancers/$LOAD_BALANCER_ID/droplets`. In the body of the
request,
there should be a `droplet_ids` attribute containing a list of Droplet
IDs.
No response body will be sent back, but the response code will indicate
success. Specifically, the response code will be a 204, which means that
the
action was successful with no returned body data.
tags:
- Load Balancers
parameters:
- $ref: '#/components/parameters/load_balancer_id'
requestBody:
required: true
content:
application/json:
schema:
properties:
droplet_ids:
type: array
items:
type: integer
example:
- 3164444
- 3164445
description: >-
An array containing the IDs of the Droplets assigned to the
load balancer.
required:
- droplet_ids
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"droplet_ids": [3164446, 3164447]}' \
"https://api.digitalocean.com/v2/load_balancers/4de7ac8b-495b-4884-9a69-1050c6793cd6/droplets"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
droplets := []int{3164446, 3164447}
_, err := client.LoadBalancers.RemoveDroplets(ctx, "4de7ac8b-495b-4884-9a69-1050c6793cd6", droplets...)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.load_balancers.remove_droplets([3164446, 3164447], id:
'4de7ac8b-495b-4884-9a69-1050c6793cd6')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"droplet_ids": [
3164444,
3164445
]
}
resp = client.load_balancers.remove_droplets(lb_id="fda9fda",
body=req)
security:
- bearer_auth:
- load_balancer:update
/v2/load_balancers/{lb_id}/forwarding_rules:
post:
operationId: loadBalancers_add_forwardingRules
summary: Add Forwarding Rules to a Load Balancer
description: >
To add an additional forwarding rule to a load balancer instance, send a
POST
request to `/v2/load_balancers/$LOAD_BALANCER_ID/forwarding_rules`. In
the body
of the request, there should be a `forwarding_rules` attribute
containing an
array of rules to be added.
No response body will be sent back, but the response code will indicate
success. Specifically, the response code will be a 204, which means that
the
action was successful with no returned body data.
tags:
- Load Balancers
parameters:
- $ref: '#/components/parameters/load_balancer_id'
requestBody:
required: true
content:
application/json:
schema:
properties:
forwarding_rules:
type: array
minItems: 1
items:
$ref: '#/components/schemas/forwarding_rule'
required:
- forwarding_rules
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"forwarding_rules": [{"entry_protocol": "tcp","entry_port": 3306,"target_protocol": "tcp","target_port": 3306}]}' \
"https://api.digitalocean.com/v2/load_balancers/4de7ac8b-495b-4884-9a69-1050c6793cd6/forwarding_rules"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
forwardingRule := []godo.ForwardingRule{
{
EntryProtocol: "tcp",
EntryPort: 3306,
TargetProtocol: "tcp",
TargetPort: 3306,
},
}
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
rule = DropletKit::ForwardingRule.new(
entry_protocol: 'tcp',
entry_port: 3306,
target_protocol: 'tcp',
target_port: 3306,
certificate_id: '',
tls_passthrough: false
)
client.load_balancers.add_forwarding_rules([rule], id:
'4de7ac8b-495b-4884-9a69-1050c6793cd6')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"forwarding_rules": [
{
"entry_protocol": "https",
"entry_port": 443,
"target_protocol": "http",
"target_port": 80,
"certificate_id": "892071a0-bb95-49bc-8021-3afd67a210bf",
"tls_passthrough": False
}
]
}
resp = client.load_balancers.add_forwarding_rules(lb_id="1fd32a",
body=req)
security:
- bearer_auth:
- load_balancer:update
delete:
operationId: loadBalancers_remove_forwardingRules
summary: Remove Forwarding Rules from a Load Balancer
description: >
To remove forwarding rules from a load balancer instance, send a DELETE
request to `/v2/load_balancers/$LOAD_BALANCER_ID/forwarding_rules`. In
the
body of the request, there should be a `forwarding_rules` attribute
containing
an array of rules to be removed.
No response body will be sent back, but the response code will indicate
success. Specifically, the response code will be a 204, which means that
the
action was successful with no returned body data.
tags:
- Load Balancers
parameters:
- $ref: '#/components/parameters/load_balancer_id'
requestBody:
required: true
content:
application/json:
schema:
properties:
forwarding_rules:
type: array
minItems: 1
items:
$ref: '#/components/schemas/forwarding_rule'
required:
- forwarding_rules
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"forwarding_rules": [{"entry_protocol": "tcp","entry_port": 3306,"target_protocol": "tcp","target_port": 3306}]}' \
"https://api.digitalocean.com/v2/load_balancers/4de7ac8b-495b-4884-9a69-1050c6793cd6/forwarding_rules"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
forwardingRule := []godo.ForwardingRule{
{
EntryProtocol: "tcp",
EntryPort: 3306,
TargetProtocol: "tcp",
TargetPort: 3306,
},
}
_, err := client.LoadBalancers.RemoveForwardingRules(ctx, "4de7ac8b-495b-4884-9a69-1050c6793cd6", forwardingRule...)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
rule = DropletKit::ForwardingRule.new(
entry_protocol: 'tcp',
entry_port: 3306,
target_protocol: 'tcp',
target_port: 3306,
certificate_id: '',
tls_passthrough: false
)
client.load_balancers.remove_forwarding_rules([rule], id:
'4de7ac8b-495b-4884-9a69-1050c6793cd6')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"forwarding_rules": [
{
"entry_protocol": "https",
"entry_port": 443,
"target_protocol": "http",
"target_port": 80,
"certificate_id": "892071a0-bb95-49bc-8021-3afd67a210bf",
"tls_passthrough": False
}
]
}
resp =
client.load_balancers.remove_forwarding_rules(lb_id="fda9fda",
body=req)
security:
- bearer_auth:
- load_balancer:update
/v2/monitoring/alerts:
get:
operationId: monitoring_list_alertPolicy
summary: List Alert Policies
description: >-
Returns all alert policies that are configured for the given account. To
List all alert policies, send a GET request to `/v2/monitoring/alerts`.
tags:
- Monitoring
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/list_alert_policy_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/alerts"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.monitoring.list_alert_policy()
security:
- bearer_auth:
- monitoring:read
post:
operationId: monitoring_create_alertPolicy
summary: Create Alert Policy
description: To create a new alert, send a POST request to `/v2/monitoring/alerts`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/alert_policy_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
requestBody:
description: >
The `type` field dictates what type of entity that the alert policy
applies to and hence what type of entity is passed in the `entities`
array. If both the `tags` array and `entities` array are empty the
alert policy applies to all entities of the relevant type that are
owned by the user account. Otherwise the following table shows the
valid entity types for each type of alert policy:
Type | Description | Valid Entity Type
-----|-------------|--------------------
`v1/insights/droplet/memory_utilization_percent` | alert on the
percent of memory utilization | Droplet ID
`v1/insights/droplet/disk_read` | alert on the rate of disk read I/O
in MBps | Droplet ID
`v1/insights/droplet/load_5` | alert on the 5 minute load average |
Droplet ID
`v1/insights/droplet/load_15` | alert on the 15 minute load average |
Droplet ID
`v1/insights/droplet/disk_utilization_percent` | alert on the percent
of disk utilization | Droplet ID
`v1/insights/droplet/cpu` | alert on the percent of CPU utilization |
Droplet ID
`v1/insights/droplet/disk_write` | alert on the rate of disk write I/O
in MBps | Droplet ID
`v1/insights/droplet/public_outbound_bandwidth` | alert on the rate of
public outbound bandwidth in Mbps | Droplet ID
`v1/insights/droplet/public_inbound_bandwidth` | alert on the rate of
public inbound bandwidth in Mbps | Droplet ID
`v1/insights/droplet/private_outbound_bandwidth` | alert on the rate
of private outbound bandwidth in Mbps | Droplet ID
`v1/insights/droplet/private_inbound_bandwidth` | alert on the rate of
private inbound bandwidth in Mbps | Droplet ID
`v1/insights/droplet/load_1` | alert on the 1 minute load average |
Droplet ID
`v1/insights/lbaas/avg_cpu_utilization_percent`|alert on the percent
of CPU utilization|load balancer ID
`v1/insights/lbaas/connection_utilization_percent`|alert on the
percent of connection utilization|load balancer ID
`v1/insights/lbaas/droplet_health`|alert on Droplet health status
changes|load balancer ID
`v1/insights/lbaas/tls_connections_per_second_utilization_percent`|alert
on the percent of TLS connections per second utilization (requires at
least one HTTPS forwarding rule)|load balancer ID
`v1/insights/lbaas/increase_in_http_error_rate_percentage_5xx`|alert
on the percent increase of 5xx level http errors over 5m|load balancer
ID
`v1/insights/lbaas/increase_in_http_error_rate_percentage_4xx`|alert
on the percent increase of 4xx level http errors over 5m|load balancer
ID
`v1/insights/lbaas/increase_in_http_error_rate_count_5xx`|alert on the
count of 5xx level http errors over 5m|load balancer ID
`v1/insights/lbaas/increase_in_http_error_rate_count_4xx`|alert on the
count of 4xx level http errors over 5m|load balancer ID
`v1/insights/lbaas/high_http_request_response_time`|alert on high
average http response time|load balancer ID
`v1/insights/lbaas/high_http_request_response_time_50p`|alert on high
50th percentile http response time|load balancer ID
`v1/insights/lbaas/high_http_request_response_time_95p`|alert on high
95th percentile http response time|load balancer ID
`v1/insights/lbaas/high_http_request_response_time_99p`|alert on high
99th percentile http response time|load balancer ID
`v1/dbaas/alerts/load_15_alerts` | alert on 15 minute load average
across the database cluster | database cluster UUID
`v1/dbaas/alerts/memory_utilization_alerts` | alert on the percent
memory utilization average across the database cluster | database
cluster UUID
`v1/dbaas/alerts/disk_utilization_alerts` | alert on the percent disk
utilization average across the database cluster | database cluster
UUID
`v1/dbaas/alerts/cpu_alerts` | alert on the percent CPU usage average
across the database cluster | database cluster UUID
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/alert_policy_request'
x-codeSamples:
- lang: cURL
source: >-
curl -X POST
\
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/alerts" \
--data '{"alerts":{"email":["alerts@example.com"]},"compare":"GreaterThan","description":"CPU Alert","enabled":true,"entities":["12345678"],"tags":["droplet_tag"],"type":"v1/insights/droplet/cpu","value":80,"window":"5m"}'
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"alerts": {
"email": [
"bob@exmaple.com"
],
"slack": [
{
"channel": "Production Alerts",
"url": "https://hooks.slack.com/services/T1234567/AAAAAAAA/ZZZZZZ"
}
]
},
"compare": "GreaterThan",
"description": "CPU Alert",
"enabled": True,
"entities": [
"192018292"
],
"tags": [
"droplet_tag"
],
"type": "v1/insights/droplet/cpu",
"value": 80,
"window": "5m"
}
resp = client.monitoring.create_alert_policy(body=req)
security:
- bearer_auth:
- monitoring:create
/v2/monitoring/alerts/{alert_uuid}:
get:
operationId: monitoring_get_alertPolicy
summary: Retrieve an Existing Alert Policy
description: >-
To retrieve a given alert policy, send a GET request to
`/v2/monitoring/alerts/{alert_uuid}`
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/alert_policy_response'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/alert_uuid'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/alerts/78b3da62-27e5-49ba-ac70-5db0b5935c64"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.monitoring.get_alert_policy(alert_uuid="dfa8da")
security:
- bearer_auth:
- monitoring:read
put:
operationId: monitoring_update_alertPolicy
summary: Update an Alert Policy
description: >-
To update en existing policy, send a PUT request to
`v2/monitoring/alerts/{alert_uuid}`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/alert_policy_response'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/alert_uuid'
requestBody:
description: >
The `type` field dictates what type of entity that the alert policy
applies to and hence what type of entity is passed in the `entities`
array. If both the `tags` array and `entities` array are empty the
alert policy applies to all entities of the relevant type that are
owned by the user account. Otherwise the following table shows the
valid entity types for each type of alert policy:
Type | Description | Valid Entity Type
-----|-------------|--------------------
`v1/insights/droplet/memory_utilization_percent` | alert on the
percent of memory utilization | Droplet ID
`v1/insights/droplet/disk_read` | alert on the rate of disk read I/O
in MBps | Droplet ID
`v1/insights/droplet/load_5` | alert on the 5 minute load average |
Droplet ID
`v1/insights/droplet/load_15` | alert on the 15 minute load average |
Droplet ID
`v1/insights/droplet/disk_utilization_percent` | alert on the percent
of disk utilization | Droplet ID
`v1/insights/droplet/cpu` | alert on the percent of CPU utilization |
Droplet ID
`v1/insights/droplet/disk_write` | alert on the rate of disk write I/O
in MBps | Droplet ID
`v1/insights/droplet/public_outbound_bandwidth` | alert on the rate of
public outbound bandwidth in Mbps | Droplet ID
`v1/insights/droplet/public_inbound_bandwidth` | alert on the rate of
public inbound bandwidth in Mbps | Droplet ID
`v1/insights/droplet/private_outbound_bandwidth` | alert on the rate
of private outbound bandwidth in Mbps | Droplet ID
`v1/insights/droplet/private_inbound_bandwidth` | alert on the rate of
private inbound bandwidth in Mbps | Droplet ID
`v1/insights/droplet/load_1` | alert on the 1 minute load average |
Droplet ID
`v1/insights/lbaas/avg_cpu_utilization_percent`|alert on the percent
of CPU utilization|load balancer ID
`v1/insights/lbaas/connection_utilization_percent`|alert on the
percent of connection utilization|load balancer ID
`v1/insights/lbaas/droplet_health`|alert on Droplet health status
changes|load balancer ID
`v1/insights/lbaas/tls_connections_per_second_utilization_percent`|alert
on the percent of TLS connections per second utilization (requires at
least one HTTPS forwarding rule)|load balancer ID
`v1/insights/lbaas/increase_in_http_error_rate_percentage_5xx`|alert
on the percent increase of 5xx level http errors over 5m|load balancer
ID
`v1/insights/lbaas/increase_in_http_error_rate_percentage_4xx`|alert
on the percent increase of 4xx level http errors over 5m|load balancer
ID
`v1/insights/lbaas/increase_in_http_error_rate_count_5xx`|alert on the
count of 5xx level http errors over 5m|load balancer ID
`v1/insights/lbaas/increase_in_http_error_rate_count_4xx`|alert on the
count of 4xx level http errors over 5m|load balancer ID
`v1/insights/lbaas/high_http_request_response_time`|alert on high
average http response time|load balancer ID
`v1/insights/lbaas/high_http_request_response_time_50p`|alert on high
50th percentile http response time|load balancer ID
`v1/insights/lbaas/high_http_request_response_time_95p`|alert on high
95th percentile http response time|load balancer ID
`v1/insights/lbaas/high_http_request_response_time_99p`|alert on high
99th percentile http response time|load balancer ID
`v1/dbaas/alerts/load_15_alerts` | alert on 15 minute load average
across the database cluster | database cluster UUID
`v1/dbaas/alerts/memory_utilization_alerts` | alert on the percent
memory utilization average across the database cluster | database
cluster UUID
`v1/dbaas/alerts/disk_utilization_alerts` | alert on the percent disk
utilization average across the database cluster | database cluster
UUID
`v1/dbaas/alerts/cpu_alerts` | alert on the percent CPU usage average
across the database cluster | database cluster UUID
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/alert_policy_request'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/alerts/78b3da62-27e5-49ba-ac70-5db0b5935c64" \
--data '{"alerts":{"email":["alerts@example.com"]},"compare":"GreaterThan","description":"CPU Alert","enabled":true,"entities":["12345678"],"tags":["droplet_tag"],"type":"v1/insights/droplet/cpu","value":80,"window":"5m"}'
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"alerts": {
"email": [
"bob@exmaple.com"
],
"slack": [
{
"channel": "Production Alerts",
"url": "https://hooks.slack.com/services/T1234567/AAAAAAAA/ZZZZZZ"
}
]
},
"compare": "GreaterThan",
"description": "CPU Alert",
"enabled": True,
"entities": [
"192018292"
],
"tags": [
"droplet_tag"
],
"type": "v1/insights/droplet/cpu",
"value": 80,
"window": "5m"
}
resp = client.monitoring.update_alert_policy(alert_uuid="fda9da",
body=req)
security:
- bearer_auth:
- monitoring:update
delete:
operationId: monitoring_delete_alertPolicy
summary: Delete an Alert Policy
description: >-
To delete an alert policy, send a DELETE request to
`/v2/monitoring/alerts/{alert_uuid}`
tags:
- Monitoring
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/alert_uuid'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/alerts/{alert_uuid}"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.monitoring.delete_alert_policy(alert_uuid="dfa8da")
security:
- bearer_auth:
- monitoring:delete
/v2/monitoring/metrics/droplet/bandwidth:
get:
operationId: monitoring_get_dropletBandwidthMetrics
summary: Get Droplet Bandwidth Metrics
description: >-
To retrieve bandwidth metrics for a given Droplet, send a GET request to
`/v2/monitoring/metrics/droplet/bandwidth`. Use the `interface` query
parameter to specify if the results should be for the `private` or
`public` interface. Use the `direction` query parameter to specify if
the results should be for `inbound` or `outbound` traffic.
The metrics in the response body are in megabits per second (Mbps).
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/droplet_bandwidth_metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_droplet_id'
- $ref: '#/components/parameters/network_interface'
- $ref: '#/components/parameters/network_direction'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/droplet/bandwidth?host_id=222651441&interface=public&direction=outbound&start=1636051668&end=1636051668"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.monitoring.get_droplet_bandwidth_metrics(alert_uuid="dfa8da",
host_id="17209102", interface="private", direction="inbound",
start="1620683817", end="1620705417")
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/droplet/cpu:
get:
operationId: monitoring_get_DropletCpuMetrics
summary: Get Droplet CPU Metrics
description: >-
To retrieve CPU metrics for a given droplet, send a GET request to
`/v2/monitoring/metrics/droplet/cpu`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/droplet_cpu_metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_droplet_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/droplet/cpu?host_id=222651441&start=1636051668&end=1636051668"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.monitoring.get_droplet_cpu_metrics(host_id="17209102",
start="1620683817", end="1620705417")
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/droplet/filesystem_free:
get:
operationId: monitoring_get_dropletFilesystemFreeMetrics
summary: Get Droplet Filesystem Free Metrics
description: >-
To retrieve filesystem free metrics for a given droplet, send a GET
request to `/v2/monitoring/metrics/droplet/filesystem_free`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/droplet_filesystem_metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_droplet_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/droplet/filesystem_free?host_id=222651441&start=1636051668&end=1636051668"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.monitoring.get_droplet_filesystem_free_metrics(host_id="17209102",
start="1620683817", end="1620705417")
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/droplet/filesystem_size:
get:
operationId: monitoring_get_dropletFilesystemSizeMetrics
summary: Get Droplet Filesystem Size Metrics
description: >-
To retrieve filesystem size metrics for a given droplet, send a GET
request to `/v2/monitoring/metrics/droplet/filesystem_size`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/droplet_filesystem_metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_droplet_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/droplet/filesystem_size?host_id=222651441&interface=public&direction=outbound&start=1636051668&end=1636051668"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.monitoring.get_droplet_filesystem_size_metrics(host_id="17209102",
start="1620683817", end="1620705417")
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/droplet/load_1:
get:
operationId: monitoring_get_dropletLoad1Metrics
summary: Get Droplet Load1 Metrics
description: >-
To retrieve 1 minute load average metrics for a given droplet, send a
GET request to `/v2/monitoring/metrics/droplet/load_1`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_droplet_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/droplet/load_1?host_id=222651441&start=1636051668&end=1636051668"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.monitoring.get_droplet_load1_metrics(host_id="17209102",
start="1620683817", end="1620705417")
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/droplet/load_5:
get:
operationId: monitoring_get_dropletLoad5Metrics
summary: Get Droplet Load5 Metrics
description: >-
To retrieve 5 minute load average metrics for a given droplet, send a
GET request to `/v2/monitoring/metrics/droplet/load_5`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_droplet_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/droplet/load_5?host_id=222651441&start=1636051668&end=1636051668"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.monitoring.get_droplet_load5_metrics(host_id="17209102",
start="1620683817", end="1620705417")
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/droplet/load_15:
get:
operationId: monitoring_get_dropletLoad15Metrics
summary: Get Droplet Load15 Metrics
description: >-
To retrieve 15 minute load average metrics for a given droplet, send a
GET request to `/v2/monitoring/metrics/droplet/load_15`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_droplet_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/droplet/load_15?host_id=222651441&start=1636051668&end=1636051668"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.monitoring.get_droplet_load15_metrics(host_id="17209102",
start="1620683817", end="1620705417")
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/droplet/memory_cached:
get:
operationId: monitoring_get_dropletMemoryCachedMetrics
summary: Get Droplet Cached Memory Metrics
description: >-
To retrieve cached memory metrics for a given droplet, send a GET
request to `/v2/monitoring/metrics/droplet/memory_cached`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_droplet_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/droplet/memory_cached?host_id=222651441&start=1636051668&end=1636051668"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.monitoring.get_droplet_memory_cached_metrics(host_id="17209102",
start="1620683817", end="1620705417")
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/droplet/memory_free:
get:
operationId: monitoring_get_dropletMemoryFreeMetrics
summary: Get Droplet Free Memory Metrics
description: >-
To retrieve free memory metrics for a given droplet, send a GET request
to `/v2/monitoring/metrics/droplet/memory_free`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_droplet_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/droplet/memory_free?host_id=222651441&start=1636051668&end=1636051668"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.monitoring.get_droplet_memory_free_metrics(host_id="17209102",
start="1620683817", end="1620705417")
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/droplet/memory_total:
get:
operationId: monitoring_get_dropletMemoryTotalMetrics
summary: Get Droplet Total Memory Metrics
description: >-
To retrieve total memory metrics for a given droplet, send a GET request
to `/v2/monitoring/metrics/droplet/memory_total`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_droplet_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/droplet/memory_total?host_id=222651441&start=1636051668&end=1636051668"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.monitoring.get_droplet_memory_total_metrics(host_id="17209102",
start="1620683817", end="1620705417")
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/droplet/memory_available:
get:
operationId: monitoring_get_dropletMemoryAvailableMetrics
summary: Get Droplet Available Memory Metrics
description: >-
To retrieve available memory metrics for a given droplet, send a GET
request to `/v2/monitoring/metrics/droplet/memory_available`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_droplet_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/droplet/memory_available?host_id=222651441&start=1636051668&end=1636051668"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.monitoring.get_droplet_memory_available_metrics(host_id="17209102",
start="1620683817", end="1620705417")
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/apps/memory_percentage:
get:
operationId: monitoring_get_appMemoryPercentageMetrics
summary: Get App Memory Percentage Metrics
description: >-
To retrieve memory percentage metrics for a given app, send a GET
request to `/v2/monitoring/metrics/apps/memory_percentage`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/app_metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_app_id'
- $ref: '#/components/parameters/app_component'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/apps/memory_percentage?app_id=2db3c021-15ad-4088-bfe8-99dc972b9cf6&app_component=sample-application&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/apps/cpu_percentage:
get:
operationId: monitoring_get_appCPUPercentageMetrics
summary: Get App CPU Percentage Metrics
description: >-
To retrieve cpu percentage metrics for a given app, send a GET request
to `/v2/monitoring/metrics/apps/cpu_percentage`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/app_metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_app_id'
- $ref: '#/components/parameters/app_component'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/apps/cpu_percentage?app_id=2db3c021-15ad-4088-bfe8-99dc972b9cf6&app_component=sample-application&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/apps/restart_count:
get:
operationId: monitoring_get_appRestartCountMetrics.yml
summary: Get App Restart Count Metrics
description: >-
To retrieve restart count metrics for a given app, send a GET request to
`/v2/monitoring/metrics/apps/restart_count`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/app_metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_app_id'
- $ref: '#/components/parameters/app_component'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/apps/restart_count?app_id=2db3c021-15ad-4088-bfe8-99dc972b9cf6&app_component=sample-application&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_connections_current:
get:
operationId: monitoring_get_lb_frontend_connections_current
summary: Get Load Balancer Frontend Total Current Active Connections Metrics
description: >-
To retrieve frontend total current active connections for a given load
balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_connections_current`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_connections_current?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_connections_limit:
get:
operationId: monitoring_get_lb_frontend_connections_limit
summary: Get Load Balancer Frontend Max Connections Limit Metrics
description: >-
To retrieve frontend max connections limit for a given load balancer,
send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_connections_limit`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_connections_limit?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_cpu_utilization:
get:
operationId: monitoring_get_lb_frontend_cpu_utilization
summary: Get Load Balancer Frontend Average Percentage CPU Utilization Metrics
description: >-
To retrieve frontend average percentage CPU utilization for a given load
balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_cpu_utilization`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_cpu_utilization?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_firewall_dropped_bytes:
get:
operationId: monitoring_get_lb_frontend_firewall_dropped_bytes
summary: Get Load Balancer Frontend Firewall Dropped Bytes Metrics
description: >-
To retrieve firewall dropped bytes for a given load balancer, send a GET
request to
`/v2/monitoring/metrics/load_balancer/frontend_firewall_dropped_bytes`.
This is currently only supported for network load balancers.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_firewall_dropped_bytes?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_firewall_dropped_packets:
get:
operationId: monitoring_get_lb_frontend_firewall_dropped_packets
summary: Get Load Balancer Frontend Firewall Dropped Packets Metrics
description: >-
To retrieve firewall dropped packets per second for a given load
balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_firewall_dropped_packets`.
This is currently only supported for network load balancers.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_firewall_dropped_packets?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_http_responses:
get:
operationId: monitoring_get_lb_frontend_http_responses
summary: Get Load Balancer Frontend HTTP Rate Of Response Code Metrics
description: >-
To retrieve frontend HTTP rate of response code for a given load
balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_http_responses`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_http_responses?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_http_requests_per_second:
get:
operationId: monitoring_get_lb_frontend_http_requests_per_second
summary: Get Load Balancer Frontend HTTP Requests Metrics
description: >-
To retrieve frontend HTTP requests per second for a given load balancer,
send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_http_requests_per_second`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_http_requests_per_second?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_network_throughput_http:
get:
operationId: monitoring_get_lb_frontend_network_throughput_http
summary: Get Load Balancer Frontend HTTP Throughput Metrics
description: >-
To retrieve frontend HTTP throughput in bytes per second for a given
load balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_network_throughput_http`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_network_throughput_http?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_network_throughput_udp:
get:
operationId: monitoring_get_lb_frontend_network_throughput_udp
summary: Get Load Balancer Frontend UDP Throughput Metrics
description: >-
To retrieve frontend UDP throughput in bytes per second for a given load
balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_network_throughput_udp`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_network_throughput_udp?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_network_throughput_tcp:
get:
operationId: monitoring_get_lb_frontend_network_throughput_tcp
summary: Get Load Balancer Frontend TCP Throughput Metrics
description: >-
To retrieve frontend TCP throughput in bytes per second for a given load
balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_network_throughput_tcp`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_network_throughput_tcp?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_nlb_tcp_network_throughput:
get:
operationId: monitoring_get_lb_frontend_nlb_tcp_network_throughput
summary: Get Network Load Balancer Frontend TCP Throughput Metrics
description: >-
To retrieve frontend TCP throughput in bytes per second for a given load
balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_nlb_tcp_network_throughput`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_nlb_tcp_network_throughput?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_nlb_udp_network_throughput:
get:
operationId: monitoring_get_lb_frontend_nlb_udp_network_throughput
summary: Get Network Load Balancer Frontend UDP Throughput Metrics
description: >-
To retrieve frontend UDP throughput in bytes per second for a given load
balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_nlb_udp_network_throughput`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_nlb_udp_network_throughput?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_tls_connections_current:
get:
operationId: monitoring_get_lb_frontend_tls_connections_current
summary: Get Load Balancer Frontend Current TLS Connections Rate Metrics
description: >-
To retrieve frontend current TLS connections rate for a given load
balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_tls_connections_current`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_tls_connections_current?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_tls_connections_limit:
get:
operationId: monitoring_get_lb_frontend_tls_connections_limit
summary: Get Load Balancer Frontend Max TLS Connections Limit Metrics
description: >-
To retrieve frontend max TLS connections limit for a given load
balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_tls_connections_limit`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_tls_connections_limit?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/frontend_tls_connections_exceeding_rate_limit:
get:
operationId: monitoring_get_lb_frontend_tls_connections_exceeding_rate_limit
summary: >-
Get Load Balancer Frontend Closed TLS Connections For Exceeded Rate
Limit Metrics
description: >-
To retrieve frontend closed TLS connections for exceeded rate limit for
a given load balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/frontend_tls_connections_exceeding_rate_limit`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/frontend_tls_connections_exceeding_rate_limit?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/droplets_http_session_duration_avg:
get:
operationId: monitoring_get_lb_droplets_http_session_duration_avg
summary: Get Load Balancer Droplets Average HTTP Session Duration Metrics
description: >-
To retrieve Droplets average HTTP session duration in seconds for a
given load balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/droplets_http_session_duration_avg`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/droplets_http_session_duration_avg?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/droplets_http_session_duration_50p:
get:
operationId: monitoring_get_lb_droplets_http_session_duration_50p
summary: Get Load Balancer Droplets 50th Percentile HTTP Session Duration Metrics
description: >-
To retrieve Droplets 50th percentile HTTP session duration in seconds
for a given load balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/droplets_http_session_duration_50p`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/droplets_http_session_duration_50p?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/droplets_http_session_duration_95p:
get:
operationId: monitoring_get_lb_droplets_http_session_duration_95p
summary: Get Load Balancer Droplets 95th Percentile HTTP Session Duration Metrics
description: >-
To retrieve Droplets 95th percentile HTTP session duration in seconds
for a given load balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/droplets_http_session_duration_95p`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/droplets_http_session_duration_95p?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/droplets_http_response_time_avg:
get:
operationId: monitoring_get_lb_droplets_http_response_time_avg
summary: Get Load Balancer Droplets Average HTTP Response Time Metrics
description: >-
To retrieve Droplets average HTTP response time in seconds for a given
load balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/droplets_http_response_time_avg`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/droplets_http_response_time_avg?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/droplets_http_response_time_50p:
get:
operationId: monitoring_get_lb_droplets_http_response_time_50p
summary: Get Load Balancer Droplets 50th Percentile HTTP Response Time Metrics
description: >-
To retrieve Droplets 50th percentile HTTP response time in seconds for a
given load balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/droplets_http_response_time_50p`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/droplets_http_response_time_50p?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/droplets_http_response_time_95p:
get:
operationId: monitoring_get_lb_droplets_http_response_time_95p
summary: Get Load Balancer Droplets 95th Percentile HTTP Response Time Metrics
description: >-
To retrieve Droplets 95th percentile HTTP response time in seconds for a
given load balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/droplets_http_response_time_95p`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/droplets_http_response_time_95p?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/droplets_http_response_time_99p:
get:
operationId: monitoring_get_lb_droplets_http_response_time_99p
summary: Get Load Balancer Droplets 99th Percentile HTTP Response Time Metrics
description: >-
To retrieve Droplets 99th percentile HTTP response time in seconds for a
given load balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/droplets_http_response_time_99p`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/droplets_http_response_time_99p?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/droplets_queue_size:
get:
operationId: monitoring_get_lb_droplets_queue_size
summary: Get Load Balancer Droplets Queue Size Metrics
description: >-
To retrieve Droplets queue size for a given load balancer, send a GET
request to `/v2/monitoring/metrics/load_balancer/droplets_queue_size`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/droplets_queue_size?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/droplets_http_responses:
get:
operationId: monitoring_get_lb_droplets_http_responses
summary: Get Load Balancer Droplets HTTP Rate Of Response Code Metrics
description: >-
To retrieve Droplets HTTP rate of response code for a given load
balancer, send a GET request to
`/v2/monitoring/metrics/load_balancer/droplets_http_responses`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/droplets_http_responses?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/droplets_connections:
get:
operationId: monitoring_get_lb_droplets_connections
summary: Get Load Balancer Droplets Active Connections Metrics
description: >-
To retrieve Droplets active connections for a given load balancer, send
a GET request to
`/v2/monitoring/metrics/load_balancer/droplets_connections`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/droplets_connections?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/droplets_health_checks:
get:
operationId: monitoring_get_lb_droplets_health_checks
summary: Get Load Balancer Droplets Health Check Status Metrics
description: >-
To retrieve Droplets health check status for a given load balancer, send
a GET request to
`/v2/monitoring/metrics/load_balancer/droplets_health_checks`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/droplets_health_checks?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/metrics/load_balancer/droplets_downtime:
get:
operationId: monitoring_get_lb_droplets_downtime
summary: Get Load Balancer Droplets Downtime Status Metrics
description: >-
To retrieve Droplets downtime status for a given load balancer, send a
GET request to `/v2/monitoring/metrics/load_balancer/droplets_downtime`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/metric_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
parameters:
- $ref: '#/components/parameters/parameters_load_balancer_id'
- $ref: '#/components/parameters/metric_timestamp_start'
- $ref: '#/components/parameters/metric_timestamp_end'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/metrics/load_balancer/droplets_downtime?lb_id=4de7ac8b-495b-4884-9a69-1050c6793cd6&start=1636051668&end=1636051668"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/sinks/destinations:
post:
operationId: monitoring_create_destination
summary: Create Logging Destination
description: >-
To create a new destination, send a POST request to
`/v2/monitoring/sinks/destinations`.
tags:
- Monitoring
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/destination_request'
examples:
Managed OpenSearch Cluster:
value:
name: managed_opensearch_cluster
type: opensearch_dbaas
config:
endpoint: >-
db-opensearch-nyc3-123456-do-user-123456-0.g.db.ondigitalocean.com
cluster_uuid: 85148069-7e35-4999-80bd-6fa1637ca385
cluster_name: managed_dbaas_cluster
index_name: logs
retention_days: 14
External OpenSearch Cluster:
value:
name: external_opensearch
type: opensearch_ext
config:
endpoint: example.com
credentials:
username: username
password: password
index_name: logs
retention_days: 14
responses:
'200':
$ref: '#/components/responses/destination'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/sinks/destinations" \
--data '{"name":"cluster", "type":"opensearch_dbaas", "config": {"endpoint": "example.com", "credentials": {"username": "username", "password": "password"}}}'
security:
- bearer_auth:
- monitoring:create
get:
operationId: monitoring_list_destinations
summary: List Logging Destinations
description: >-
To list all logging destinations, send a GET request to
`/v2/monitoring/sinks/destinations`.
tags:
- Monitoring
responses:
'200':
$ref: '#/components/responses/monitoring_list_destinations'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/sinks/destinations"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/sinks/destinations/{destination_uuid}:
get:
operationId: monitoring_get_destination
summary: Get Logging Destination
description: >-
To get the details of a destination, send a GET request to
`/v2/monitoring/sinks/destinations/${destination_uuid}`.
tags:
- Monitoring
parameters:
- $ref: '#/components/parameters/destination_uuid'
responses:
'200':
$ref: '#/components/responses/destination'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/sinks/destinations/01f30bfa-319a-4769-ba95-9d43971fb514"
security:
- bearer_auth:
- monitoring:read
post:
operationId: monitoring_update_destination
summary: Update Logging Destination
description: >-
To update the details of a destination, send a PATCH request to
`/v2/monitoring/sinks/destinations/${destination_uuid}`.
tags:
- Monitoring
parameters:
- $ref: '#/components/parameters/destination_uuid'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/destination_request'
x-codeSamples:
- lang: cURL
source: |-
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/sinks/destinations/01f30bfa-319a-4769-ba95-9d43971fb514" \
--data '{"index_name": "logs", "retention_days": 30}'
security:
- bearer_auth:
- monitoring:update
delete:
operationId: monitoring_delete_destination
summary: Delete Logging Destination
description: >-
To delete a destination and all associated sinks, send a DELETE request
to `/v2/monitoring/sinks/destinations/${destination_uuid}`.
tags:
- Monitoring
parameters:
- $ref: '#/components/parameters/destination_uuid'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/sinks/destinations/01f30bfa-319a-4769-ba95-9d43971fb514"
security:
- bearer_auth:
- monitoring:delete
/v2/monitoring/sinks:
post:
operationId: monitoring_create_sink
summary: Create Sink
description: >
To create a new sink, send a POST request to `/v2/monitoring/sinks`.
Forwards logs from the
resources identified in `resources` to the specified pre-existing
destination.
tags:
- Monitoring
responses:
'202':
$ref: '#/components/responses/accepted'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
requestBody:
required: true
content:
application/json:
schema:
properties:
destination_uuid:
type: string
example: 9df2b7e9-3fb2-4577-b60a-e9c0d53f9a99
description: A unique identifier for an already-existing destination.
resources:
type: array
description: List of resources identified by their URNs.
items:
$ref: '#/components/schemas/sink_resource'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/sinks" \
--data '{"destination_uuid": "f2fcd5d9-f410-4f3a-8015-130ada94b1fe", "resources": [{"name": "fra_kubernetes_cluster", "urn":"do:kubernetes:8463c9db-150c-4b44-830c-fca7f68d005b"}]}'
security:
- bearer_auth:
- monitoring:create
get:
operationId: monitoring_list_sinks
summary: Lists all sinks
description: To list all sinks, send a GET request to `/v2/monitoring/sinks`.
tags:
- Monitoring
parameters:
- $ref: '#/components/parameters/resource_id'
responses:
'200':
$ref: '#/components/responses/list_sinks'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/sinks?resource_id=do:kubernetes:f2fcd5d9-f410-4f3a-8015-130ada94b1fe"
security:
- bearer_auth:
- monitoring:read
/v2/monitoring/sinks/{sink_uuid}:
get:
operationId: monitoring_get_sink
summary: Get Sink
description: >-
To get the details of a sink (resources and destination), send a GET
request to `/v2/monitoring/sinks/${sink_uuid}`.
tags:
- Monitoring
parameters:
- $ref: '#/components/parameters/sink_uuid'
responses:
'200':
$ref: '#/components/responses/sinks'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/sinks/f945d774-86e8-4dc8-8f60-cfc76dd3d098"
security:
- bearer_auth:
- monitoring:read
delete:
operationId: monitoring_delete_sink
summary: Delete Sink
description: >-
To delete a sink, send a DELETE request to
`/v2/monitoring/sinks/${sink_uuid}`.
tags:
- Monitoring
parameters:
- $ref: '#/components/parameters/sink_uuid'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/monitoring/sinks/aef7ff4a-f1be-4d9e-b886-650fcb5bdfe3"
security:
- bearer_auth:
- monitoring:delete
/v2/projects:
get:
operationId: projects_list
summary: List All Projects
description: To list all your projects, send a GET request to `/v2/projects`.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/projects_list'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/projects"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
PerPage: 10,
Page: 1,
}
client.Projects.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
projects = client.projects.all
projects.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.projects.list()
security:
- bearer_auth:
- project:read
post:
operationId: projects_create
summary: Create a Project
description: To create a project, send a POST request to `/v2/projects`.
tags:
- Projects
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/project_base'
required:
- name
- purpose
responses:
'201':
$ref: '#/components/responses/existing_project'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"my-web-api", "description": "My website API", "purpose": "Service or API", "environment": "Production"}' \
"https://api.digitalocean.com/v2/projects"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createReq := &godo.CreateProjectRequest{
Name: "my-web-api",
Description: "My website API",
Purpose: "Service or API",
Environment: "Production",
}
client.Projects.Create(ctx, createReq)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
project = DropletKit::Project.new(
name: 'my-api',
description: 'My website API',
purpose: 'Service or API',
environment: 'Production'
)
client.projects.create(project)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "my-web-api",
"description": "My website API",
"purpose": "Service or API",
"environment": "Production"
}
resp = client.projects.create(body=req)
security:
- bearer_auth:
- project:create
/v2/projects/default:
get:
operationId: projects_get_default
summary: Retrieve the Default Project
description: >-
To get your default project, send a GET request to
`/v2/projects/default`.
tags:
- Projects
responses:
'200':
$ref: '#/components/responses/default_project'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/projects/default"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
client.Projects.GetDefault(ctx)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.projects.find_default
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.projects.get_default()
security:
- bearer_auth:
- project:read
put:
operationId: projects_update_default
summary: Update the Default Project
description: >-
To update you default project, send a PUT request to
`/v2/projects/default`. All of the following attributes must be sent.
tags:
- Projects
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/project'
required:
- name
- description
- purpose
- environment
- is_default
responses:
'200':
$ref: '#/components/responses/existing_project'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"my-web-api", "description": "My website API", "purpose": "Service or API", "environment": "Staging", "is_default": false}' \
"https://api.digitalocean.com/v2/projects/default"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
updateReq := &godo.UpdateProjectRequest{
Name: "my-web-api",
Description: "My website API",
Purpose: "Service or API",
Environment: "Staging",
IsDefault: false,
}
client.Projects.Update(ctx, godo.DefaultProject, updateReq)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
project = client.projects.find_default
project.environment = 'Staging'
client.projects.update(project, id: 'default')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "my-web-api",
"description": "My website API",
"purpose": "Service or API",
"environment": "Production",
"is_default": False
}
resp = client.projects.update_default(body=req)
security:
- bearer_auth:
- project:update
patch:
operationId: projects_patch_default
summary: Patch the Default Project
description: >-
To update only specific attributes of your default project, send a PATCH
request to `/v2/projects/default`. At least one of the following
attributes needs to be sent.
tags:
- Projects
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/project'
example:
name: my-web-api
responses:
'200':
$ref: '#/components/responses/existing_project'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"environment": "Staging"}' \
"https://api.digitalocean.com/v2/projects/default"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
updateReq := &godo.UpdateProjectRequest{
Environment: "Staging",
}
client.Projects.Update(ctx, godo.DefaultProject, updateReq)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
project = client.projects.find_default
project.environment = 'Staging'
client.projects.update(project, id: 'default')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "my-web-api"
}
resp = client.projects.patch_default(body=req)
security:
- bearer_auth:
- project:update
/v2/projects/{project_id}:
get:
operationId: projects_get
summary: Retrieve an Existing Project
description: To get a project, send a GET request to `/v2/projects/$PROJECT_ID`.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/project_id'
responses:
'200':
$ref: '#/components/responses/existing_project'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/projects/4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
client.Projects.Get(ctx, "4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679")
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
project = client.projects.find(id:
'4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.projects.get(project_id="4e1bfbc3")
security:
- bearer_auth:
- project:read
put:
operationId: projects_update
summary: Update a Project
description: >-
To update a project, send a PUT request to `/v2/projects/$PROJECT_ID`.
All of the following attributes must be sent.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/project_id'
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/project'
required:
- name
- description
- purpose
- environment
- is_default
responses:
'200':
$ref: '#/components/responses/existing_project'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"my-web-api", "description": "My website API", "purpose": "Service or API", "environment": "Staging", "is_default": false}' \
"https://api.digitalocean.com/v2/projects/4e1bfbc3\
-dc3e-41f2-a18f-1b4d7ba71679"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
updateReq := &godo.UpdateProjectRequest{
Name: "my-web-api",
Description: "My website API",
Purpose: "Service or API",
Environment: "Staging",
IsDefault: false,
}
client.Projects.Update(ctx, "4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679", updateReq)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
project = client.projects.find(id:
'4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679')
project.environment = 'Staging'
client.projects.update(project, id:
'4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "my-web-api",
"description": "My website API",
"purpose": "Service or API",
"environment": "Production",
"is_default": False
}
resp = client.projects.update_default(body=req)
security:
- bearer_auth:
- project:update
patch:
operationId: projects_patch
summary: Patch a Project
description: >-
To update only specific attributes of a project, send a PATCH request to
`/v2/projects/$PROJECT_ID`. At least one of the following attributes
needs to be sent.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/project_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/project'
example:
name: my-web-api
responses:
'200':
$ref: '#/components/responses/existing_project'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"environment": "Staging"}' \
"https://api.digitalocean.com/v2/projects/4e1bfbc3\
-dc3e-41f2-a18f-1b4d7ba71679"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
updateReq := &godo.UpdateProjectRequest{
Environment: "Staging",
}
client.Projects.Update(ctx, "4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679", updateReq)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
project = client.projects.find(id:
'4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679')
project.environment = 'Staging'
client.projects.update(project, id:
'4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "my-web-api"
}
resp = client.projects.patch(project_id="4e1bfbc3", body=req)
security:
- bearer_auth:
- project:update
delete:
operationId: projects_delete
summary: Delete an Existing Project
description: >
To delete a project, send a DELETE request to
`/v2/projects/$PROJECT_ID`. To
be deleted, a project must not have any resources assigned to it. Any
existing
resources must first be reassigned or destroyed, or you will receive a
412 error.
A successful request will receive a 204 status code with no body in
response.
This indicates that the request was processed successfully.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/project_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'412':
$ref: '#/components/responses/precondition_failed'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: >-
curl -X DELETE -H 'Content-Type: application/json' -H
"Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/projects/4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Projects.Delete(ctx, '4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679')
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.projects.delete(id: '4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.projects.delete(project_id="fda9fda")
security:
- bearer_auth:
- project:delete
/v2/projects/{project_id}/resources:
get:
operationId: projects_list_resources
summary: List Project Resources
description: >-
To list all your resources in a project, send a GET request to
`/v2/projects/$PROJECT_ID/resources`.
tags:
- Project Resources
parameters:
- $ref: '#/components/parameters/project_id'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/resources_list'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/projects/4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679/resources"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
PerPage: 10,
Page: 1,
}
client.Projects.ListResources(ctx, "4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679", opt)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.projects.list_resources(id:
'4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.projects.list_resources(project_id="4e1bfbc3")
security:
- bearer_auth:
- project:read
post:
operationId: projects_assign_resources
summary: Assign Resources to a Project
description: >-
To assign resources to a project, send a POST request to
`/v2/projects/$PROJECT_ID/resources`.
tags:
- Project Resources
parameters:
- $ref: '#/components/parameters/project_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/project_assignment'
examples:
assign_resources:
value:
resources:
- do:droplet:13457723
- do:domain:example.com
responses:
'200':
$ref: '#/components/responses/assigned_resources_list'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"resources": ["do:droplet:1", "do:floatingip:192.168.99.100"]}' \
"https://api.digitalocean.com/v2/projects/4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679/resources"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
res := []interface{}{
&godo.Droplet{ID: 1},
"do:droplet:42",
&godo.FloatingIP{IP: "192.168.99.100"},
}
client.Projects.AssignResources(ctx, "4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679", res...)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
resource = DropletKit::ProjectAssignment.new(urn: 'do:droplet:1')
client.projects.assign_resources([resource], id:
'4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"resources": [
"do:droplet:13457723",
"do:domain:example.com"
]
}
resp = client.projects.assign_resources(project_id="8dafda",
body=req)
security:
- bearer_auth:
- project:update
/v2/projects/default/resources:
get:
operationId: projects_list_resources_default
summary: List Default Project Resources
description: >-
To list all your resources in your default project, send a GET request
to `/v2/projects/default/resources`.
tags:
- Project Resources
responses:
'200':
$ref: '#/components/responses/resources_list'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/projects/default/resources"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
PerPage: 10,
Page: 1,
}
client.Projects.ListResources(ctx, godo.DefaultProject, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.projects.list_resources(id: 'default')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.projects.list_resources_default()
security:
- bearer_auth:
- project:read
post:
operationId: projects_assign_resources_default
summary: Assign Resources to Default Project
description: >-
To assign resources to your default project, send a POST request to
`/v2/projects/default/resources`.
tags:
- Project Resources
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/project_assignment'
examples:
assign_resources:
value:
resources:
- do:droplet:13457723
- do:domain:example.com
responses:
'200':
$ref: '#/components/responses/assigned_resources_list'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"resources": ["do:droplet:1", "do:floatingip:192.168.99.100"]}' \
"https://api.digitalocean.com/v2/projects/default/resources"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
res := []interface{}{
&godo.Droplet{ID: 1},
"do:droplet:42",
&godo.FloatingIP{IP: "192.168.99.100"},
}
client.Projects.AssignResources(ctx, godo.DefaultProject, res...)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
resource = DropletKit::ProjectAssignment.new(urn: 'do:droplet:1')
client.projects.assign_resources([resource], id: 'default')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"resources": [
"do:droplet:13457723",
"do:domain:example.com"
]
}
resp = client.projects.assign_resources_default(body=req)
security:
- bearer_auth:
- project:update
/v2/regions:
get:
operationId: regions_list
summary: List All Data Center Regions
description: >-
To list all of the regions that are available, send a GET request to
`/v2/regions`.
The response will be a JSON object with a key called `regions`. The
value of this will be an array of `region` objects, each of which will
contain the standard region attributes.
tags:
- Regions
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_regions'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/regions"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
regions, _, err := client.Regions.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
regions = client.regions.all
regions.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.regions.list()
security:
- bearer_auth:
- regions:read
/v2/registry:
get:
operationId: registry_get
summary: Get Container Registry Information
description: >-
To get information about your container registry, send a GET request to
`/v2/registry`.
tags:
- Container Registry
responses:
'200':
$ref: '#/components/responses/registry_info'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.registry.get()
security:
- bearer_auth:
- registry:read
post:
operationId: registry_create
summary: Create Container Registry
description: >
To create your container registry, send a POST request to
`/v2/registry`.
The `name` becomes part of the URL for images stored in the registry.
For
example, if your registry is called `example`, an image in it will have
the
URL `registry.digitalocean.com/example/image:tag`.
tags:
- Container Registry
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/registry_create'
responses:
'201':
$ref: '#/components/responses/registry_info'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "example", "subscription_tier_slug": "basic", "region": "fra1"}' \
"https://api.digitalocean.com/v2/registry"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "example",
"subscription_tier_slug": "basic",
"region": "fra1"
}
resp = client.registry.create(body=req)
security:
- bearer_auth:
- registry:create
delete:
operationId: registry_delete
summary: Delete Container Registry
description: >-
To delete your container registry, destroying all container image data
stored in it, send a DELETE request to `/v2/registry`.
tags:
- Container Registry
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.registry.delete()
security:
- bearer_auth:
- registry:delete
/v2/registry/subscription:
get:
operationId: registry_get_subscription
summary: Get Subscription Information
description: >-
A subscription is automatically created when you configure your
container registry. To get information about your subscription, send a
GET request to `/v2/registry/subscription`.
tags:
- Container Registry
responses:
'200':
$ref: '#/components/responses/subscription_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/subscription"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.registry.get_subscription()
security:
- bearer_auth:
- registry:read
post:
operationId: registry_update_subscription
summary: Update Subscription Tier
description: >-
After creating your registry, you can switch to a different subscription
tier to better suit your needs. To do this, send a POST request to
`/v2/registry/subscription`.
tags:
- Container Registry
requestBody:
content:
application/json:
schema:
type: object
properties:
tier_slug:
type: string
enum:
- starter
- basic
- professional
example: basic
description: The slug of the subscription tier to sign up for.
responses:
'200':
$ref: '#/components/responses/subscription_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"tier_slug": "professional"}' \
"https://api.digitalocean.com/v2/registry/subscription"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"tier_slug": "basic"
}
resp = client.registry.update_subscription(body=req)
security:
- bearer_auth:
- registry:update
/v2/registry/docker-credentials:
get:
operationId: registry_get_dockerCredentials
summary: Get Docker Credentials for Container Registry
description: >
In order to access your container registry with the Docker client or
from a
Kubernetes cluster, you will need to configure authentication. The
necessary
JSON configuration can be retrieved by sending a GET request to
`/v2/registry/docker-credentials`.
The response will be in the format of a Docker `config.json` file. To
use the
config in your Kubernetes cluster, create a Secret with:
kubectl create secret generic docr \
--from-file=.dockerconfigjson=config.json \
--type=kubernetes.io/dockerconfigjson
By default, the returned credentials have read-only access to your
registry
and cannot be used to push images. This is appropriate for most
Kubernetes
clusters. To retrieve read/write credentials, suitable for use with the
Docker
client or in a CI system, read_write may be provided as query parameter.
For
example: `/v2/registry/docker-credentials?read_write=true`
By default, the returned credentials will not expire. To retrieve
credentials
with an expiry set, expiry_seconds may be provided as a query parameter.
For
example: `/v2/registry/docker-credentials?expiry_seconds=3600` will
return
credentials that expire after one hour.
tags:
- Container Registry
parameters:
- $ref: '#/components/parameters/registry_expiry_seconds'
- $ref: '#/components/parameters/registry_read_write'
responses:
'200':
$ref: '#/components/responses/docker_credentials'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/docker-credentials"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.registry.get_docker_credentials()
security:
- bearer_auth:
- registry:read
- registry:update
/v2/registry/validate-name:
post:
operationId: registry_validate_name
summary: Validate a Container Registry Name
description: >
To validate that a container registry name is available for use, send a
POST
request to `/v2/registry/validate-name`.
If the name is both formatted correctly and available, the response code
will
be 204 and contain no body. If the name is already in use, the response
will
be a 409 Conflict.
tags:
- Container Registry
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/validate_registry'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'409':
$ref: '#/components/responses/conflict'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "example"}' \
"https://api.digitalocean.com/v2/registry/validate-name"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "example"
}
resp = client.registry.validate_name(body=req)
security:
- bearer_auth:
- registry:create
/v2/registry/{registry_name}/repositories:
get:
operationId: registry_list_repositories
deprecated: true
summary: List All Container Registry Repositories
description: >
This endpoint has been deprecated in favor of the _List All Container
Registry Repositories [V2]_ endpoint.
To list all repositories in your container registry, send a GET
request to `/v2/registry/$REGISTRY_NAME/repositories`.
tags:
- Container Registry
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/registry_name'
responses:
'200':
$ref: '#/components/responses/all_repositories'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/example/repositories"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.registry.list_repositories(registry_name="example")
security:
- bearer_auth:
- registry:read
/v2/registry/{registry_name}/repositoriesV2:
get:
operationId: registry_list_repositoriesV2
summary: List All Container Registry Repositories (V2)
description: >-
To list all repositories in your container registry, send a GET request
to `/v2/registry/$REGISTRY_NAME/repositoriesV2`.
tags:
- Container Registry
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/token_pagination_page'
- $ref: '#/components/parameters/token_pagination_page_token'
- $ref: '#/components/parameters/registry_name'
responses:
'200':
$ref: '#/components/responses/all_repositories_v2'
'400':
$ref: '#/components/responses/bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/example/repositoriesV2?page_size=1"
- lang: cURL (next page)
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/example/repositoriesV2?page=2&page_token=JPZmZzZXQiOjB9&per_page=1"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.registry.list_repositories_v2(registry_name="example")
security:
- bearer_auth:
- registry:read
/v2/registry/{registry_name}/repositories/{repository_name}/tags:
get:
operationId: registry_list_repositoryTags
summary: List All Container Registry Repository Tags
description: >
To list all tags in your container registry repository, send a GET
request to
`/v2/registry/$REGISTRY_NAME/repositories/$REPOSITORY_NAME/tags`.
Note that if your repository name contains `/` characters, it must be
URL-encoded in the request URL. For example, to list tags for
`registry.digitalocean.com/example/my/repo`, the path would be
`/v2/registry/example/repositories/my%2Frepo/tags`.
tags:
- Container Registry
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/registry_name'
- $ref: '#/components/parameters/registry_repository_name'
responses:
'200':
$ref: '#/components/responses/repository_tags'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/example/repositories/repo-1/tags"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.registry.list_repository_tags(registry_name="example",
repository_name="repo01")
security:
- bearer_auth:
- registry:read
/v2/registry/{registry_name}/repositories/{repository_name}/tags/{repository_tag}:
delete:
operationId: registry_delete_repositoryTag
summary: Delete Container Registry Repository Tag
description: >
To delete a container repository tag, send a DELETE request to
`/v2/registry/$REGISTRY_NAME/repositories/$REPOSITORY_NAME/tags/$TAG`.
Note that if your repository name contains `/` characters, it must be
URL-encoded in the request URL. For example, to delete
`registry.digitalocean.com/example/my/repo:mytag`, the path would be
`/v2/registry/example/repositories/my%2Frepo/tags/mytag`.
A successful request will receive a 204 status code with no body in
response.
This indicates that the request was processed successfully.
tags:
- Container Registry
parameters:
- $ref: '#/components/parameters/registry_name'
- $ref: '#/components/parameters/registry_repository_name'
- $ref: '#/components/parameters/registry_repository_tag'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/example/repositories/repo-1/tags/mytag"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.registry.delete_repository_tag(registry_name="example",
repository_name="repo-1", repository_tag="06a447a")
security:
- bearer_auth:
- registry:delete
/v2/registry/{registry_name}/repositories/{repository_name}/digests:
get:
operationId: registry_list_repositoryManifests
summary: List All Container Registry Repository Manifests
description: >
To list all manifests in your container registry repository, send a GET
request to
`/v2/registry/$REGISTRY_NAME/repositories/$REPOSITORY_NAME/digests`.
Note that if your repository name contains `/` characters, it must be
URL-encoded in the request URL. For example, to list manifests for
`registry.digitalocean.com/example/my/repo`, the path would be
`/v2/registry/example/repositories/my%2Frepo/digests`.
tags:
- Container Registry
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/registry_name'
- $ref: '#/components/parameters/registry_repository_name'
responses:
'200':
$ref: '#/components/responses/repository_manifests'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/example/repositories/repo-1/digests"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.registry.list_repository_manifests(registry_name="example",
repository_name="repo01")
security:
- bearer_auth:
- registry:read
/v2/registry/{registry_name}/repositories/{repository_name}/digests/{manifest_digest}:
delete:
operationId: registry_delete_repositoryManifest
summary: Delete Container Registry Repository Manifest
description: >
To delete a container repository manifest by digest, send a DELETE
request to
`/v2/registry/$REGISTRY_NAME/repositories/$REPOSITORY_NAME/digests/$MANIFEST_DIGEST`.
Note that if your repository name contains `/` characters, it must be
URL-encoded in the request URL. For example, to delete
`registry.digitalocean.com/example/my/repo@sha256:abcd`, the path would
be
`/v2/registry/example/repositories/my%2Frepo/digests/sha256:abcd`.
A successful request will receive a 204 status code with no body in
response.
This indicates that the request was processed successfully.
tags:
- Container Registry
parameters:
- $ref: '#/components/parameters/registry_name'
- $ref: '#/components/parameters/registry_repository_name'
- $ref: '#/components/parameters/registry_manifest_digest'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/example/repositories/repo-1/digests/sha256:cb8a924afdf0229ef7515d9e5b3024e23b3eb03ddbba287f4a19c6ac90b8d221"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.registry.delete_repository_manifest(registry_name="example",
repository_name="repo-1", manifest_digest="sha256:cb8a924afd")
security:
- bearer_auth:
- registry:delete
/v2/registry/{registry_name}/garbage-collection:
post:
operationId: registry_run_garbageCollection
summary: Start Garbage Collection
description: >
Garbage collection enables users to clear out unreferenced blobs (layer
&
manifest data) after deleting one or more manifests from a repository.
If
there are no unreferenced blobs resulting from the deletion of one or
more
manifests, garbage collection is effectively a noop.
[See here for more
information](https://docs.digitalocean.com/products/container-registry/how-to/clean-up-container-registry/)
about how and why you should clean up your container registry
periodically.
To request a garbage collection run on your registry, send a POST
request to
`/v2/registry/$REGISTRY_NAME/garbage-collection`. This will initiate the
following sequence of events on your registry.
* Set the registry to read-only mode, meaning no further write-scoped
JWTs will be issued to registry clients. Existing write-scoped JWTs will
continue to work until they expire which can take up to 15 minutes.
* Wait until all existing write-scoped JWTs have expired.
* Scan all registry manifests to determine which blobs are unreferenced.
* Delete all unreferenced blobs from the registry.
* Record the number of blobs deleted and bytes freed, mark the garbage
collection status as `success`.
* Remove the read-only mode restriction from the registry, meaning
write-scoped
JWTs will once again be issued to registry clients.
tags:
- Container Registry
parameters:
- $ref: '#/components/parameters/registry_name'
responses:
'201':
$ref: '#/components/responses/garbage_collection'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/example/garbage-collection"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.registry.run_garbage_collection(registry_name="example")
security:
- bearer_auth:
- registry:create
get:
operationId: registry_get_garbageCollection
summary: Get Active Garbage Collection
description: >-
To get information about the currently-active garbage collection for a
registry, send a GET request to
`/v2/registry/$REGISTRY_NAME/garbage-collection`.
tags:
- Container Registry
parameters:
- $ref: '#/components/parameters/registry_name'
responses:
'200':
$ref: '#/components/responses/garbage_collection'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/example/garbage-collection"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.registry.get_garbage_collection(registry_name="example")
security:
- bearer_auth:
- registry:read
/v2/registry/{registry_name}/garbage-collections:
get:
operationId: registry_list_garbageCollections
summary: List Garbage Collections
description: >-
To get information about past garbage collections for a registry, send a
GET request to `/v2/registry/$REGISTRY_NAME/garbage-collections`.
tags:
- Container Registry
parameters:
- $ref: '#/components/parameters/registry_name'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/garbage_collections'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/example/garbage-collections"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.registry.list_garbage_collections(registry_name="example")
security:
- bearer_auth:
- registry:read
/v2/registry/{registry_name}/garbage-collection/{garbage_collection_uuid}:
put:
operationId: registry_update_garbageCollection
summary: Update Garbage Collection
description: >-
To cancel the currently-active garbage collection for a registry, send a
PUT request to `/v2/registry/$REGISTRY_NAME/garbage-collection/$GC_UUID`
and specify one or more of the attributes below.
tags:
- Container Registry
parameters:
- $ref: '#/components/parameters/registry_name'
- $ref: '#/components/parameters/garbage_collection_uuid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/update_registry'
responses:
'200':
$ref: '#/components/responses/garbage_collection'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/example/garbage-collection/example-gc-uuid"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp =
client.registry.run_garbage_collection(registry_name="example")
security:
- bearer_auth:
- registry:update
/v2/registry/options:
get:
operationId: registry_get_options
summary: List Registry Options (Subscription Tiers and Available Regions)
description: >-
This endpoint serves to provide additional information as to which
option values are available when creating a container registry.
There are multiple subscription tiers available for container registry.
Each tier allows a different number of image repositories to be created
in your registry, and has a different amount of storage and transfer
included.
There are multiple regions available for container registry and controls
where your data is stored.
To list the available options, send a GET request to
`/v2/registry/options`.
tags:
- Container Registry
responses:
'200':
$ref: '#/components/responses/registry_options_response'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/registry/options"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.registry.get_options()
security:
- bearer_auth:
- registry:read
/v2/reports/droplet_neighbors_ids:
get:
operationId: droplets_list_neighborsIds
summary: List All Droplet Neighbors
description: >
To retrieve a list of all Droplets that are co-located on the same
physical
hardware, send a GET request to `/v2/reports/droplet_neighbors_ids`.
The results will be returned as a JSON object with a key of
`neighbor_ids`.
This will be set to an array of arrays. Each array will contain a set of
Droplet IDs for Droplets that share a physical server. An empty array
indicates that all Droplets associated with your account are located on
separate physical hardware.
tags:
- Droplets
responses:
'200':
$ref: '#/components/responses/droplet_neighbors_ids'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/reports/droplet_neighbors_ids"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.droplets.list_neighbors_ids()
security:
- bearer_auth:
- droplet:read
/v2/reserved_ips:
get:
operationId: reservedIPs_list
summary: List All Reserved IPs
description: >-
To list all of the reserved IPs available on your account, send a GET
request to `/v2/reserved_ips`.
tags:
- Reserved IPs
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/reserved_ip_list'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/reserved_ips?page=1&per_page=20"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
reservedIPs, _, err := client.ReservedIPs.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
reserved_ips = client.reserved_ips.all
reserved_ips.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.reserved_ips.list()
security:
- bearer_auth:
- reserved_ip:read
post:
operationId: reservedIPs_create
summary: Create a New Reserved IP
description: >-
On creation, a reserved IP must be either assigned to a Droplet or
reserved to a region.
* To create a new reserved IP assigned to a Droplet, send a POST
request to `/v2/reserved_ips` with the `droplet_id` attribute.
* To create a new reserved IP reserved to a region, send a POST request
to
`/v2/reserved_ips` with the `region` attribute.
**Note**: In addition to the standard rate limiting, only 12 reserved
IPs may be created per 60 seconds.
tags:
- Reserved IPs
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/reserved_ip_create'
responses:
'202':
$ref: '#/components/responses/reserved_ip_created'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"droplet_id": 123456}' \
"https://api.digitalocean.com/v2/reserved_ips"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &godo.ReservedIPCreateRequest{
DropletID: 123456,
Region: "nyc3",
ProjectID: "1234a77a-12cd-11ed-909f-43c99lbf6030",
}
reservedIP, _, err := client.ReservedIPs.Create(ctx, createRequest)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
reserved_ip = DropletKit::ReservedIp.new(droplet_id: 123456)
client.reserved_ips.create(reserved_ip)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"droplet_id": 2457247
}
resp = client.reserved_ips.create(body=req)
security:
- bearer_auth:
- reserved_ip:create
/v2/reserved_ips/{reserved_ip}:
get:
operationId: reservedIPs_get
summary: Retrieve an Existing Reserved IP
description: >-
To show information about a reserved IP, send a GET request to
`/v2/reserved_ips/$RESERVED_IP_ADDR`.
tags:
- Reserved IPs
parameters:
- $ref: '#/components/parameters/reserved_ip'
responses:
'200':
$ref: '#/components/responses/reserved_ip'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/reserved_ips/45.55.96.47"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
reservedIP, _, err := client.ReservedIPs.Get(ctx, "45.55.96.47")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.reserved_ips.find(ip: '45.55.96.47')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.reserved_ips.get(reserved_ip="45.55.96.47")
security:
- bearer_auth:
- reserved_ip:read
delete:
operationId: reservedIPs_delete
summary: Delete a Reserved IP
description: >
To delete a reserved IP and remove it from your account, send a DELETE
request
to `/v2/reserved_ips/$RESERVED_IP_ADDR`.
A successful request will receive a 204 status code with no body in
response.
This indicates that the request was processed successfully.
tags:
- Reserved IPs
parameters:
- $ref: '#/components/parameters/reserved_ip'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/reserved_ips/45.55.96.47"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.ReservedIPs.Delete(ctx, "45.55.96.34")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.reserved_ips.delete(ip: '45.55.96.47')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.reserved_ips.delete(reserved_ip="45.55.96.47")
security:
- bearer_auth:
- reserved_ip:delete
/v2/reserved_ips/{reserved_ip}/actions:
get:
operationId: reservedIPsActions_list
summary: List All Actions for a Reserved IP
description: >-
To retrieve all actions that have been executed on a reserved IP, send a
GET request to `/v2/reserved_ips/$RESERVED_IP/actions`.
tags:
- Reserved IP Actions
parameters:
- $ref: '#/components/parameters/reserved_ip'
responses:
'200':
$ref: '#/components/responses/reserved_ip_actions'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/reserved_ips/45.55.96.47/actions?page=1&per_page=1"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
actions, _, err := client.ReservedIPActions.List(ctx, '45.55.96.47', opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
actions = client.reserved_ip_actions.all(ip: '45.55.96.47')
actions.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.reserved_ips_actions.list(reserved_ip="45.55.96.47")
security:
- bearer_auth:
- reserved_ip:read
post:
operationId: reservedIPsActions_post
summary: Initiate a Reserved IP Action
description: >
To initiate an action on a reserved IP send a POST request to
`/v2/reserved_ips/$RESERVED_IP/actions`. In the JSON body to the
request,
set the `type` attribute to on of the supported action types:
| Action | Details
|------------|--------
| `assign` | Assigns a reserved IP to a Droplet
| `unassign` | Unassign a reserved IP from a Droplet
tags:
- Reserved IP Actions
parameters:
- $ref: '#/components/parameters/reserved_ip'
requestBody:
description: >
The `type` attribute set in the request body will specify the action
that
will be taken on the reserved IP.
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/reserved_ip_action_unassign'
- $ref: '#/components/schemas/reserved_ip_action_assign'
discriminator:
propertyName: type
mapping:
unassign: '#/components/schemas/reserved_ip_action_unassign'
assign: '#/components/schemas/reserved_ip_action_assign'
responses:
'201':
$ref: '#/components/responses/reserved_ip_action'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
# Assign a Reserved IP to a Droplet
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"assign","droplet_id":8219222}' \
"https://api.digitalocean.com/v2/reserved_ips/45.55.96.47/actions"
# Unassign a Reserved IP
# curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"unassign"}' \
"https://api.digitalocean.com/v2/reserved_ips/45.55.96.47/actions"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
// Assign a Reserved IP to a Droplet
action, _, err := client.ReservedIPActions.Assign(ctx, "45.55.96.47", 8219222)
// Unassign a Reserved IP
action, _, err := client.ReservedIPActions.Unassign(ctx, "45.55.96.47")
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
# Assign a Reserved IP to a Droplet
client.reserved_ip_actions.assign(ip: '45.55.96.47', droplet_id:
8219222)
# Unassign a Reserved IP
# client.reserved_ip_actions.unassign(ip: '45.55.96.47')
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req={
"type": "unassign"
}
resp = client.reserved_ips_actions.post(reserved_ip="49.32.13.21",
body=req)
security:
- bearer_auth:
- reserved_ip:update
/v2/reserved_ips/{reserved_ip}/actions/{action_id}:
get:
operationId: reservedIPsActions_get
summary: Retrieve an Existing Reserved IP Action
description: >-
To retrieve the status of a reserved IP action, send a GET request to
`/v2/reserved_ips/$RESERVED_IP/actions/$ACTION_ID`.
tags:
- Reserved IP Actions
parameters:
- $ref: '#/components/parameters/reserved_ip'
- $ref: '#/components/parameters/action_id'
responses:
'200':
$ref: '#/components/responses/reserved_ip_action'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/reserved_ips/45.55.96.47/actions/72531856"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
action, _, err := client.ReservedIPActions.Get(ctx, "45.55.96.47", 72531856)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.reserved_ip_actions.find(ip: '45.55.96.47', id: 72531856)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.reserved_ips_actions.get(reserved_ip="45.55.96.47")
security:
- bearer_auth:
- reserved_ip:read
/v2/sizes:
get:
operationId: sizes_list
summary: List All Droplet Sizes
description: >-
To list all of available Droplet sizes, send a GET request to
`/v2/sizes`.
The response will be a JSON object with a key called `sizes`. The value
of this will be an array of `size` objects each of which contain the
standard size attributes.
tags:
- Sizes
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_sizes'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/sizes"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
sizes, _, err := client.Sizes.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
sizes = client.sizes.all
sizes.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.sizes.list()
security:
- bearer_auth:
- sizes:read
/v2/snapshots:
get:
operationId: snapshots_list
summary: List All Snapshots
description: >
To list all of the snapshots available on your account, send a GET
request to
`/v2/snapshots`.
The response will be a JSON object with a key called `snapshots`. This
will be
set to an array of `snapshot` objects, each of which will contain the
standard
snapshot attributes.
### Filtering Results by Resource Type
It's possible to request filtered results by including certain query
parameters.
#### List Droplet Snapshots
To retrieve only snapshots based on Droplets, include the
`resource_type`
query parameter set to `droplet`. For example,
`/v2/snapshots?resource_type=droplet`.
#### List Volume Snapshots
To retrieve only snapshots based on volumes, include the `resource_type`
query parameter set to `volume`. For example,
`/v2/snapshots?resource_type=volume`.
tags:
- Snapshots
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/snapshot_resource_type'
responses:
'200':
$ref: '#/components/responses/snapshots'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
# List all snapshots
curl -X GET \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/snapshots?page=1&per_page=1"
# List all Droplet snapshots
curl -X GET \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/snapshots?page=1&per_page=1&resource_type=droplet"
# List volume snapshots
curl -X GET \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/snapshots?page=1&per_page=1&resource_type=volume"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
// List all snapshots
snapshots, _, err := client.Snapshots.List(ctx, opt)
// List all Droplet snapshots
// snapshots, _, err := client.Snapshots.ListDroplet(ctx, opt)
// List all volume snapshots
// snapshots, _, err := client.Snapshots.ListVolume(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
# List all snapshots
snapshots = client.snapshots.all
snapshots.each
# List all Droplet snapshots
# snapshots = client.snapshots.all(resource_type: 'droplet')
# snapshots.each
# List volume snapshots
# snapshots = client.snapshots.all(resource_type: 'volume')
# snapshots.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.snapshots.list()
security:
- bearer_auth:
- snapshot:read
/v2/snapshots/{snapshot_id}:
get:
operationId: snapshots_get
summary: Retrieve an Existing Snapshot
description: >
To retrieve information about a snapshot, send a GET request to
`/v2/snapshots/$SNAPSHOT_ID`.
The response will be a JSON object with a key called `snapshot`. The
value of
this will be an snapshot object containing the standard snapshot
attributes.
tags:
- Snapshots
parameters:
- $ref: '#/components/parameters/snapshot_id'
responses:
'200':
$ref: '#/components/responses/snapshots_existing'
'400':
$ref: '#/components/responses/not_a_snapshot'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/snapshots/fbe805e8-866b-11e6-96bf-000f53315a41"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
snapshot, _, err := client.Snapshots.Get(ctx, 'fbe805e8-866b-11e6-96bf-000f53315a41')
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
snapshot = client.snapshots.find(id:
'fbe805e8-866b-11e6-96bf-000f53315a41')
- lang: cURL
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.snapshots.get(snapshot_id="fbe805e8")
security:
- bearer_auth:
- snapshot:read
delete:
operationId: snapshots_delete
summary: Delete a Snapshot
description: >
Both Droplet and volume snapshots are managed through the
`/v2/snapshots/`
endpoint. To delete a snapshot, send a DELETE request to
`/v2/snapshots/$SNAPSHOT_ID`.
A status of 204 will be given. This indicates that the request was
processed
successfully, but that no response body is needed.
tags:
- Snapshots
parameters:
- $ref: '#/components/parameters/snapshot_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'400':
$ref: '#/components/responses/not_a_snapshot'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/snapshots/fbe805e8-866b-11e6-96bf-000f53315a41"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Snapshots.Delete(ctx, 'fbe805e8-866b-11e6-96bf-000f53315a41')
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.snapshots.delete(id: 'fbe805e8-866b-11e6-96bf-000f53315a41')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.snapshots.delete(snapshot_id="fbe805e8")
security:
- bearer_auth:
- image:delete
- snapshot:delete
/v2/tags:
get:
operationId: tags_list
summary: List All Tags
description: To list all of your tags, you can send a GET request to `/v2/tags`.
tags:
- Tags
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/tags_all'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/tags"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
tags, _, err := client.Tags.List(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
tags = client.tags.all
tags.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.tags.list()
security:
- bearer_auth:
- tag:read
post:
operationId: tags_create
summary: Create a New Tag
description: >-
To create a tag you can send a POST request to `/v2/tags` with a `name`
attribute.
tags:
- Tags
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/tags'
responses:
'201':
$ref: '#/components/responses/tags_new'
'400':
$ref: '#/components/responses/tags_bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"awesome"}' \
"https://api.digitalocean.com/v2/tags"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &TagCreateRequest{
Name: "testing-1",
}
client.Tags.Create(ctx, request)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
tag = DropletKit::Tag.new(name: 'awesome')
client.tags.create(tag)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {"name": "extra-awesome"}
resp = client.tags.create(body=req)
security:
- bearer_auth:
- tag:create
/v2/tags/{tag_id}:
get:
operationId: tags_get
summary: Retrieve a Tag
description: >-
To retrieve an individual tag, you can send a `GET` request to
`/v2/tags/$TAG_NAME`.
tags:
- Tags
parameters:
- $ref: '#/components/parameters/tag_id'
responses:
'200':
$ref: '#/components/responses/tags_existing'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/tags/awesome"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
tag, _, err := client.Tags.Get(ctx, "awesome")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.tags.find(name: 'awesome')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.tags.get(tag_id="awesome")
security:
- bearer_auth:
- tag:read
delete:
operationId: tags_delete
summary: Delete a Tag
description: >-
A tag can be deleted by sending a `DELETE` request to
`/v2/tags/$TAG_NAME`. Deleting a tag also untags all the resources that
have previously been tagged by the Tag
tags:
- Tags
parameters:
- $ref: '#/components/parameters/tag_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/tags/awesome"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
client.Tags.Delete(ctx, "awesome")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.tags.delete(name: 'awesome')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.tags.delete(tag_id="awesome")
security:
- bearer_auth:
- tag:delete
/v2/tags/{tag_id}/resources:
post:
operationId: tags_assign_resources
summary: Tag a Resource
description: >-
Resources can be tagged by sending a POST request to
`/v2/tags/$TAG_NAME/resources` with an array of json objects containing
`resource_id` and `resource_type` attributes.
Currently only tagging of Droplets, Databases, Images, Volumes, and
Volume Snapshots is supported. `resource_type` is expected to be the
string `droplet`, `database`, `image`, `volume` or `volume_snapshot`.
`resource_id` is expected to be the ID of the resource as a string.
tags:
- Tags
parameters:
- $ref: '#/components/parameters/tag_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/tags_resource'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"resources":[{"resource_id":"9569411","resource_type":"droplet"},{"resource_id":"7555620","resource_type":"image"},{"resource_id":"3d80cb72-342b-4aaa-b92e-4e4abb24a933","resource_type":"volume"}]}' \
"https://api.digitalocean.com/v2/tags/awesome/resources"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
tags, _, err := client.Tags.List(ctx, opt)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.tags.tag_resources(name: 'awesome', resources: [{
resource_id: '9569411', resource_type: 'droplet' },{ resource_id:
'7555620', resource_type: 'image' },{ resource_id:
'3d80cb72-342b-4aaa-b92e-4e4abb24a933', resource_type: 'volume'}])
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"resources": [
{
"resource_id": "9569411",
"resource_type": "droplet"
},
{
"resource_id": "7555620",
"resource_type": "image"
},
{
"resource_id": "3d80cb72-342b-4aaa-b92e-4e4abb24a933",
"resource_type": "volume"
}
]
}
resp = client.tags.assign_resources(tag_id="awesome", body=req)
security:
- bearer_auth:
- tag:create
delete:
operationId: tags_unassign_resources
summary: Untag a Resource
description: >-
Resources can be untagged by sending a DELETE request to
`/v2/tags/$TAG_NAME/resources` with an array of json objects containing
`resource_id` and `resource_type` attributes.
Currently only untagging of Droplets, Databases, Images, Volumes, and
Volume Snapshots is supported. `resource_type` is expected to be the
string `droplet`, `database`, `image`, `volume` or `volume_snapshot`.
`resource_id` is expected to be the ID of the resource as a string.
tags:
- Tags
parameters:
- $ref: '#/components/parameters/tag_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/tags_resource'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"resources":[{"resource_id":"9569411","resource_type":"droplet"},{"resource_id":"7555620","resource_type":"image"},{"resource_id":"3d80cb72-342b-4aaa-b92e-4e4abb24a933","resource_type":"volume"}]}' \
"https://api.digitalocean.com/v2/tags/awesome/resources"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
untagResourcesRequest := &godo.UntagResourcesRequest{
Resources: []Resource{{ID: "11457573", Type: "droplet"},{ID: "7555620", Type: "image"},{ID: "3d80cb72-342b-4aaa-b92e-4e4abb24a933", Type: "volume"}},
}
client.Tags.UntagResources(ctx, "awesome", untagResourcesRequest)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.tags.untag_resources(name: 'awesome', resources: [{
resource_id: '9569411', resource_type: 'droplet' },{ resource_id:
'7555620', resource_type: 'image' },{ resource_id:
'3d80cb72-342b-4aaa-b92e-4e4abb24a933', resource_type: 'volume' }])
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"resources": [
{
"resource_id": "9569411",
"resource_type": "droplet"
},
{
"resource_id": "7555620",
"resource_type": "image"
},
{
"resource_id": "3d80cb72-342b-4aaa-b92e-4e4abb24a933",
"resource_type": "volume"
}
]
}
resp = client.tags.unassign_resources(tag_id="awesome", body=req)
security:
- bearer_auth:
- tag:delete
/v2/volumes:
get:
operationId: volumes_list
summary: List All Block Storage Volumes
description: >+
To list all of the block storage volumes available on your account, send
a GET request to `/v2/volumes`.
## Filtering Results
### By Region
The `region` may be provided as query parameter in order to restrict
results to volumes available in a specific region. For example:
`/v2/volumes?region=nyc1`
### By Name
It is also possible to list volumes on your account that match a
specified name. To do so, send a GET request with the volume's name as a
query parameter to `/v2/volumes?name=$VOLUME_NAME`.
**Note:** You can only create one volume per region with the same name.
### By Name and Region
It is also possible to retrieve information about a block storage volume
by name. To do so, send a GET request with the volume's name and the
region slug for the region it is located in as query parameters to
`/v2/volumes?name=$VOLUME_NAME®ion=nyc1`.
tags:
- Block Storage
parameters:
- $ref: '#/components/parameters/volume_name'
- $ref: '#/components/parameters/region'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/volumes'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
# List all volumes
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/volumes?region=nyc1"
# List volumes filtered by name
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/volumes?name=example"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
volumes, _, err := client.Storage.ListVolumes(ctx, opt)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
volumes = client.volumes.all
volumes.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.volumes.list(region="nyc3")
security:
- bearer_auth:
- block_storage:read
post:
operationId: volumes_create
summary: Create a New Block Storage Volume
description: >-
To create a new volume, send a POST request to `/v2/volumes`.
Optionally, a `filesystem_type` attribute may be provided in order to
automatically format the volume's filesystem. Pre-formatted volumes are
automatically mounted when attached to Ubuntu, Debian, Fedora, Fedora
Atomic, and CentOS Droplets created on or after April 26, 2018.
Attaching pre-formatted volumes to Droplets without support for
auto-mounting is not recommended.
tags:
- Block Storage
requestBody:
required: true
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/volumes_ext4'
- $ref: '#/components/schemas/volumes_xfs'
examples:
ext4 volume:
value:
size_gigabytes: 10
name: ext4-example
description: Block store for examples
region: nyc1
filesystem_type: ext4
filesystem_label: ext4_volume_01
xfs volume:
value:
size_gigabytes: 10
name: xfs_example
description: Block store for examples
region: nyc1
filesystem_type: xfs
filesystem_label: xfs_volume01
Volume from a snapshot:
value:
size_gigabytes: 10
name: snapshot_example
snapshot_id: b0798135-fb76-11eb-946a-0a58ac146f33
region: nyc1
description: A new volume based on a snapshot
filesystem_type: ext4
filesystem_label: ext4_volume_01
responses:
'201':
$ref: '#/components/responses/volume'
'400':
$ref: '#/components/responses/bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"size_gigabytes":10, "name": "example", "description": "Block store for examples", "region": "nyc1", "filesystem_type": "ext4", "filesystem_label": "example"}' \
"https://api.digitalocean.com/v2/volumes"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &VolumeCreateRequest{
Region: "nyc1",
Name: "example",
Description: "Block store for examples",
SizeGigaBytes: 10,
}
volume, _, err := client.Storage.CreateVolume(ctx, createRequest)
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
volume = DropletKit::Volume.new(
size_gigabytes: 10,
name: 'Example',
description: 'Block store for examples',
region: 'nyc1'
)
client.volumes.create(volume)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"size_gigabytes": 10,
"name": "ext4-example",
"description": "Block store for examples",
"region": "nyc1",
"filesystem_type": "ext4",
"filesystem_label": "ext4_volume_01"
}
resp = client.volumes.create(body=req)
security:
- bearer_auth:
- block_storage:create
delete:
operationId: volumes_delete_byName
summary: Delete a Block Storage Volume by Name
description: >+
Block storage volumes may also be deleted by name by sending a DELETE
request with the volume's **name** and the **region slug** for the
region it is located in as query parameters to
`/v2/volumes?name=$VOLUME_NAME®ion=nyc1`.
No response body will be sent back, but the response code will indicate
success. Specifically, the response code will be a 204, which means that
the action was successful with no returned body data.
tags:
- Block Storage
parameters:
- $ref: '#/components/parameters/volume_name'
- $ref: '#/components/parameters/region'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/volumes?name=example®ion=nyc1"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.volumes.delete_by_name(name="ext4-ex")
security:
- bearer_auth:
- block_storage:delete
/v2/volumes/actions:
post:
operationId: volumeActions_post
summary: Initiate A Block Storage Action By Volume Name
description: >
To initiate an action on a block storage volume by Name, send a POST
request to
`~/v2/volumes/actions`. The body should contain the appropriate
attributes for the respective action.
## Attach a Block Storage Volume to a Droplet
| Attribute |
Details |
| ----------- |
------------------------------------------------------------------- |
| type | This must be
`attach` |
| volume_name | The name of the block storage
volume |
| droplet_id | Set to the Droplet's
ID |
| region | Set to the slug representing the region where the volume
is located |
Each volume may only be attached to a single Droplet. However, up to
fifteen
volumes may be attached to a Droplet at a time. Pre-formatted volumes
will be
automatically mounted to Ubuntu, Debian, Fedora, Fedora Atomic, and
CentOS
Droplets created on or after April 26, 2018 when attached. On older
Droplets,
[additional
configuration](https://docs.digitalocean.com/products/volumes/how-to/mount/)
is required.
## Remove a Block Storage Volume from a Droplet
| Attribute |
Details |
| ----------- |
------------------------------------------------------------------- |
| type | This must be
`detach` |
| volume_name | The name of the block storage
volume |
| droplet_id | Set to the Droplet's
ID |
| region | Set to the slug representing the region where the volume
is located |
tags:
- Block Storage Actions
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
requestBody:
required: true
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/volume_action_post_attach'
- $ref: '#/components/schemas/volume_action_post_detach'
discriminator:
propertyName: type
mapping:
attach: '#/components/schemas/volume_action_post_attach'
detach: '#/components/schemas/volume_action_post_detach'
examples:
VolumeActionAttach:
value:
type: attach
volume_name: example
droplet_id: 11612190
region: nyc1
tags:
- aninterestingtag
VolumeActionDetach:
value:
type: detach
volume_name: example
droplet_id: 11612190
region: nyc1
responses:
'202':
$ref: '#/components/responses/volumeAction'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
# Attach a volume to a Droplet by name
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type": "attach", "volume_name": "example", "region": "nyc1", "droplet_id": "11612190","tags":["aninterestingtag"] }' \
"https://api.digitalocean.com/v2/volumes/actions"
# Remove a volume from a Droplet by name
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type": "detach", "droplet_id": "11612190", "volume_name": "example", "region": "nyc1"}' \
"https://api.digitalocean.com/v2/volumes/actions"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"type": "attach",
"volume_name": "example",
"droplet_id": 11612190,
"region": "nyc1",
"tags": [
"aninterestingtag"
]
}
resp = client.volume_actions.post(body=req)
security:
- bearer_auth:
- block_storage_action:create
/v2/volumes/snapshots/{snapshot_id}:
get:
operationId: volumeSnapshots_get_byId
summary: Retrieve an Existing Volume Snapshot
description: >+
To retrieve the details of a snapshot that has been created from a
volume, send a GET request to
`/v2/volumes/snapshots/$VOLUME_SNAPSHOT_ID`.
tags:
- Block Storage
parameters:
- $ref: '#/components/parameters/volume_snapshot_id'
responses:
'200':
$ref: '#/components/responses/volumeSnapshot'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/volumes/snapshots/fbe805e8-866b-11e6-96bf-000f53315a41"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "big-data-snapshot1475261774"
}
resp = client.volume_snapshots.get_by_id(snapshot_id="da3aa3a")
security:
- bearer_auth:
- block_storage_snapshot:read
delete:
operationId: volumeSnapshots_delete_byId
summary: Delete a Volume Snapshot
description: >
To delete a volume snapshot, send a DELETE request to
`/v2/volumes/snapshots/$VOLUME_SNAPSHOT_ID`.
A status of 204 will be given. This indicates that the request was
processed
successfully, but that no response body is needed.
tags:
- Block Storage
parameters:
- $ref: '#/components/parameters/volume_snapshot_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/snapshots/fbe805e8-866b-11e6-96bf-000f53315a41"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Storage.DeleteSnapshot(ctx, "82a48a18-873f-11e6-96bf-000f53315a41")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.snapshots.delete(id: "fbe805e8-866b-11e6-96bf-000f53315a41")
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "big-data-snapshot1475261774"
}
resp = client.volume_snapshots.delete_by_id(snapshot_id="da3aa3a")
security:
- bearer_auth:
- block_storage_snapshot:delete
/v2/volumes/{volume_id}:
get:
operationId: volumes_get
summary: Retrieve an Existing Block Storage Volume
description: >+
To show information about a block storage volume, send a GET request to
`/v2/volumes/$VOLUME_ID`.
tags:
- Block Storage
parameters:
- $ref: '#/components/parameters/volume_id'
responses:
'200':
$ref: '#/components/responses/volume'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
# Retrieve an existing volume
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/volumes/7724db7c-e098-11e5-b522-000f53304e51"
# Retrieve and existing volume by name
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/volumes?name=example®ion=nyc1"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
volume, _, err := client.Storage.GetVolume(ctx, "7724db7c-e098-11e5-b522-000f53304e51")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.volumes.find(id: '7724db7c-e098-11e5-b522-000f53304e51')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.volumes.get(volume_id="7724db7c")
security:
- bearer_auth:
- block_storage:read
delete:
operationId: volumes_delete
summary: Delete a Block Storage Volume
description: >+
To delete a block storage volume, destroying all data and removing it
from your account, send a DELETE request to `/v2/volumes/$VOLUME_ID`.
No response body will be sent back, but the response code will indicate
success. Specifically, the response code will be a 204, which means that
the action was successful with no returned body data.
tags:
- Block Storage
parameters:
- $ref: '#/components/parameters/volume_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/volumes/7724db7c-e098-11e5-b522-000f53304e51"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
_, err := client.Storage.DeleteVolume(ctx, "7724db7c-e098-11e5-b522-000f53304e51")
}
- lang: Ruby
source: |-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.volumes.delete(id: '7724db7c-e098-11e5-b522-000f53304e51')
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.volumes.delete(volume_id="7724db7c")
security:
- bearer_auth:
- block_storage:delete
/v2/volumes/{volume_id}/actions:
get:
operationId: volumeActions_list
summary: List All Actions for a Volume
description: >+
To retrieve all actions that have been executed on a volume, send a GET
request to `/v2/volumes/$VOLUME_ID/actions`.
tags:
- Block Storage Actions
parameters:
- $ref: '#/components/parameters/volume_id'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/volumeActions'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/volumes/7724db7c-e098-11e5-b522-000f53304e51/actions?page=1&per_page=1"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
actions, _, err := client.StorageActions(ctx, "7724db7c-e098-11e5-b522-000f53304e51", opt)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
actions = client.volume.actions(id:
'7724db7c-e098-11e5-b522-000f53304e51')
actions.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.volume_actions.list(volume_id="7724db7c")
security:
- bearer_auth:
- block_storage_action:read
post:
operationId: volumeActions_post_byId
summary: Initiate A Block Storage Action By Volume Id
description: >
To initiate an action on a block storage volume by Id, send a POST
request to
`~/v2/volumes/$VOLUME_ID/actions`. The body should contain the
appropriate
attributes for the respective action.
## Attach a Block Storage Volume to a Droplet
| Attribute |
Details |
| ---------- |
------------------------------------------------------------------- |
| type | This must be
`attach` |
| droplet_id | Set to the Droplet's
ID |
| region | Set to the slug representing the region where the volume
is located |
Each volume may only be attached to a single Droplet. However, up to
fifteen
volumes may be attached to a Droplet at a time. Pre-formatted volumes
will be
automatically mounted to Ubuntu, Debian, Fedora, Fedora Atomic, and
CentOS
Droplets created on or after April 26, 2018 when attached. On older
Droplets,
[additional
configuration](https://docs.digitalocean.com/products/volumes/how-to/mount/)
is required.
## Remove a Block Storage Volume from a Droplet
| Attribute |
Details |
| ---------- |
------------------------------------------------------------------- |
| type | This must be
`detach` |
| droplet_id | Set to the Droplet's
ID |
| region | Set to the slug representing the region where the volume
is located |
## Resize a Volume
| Attribute |
Details |
| -------------- |
------------------------------------------------------------------- |
| type | This must be
`resize` |
| size_gigabytes | The new size of the block storage volume in GiB
(1024^3) |
| region | Set to the slug representing the region where the
volume is located |
Volumes may only be resized upwards. The maximum size for a volume is
16TiB.
tags:
- Block Storage Actions
parameters:
- $ref: '#/components/parameters/volume_id'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
requestBody:
required: true
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/volume_action_post_attach'
- $ref: '#/components/schemas/volume_action_post_detach'
- $ref: '#/components/schemas/volume_action_post_resize'
discriminator:
propertyName: type
mapping:
attach: '#/components/schemas/volume_action_post_attach'
detach: '#/components/schemas/volume_action_post_detach'
resize: '#/components/schemas/volume_action_post_resize'
examples:
VolumeActionAttach:
value:
type: attach
droplet_id: 11612190
region: nyc1
tags:
- aninterestingtag
VolumeActionDetach:
value:
type: detach
droplet_id: 11612190
region: nyc1
VolumeActionResize:
value:
type: resize
size_gigabytes: 100
region: nyc1
responses:
'202':
$ref: '#/components/responses/volumeAction'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
# Attach a Volume to a Droplet by ID
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type": "attach", "droplet_id": 11612190, "region": "nyc1", "tags":["aninterestingtag"]}' \
"https://api.digitalocean.com/v2/volumes/7724db7c-e098-11e5-b522-000f53304e51/actions"
# Remove a Volume from a Droplet by ID
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type": "detach", "droplet_id": "11612190", "region": "nyc1"}' \
"https://api.digitalocean.com/v2/volumes/7724db7c-e098-11e5-b522-000f53304e51/actions"
# Resize a Volume
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"resize","size_gigabytes": 100, "region":"nyc1"}' \
"https://api.digitalocean.com/v2/volumes/7724db7c-e098-11e5-b522-000f53304e51/actions"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
// Attach a Volume to a Droplet by ID
action, _, err := client.StorageActions.Attach(ctx, "7724db7c-e098-11e5-b522-000f53304e51", 11612190)
// Remove a Volume from a Droplet by ID
// action, _, err := client.StorageActions.Detach(ctx, "7724db7c-e098-11e5-b522-000f53304e51")
// Resize a Volume
// action, _, err := client.StorageActions.Resize(ctx, "7724db7c-e098-11e5-b522-000f53304e51", 100, "nyc1")
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
# Attach a Volume to a Droplet by ID
client.volume_actions.attach(volume_id:'7724db7c-e098-11e5-b522-000f53304e51',
droplet_id: 11612190, region: 'nyc1'
# Remove a Volume from a Droplet by ID
#
client.volume_actions.detach(volume_id:'7724db7c-e098-11e5-b522-000f53304e51',
droplet_id: 11612190, region: 'nyc1'
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"type": "attach",
"droplet_id": 11612190,
"region": "nyc1",
"tags": [
"aninterestingtag"
]
}
resp = client.volume_actions.post_by_id(volume_id="7724db7c",
body=req)
security:
- bearer_auth:
- block_storage_action:create
/v2/volumes/{volume_id}/actions/{action_id}:
get:
operationId: volumeActions_get
summary: Retrieve an Existing Volume Action
description: >+
To retrieve the status of a volume action, send a GET request to
`/v2/volumes/$VOLUME_ID/actions/$ACTION_ID`.
tags:
- Block Storage Actions
parameters:
- $ref: '#/components/parameters/volume_id'
- $ref: '#/components/parameters/action_id'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/volumeAction'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/volumes/7724db7c-e098-11e5-b522-000f53304e51/actions/72531856"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
action, _, err := client.StorageActions.Get(ctx, "7724db7c-e098-11e5-b522-000f53304e51", 72531856)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.volume.actions.find(volume_id:
'7724db7c-e098-11e5-b522-000f53304e51', id: 72531856)
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.volume_actions.get(volume_id="7724db7c")
security:
- bearer_auth:
- block_storage_action:read
/v2/volumes/{volume_id}/snapshots:
get:
operationId: volumeSnapshots_list
summary: List Snapshots for a Volume
description: >+
To retrieve the snapshots that have been created from a volume, send a
GET request to `/v2/volumes/$VOLUME_ID/snapshots`.
tags:
- Block Storage
parameters:
- $ref: '#/components/parameters/volume_id'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/volumeSnapshots'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/volumes/82a48a18-873f-11e6-96bf-000f53315a41/snapshots?page=1&per_page=1"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opt := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
volumes, _, err := client.Storage.ListSnapshots(ctx, '82a48a18-873f-11e6-96bf-000f53315a41', opt)
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
snapshots = client.volumes.snapshots(id:
'82a48a18-873f-11e6-96bf-000f53315a41')
snapshots.each
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "big-data-snapshot1475261774"
}
resp = client.volume_snapshots.list(snapshot_id="da3aa3a")
security:
- bearer_auth:
- block_storage_snapshot:read
post:
operationId: volumeSnapshots_create
summary: Create Snapshot from a Volume
description: >-
To create a snapshot from a volume, sent a POST request to
`/v2/volumes/$VOLUME_ID/snapshots`.
tags:
- Block Storage
parameters:
- $ref: '#/components/parameters/volume_id'
requestBody:
required: true
content:
application/json:
schema:
properties:
name:
type: string
description: A human-readable name for the volume snapshot.
example: big-data-snapshot1475261774
tags:
$ref: '#/components/schemas/tags_array'
required:
- name
example:
name: big-data-snapshot1475261774
responses:
'201':
$ref: '#/components/responses/volumeSnapshot'
'400':
$ref: '#/components/responses/bad_request'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"big-data-snapshot1475261774", "tags":["aninterestingtag"]}' \
"https://api.digitalocean.com/v2/volumes/82a48a18-873f-11e6-96bf-000f53315a41/snapshots"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
snapshot, _, err := client.Storage.CreateSnapshot(ctx, &godo.SnapshotCreateRequest{
VolumeID: "82a48a18-873f-11e6-96bf-000f53315a41",
Name: "my snapshot",
Description: "my description",
Tags: []string{"one", "two"},
})
}
- lang: Ruby
source: >-
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
client.volumes.create_snapshot(id:
"82a48a18-873f-11e6-96bf-000f53315a41", name:
"big-data-snapshot1475261774")
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "big-data-snapshot1475261774"
}
resp = client.volume_snapshots.create(volume_id="da3aa3a", body=req)
security:
- bearer_auth:
- block_storage_snapshot:create
/v2/vpcs:
get:
operationId: vpcs_list
summary: List All VPCs
description: >-
To list all of the VPCs on your account, send a GET request to
`/v2/vpcs`.
tags:
- VPCs
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_vpcs'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/vpcs"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
opts := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
vpcs, _, err := client.VPCs.List(ctx, opts)
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.vpcs.list()
security:
- bearer_auth:
- vpc:read
post:
operationId: vpcs_create
summary: Create a New VPC
description: >
To create a VPC, send a POST request to `/v2/vpcs` specifying the
attributes
in the table below in the JSON body.
**Note:** If you do not currently have a VPC network in a specific
datacenter
region, the first one that you create will be set as the default for
that
region. The default VPC for a region cannot be changed or deleted.
tags:
- VPCs
requestBody:
required: true
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/vpc_updatable'
- $ref: '#/components/schemas/vpc_create'
required:
- name
- region
responses:
'201':
$ref: '#/components/responses/existing_vpc'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"my-new-vpc", "region":"nyc1", "ip_range": "10.10.10.0/24"}' \
"https://api.digitalocean.com/v2/vpcs"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
createRequest := &godo.VPCCreateRequest{
Name: "my-new-vpc",
RegionSlug: "nyc1",
IPRange: "10.10.10.0/24",
}
vpc, _, err := client.VPCs.Create(ctx, createRequest)
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "env.prod-vpc",
"description": "VPC for production environment",
"region": "nyc1",
"ip_range": "10.10.10.0/24"
}
resp = client.vpcs.create(body=req)
security:
- bearer_auth:
- vpc:create
/v2/vpcs/{vpc_id}:
get:
operationId: vpcs_get
summary: Retrieve an Existing VPC
description: >-
To show information about an existing VPC, send a GET request to
`/v2/vpcs/$VPC_ID`.
tags:
- VPCs
parameters:
- $ref: '#/components/parameters/vpc_id'
responses:
'200':
$ref: '#/components/responses/existing_vpc'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/vpcs/5a4981aa-9653-4bd1-bef5-d6bff52042e4"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
vpc, _, err := client.VPCs.Get(ctx, "5a4981aa-9653-4bd1-bef5-d6bff52042e4")
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.vpcs.get(vpc_id="e0fe0f4d")
security:
- bearer_auth:
- vpc:read
put:
operationId: vpcs_update
summary: Update a VPC
description: >
To update information about a VPC, send a PUT request to
`/v2/vpcs/$VPC_ID`.
tags:
- VPCs
parameters:
- $ref: '#/components/parameters/vpc_id'
requestBody:
required: true
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/vpc_updatable'
- $ref: '#/components/schemas/vpc_default'
required:
- name
responses:
'200':
$ref: '#/components/responses/existing_vpc'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"renamed-new-vpc", "description": "A new description", "default": true}' \
"https://api.digitalocean.com/v2/vpcs/5a4981aa-9653-4bd1-bef5-d6bff52042e4"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
updateRequest := &godo.VPCUpdateRequest{
Name: "renamed-new-vpc",
Description: "A new description",
}
_, _, err := client.VPCs.Update(ctx, "5a4981aa-9653-4bd1-bef5-d6bff52042e4", updateRequest)
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "env.prod-vpc",
"description": "VPC for production environment",
"default": True
}
resp = client.vpcs.update(vpc_id="8fdsfa", body=req)
security:
- bearer_auth:
- vpc:update
patch:
operationId: vpcs_patch
summary: Partially Update a VPC
description: |
To update a subset of information about a VPC, send a PATCH request to
`/v2/vpcs/$VPC_ID`.
tags:
- VPCs
parameters:
- $ref: '#/components/parameters/vpc_id'
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/vpc_updatable'
- $ref: '#/components/schemas/vpc_default'
responses:
'200':
$ref: '#/components/responses/existing_vpc'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"description": "An updated description"}' \
"https://api.digitalocean.com/v2/vpcs/5a4981aa-9653-4bd1-bef5-d6bff52042e4"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
vpcDesc := "An updated description"
_, _, err := client.VPCs.Set(ctx, "5a4981aa-9653-4bd1-bef5-d6bff52042e4", godo.VPCSetDescription(vpcDesc))
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "env.prod-vpc",
"description": "VPC for production environment",
"default": True
}
resp = client.vpcs.patch(vpc_id="8fdsfa", body=req)
security:
- bearer_auth:
- vpc:update
delete:
operationId: vpcs_delete
summary: Delete a VPC
description: >
To delete a VPC, send a DELETE request to `/v2/vpcs/$VPC_ID`. A 204
status
code with no body will be returned in response to a successful request.
The default VPC for a region can not be deleted. Additionally, a VPC can
only
be deleted if it does not contain any member resources. Attempting to
delete
a region's default VPC or a VPC that still has members will result in a
403 Forbidden error response.
tags:
- VPCs
parameters:
- $ref: '#/components/parameters/vpc_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/vpcs/e0fe0f4d-596a-465e-a902-571ce57b79fa"
- lang: Go
source: |-
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
resp, err := client.VPCs.Delete(ctx, "5a4981aa-9653-4bd1-bef5-d6bff52042e4")
}
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.vpcs.delete(vpc_id="e0fe0f4d")
security:
- bearer_auth:
- vpc:delete
/v2/vpcs/{vpc_id}/members:
get:
operationId: vpcs_list_members
summary: List the Member Resources of a VPC
description: >
To list all of the resources that are members of a VPC, send a GET
request to
`/v2/vpcs/$VPC_ID/members`.
To only list resources of a specific type that are members of the VPC,
included a `resource_type` query parameter. For example, to only list
Droplets
in the VPC, send a GET request to
`/v2/vpcs/$VPC_ID/members?resource_type=droplet`.
tags:
- VPCs
parameters:
- $ref: '#/components/parameters/vpc_id'
- $ref: '#/components/parameters/vpc_resource_type'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/vpc_members'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/vpcs/5a4981aa-9653-4bd1-bef5-d6bff52042e4/members"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.vpcs.list_members(vpc_id="e0fe0f4d")
security:
- bearer_auth:
- vpc:read
/v2/vpcs/{vpc_id}/peerings:
get:
operationId: vpcs_list_peerings
summary: List the Peerings of a VPC
description: |
To list all of a VPC's peerings, send a GET request to
`/v2/vpcs/$VPC_ID/peerings`.
tags:
- VPCs
parameters:
- $ref: '#/components/parameters/vpc_id'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/vpc_peerings'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/vpcs/5a4981aa-9653-4bd1-bef5-d6bff52042e4/peerings"
security:
- bearer_auth:
- vpc_peering:read
post:
operationId: vpcs_create_peerings
summary: Create a Peering with a VPC
description: |
To create a new VPC peering for a given VPC, send a POST request to
`/v2/vpcs/$VPC_ID/peerings`.
tags:
- VPCs
parameters:
- $ref: '#/components/parameters/vpc_id'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
pattern: ^[a-zA-Z0-9\-\.]+$
example: nyc1-blr1-peering
description: >-
The name of the VPC peering. Must be unique and may only
contain alphanumeric characters, dashes, and periods.
vpc_id:
type: string
format: uuid
example: c140286f-e6ce-4131-8b7b-df4590ce8d6a
description: The ID of the VPC to peer with.
required:
- name
- vpc_id
responses:
'202':
$ref: '#/components/responses/vpc_peering'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"example-vpc-peering", "vpc_id": "e51aed59-3bb1-4a6a-8de0-9d1329e9c997"}' \
"https://api.digitalocean.com/v2/vpcs/5a4981aa-9653-4bd1-bef5-d6bff52042e4/peerings"
security:
- bearer_auth:
- vpc_peering:create
/v2/vpcs/{vpc_id}/peerings/{vpc_peering_id}:
patch:
operationId: vpcs_patch_peerings
summary: Update a VPC Peering
description: >
To update the name of a VPC peering in a particular VPC, send a PATCH
request
to `/v2/vpcs/$VPC_ID/peerings/$VPC_PEERING_ID` with the new `name` in
the
request body.
tags:
- VPCs
parameters:
- $ref: '#/components/parameters/vpc_id'
- $ref: '#/components/parameters/vpc_peering_id'
requestBody:
required: true
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/vpc_peering_updatable'
required:
- name
responses:
'200':
$ref: '#/components/responses/vpc_peering'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "renamed-my-first-vpc-peering"}' \
"https://api.digitalocean.com/v2/vpcs/997615ce-132d-4bae-9270-9ee21b395e5d/peerings/6b5c619c-359c-44ca-87e2-47e98170c01d"
security:
- bearer_auth:
- vpc_peering:update
/v2/vpc_peerings:
get:
operationId: vpcPeerings_list
summary: List All VPC Peerings
description: >-
To list all of the VPC peerings on your account, send a GET request to
`/v2/vpc_peerings`.
tags:
- VPC Peerings
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/region'
responses:
'200':
$ref: '#/components/responses/all_vpc_peerings'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/vpc_peerings?region=sfo3&page=1&per_page=20"
security:
- bearer_auth:
- vpc_peering:read
post:
operationId: vpcPeerings_create
summary: Create a New VPC Peering
description: >
To create a new VPC Peering, send a POST request to `/v2/vpc_peerings`
specifying a name and a list of two VPC IDs to peer. The response code,
202
Accepted, does not indicate the success or failure of the operation,
just
that the request has been accepted for processing.
tags:
- VPC Peerings
requestBody:
required: true
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/vpc_peering_updatable'
- $ref: '#/components/schemas/vpc_peering_create'
required:
- name
- vpc_ids
responses:
'202':
$ref: '#/components/responses/provisioning_vpc_peering'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name": "my-first-vpc-peering", "vpc_ids": [ "997615ce-132d-4bae-9270-9ee21b395e5d", "e51aed59-3bb1-4a6a-8de0-9d1329e9c997"]}' \
"https://api.digitalocean.com/v2/vpc_peerings"
security:
- bearer_auth:
- vpc_peering:create
/v2/vpc_peerings/{vpc_peering_id}:
get:
operationId: vpcPeerings_get
summary: Retrieve an Existing VPC Peering
description: >
To show information about an existing VPC Peering, send a GET request to
`/v2/vpc_peerings/$VPC_PEERING_ID`.
tags:
- VPC Peerings
parameters:
- $ref: '#/components/parameters/vpc_peering_id'
responses:
'200':
$ref: '#/components/responses/active_vpc_peering'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/vpc_peerings/5a4981aa-9653-4bd1-bef5-d6bff52042e4"
security:
- bearer_auth:
- vpc_peering:read
patch:
operationId: vpcPeerings_patch
summary: Update a VPC peering
description: >
To update the name of a VPC peering, send a PATCH request to
`/v2/vpc_peerings/$VPC_PEERING_ID` with the new `name` in the request
body.
tags:
- VPC Peerings
parameters:
- $ref: '#/components/parameters/vpc_peering_id'
requestBody:
required: true
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/vpc_peering_updatable'
required:
- name
responses:
'200':
$ref: '#/components/responses/active_vpc_peering'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"renamed-vpc-peering"}' \
"https://api.digitalocean.com/v2/vpc_peerings/5a4981aa-9653-4bd1-bef5-d6bff52042e4"
security:
- bearer_auth:
- vpc_peering:update
delete:
operationId: vpcPeerings_delete
summary: Delete a VPC peering
description: >
To delete a VPC peering, send a DELETE request to
`/v2/vpc_peerings/$VPC_PEERING_ID`.
tags:
- VPC Peerings
parameters:
- $ref: '#/components/parameters/vpc_peering_id'
responses:
'202':
$ref: '#/components/responses/deleting_vpc_peering'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/vpc_peerings/6b5c619c-359c-44ca-87e2-47e98170c01d"
security:
- bearer_auth:
- vpc_peering:delete
/v2/uptime/checks:
get:
operationId: uptime_list_checks
summary: List All Checks
description: >-
To list all of the Uptime checks on your account, send a GET request to
`/v2/uptime/checks`.
tags:
- Uptime
parameters:
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_checks'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/uptime/checks"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.uptime.checks_list()
security:
- bearer_auth:
- uptime:read
post:
operationId: uptime_create_check
summary: Create a New Check
description: >
To create an Uptime check, send a POST request to `/v2/uptime/checks`
specifying the attributes
in the table below in the JSON body.
tags:
- Uptime
requestBody:
required: true
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/check_updatable'
required:
- name
- method
- target
- regions
- type
- enabled
responses:
'201':
$ref: '#/components/responses/existing_check'
'401':
$ref: '#/components/responses/unauthorized'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"Landing page check","type":"https","target":"https://www.landingpage.com","regions":["us_east","eu_west"],"enabled":true}' \
"https://api.digitalocean.com/v2/uptime/checks"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "Landing page check",
"type": "https",
"target": "https://www.landingpage.com",
"regions": [
"us_east",
"eu_west"
],
"enabled": True
}
resp = client.uptime.check_create(body=req)
security:
- bearer_auth:
- uptime:create
/v2/uptime/checks/{check_id}:
get:
operationId: uptime_get_check
summary: Retrieve an Existing Check
description: >-
To show information about an existing check, send a GET request to
`/v2/uptime/checks/$CHECK_ID`.
tags:
- Uptime
parameters:
- $ref: '#/components/parameters/check_id'
responses:
'200':
$ref: '#/components/responses/existing_check'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/uptime/checks/{check_id}"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.uptime.check_get(check_id="fd9dfa")
security:
- bearer_auth:
- uptime:read
put:
operationId: uptime_update_check
summary: Update a Check
description: >
To update the settings of an Uptime check, send a PUT request to
`/v2/uptime/checks/$CHECK_ID`.
tags:
- Uptime
parameters:
- $ref: '#/components/parameters/check_id'
requestBody:
required: true
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/check_updatable'
responses:
'200':
$ref: '#/components/responses/existing_check'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"Landing page check","type":"https","target":"https://www.newlandingpage.com","regions":["us_east","eu_west"],"enabled":true}' \
"https://api.digitalocean.com/v2/uptime/checks/{check_id}"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "Landing page check",
"type": "https",
"target": "https://www.landingpage.com",
"regions": [
"us_east",
"eu_west"
],
"enabled": True
}
resp = client.uptime.check_update(check_id="fd9fda", body=req)
security:
- bearer_auth:
- uptime:update
delete:
operationId: uptime_delete_check
summary: Delete a Check
description: >
To delete an Uptime check, send a DELETE request to
`/v2/uptime/checks/$CHECK_ID`. A 204 status
code with no body will be returned in response to a successful request.
Deleting a check will also delete alerts associated with the check.
tags:
- Uptime
parameters:
- $ref: '#/components/parameters/check_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/uptime/checks/{check_id}"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.uptime.check_delete(check_id="fd9dfa")
security:
- bearer_auth:
- uptime:delete
/v2/uptime/checks/{check_id}/state:
get:
operationId: uptime_get_checkState
summary: Retrieve Check State
description: >-
To show information about an existing check's state, send a GET request
to `/v2/uptime/checks/$CHECK_ID/state`.
tags:
- Uptime
parameters:
- $ref: '#/components/parameters/check_id'
responses:
'200':
$ref: '#/components/responses/existing_check_state'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/uptime/checks/{check_id}/state"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.uptime.check_state_get(check_id="fd9fda")
security:
- bearer_auth:
- uptime:read
/v2/uptime/checks/{check_id}/alerts:
get:
operationId: uptime_list_alerts
summary: List All Alerts
description: >-
To list all of the alerts for an Uptime check, send a GET request to
`/v2/uptime/checks/$CHECK_ID/alerts`.
tags:
- Uptime
parameters:
- $ref: '#/components/parameters/check_id'
- $ref: '#/components/parameters/per_page'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/all_alerts'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/uptime/checks/{check_id}/alerts"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.uptime.check_alerts_list(check_id="4de7ac8b")
security:
- bearer_auth:
- uptime:read
post:
operationId: uptime_create_alert
summary: Create a New Alert
description: >
To create an Uptime alert, send a POST request to
`/v2/uptime/checks/$CHECK_ID/alerts` specifying the attributes
in the table below in the JSON body.
tags:
- Uptime
parameters:
- $ref: '#/components/parameters/check_id'
requestBody:
required: true
description: >
The ''type'' field dictates the type of alert, and hence what type of
value to pass into the threshold property.
Type | Description | Threshold Value
-----|-------------|--------------------
`latency` | alerts on the response latency | milliseconds
`down` | alerts on a target registering as down in any region | N/A
(Not required)
`down_global` | alerts on a target registering as down globally | N/A
(Not required)
`ssl_expiry` | alerts on a SSL certificate expiring within $threshold
days | days
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/alert'
required:
- name
- type
- notifications
- period
responses:
'201':
$ref: '#/components/responses/existing_alert'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"Landing page degraded performance","type":"latency","threshold":300,"comparison":"greater_than","notifications":{"email":["bob@example.com"],"slack":[{"channel":"Production Alerts","url":"https://hooks.slack.com/services/T1234567/AAAAAAAA/ZZZZZZ"}]},"period":"2m"}' \
"https://api.digitalocean.com/v2/uptime/checks/{check_id}/alerts"
- lang: Python
source: |-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "Landing page degraded performance",
"type": "latency",
"threshold": 300,
"comparison": "greater_than",
"notifications": {
"email": [
"bob@example.com"
],
"slack": [
{
"channel": "Production Alerts",
"url": "https://hooks.slack.com/services/T1234567/AAAAAAAA/ZZZZZZ"
}
]
},
"period": "2m"
}
resp = client.uptime.alert_create(check_id="4de7ac8b", body=req)
security:
- bearer_auth:
- uptime:create
/v2/uptime/checks/{check_id}/alerts/{alert_id}:
get:
operationId: uptime_get_alert
summary: Retrieve an Existing Alert
description: >-
To show information about an existing alert, send a GET request to
`/v2/uptime/checks/$CHECK_ID/alerts/$ALERT_ID`.
tags:
- Uptime
parameters:
- $ref: '#/components/parameters/check_id'
- $ref: '#/components/parameters/parameters_alert_id'
responses:
'200':
$ref: '#/components/responses/existing_alert'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/uptime/checks/{check_id}/alerts/{alert_id}"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.uptime.alert_get(check_id="4de7ac8b",
alert_id="da9da9")
security:
- bearer_auth:
- uptime:read
put:
operationId: uptime_update_alert
summary: Update an Alert
description: >
To update the settings of an Uptime alert, send a PUT request to
`/v2/uptime/checks/$CHECK_ID/alerts/$ALERT_ID`.
tags:
- Uptime
parameters:
- $ref: '#/components/parameters/check_id'
- $ref: '#/components/parameters/parameters_alert_id'
requestBody:
required: true
content:
application/json:
schema:
type: object
allOf:
- $ref: '#/components/schemas/alert_updatable'
required:
- name
- type
- notifications
- period
responses:
'200':
$ref: '#/components/responses/existing_alert'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"name":"Landing page down globally","type":"down_global","notifications":{"email":["bob@example.com"],"slack":[{"channel":"Production Alerts","url":"https://hooks.slack.com/services/T1234567/AAAAAAAA/ZZZZZZ"}]},"period":"2m"}' \
"https://api.digitalocean.com/v2/uptime/checks/{check_id}/alerts/{alert_id}"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"name": "Landing page degraded performance",
"type": "latency",
"threshold": 300,
"comparison": "greater_than",
"notifications": {
"email": [
"bob@example.com"
],
"slack": [
{
"channel": "Production Alerts",
"url": "https://hooks.slack.com/services/T1234567/AAAAAAAA/ZZZZZZ"
}
]
},
"period": "2m"
}
resp = client.uptime.alert_update(check_id="4de7ac8b",
alert_id="da9da9", body=req)
security:
- bearer_auth:
- uptime:update
delete:
operationId: uptime_delete_alert
summary: Delete an Alert
description: >
To delete an Uptime alert, send a DELETE request to
`/v2/uptime/checks/$CHECK_ID/alerts/$ALERT_ID`. A 204 status
code with no body will be returned in response to a successful request.
tags:
- Uptime
parameters:
- $ref: '#/components/parameters/check_id'
- $ref: '#/components/parameters/parameters_alert_id'
responses:
'204':
$ref: '#/components/responses/no_content'
'401':
$ref: '#/components/responses/unauthorized'
'404':
$ref: '#/components/responses/not_found'
'429':
$ref: '#/components/responses/too_many_requests'
'500':
$ref: '#/components/responses/server_error'
default:
$ref: '#/components/responses/unexpected_error'
x-codeSamples:
- lang: cURL
source: |-
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/uptime/checks/{check_id}/alerts/{alert_id}"
- lang: Python
source: >-
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
resp = client.uptime.alert_delete(check_id="4de7ac8b",
alert_id="da9da9")
security:
- bearer_auth:
- uptime:delete
components:
securitySchemes:
bearer_auth:
type: http
scheme: bearer
description: >
## OAuth Authentication
In order to interact with the DigitalOcean API, you or your application
must
authenticate.
The DigitalOcean API handles this through OAuth, an open standard for
authorization. OAuth allows you to delegate access to your account.
Scopes can be used to grant full access, read-only access, or access to
a specific set of endpoints.
You can generate an OAuth token by visiting the [Apps &
API](https://cloud.digitalocean.com/account/api/tokens)
section of the DigitalOcean control panel for your account.
An OAuth token functions as a complete authentication request. In
effect, it
acts as a substitute for a username and password pair.
Because of this, it is absolutely **essential** that you keep your OAuth
tokens secure. In fact, upon generation, the web interface will only
display
each token a single time in order to prevent the token from being
compromised.
DigitalOcean access tokens begin with an identifiable prefix in order to
distinguish them from other similar tokens.
- `dop_v1_` for personal access tokens generated in the control panel
- `doo_v1_` for tokens generated by applications using [the OAuth
flow](https://docs.digitalocean.com/reference/api/oauth-api/)
- `dor_v1_` for OAuth refresh tokens
### Scopes
Scopes act like permissions assigned to an API token. These permissions
determine what actions the token can perform. You can create API
tokens that grant read-only access, full access, or limited access to
specific endpoints by using custom scopes.
Generally, scopes are designed to match HTTP verbs and common CRUD
operations (Create, Read, Update, Delete).
| HTTP Verb | CRUD Operation | Scope |
|---|---|---|
| GET | Read | `:read` |
| POST | Create | `:create` |
| PUT/PATCH | Update | `:update` |
| DELETE | Delete | `:delete` |
For example, creating a new Droplet by making a `POST` request to the
`/v2/droplets` endpoint requires the `droplet:create` scope while
listing Droplets by making a `GET` request to the `/v2/droplets`
endpoint requires the `droplet:read` scope.
Each endpoint below specifies which scope is required to access it when
using custom scopes.
### How to Authenticate with OAuth
In order to make an authenticated request, include a bearer-type
`Authorization` header containing your OAuth token. All requests must be
made over HTTPS.
### Authenticate with a Bearer Authorization Header
```
curl -X $HTTP_METHOD -H "Authorization: Bearer $DIGITALOCEAN_TOKEN"
"https://api.digitalocean.com/v2/$OBJECT"
```
parameters:
oneClicks_type:
in: query
name: type
description: Restrict results to a certain type of 1-Click.
required: false
schema:
type: string
enum:
- droplet
- kubernetes
example: kubernetes
per_page:
in: query
name: per_page
required: false
description: Number of items returned per page
schema:
type: integer
minimum: 1
default: 20
maximum: 200
example: 2
page:
in: query
name: page
required: false
description: Which 'page' of paginated results to return.
schema:
type: integer
minimum: 1
default: 1
example: 1
ssh_key_identifier:
in: path
name: ssh_key_identifier
required: true
description: Either the ID or the fingerprint of an existing SSH key.
schema:
anyOf:
- $ref: '#/components/schemas/ssh_key_id'
- $ref: '#/components/schemas/ssh_key_fingerprint'
example: 512189
action_id:
in: path
name: action_id
description: >-
A unique numeric ID that can be used to identify and reference an
action.
required: true
schema:
type: integer
minimum: 1
example: 36804636
with_projects:
description: Whether the project_id of listed apps should be fetched and included.
in: query
name: with_projects
schema:
type: boolean
example: true
accept:
description: >-
The content-type that should be used by the response. By default, the
response will be `application/json`. `application/yaml` is also
supported.
in: header
name: Accept
schema:
type: string
enum:
- application/json
- application/yaml
example: application/json
content-type:
description: >-
The content-type used for the request. By default, the requests are
assumed to use `application/json`. `application/yaml` is also supported.
in: header
name: Content-Type
schema:
type: string
enum:
- application/json
- application/yaml
example: application/json
id_app:
description: The ID of the app
in: path
name: id
required: true
schema:
type: string
example: 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
app_name:
description: The name of the app to retrieve.
in: query
name: name
schema:
type: string
example: myApp
app_id:
description: The app ID
in: path
name: app_id
required: true
schema:
type: string
example: 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
component:
description: >-
An optional component name. If set, logs will be limited to this
component only.
in: path
name: component_name
required: true
schema:
type: string
example: component
live_updates:
description: Whether the logs should follow live updates.
in: query
name: follow
schema:
type: boolean
example: true
log_type:
description: |-
The type of logs to retrieve
- BUILD: Build-time logs
- DEPLOY: Deploy-time logs
- RUN: Live run-time logs
- RUN_RESTARTED: Logs of crashed/restarted instances during runtime
in: query
name: type
required: true
schema:
default: UNSPECIFIED
enum:
- UNSPECIFIED
- BUILD
- DEPLOY
- RUN
- RUN_RESTARTED
type: string
example: BUILD
time_wait:
description: >-
An optional time duration to wait if the underlying component instance
is not immediately available. Default: `3m`.
in: query
name: pod_connection_timeout
schema:
type: string
example: 3m
deployment_id:
description: The deployment ID
in: path
name: deployment_id
required: true
schema:
type: string
example: 3aa4d20e-5527-4c00-b496-601fbd22520a
slug_size:
description: The slug of the instance size
in: path
name: slug
required: true
schema:
type: string
example: apps-s-1vcpu-0.5gb
alert_id:
description: The alert ID
in: path
name: alert_id
required: true
schema:
type: string
example: 5a624ab5-dd58-4b39-b7dd-8b7c36e8a91d
cdn_endpoint_id:
in: path
name: cdn_id
description: A unique identifier for a CDN endpoint.
required: true
schema:
type: string
format: uuid
minimum: 1
example: 19f06b6a-3ace-4315-b086-499a0e521b76
certificate_name:
name: name
in: query
description: Name of expected certificate
required: false
schema:
type: string
default: ''
example: certificate-name
certificate_id:
in: path
name: certificate_id
description: A unique identifier for a certificate.
required: true
schema:
type: string
format: uuid
minimum: 1
example: 4de7ac8b-495b-4884-9a69-1050c6793cd6
invoice_uuid:
name: invoice_uuid
description: UUID of the invoice
in: path
schema:
type: string
example: 22737513-0ea7-4206-8ceb-98a575af7681
required: true
tag_name:
in: query
name: tag_name
description: Limits the results to database clusters with a specific tag.
required: false
example: production
schema:
type: string
database_cluster_uuid:
in: path
name: database_cluster_uuid
description: A unique identifier for a database cluster.
required: true
example: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
schema:
type: string
format: uuid
migration_id:
in: path
name: migration_id
description: A unique identifier assigned to the online migration.
required: true
example: 77b28fc8-19ff-11eb-8c9c-c68e24557488
schema:
type: string
replica_name:
in: path
name: replica_name
description: The name of the database replica.
required: true
example: read-nyc3-01
schema:
type: string
username:
in: path
name: username
description: The name of the database user.
required: true
example: app-01
schema:
type: string
database_name:
in: path
name: database_name
description: The name of the database.
required: true
example: alpha
schema:
type: string
pool_name:
in: path
name: pool_name
description: The name used to identify the connection pool.
required: true
example: backend-pool
schema:
type: string
kafka_topic_name:
in: path
name: topic_name
description: The name used to identify the Kafka topic.
required: true
example: customer-events
schema:
type: string
logsink_id:
in: path
name: logsink_id
description: A unique identifier for a logsink of a database cluster
required: true
example: 50484ec3-19d6-4cd3-b56f-3b0381c289a6
schema:
type: string
opensearch_index_name:
in: path
name: index_name
description: The name of the OpenSearch index.
required: true
example: logs-*
schema:
type: string
domain_name:
name: domain_name
description: The name of the domain itself.
in: path
schema:
type: string
example: example.com
required: true
domain_name_query:
name: name
description: >-
A fully qualified record name. For example, to only include records
matching sub.example.com, send a GET request to
`/v2/domains/$DOMAIN_NAME/records?name=sub.example.com`.
in: query
schema:
type: string
example: sub.example.com
domain_type_query:
name: type
description: 'The type of the DNS record. For example: A, CNAME, TXT, ...'
in: query
schema:
type: string
enum:
- A
- AAAA
- CAA
- CNAME
- MX
- NS
- SOA
- SRV
- TXT
example: A
domain_record_id:
name: domain_record_id
description: The unique identifier of the domain record.
in: path
schema:
type: integer
example: 3352896
required: true
droplet_tag_name:
in: query
name: tag_name
description: >-
Used to filter Droplets by a specific tag. Can not be combined with
`name` or `type`.
required: false
schema:
type: string
example: env:prod
droplet_name:
in: query
name: name
description: >-
Used to filter list response by Droplet name returning only exact
matches. It is case-insensitive and can not be combined with `tag_name`.
required: false
schema:
type: string
example: web-01
droplet_type:
in: query
name: type
description: >-
When `type` is set to `gpus`, only GPU Droplets will be returned. By
default, only non-GPU Droplets are returned. Can not be combined with
`tag_name`.
required: false
schema:
type: string
enum:
- droplets
- gpus
example: droplets
droplet_delete_tag_name:
in: query
name: tag_name
description: Specifies Droplets to be deleted by tag.
required: true
schema:
type: string
example: env:test
droplet_id:
in: path
name: droplet_id
description: A unique identifier for a Droplet instance.
required: true
schema:
type: integer
minimum: 1
example: 3164444
x_dangerous:
in: header
name: X-Dangerous
description: >-
Acknowledge this action will destroy the Droplet and all associated
resources and _can not_ be reversed.
schema:
type: boolean
example: true
required: true
autoscale_pool_name:
name: name
in: query
description: The name of the autoscale pool
schema:
type: string
example: my-autoscale-pool
autoscale_pool_id:
in: path
name: autoscale_pool_id
description: A unique identifier for an autoscale pool.
required: true
schema:
type: string
example: 0d3db13e-a604-4944-9827-7ec2642d32ac
parameters_x_dangerous:
in: header
name: X-Dangerous
description: >-
Acknowledge this action will destroy the autoscale pool and its
associated resources and _can not_ be reversed.
schema:
type: boolean
example: true
required: true
firewall_id:
name: firewall_id
description: A unique ID that can be used to identify and reference a firewall.
in: path
schema:
type: string
format: uuid
example: bb4b2611-3d72-467b-8602-280330ecd65c
required: true
floating_ip:
in: path
name: floating_ip
description: A floating IP address.
required: true
schema:
type: string
format: ipv4
minimum: 1
example: 45.55.96.47
namespace_id:
name: namespace_id
description: The ID of the namespace to be managed.
in: path
schema:
type: string
example: fn-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
required: true
trigger_name:
name: trigger_name
description: The name of the trigger to be managed.
in: path
schema:
type: string
example: my trigger
required: true
type:
in: query
name: type
description: >-
Filters results based on image type which can be either `application` or
`distribution`.
required: false
schema:
type: string
enum:
- application
- distribution
example: distribution
private:
in: query
name: private
description: Used to filter only user images.
required: false
schema:
type: boolean
example: true
tag:
in: query
name: tag_name
description: Used to filter images by a specific tag.
required: false
schema:
type: string
example: base-image
image_id:
in: path
name: image_id
description: >-
A unique number that can be used to identify and reference a specific
image.
required: true
schema:
type: integer
example: 62137902
kubernetes_cluster_id:
in: path
name: cluster_id
description: A unique ID that can be used to reference a Kubernetes cluster.
required: true
schema:
type: string
format: uuid
minimum: 1
example: bd5f5959-5e1e-4205-a714-a914373942af
kubernetes_expiry_seconds:
in: query
name: expiry_seconds
required: false
description: >-
The duration in seconds that the returned Kubernetes credentials will be
valid. If not set or 0, the credentials will have a 7 day expiry.
schema:
type: integer
minimum: 0
default: 0
example: 300
kubernetes_node_pool_id:
in: path
name: node_pool_id
description: A unique ID that can be used to reference a Kubernetes node pool.
required: true
schema:
type: string
format: uuid
minimum: 1
example: cdda885e-7663-40c8-bc74-3a036c66545d
kubernetes_node_id:
in: path
name: node_id
description: >-
A unique ID that can be used to reference a node in a Kubernetes node
pool.
required: true
schema:
type: string
format: uuid
minimum: 1
example: 478247f8-b1bb-4f7a-8db9-2a5f8d4b8f8f
kubernetes_node_skip_drain:
in: query
name: skip_drain
required: false
description: >-
Specifies whether or not to drain workloads from a node before it is
deleted. Setting it to `1` causes node draining to be skipped. Omitting
the query parameter or setting its value to `0` carries out draining
prior to deletion.
schema:
type: integer
minimum: 0
maximum: 1
default: 0
example: 1
kubernetes_node_replace:
in: query
name: replace
required: false
description: >-
Specifies whether or not to replace a node after it has been deleted.
Setting it to `1` causes the node to be replaced by a new one after
deletion. Omitting the query parameter or setting its value to `0`
deletes without replacement.
schema:
type: integer
minimum: 0
maximum: 1
default: 0
example: 1
clusterlint_run_id:
in: query
name: run_id
description: Specifies the clusterlint run whose results will be retrieved.
required: false
schema:
type: string
format: uuid
example: 50c2f44c-011d-493e-aee5-361a4a0d1844
load_balancer_id:
in: path
name: lb_id
description: A unique identifier for a load balancer.
required: true
schema:
type: string
minimum: 1
example: 4de7ac8b-495b-4884-9a69-1050c6793cd6
alert_uuid:
in: path
name: alert_uuid
description: A unique identifier for an alert policy.
required: true
schema:
type: string
example: 4de7ac8b-495b-4884-9a69-1050c6793cd6
parameters_droplet_id:
in: query
name: host_id
description: The droplet ID.
example: '17209102'
required: true
schema:
type: string
network_interface:
in: query
name: interface
description: The network interface.
required: true
example: private
schema:
type: string
enum:
- private
- public
network_direction:
in: query
name: direction
description: The traffic direction.
required: true
example: inbound
schema:
type: string
enum:
- inbound
- outbound
metric_timestamp_start:
in: query
name: start
description: UNIX timestamp to start metric window.
example: '1620683817'
required: true
schema:
type: string
metric_timestamp_end:
in: query
name: end
description: UNIX timestamp to end metric window.
example: '1620705417'
required: true
schema:
type: string
parameters_app_id:
in: query
name: app_id
description: The app UUID.
example: 2db3c021-15ad-4088-bfe8-99dc972b9cf6
required: true
schema:
type: string
app_component:
in: query
name: app_component
description: The app component name.
example: sample-application
required: false
schema:
type: string
parameters_load_balancer_id:
in: query
name: lb_id
description: A unique identifier for a load balancer.
required: true
schema:
type: string
example: 4de7ac8b-495b-4884-9a69-1050c6793cd6
destination_uuid:
in: path
name: destination_uuid
description: A unique identifier for a destination.
required: true
schema:
type: string
example: 1a64809f-1708-48ee-a742-dec8d481b8d1
resource_id:
in: query
name: resource_id
description: A unique URN for a resource.
schema:
$ref: '#/components/schemas/urn'
example: do:kubernetes:5ba4518b-b9e2-4978-aa92-2d4c727e8824
sink_uuid:
in: path
name: sink_uuid
description: A unique identifier for a sink.
required: true
schema:
type: string
example: 78b172b6-52c3-4a4b-96d5-78d3f1a0b18c
project_id:
in: path
name: project_id
description: A unique identifier for a project.
required: true
schema:
type: string
format: uuid
minimum: 1
example: 4de7ac8b-495b-4884-9a69-1050c6793cd6
registry_expiry_seconds:
in: query
name: expiry_seconds
required: false
description: >-
The duration in seconds that the returned registry credentials will be
valid. If not set or 0, the credentials will not expire.
schema:
type: integer
minimum: 0
default: 0
example: 3600
registry_read_write:
in: query
name: read_write
required: false
description: >-
By default, the registry credentials allow for read-only access. Set
this query parameter to `true` to obtain read-write credentials.
schema:
type: boolean
default: false
example: true
registry_name:
in: path
name: registry_name
description: The name of a container registry.
required: true
schema:
type: string
example: example
token_pagination_page:
in: query
name: page
required: false
description: >-
Which 'page' of paginated results to return. Ignored when 'page_token'
is provided.
schema:
type: integer
minimum: 1
default: 1
example: 1
token_pagination_page_token:
in: query
name: page_token
required: false
description: >-
Token to retrieve of the next or previous set of results more quickly
than using 'page'.
schema:
type: string
example: eyJUb2tlbiI6IkNnZGpiMjlz
registry_repository_name:
in: path
name: repository_name
description: >-
The name of a container registry repository. If the name contains `/`
characters, they must be URL-encoded, e.g. `%2F`.
required: true
schema:
type: string
example: repo-1
registry_repository_tag:
in: path
name: repository_tag
description: The name of a container registry repository tag.
required: true
schema:
type: string
example: 06a447a
registry_manifest_digest:
in: path
name: manifest_digest
description: The manifest digest of a container registry repository tag.
required: true
schema:
type: string
example: sha256:cb8a924afdf0229ef7515d9e5b3024e23b3eb03ddbba287f4a19c6ac90b8d221
garbage_collection_uuid:
in: path
name: garbage_collection_uuid
description: The UUID of a garbage collection run.
required: true
schema:
type: string
example: eff0feee-49c7-4e8f-ba5c-a320c109c8a8
reserved_ip:
in: path
name: reserved_ip
description: A reserved IP address.
required: true
schema:
type: string
format: ipv4
minimum: 1
example: 45.55.96.47
snapshot_resource_type:
in: query
name: resource_type
description: Used to filter snapshots by a resource type.
required: false
schema:
type: string
enum:
- droplet
- volume
example: droplet
snapshot_id:
in: path
name: snapshot_id
required: true
description: >-
Either the ID of an existing snapshot. This will be an integer for a
Droplet snapshot or a string for a volume snapshot.
schema:
anyOf:
- type: integer
description: The ID of a Droplet snapshot.
example: 6372321
- type: string
description: The ID of a volume snapshot.
example: fbe805e8-866b-11e6-96bf-000f53315a41
example: 6372321
tag_id:
in: path
name: tag_id
description: >-
The name of the tag. Tags may contain letters, numbers, colons, dashes,
and underscores. There is a limit of 255 characters per tag.
required: true
schema:
type: string
maxLength: 255
pattern: ^[a-zA-Z0-9_\-\:]+$
example: awesome
volume_name:
name: name
in: query
description: The block storage volume's name.
schema:
type: string
example: example
region:
name: region
in: query
description: The slug identifier for the region where the resource is available.
schema:
$ref: '#/components/schemas/region_slug'
example: nyc3
volume_snapshot_id:
name: snapshot_id
in: path
description: The unique identifier for the snapshot.
schema:
type: string
required: true
example: fbe805e8-866b-11e6-96bf-000f53315a41
volume_id:
name: volume_id
in: path
required: true
description: The ID of the block storage volume.
schema:
type: string
format: uuid
example: 7724db7c-e098-11e5-b522-000f53304e51
vpc_id:
in: path
name: vpc_id
description: A unique identifier for a VPC.
required: true
schema:
type: string
format: uuid
minimum: 1
example: 4de7ac8b-495b-4884-9a69-1050c6793cd6
vpc_resource_type:
in: query
name: resource_type
description: Used to filter VPC members by a resource type.
required: false
schema:
type: string
example: droplet
vpc_peering_id:
in: path
name: vpc_peering_id
description: A unique identifier for a VPC peering.
required: true
schema:
type: string
format: uuid
example: 5a4981aa-9653-4bd1-bef5-d6bff52042e4
check_id:
in: path
name: check_id
description: A unique identifier for a check.
required: true
schema:
type: string
format: uuid
example: 4de7ac8b-495b-4884-9a69-1050c6793cd6
parameters_alert_id:
in: path
name: alert_id
description: A unique identifier for an alert.
required: true
schema:
type: string
format: uuid
example: 17f0f0ae-b7e5-4ef6-86e3-aa569db58284
headers:
ratelimit-limit:
schema:
type: integer
example: 5000
description: >-
The default limit on number of requests that can be made per hour and
per minute. Current rate limits are 5000 requests per hour and 250
requests per minute.
ratelimit-remaining:
schema:
type: integer
example: 4816
description: >-
The number of requests in your hourly quota that remain before you hit
your request limit. See
https://developers.digitalocean.com/documentation/v2/#rate-limit for
information about how requests expire.
ratelimit-reset:
schema:
type: integer
example: 1444931833
description: >-
The time when the oldest request will expire. The value is given in Unix
epoch time. See
https://developers.digitalocean.com/documentation/v2/#rate-limit for
information about how requests expire.
content-disposition:
description: >-
Indicates if the content is expected to be displayed *inline* in the
browser, that is, as a Web page or as part of a Web page, or as an
*attachment*, that is downloaded and saved locally.
schema:
type: string
example: >-
attachment; filename="DigitalOcean Invoice 2020 Jul
(6173678-418071234).csv"
content-type:
description: 'The type of data that is returned from a request. '
schema:
type: string
example: application/json; charset=utf-8
x-request-id:
description: >-
Optionally, some endpoints may include a request ID that should be
provided when reporting bugs or opening support tickets to help
identify the issue.
schema:
type: string
format: uuid
example: 515850a0-a812-50bf-aa3c-d0d21d287e40
schemas:
error:
type: object
properties:
id:
description: >-
A short identifier corresponding to the HTTP status code returned.
For example, the ID for a response returning a 404 status code
would be "not_found."
type: string
example: not_found
message:
description: >-
A message providing additional information about the error,
including details to help resolve it when possible.
type: string
example: The resource you were accessing could not be found.
request_id:
description: >-
Optionally, some endpoints may include a request ID that should be
provided when reporting bugs or opening support tickets to help
identify the issue.
type: string
example: 4d9d8375-3c56-4925-a3e7-eb137fed17e9
required:
- id
- message
oneClicks:
type: object
properties:
slug:
title: slug
type: string
example: monitoring
description: The slug identifier for the 1-Click application.
type:
title: type
type: string
example: kubernetes
description: The type of the 1-Click application.
required:
- slug
- type
oneClicks_create:
type: object
properties:
addon_slugs:
title: addon_slugs
type: array
items:
type: string
example:
- kube-state-metrics
- loki
default: []
description: >-
An array of 1-Click Application slugs to be installed to the
Kubernetes cluster.
cluster_uuid:
title: cluster_uuid
type: string
example: 50a994b6-c303-438f-9495-7e896cfe6b08
description: >-
A unique ID for the Kubernetes cluster to which the 1-Click
Applications will be installed.
required:
- addon_slugs
- cluster_uuid
account:
type: object
properties:
droplet_limit:
description: >-
The total number of Droplets current user or team may have active at
one time.
type: integer
example: 25
floating_ip_limit:
description: The total number of Floating IPs the current user or team may have.
type: integer
example: 5
email:
description: >-
The email address used by the current user to register for
DigitalOcean.
type: string
example: sammy@digitalocean.com
name:
description: The display name for the current user.
type: string
example: Sammy the Shark
uuid:
description: The unique universal identifier for the current user.
type: string
example: b6fr89dbf6d9156cace5f3c78dc9851d957381ef
email_verified:
description: >-
If true, the user has verified their account via email. False
otherwise.
type: boolean
default: false
example: true
status:
description: This value is one of "active", "warning" or "locked".
type: string
enum:
- active
- warning
- locked
default: active
example: active
status_message:
description: >-
A human-readable message giving more details about the status of the
account.
type: string
example: ' '
team:
type: object
description: >-
When authorized in a team context, includes information about the
current team.
properties:
uuid:
description: The unique universal identifier for the current team.
type: string
example: 5df3e3004a17e242b7c20ca6c9fc25b701a47ece
name:
description: The name for the current team.
type: string
example: My Team
required:
- droplet_limit
- floating_ip_limit
- email
- uuid
- email_verified
- status
- status_message
ssh_key_id:
type: integer
description: >-
A unique identification number for this key. Can be used to embed a
specific SSH key into a Droplet.
readOnly: true
example: 512189
ssh_key_fingerprint:
type: string
description: >-
A unique identifier that differentiates this key from other keys using
a format that SSH recognizes. The fingerprint is created when the key is
added to your account.
readOnly: true
example: 3b:16:bf:e4:8b:00:8b:b8:59:8c:a9:d3:f0:19:45:fa
ssh_key_name:
type: string
description: >-
A human-readable display name for this key, used to easily identify the
SSH keys when they are displayed.
example: My SSH Public Key
sshKeys:
type: object
properties:
id:
$ref: '#/components/schemas/ssh_key_id'
fingerprint:
$ref: '#/components/schemas/ssh_key_fingerprint'
public_key:
description: >-
The entire public key string that was uploaded. Embedded into the
root user's `authorized_keys` file if you include this key during
Droplet creation.
type: string
example: >-
ssh-rsa
AEXAMPLEaC1yc2EAAAADAQABAAAAQQDDHr/jh2Jy4yALcK4JyWbVkPRaWmhck3IgCoeOO3z1e2dBowLh64QAM+Qb72pxekALga2oi4GvT+TlWNhzPH4V
example
name:
$ref: '#/components/schemas/ssh_key_name'
required:
- public_key
- name
link_to_last_page:
type: object
properties:
last:
description: URI of the last page of the results.
type: string
example: https://api.digitalocean.com/v2/images?page=2
link_to_next_page:
type: object
properties:
next:
description: URI of the next page of the results.
type: string
example: https://api.digitalocean.com/v2/images?page=2
forward_links:
allOf:
- $ref: '#/components/schemas/link_to_last_page'
- $ref: '#/components/schemas/link_to_next_page'
link_to_first_page:
type: object
properties:
first:
description: URI of the first page of the results.
type: string
example: https://api.digitalocean.com/v2/images?page=1
link_to_prev_page:
type: object
properties:
prev:
description: URI of the previous page of the results.
type: string
example: https://api.digitalocean.com/v2/images?page=1
backward_links:
allOf:
- $ref: '#/components/schemas/link_to_first_page'
- $ref: '#/components/schemas/link_to_prev_page'
page_links:
type: object
properties:
pages:
anyOf:
- $ref: '#/components/schemas/forward_links'
- $ref: '#/components/schemas/backward_links'
- {}
example:
pages:
first: https://api.digitalocean.com/v2/account/keys?page=1
prev: https://api.digitalocean.com/v2/account/keys?page=2
pagination:
type: object
properties:
links:
$ref: '#/components/schemas/page_links'
meta_properties:
type: object
description: Information about the response itself.
properties:
total:
description: Number of objects returned by the request.
type: integer
example: 1
meta:
type: object
properties:
meta:
allOf:
- $ref: '#/components/schemas/meta_properties'
- required:
- total
required:
- meta
region:
type: object
properties:
name:
type: string
description: >-
The display name of the region. This will be a full name that is
used in the control panel and other interfaces.
example: New York 3
slug:
type: string
description: >-
A human-readable string that is used as a unique identifier for each
region.
example: nyc3
features:
items:
type: string
description: >-
This attribute is set to an array which contains features available
in this region
example:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available:
type: boolean
description: >-
This is a boolean value that represents whether new Droplets can be
created in this region.
example: true
sizes:
items:
type: string
description: >-
This attribute is set to an array which contains the identifying
slugs for the sizes available in this region.
example:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
required:
- available
- features
- name
- sizes
- slug
action:
type: object
properties:
id:
type: integer
description: >-
A unique numeric ID that can be used to identify and reference an
action.
example: 36804636
status:
type: string
description: >-
The current status of the action. This can be "in-progress",
"completed", or "errored".
enum:
- in-progress
- completed
- errored
example: completed
default: in-progress
type:
type: string
description: >-
This is the type of action that the object represents. For example,
this could be "transfer" to represent the state of an image transfer
action.
example: create
started_at:
type: string
format: date-time
description: >-
A time value given in ISO8601 combined date and time format that
represents when the action was initiated.
example: '2020-11-14T16:29:21Z'
completed_at:
type: string
format: date-time
nullable: true
description: >-
A time value given in ISO8601 combined date and time format that
represents when the action was completed.
example: '2020-11-14T16:30:06Z'
resource_id:
type: integer
nullable: true
description: >-
A unique identifier for the resource that the action is associated
with.
example: 3164444
resource_type:
type: string
description: The type of resource that the action is associated with.
example: droplet
region:
$ref: '#/components/schemas/region'
region_slug:
type: string
nullable: true
description: >-
A human-readable string that is used as a unique identifier for each
region.
example: nyc3
apps_deployment_job:
properties:
name:
title: The name of this job
type: string
example: migrate-db
source_commit_hash:
title: The commit hash of the repository that was used to build this job
type: string
example: 54d4a727f457231062439895000d45437c7bb405
type: object
apps_deployment_functions:
type: object
properties:
name:
type: string
title: The name of this functions component
example: my-functions-component
source_commit_hash:
type: string
description: >-
The commit hash of the repository that was used to build this
functions component.
example: 54d4a727f457231062439895000d45437c7bb405
namespace:
type: string
description: The namespace where the functions are deployed.
example: ap-b2a93513-8d9b-4223-9d61-5e7272c81c32
apps_deployment_phase:
default: UNKNOWN
enum:
- UNKNOWN
- PENDING_BUILD
- BUILDING
- PENDING_DEPLOY
- DEPLOYING
- ACTIVE
- SUPERSEDED
- ERROR
- CANCELED
type: string
example: ACTIVE
apps_deployment_progress_step_reason:
properties:
code:
title: The error code
type: string
example: Title of Error
message:
title: The error message
type: string
example: This is an error
type: object
apps_deployment_progress_step_status:
default: UNKNOWN
enum:
- UNKNOWN
- PENDING
- RUNNING
- ERROR
- SUCCESS
type: string
example: SUCCESS
apps_deployment_progress_step:
properties:
component_name:
title: The component name that this step is associated with
type: string
example: component
ended_at:
format: date-time
title: The end time of this step
type: string
example: '2020-11-19T20:27:18Z'
message_base:
description: >-
The base of a human-readable description of the step intended to be
combined with the component name for presentation. For example:
`message_base` = "Building service"
`component_name` = "api"
type: string
example: Building service
name:
title: The name of this step
type: string
example: example_step
reason:
$ref: '#/components/schemas/apps_deployment_progress_step_reason'
started_at:
format: date-time
title: The start time of this step
type: string
example: '2020-11-19T20:27:18Z'
status:
$ref: '#/components/schemas/apps_deployment_progress_step_status'
steps:
items:
type: object
title: Child steps of this step
type: array
title: A step that is run as part of the deployment's lifecycle
type: object
apps_deployment_progress:
properties:
error_steps:
format: int32
title: Number of unsuccessful steps
type: integer
example: 3
pending_steps:
format: int32
title: Number of pending steps
type: integer
example: 2
running_steps:
format: int32
title: Number of currently running steps
type: integer
example: 2
steps:
items:
$ref: '#/components/schemas/apps_deployment_progress_step'
title: The deployment's steps
type: array
success_steps:
format: int32
title: Number of successful steps
type: integer
example: 4
summary_steps:
items:
$ref: '#/components/schemas/apps_deployment_progress_step'
title: A flattened summary of the steps
type: array
total_steps:
format: int32
title: Total number of steps
type: integer
example: 5
type: object
apps_deployment_service:
properties:
name:
title: The name of this service
type: string
example: web
source_commit_hash:
title: >-
The commit hash of the repository that was used to build this
service
type: string
example: 54d4a727f457231062439895000d45437c7bb405
type: object
app_domain_spec:
type: object
properties:
domain:
type: string
maxLength: 253
minLength: 4
pattern: ^((xn--)?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\.)+[a-zA-Z]{2,}\.?$
description: The hostname for the domain
example: app.example.com
type:
type: string
default: UNSPECIFIED
enum:
- UNSPECIFIED
- DEFAULT
- PRIMARY
- ALIAS
description: >-
- DEFAULT: The default `.ondigitalocean.app` domain assigned to this
app
- PRIMARY: The primary domain for this app that is displayed as the
default in the control panel, used in bindable environment
variables, and any other places that reference an app's live URL.
Only one domain may be set as primary.
- ALIAS: A non-primary domain
example: DEFAULT
wildcard:
type: boolean
description: >-
Indicates whether the domain includes all sub-domains, in addition
to the given domain
example: true
zone:
description: >-
Optional. If the domain uses DigitalOcean DNS and you would like App
Platform to automatically manage it for you, set this to the name of
the
domain on your account.
For example, If the domain you are adding is `app.domain.com`, the
zone
could be `domain.com`.
type: string
format: hostname
example: example.com
minimum_tls_version:
type: string
maxLength: 3
minLength: 3
enum:
- '1.2'
- '1.3'
description: >-
The minimum version of TLS a client application can use to access
resources for the domain. Must be one of the following values
wrapped within quotations: `"1.2"` or `"1.3"`.
example: '1.3'
required:
- domain
apps_git_source_spec:
type: object
properties:
branch:
type: string
description: The name of the branch to use
example: main
repo_clone_url:
type: string
description: >-
The clone URL of the repo. Example:
`https://github.com/digitalocean/sample-golang.git`
example: https://github.com/digitalocean/sample-golang.git
apps_github_source_spec:
type: object
properties:
branch:
type: string
description: The name of the branch to use
example: main
deploy_on_push:
type: boolean
description: Whether to automatically deploy new commits made to the repo
example: true
repo:
type: string
description: >-
The name of the repo in the format owner/repo. Example:
`digitalocean/sample-golang`
example: digitalocean/sample-golang
apps_gitlab_source_spec:
type: object
properties:
branch:
type: string
description: The name of the branch to use
example: main
deploy_on_push:
type: boolean
description: Whether to automatically deploy new commits made to the repo
example: true
repo:
type: string
description: >-
The name of the repo in the format owner/repo. Example:
`digitalocean/sample-golang`
example: digitalocean/sample-golang
apps_bitbucket_source_spec:
type: object
properties:
branch:
type: string
description: The name of the branch to use
example: main
deploy_on_push:
type: boolean
description: Whether to automatically deploy new commits made to the repo
example: true
repo:
type: string
description: >-
The name of the repo in the format owner/repo. Example:
`digitalocean/sample-golang`
example: digitalocean/sample-golang
apps_image_source_spec:
type: object
properties:
registry:
type: string
description: The registry name. Must be left empty for the `DOCR` registry type.
example: registry.hub.docker.com
registry_type:
type: string
enum:
- DOCKER_HUB
- DOCR
- GHCR
description: |-
- DOCKER_HUB: The DockerHub container registry type.
- DOCR: The DigitalOcean container registry type.
- GHCR: The Github container registry type.
example: DOCR
registry_credentials:
type: string
description: >-
The credentials to be able to pull the image. The value will be
encrypted on first submission. On following submissions, the
encrypted value should be used.
- "$username:$access_token" for registries of type `DOCKER_HUB`.
- "$username:$access_token" for registries of type `GHCR`.
example: my-dockerhub-username:dckr_pat_the_access_token
repository:
type: string
description: The repository name.
example: origin/master
tag:
type: string
description: >-
The repository tag. Defaults to `latest` if not provided and no
digest is provided. Cannot be specified if digest is provided.
example: latest
default: latest
digest:
type: string
description: The image digest. Cannot be specified if tag is provided.
example: >-
sha256:795e91610e9cccb7bb80893fbabf9c808df7d52ae1f39cd1158618b4a33041ac
deploy_on_push:
type: object
properties:
enabled:
type: boolean
description: >-
Whether to automatically deploy new images. Can only be used for
images hosted in DOCR and can only be used with an image tag,
not a specific digest.
example: true
app_variable_definition:
type: object
properties:
key:
type: string
pattern: ^[_A-Za-z][_A-Za-z0-9]*$
description: The variable name
example: BASE_URL
scope:
type: string
enum:
- UNSET
- RUN_TIME
- BUILD_TIME
- RUN_AND_BUILD_TIME
description: |-
- RUN_TIME: Made available only at run-time
- BUILD_TIME: Made available only at build-time
- RUN_AND_BUILD_TIME: Made available at both build and run-time
default: RUN_AND_BUILD_TIME
example: BUILD_TIME
type:
type: string
enum:
- GENERAL
- SECRET
description: |-
- GENERAL: A plain-text environment variable
- SECRET: A secret encrypted environment variable
default: GENERAL
example: GENERAL
value:
description: >-
The value. If the type is `SECRET`, the value will be encrypted on
first submission. On following submissions, the encrypted value
should be used.
type: string
example: http://example.com
required:
- key
app_log_destination_papertrail_spec:
type: object
properties:
endpoint:
type: string
description: Papertrail syslog endpoint.
example: https://mypapertrailendpoint.com
description: Papertrail configuration.
required:
- endpoint
app_log_destination_datadog_spec:
type: object
properties:
endpoint:
type: string
description: Datadog HTTP log intake endpoint.
example: https://mydatadogendpoint.com
api_key:
type: string
description: Datadog API key.
example: abcdefghijklmnopqrstuvwxyz0123456789
description: DataDog configuration.
required:
- api_key
app_log_destination_logtail_spec:
type: object
properties:
token:
type: string
description: Logtail token.
example: abcdefghijklmnopqrstuvwxyz0123456789
description: Logtail configuration.
required:
- endpoint
app_log_destination_open_search_spec_basic_auth:
type: object
properties:
user:
type: string
description: |-
Username to authenticate with. Only required when `endpoint` is set.
Defaults to `doadmin` when `cluster_name` is set.
example: apps_user
password:
description: >-
Password for user defined in User. Is required when `endpoint` is
set.
Cannot be set if using a DigitalOcean DBaaS OpenSearch cluster.
example: password1
description: Configure Username and/or Password for Basic authentication.
app_log_destination_open_search_spec:
type: object
properties:
endpoint:
type: string
description: >-
OpenSearch API Endpoint. Only HTTPS is supported. Format:
https://:.
Cannot be specified if `cluster_name` is also specified.
example: https://example.com:9300
basic_auth:
$ref: '#/components/schemas/app_log_destination_open_search_spec_basic_auth'
index_name:
type: string
default: logs
description: >-
The index name to use for the logs. If not set, the default index
name is "logs".
example: logs
cluster_name:
type: string
description: >-
The name of a DigitalOcean DBaaS OpenSearch cluster to use as a log
forwarding destination.
Cannot be specified if `endpoint` is also specified.
example: my-opensearch-cluster
description: OpenSearch configuration.
app_log_destination_definition:
type: object
properties:
name:
type: string
maxLength: 42
minLength: 2
pattern: >-
^[A-Za-z0-9()\[\]'"][-A-Za-z0-9_.
\/()\[\]]{0,40}[A-Za-z0-9()\[\]'"]$
example: my_log_destination
papertrail:
$ref: '#/components/schemas/app_log_destination_papertrail_spec'
datadog:
$ref: '#/components/schemas/app_log_destination_datadog_spec'
logtail:
$ref: '#/components/schemas/app_log_destination_logtail_spec'
open_search:
$ref: '#/components/schemas/app_log_destination_open_search_spec'
title: Configurations for external logging.
required:
- name
app_component_base:
type: object
properties:
name:
type: string
maxLength: 32
minLength: 2
pattern: ^[a-z][a-z0-9-]{0,30}[a-z0-9]$
description: The name. Must be unique across all components within the same app.
example: api
git:
$ref: '#/components/schemas/apps_git_source_spec'
github:
$ref: '#/components/schemas/apps_github_source_spec'
gitlab:
$ref: '#/components/schemas/apps_gitlab_source_spec'
bitbucket:
$ref: '#/components/schemas/apps_bitbucket_source_spec'
image:
$ref: '#/components/schemas/apps_image_source_spec'
dockerfile_path:
type: string
description: >-
The path to the Dockerfile relative to the root of the repo. If set,
it will be used to build this component. Otherwise, App Platform
will attempt to build it using buildpacks.
example: path/to/Dockerfile
build_command:
type: string
description: >-
An optional build command to run while building this component from
source.
example: npm run build
run_command:
type: string
description: An optional run command to override the component's default.
example: bin/api
source_dir:
type: string
description: >-
An optional path to the working directory to use for the build. For
Dockerfile builds, this will be used as the build context. Must be
relative to the root of the repo.
example: path/to/dir
envs:
type: array
items:
$ref: '#/components/schemas/app_variable_definition'
description: A list of environment variables made available to the component.
environment_slug:
type: string
description: >-
An environment slug describing the type of this app. For a full
list, please refer to [the product
documentation](https://docs.digitalocean.com/products/app-platform/).
example: node-js
log_destinations:
type: array
items:
$ref: '#/components/schemas/app_log_destination_definition'
description: A list of configured log forwarding destinations.
app_component_instance_base:
type: object
properties:
instance_count:
type: integer
format: int64
minimum: 1
description: >-
The amount of instances that this component should be scaled to.
Default: 1. Must not be set if autoscaling is used.
default: 1
example: 2
instance_size_slug:
description: >-
The instance size to use for this component. Default:
`apps-s-1vcpu-0.5gb`
oneOf:
- title: Size slug
type: string
enum:
- apps-s-1vcpu-0.5gb
- apps-s-1vcpu-1gb-fixed
- apps-s-1vcpu-1gb
- apps-s-1vcpu-2gb
- apps-s-2vcpu-4gb
- apps-d-1vcpu-0.5gb
- apps-d-1vcpu-1gb
- apps-d-1vcpu-2gb
- apps-d-1vcpu-4gb
- apps-d-2vcpu-4gb
- apps-d-2vcpu-8gb
- apps-d-4vcpu-8gb
- apps-d-4vcpu-16gb
- apps-d-8vcpu-32gb
default: apps-s-1vcpu-0.5gb
example: apps-s-1vcpu-0.5gb
- title: Deprecated
description: >
Deprecated size slugs for legacy plans. We strongly encourage
customers
to use the new plans when creating or upgrading apps.
type: string
enum:
- basic-xxs
- basic-xs
- basic-s
- basic-m
- professional-xs
- professional-s
- professional-m
- professional-1l
- professional-l
- professional-xl
example: basic-xxs
deprecated: true
example: apps-s-1vcpu-0.5gb
autoscaling:
description: >-
Configuration for automatically scaling this component based on
metrics.
type: object
properties:
min_instance_count:
description: >-
The minimum amount of instances for this component. Must be less
than max_instance_count.
type: integer
format: uint32
minimum: 1
example: 2
max_instance_count:
description: >-
The maximum amount of instances for this component. Must be more
than min_instance_count.
type: integer
format: uint32
minimum: 1
example: 3
metrics:
description: The metrics that the component is scaled on.
type: object
properties:
cpu:
description: Settings for scaling the component based on CPU utilization.
type: object
properties:
percent:
description: The average target CPU utilization for the component.
type: integer
format: uint32
minimum: 1
maximum: 100
default: 80
example: 75
apps_string_match:
type: object
properties:
exact:
type: string
description: >-
Exact string match. Only 1 of `exact`, `prefix`, or `regex` must be
set.
maxLength: 256
minLength: 1
example: https://www.example.com
prefix:
type: string
description: >-
Prefix-based match. Only 1 of `exact`, `prefix`, or `regex` must be
set.
maxLength: 256
minLength: 1
example: https://www.example.com
deprecated: true
regex:
type: string
maxLength: 256
minLength: 1
description: >-
RE2 style regex-based match. Only 1 of `exact`, `prefix`, or `regex`
must be set. For more information about RE2 syntax, see:
https://github.com/google/re2/wiki/Syntax
example: ^.*example.com
apps_cors_policy:
type: object
properties:
allow_origins:
type: array
description: The set of allowed CORS origins.
items:
$ref: '#/components/schemas/apps_string_match'
example:
- exact: https://www.example.com
- regex: ^.*example.com
allow_methods:
type: array
items:
type: string
description: >-
The set of allowed HTTP methods. This configures the
`Access-Control-Allow-Methods` header.
example:
- GET
- OPTIONS
- POST
- PUT
- PATCH
- DELETE
allow_headers:
type: array
items:
type: string
description: >-
The set of allowed HTTP request headers. This configures the
`Access-Control-Allow-Headers` header.
example:
- Content-Type
- X-Custom-Header
expose_headers:
type: array
items:
type: string
description: >-
The set of HTTP response headers that browsers are allowed to
access. This configures the `Access-Control-Expose-Headers` header.
example:
- Content-Encoding
- X-Custom-Header
max_age:
type: string
description: >-
An optional duration specifying how long browsers can cache the
results of a preflight request. This configures the
`Access-Control-Max-Age` header.
example: 5h30m
allow_credentials:
type: boolean
description: >-
Whether browsers should expose the response to the client-side
JavaScript code when the requests credentials mode is include. This
configures the `Access-Control-Allow-Credentials` header.
example: false
app_service_spec_health_check:
type: object
properties:
failure_threshold:
type: integer
format: int32
description: The number of failed health checks before considered unhealthy.
example: 2
port:
type: integer
format: int64
description: >-
The port on which the health check will be performed. If not set,
the health check will be performed on the component's http_port.
example: 80
maximum: 65535
minimum: 1
http_path:
type: string
description: >-
The route path used for the HTTP health check ping. If not set, the
HTTP health check will be disabled and a TCP health check used
instead.
example: /health
initial_delay_seconds:
type: integer
format: int32
description: The number of seconds to wait before beginning health checks.
example: 30
period_seconds:
type: integer
format: int32
description: The number of seconds to wait between health checks.
example: 60
success_threshold:
type: integer
format: int32
description: The number of successful health checks before considered healthy.
example: 3
timeout_seconds:
type: integer
format: int32
description: The number of seconds after which the check times out.
example: 45
app_route_spec:
title: A criterion for routing HTTP traffic to a component.
type: object
properties:
path:
description: >-
(Deprecated - Use Ingress Rules instead). An HTTP path prefix. Paths
must start with / and must be unique across all components within an
app.
type: string
example: /api
preserve_path_prefix:
description: >-
An optional flag to preserve the path that is forwarded to the
backend service. By default, the HTTP request path will be trimmed
from the left when forwarded to the component. For example, a
component with `path=/api` will have requests to `/api/list` trimmed
to `/list`. If this value is `true`, the path will remain
`/api/list`.
type: boolean
example: true
app_service_spec_termination:
type: object
properties:
drain_seconds:
type: integer
format: int32
description: >-
The number of seconds to wait between selecting a container instance
for termination and issuing the TERM signal. Selecting a container
instance for termination begins an asynchronous drain of new
requests on upstream load-balancers. (Default 15)
example: 15
maximum: 110
minimum: 1
grace_period_seconds:
type: integer
format: int32
description: >-
The number of seconds to wait between sending a TERM signal to a
container and issuing a KILL which causes immediate shutdown.
(Default 120)
example: 120
maximum: 600
minimum: 1
app_service_spec:
allOf:
- $ref: '#/components/schemas/app_component_base'
- $ref: '#/components/schemas/app_component_instance_base'
- type: object
properties:
cors:
allOf:
- $ref: '#/components/schemas/apps_cors_policy'
- description: (Deprecated - Use Ingress Rules instead).
- deprecated: true
health_check:
$ref: '#/components/schemas/app_service_spec_health_check'
protocol:
type: string
description: >
The protocol which the service uses to serve traffic on the
http_port.
- `HTTP`: The app is serving the HTTP protocol. Default.
- `HTTP2`: The app is serving the HTTP/2 protocol. Currently,
this needs to be implemented in the service by serving HTTP/2
cleartext (h2c).
enum:
- HTTP
- HTTP2
example: HTTP
http_port:
type: integer
description: >-
The internal port on which this service's run command will
listen. Default: 8080
If there is not an environment variable with the name `PORT`,
one will be automatically added with its value set to the value
of this field.
format: int64
maximum: 65535
minimum: 1
example: 3000
internal_ports:
type: array
description: >-
The ports on which this service will listen for internal
traffic.
items:
format: int64
type: integer
example:
- 80
- 443
routes:
type: array
description: >-
(Deprecated - Use Ingress Rules instead). A list of HTTP routes
that should be routed to this component.
deprecated: true
items:
$ref: '#/components/schemas/app_route_spec'
termination:
$ref: '#/components/schemas/app_service_spec_termination'
required:
- name
app_static_site_spec:
allOf:
- $ref: '#/components/schemas/app_component_base'
- type: object
properties:
index_document:
type: string
description: >-
The name of the index document to use when serving this static
site. Default: index.html
default: index.html
example: main.html
error_document:
type: string
description: >-
The name of the error document to use when serving this static
site. Default: 404.html. If no such file exists within the built
assets, App Platform will supply one.
default: 404.html
example: error.html
catchall_document:
type: string
description: >-
The name of the document to use as the fallback for any requests
to documents that are not found when serving this static site.
Only 1 of `catchall_document` or `error_document` can be set.
example: index.html
output_dir:
type: string
description: >-
An optional path to where the built assets will be located,
relative to the build context. If not set, App Platform will
automatically scan for these directory names: `_static`, `dist`,
`public`, `build`.
example: dist/
cors:
allOf:
- $ref: '#/components/schemas/apps_cors_policy'
- description: (Deprecated - Use Ingress Rules instead).
- deprecated: true
routes:
type: array
items:
$ref: '#/components/schemas/app_route_spec'
description: >-
(Deprecated - Use Ingress Rules instead). A list of HTTP routes
that should be routed to this component.
deprecated: true
required:
- name
app_job_spec_termination:
type: object
properties:
grace_period_seconds:
type: integer
format: int32
description: >-
The number of seconds to wait between sending a TERM signal to a
container and issuing a KILL which causes immediate shutdown.
(Default 120)
example: 120
maximum: 600
minimum: 1
app_job_spec:
allOf:
- $ref: '#/components/schemas/app_component_base'
- $ref: '#/components/schemas/app_component_instance_base'
- type: object
properties:
kind:
type: string
enum:
- UNSPECIFIED
- PRE_DEPLOY
- POST_DEPLOY
- FAILED_DEPLOY
description: >-
- UNSPECIFIED: Default job type, will auto-complete to
POST_DEPLOY kind.
- PRE_DEPLOY: Indicates a job that runs before an app
deployment.
- POST_DEPLOY: Indicates a job that runs after an app
deployment.
- FAILED_DEPLOY: Indicates a job that runs after a component
fails to deploy.
default: UNSPECIFIED
example: PRE_DEPLOY
termination:
$ref: '#/components/schemas/app_job_spec_termination'
required:
- name
app_worker_spec_termination:
type: object
properties:
grace_period_seconds:
type: integer
format: int32
description: >-
The number of seconds to wait between sending a TERM signal to a
container and issuing a KILL which causes immediate shutdown.
(Default 120)
example: 120
maximum: 600
minimum: 1
app_worker_spec:
allOf:
- $ref: '#/components/schemas/app_component_base'
- $ref: '#/components/schemas/app_component_instance_base'
- type: object
properties:
termination:
$ref: '#/components/schemas/app_worker_spec_termination'
required:
- name
app_alert_spec_rule:
default: UNSPECIFIED_RULE
enum:
- UNSPECIFIED_RULE
- CPU_UTILIZATION
- MEM_UTILIZATION
- RESTART_COUNT
- DEPLOYMENT_FAILED
- DEPLOYMENT_LIVE
- DOMAIN_FAILED
- DOMAIN_LIVE
- FUNCTIONS_ACTIVATION_COUNT
- FUNCTIONS_AVERAGE_DURATION_MS
- FUNCTIONS_ERROR_RATE_PER_MINUTE
- FUNCTIONS_AVERAGE_WAIT_TIME_MS
- FUNCTIONS_ERROR_COUNT
- FUNCTIONS_GB_RATE_PER_SECOND
type: string
example: CPU_UTILIZATION
app_alert_spec_operator:
default: UNSPECIFIED_OPERATOR
enum:
- UNSPECIFIED_OPERATOR
- GREATER_THAN
- LESS_THAN
type: string
example: GREATER_THAN
app_alert_spec_window:
default: UNSPECIFIED_WINDOW
enum:
- UNSPECIFIED_WINDOW
- FIVE_MINUTES
- TEN_MINUTES
- THIRTY_MINUTES
- ONE_HOUR
type: string
example: FIVE_MINUTES
app_alert_spec:
properties:
rule:
$ref: '#/components/schemas/app_alert_spec_rule'
disabled:
description: Is the alert disabled?
type: boolean
example: false
operator:
$ref: '#/components/schemas/app_alert_spec_operator'
value:
description: Threshold value for alert
format: float
type: number
example: 2.32
window:
$ref: '#/components/schemas/app_alert_spec_window'
type: object
app_functions_spec:
type: object
properties:
cors:
allOf:
- $ref: '#/components/schemas/apps_cors_policy'
- description: (Deprecated - Use Ingress Rules instead).
- deprecated: true
routes:
type: array
description: >-
(Deprecated - Use Ingress Rules instead). A list of HTTP routes that
should be routed to this component.
deprecated: true
items:
$ref: '#/components/schemas/app_route_spec'
name:
type: string
maxLength: 32
minLength: 2
pattern: ^[a-z][a-z0-9-]{0,30}[a-z0-9]$
description: The name. Must be unique across all components within the same app.
example: api
source_dir:
type: string
description: >-
An optional path to the working directory to use for the build. For
Dockerfile builds, this will be used as the build context. Must be
relative to the root of the repo.
example: path/to/dir
alerts:
type: array
items:
$ref: '#/components/schemas/app_alert_spec'
envs:
type: array
items:
$ref: '#/components/schemas/app_variable_definition'
description: A list of environment variables made available to the component.
git:
$ref: '#/components/schemas/apps_git_source_spec'
github:
$ref: '#/components/schemas/apps_github_source_spec'
gitlab:
$ref: '#/components/schemas/apps_gitlab_source_spec'
bitbucket:
$ref: '#/components/schemas/apps_bitbucket_source_spec'
log_destinations:
type: array
items:
$ref: '#/components/schemas/app_log_destination_definition'
description: A list of configured log forwarding destinations.
required:
- name
app_database_spec:
type: object
properties:
cluster_name:
description: >-
The name of the underlying DigitalOcean DBaaS cluster. This is
required for production databases. For dev databases, if
cluster_name is not set, a new cluster will be provisioned.
type: string
example: cluster_name
db_name:
description: The name of the MySQL or PostgreSQL database to configure.
type: string
example: my_db
db_user:
description: The name of the MySQL or PostgreSQL user to configure.
type: string
example: superuser
engine:
type: string
default: UNSET
enum:
- UNSET
- MYSQL
- PG
- REDIS
- MONGODB
- KAFKA
- OPENSEARCH
description: |-
- MYSQL: MySQL
- PG: PostgreSQL
- REDIS: Redis
- MONGODB: MongoDB
- KAFKA: Kafka
- OPENSEARCH: OpenSearch
example: PG
name:
description: >-
The database's name. The name must be unique across all components
within the same app and cannot use capital letters.
maxLength: 32
minLength: 2
pattern: ^[a-z][a-z0-9-]{0,30}[a-z0-9]$
type: string
example: prod-db
production:
description: Whether this is a production or dev database.
type: boolean
example: true
version:
description: The version of the database engine
type: string
example: '12'
required:
- name
app_ingress_spec_rule_string_match:
type: object
properties:
prefix:
type: string
description: >-
Prefix-based match. For example, `/api` will match `/api`, `/api/`,
and any nested paths such as `/api/v1/endpoint`.
maxLength: 256
example: /api
description: The path to match on.
required:
- prefix
app_ingress_spec_rule_match:
type: object
properties:
path:
$ref: '#/components/schemas/app_ingress_spec_rule_string_match'
description: The match configuration for the rule.
required:
- path
app_ingress_spec_rule_routing_component:
type: object
properties:
name:
description: The name of the component to route to.
type: string
example: web
preserve_path_prefix:
description: >-
An optional flag to preserve the path that is forwarded to the
backend service. By default, the HTTP request path will be trimmed
from the left when forwarded to the component. For example, a
component with `path=/api` will have requests to `/api/list` trimmed
to `/list`. If this value is `true`, the path will remain
`/api/list`. Note: this is not applicable for Functions Components
and is mutually exclusive with `rewrite`.
type: string
example: 'true'
rewrite:
description: >-
An optional field that will rewrite the path of the component to be
what is specified here. By default, the HTTP request path will be
trimmed from the left when forwarded to the component. For example,
a component with `path=/api` will have requests to `/api/list`
trimmed to `/list`. If you specified the rewrite to be `/v1/`,
requests to `/api/list` would be rewritten to `/v1/list`. Note: this
is mutually exclusive with `preserve_path_prefix`.
type: string
example: /api/v1/
description: >-
The component to route to. Only one of `component` or `redirect` may be
set.
required:
- name
app_ingress_spec_rule_routing_redirect:
type: object
properties:
uri:
description: >-
An optional URI path to redirect to. Note: if this is specified the
whole URI of the original request will be overwritten to this value,
irrespective of the original request URI being matched.
type: string
example: /about
authority:
description: >-
The authority/host to redirect to. This can be a hostname or IP
address. Note: use `port` to set the port.
type: string
example: example.com
port:
description: The port to redirect to.
type: integer
format: int64
example: 443
scheme:
description: >-
The scheme to redirect to. Supported values are `http` or `https`.
Default: `https`.
type: string
example: https
redirect_code:
description: >-
The redirect code to use. Defaults to `302`. Supported values are
300, 301, 302, 303, 304, 307, 308.
type: integer
format: int64
example: 302
description: >-
The redirect configuration for the rule. Only one of `component` or
`redirect` may be set.
app_ingress_spec_rule:
type: object
properties:
match:
$ref: '#/components/schemas/app_ingress_spec_rule_match'
cors:
$ref: '#/components/schemas/apps_cors_policy'
component:
$ref: '#/components/schemas/app_ingress_spec_rule_routing_component'
redirect:
$ref: '#/components/schemas/app_ingress_spec_rule_routing_redirect'
app_ingress_spec:
type: object
properties:
rules:
description: >-
Rules for configuring HTTP ingress for component routes, CORS,
rewrites, and redirects.
type: array
items:
$ref: '#/components/schemas/app_ingress_spec_rule'
description: Specification for app ingress configurations.
app_egress_type_spec:
title: The app egress type.
type: string
default: AUTOASSIGN
example: AUTOASSIGN
enum:
- AUTOASSIGN
- DEDICATED_IP
app_egress_spec:
type: object
description: Specification for app egress configurations.
properties:
type:
$ref: '#/components/schemas/app_egress_type_spec'
app_maintenance_spec:
type: object
description: >-
Specification to configure maintenance settings for the app, such as
maintenance mode and archiving the app.
properties:
enabled:
type: boolean
description: Indicates whether maintenance mode should be enabled for the app.
example: true
archive:
type: boolean
description: >-
Indicates whether the app should be archived. Setting this to true
implies that enabled is set to true. Note that this feature is
currently in closed beta.
example: true
app_spec:
title: AppSpec
type: object
description: The desired configuration of an application.
properties:
name:
description: >-
The name of the app. Must be unique across all apps in the same
account.
maxLength: 32
minLength: 2
pattern: ^[a-z][a-z0-9-]{0,30}[a-z0-9]$
type: string
example: web-app-01
region:
description: >-
The slug form of the geographical origin of the app. Default:
`nearest available`
type: string
enum:
- ams
- nyc
- fra
- sfo
- sgp
- blr
- tor
- lon
- syd
example: nyc
domains:
description: A set of hostnames where the application will be available.
type: array
items:
$ref: '#/components/schemas/app_domain_spec'
services:
description: Workloads which expose publicly-accessible HTTP services.
type: array
items:
$ref: '#/components/schemas/app_service_spec'
static_sites:
description: Content which can be rendered to static web assets.
type: array
items:
$ref: '#/components/schemas/app_static_site_spec'
jobs:
description: >-
Pre and post deployment workloads which do not expose
publicly-accessible HTTP routes.
type: array
items:
$ref: '#/components/schemas/app_job_spec'
workers:
description: Workloads which do not expose publicly-accessible HTTP services.
items:
$ref: '#/components/schemas/app_worker_spec'
type: array
functions:
description: >-
Workloads which expose publicly-accessible HTTP services via
Functions Components.
items:
$ref: '#/components/schemas/app_functions_spec'
type: array
databases:
description: >-
Database instances which can provide persistence to workloads within
the
application.
type: array
items:
$ref: '#/components/schemas/app_database_spec'
ingress:
$ref: '#/components/schemas/app_ingress_spec'
egress:
$ref: '#/components/schemas/app_egress_spec'
maintenance:
$ref: '#/components/schemas/app_maintenance_spec'
required:
- name
apps_deployment_static_site:
properties:
name:
title: The name of this static site
type: string
example: web
source_commit_hash:
title: >-
The commit hash of the repository that was used to build this static
site
type: string
example: 54d4a727f457231062439895000d45437c7bb405
type: object
apps_deployment_worker:
properties:
name:
title: The name of this worker
type: string
example: queue-runner
source_commit_hash:
title: The commit hash of the repository that was used to build this worker
type: string
example: 54d4a727f457231062439895000d45437c7bb405
type: object
apps_deployment:
properties:
cause:
title: What caused this deployment to be created
type: string
example: commit 9a4df0b pushed to github/digitalocean/sample-golang
cloned_from:
title: The ID of a previous deployment that this deployment was cloned from
type: string
example: 3aa4d20e-5527-4c00-b496-601fbd22520a
created_at:
format: date-time
title: The creation time of the deployment
type: string
example: '2020-07-28T18:00:00Z'
id:
title: The ID of the deployment
type: string
example: b6bdf840-2854-4f87-a36c-5f231c617c84
jobs:
items:
$ref: '#/components/schemas/apps_deployment_job'
title: Job components that are part of this deployment
type: array
functions:
type: array
items:
$ref: '#/components/schemas/apps_deployment_functions'
title: Functions components that are part of this deployment
phase:
$ref: '#/components/schemas/apps_deployment_phase'
phase_last_updated_at:
format: date-time
title: When the deployment phase was last updated
type: string
example: '0001-01-01T00:00:00Z'
progress:
$ref: '#/components/schemas/apps_deployment_progress'
services:
items:
$ref: '#/components/schemas/apps_deployment_service'
title: Service components that are part of this deployment
type: array
spec:
$ref: '#/components/schemas/app_spec'
static_sites:
items:
$ref: '#/components/schemas/apps_deployment_static_site'
title: Static Site components that are part of this deployment
type: array
tier_slug:
readOnly: true
title: The current pricing tier slug of the deployment
type: string
example: basic
updated_at:
format: date-time
title: When the deployment was last updated
type: string
example: '2020-07-28T18:00:00Z'
workers:
items:
$ref: '#/components/schemas/apps_deployment_worker'
title: Worker components that are part of this deployment
type: array
title: An app deployment
type: object
apps_domain_phase:
default: UNKNOWN
enum:
- UNKNOWN
- PENDING
- CONFIGURING
- ACTIVE
- ERROR
type: string
example: ACTIVE
apps_domain_progress:
properties:
steps:
items:
type: object
title: The steps of the domain's progress
type: array
type: object
app_domain_validation:
properties:
txt_name:
title: TXT record name
type: string
readOnly: true
example: _acme-challenge.app.example.com
txt_value:
title: TXT record value
type: string
readOnly: true
example: lXLOcN6cPv0nproViNcUHcahD9TrIPlNgdwesj0pYpk
apps_domain:
properties:
id:
title: The ID of the domain
type: string
example: 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
phase:
$ref: '#/components/schemas/apps_domain_phase'
progress:
$ref: '#/components/schemas/apps_domain_progress'
spec:
$ref: '#/components/schemas/app_domain_spec'
validations:
title: List of TXT validation records
type: array
items:
$ref: '#/components/schemas/app_domain_validation'
rotate_validation_records:
title: Validation values have changed and require manual intervention
type: boolean
readOnly: true
certificate_expires_at:
title: Current SSL certificate expiration time
type: string
format: date-time
readOnly: true
example: '2024-01-29T23:59:59Z'
type: object
apps_region:
properties:
continent:
readOnly: true
title: The continent that this region is in
type: string
example: europe
data_centers:
items:
type: string
example: ams
readOnly: true
title: Data centers that are in this region
type: array
example:
- ams
default:
description: Whether or not the region is presented as the default.
readOnly: true
type: boolean
example: true
disabled:
readOnly: true
title: Whether or not the region is open for new apps
type: boolean
example: true
flag:
readOnly: true
title: The flag of this region
type: string
example: ams
label:
readOnly: true
title: A human-readable name of the region
type: string
example: ams
reason:
readOnly: true
title: Reason that this region is not available
type: string
example: to crowded
slug:
readOnly: true
title: The slug form of the region name
type: string
example: basic
title: Geographical information about an app origin
type: object
apps_dedicated_egress_ip_status:
title: The status of the dedicated egress IP.
type: string
readOnly: true
default: UNKNOWN
enum:
- UNKNOWN
- ASSIGNING
- ASSIGNED
- REMOVED
example: ASSIGNED
apps_dedicated_egress_ip:
type: object
readOnly: true
properties:
ip:
title: The IP address of the dedicated egress IP.
type: string
example: 192.168.1.1
id:
title: The ID of the dedicated egress IP.
type: string
example: 9e7bc2ac-205a-45d6-919c-e1ac5e73f962
status:
$ref: '#/components/schemas/apps_dedicated_egress_ip_status'
app:
description: An application's configuration and status.
properties:
active_deployment:
$ref: '#/components/schemas/apps_deployment'
created_at:
format: date-time
readOnly: true
title: The creation time of the app
type: string
example: '2020-11-19T20:27:18Z'
default_ingress:
readOnly: true
title: The default hostname on which the app is accessible
type: string
example: digitalocean.com
domains:
items:
$ref: '#/components/schemas/apps_domain'
readOnly: true
title: Contains all domains for the app
type: array
id:
readOnly: true
title: The ID of the application
type: string
example: 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
in_progress_deployment:
$ref: '#/components/schemas/apps_deployment'
last_deployment_created_at:
format: date-time
readOnly: true
title: The creation time of the last deployment
type: string
example: '2020-11-19T20:27:18Z'
live_domain:
readOnly: true
title: The live domain of the app
type: string
example: live_domain
live_url:
readOnly: true
title: The live URL of the app
type: string
example: google.com
live_url_base:
readOnly: true
title: The live URL base of the app, the URL excluding the path
type: string
example: digitalocean.com
owner_uuid:
readOnly: true
title: The ID of the account to which the application belongs
type: string
example: 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
pending_deployment:
allOf:
- description: >-
The most recent pending deployment. For CreateApp and UpdateApp
transactions this is guaranteed to reflect the associated
deployment.
- $ref: '#/components/schemas/apps_deployment'
project_id:
readOnly: true
type: string
example: 88b72d1a-b78a-4d9f-9090-b53c4399073f
title: >-
The ID of the project the app is assigned to. This will be empty if
there is a lookup failure.
region:
$ref: '#/components/schemas/apps_region'
spec:
$ref: '#/components/schemas/app_spec'
tier_slug:
readOnly: true
title: The current pricing tier slug of the app
type: string
example: basic
updated_at:
format: date-time
readOnly: true
title: Time of the app's last configuration update
type: string
example: '2020-12-01T00:42:16Z'
pinned_deployment:
allOf:
- description: The deployment that the app is pinned to.
- $ref: '#/components/schemas/apps_deployment'
dedicated_ips:
readOnly: true
title: The dedicated egress IP addresses associated with the app.
type: array
items:
$ref: '#/components/schemas/apps_dedicated_egress_ip'
required:
- spec
type: object
apps_response:
allOf:
- type: object
properties:
apps:
title: A list of apps
type: array
items:
$ref: '#/components/schemas/app'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
apps_create_app_request:
properties:
spec:
$ref: '#/components/schemas/app_spec'
project_id:
type: string
description: >-
The ID of the project the app should be assigned to. If omitted, it
will be assigned to your default project.
required:
- spec
type: object
app_response:
properties:
app:
$ref: '#/components/schemas/app'
type: object
apps_update_app_request:
type: object
properties:
spec:
$ref: '#/components/schemas/app_spec'
update_all_source_versions:
type: boolean
description: >-
Whether or not to update the source versions (for example fetching a
new commit or image digest) of all components. By default (when this
is false) only newly added sources will be updated to avoid changes
like updating the scale of a component from also updating the
respective code.
example: true
default: false
required:
- spec
apps_delete_app_response:
properties:
id:
title: The ID of the app that was deleted
type: string
example: 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
type: object
apps_restart_request:
type: object
properties:
components:
title: >-
Optional list of components to restart. If not provided, all
components will be restarted.
type: array
items:
type: string
example:
- component1
- component2
apps_deployment_response:
properties:
deployment:
$ref: '#/components/schemas/apps_deployment'
type: object
apps_get_logs_response:
properties:
historic_urls:
items:
type: string
example: https://logs/build.log
title: A list of URLs to archived log files
type: array
live_url:
description: >-
A URL of the real-time live logs. This URL may use either the
`https://` or `wss://` protocols and will keep pushing live logs as
they become available.
type: string
example: ws://logs/build
type: object
apps_get_exec_response:
properties:
url:
description: >-
A websocket URL that allows sending/receiving console input and
receiving console output.
type: string
example: wss://exec/?token=xxx
type: object
apps_deployments_response:
allOf:
- type: object
properties:
deployments:
title: A list of deployments
type: array
items:
$ref: '#/components/schemas/apps_deployment'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
apps_create_deployment_request:
type: object
properties:
force_build:
title: >-
Indicates whether to force a build of app from source even if an
existing cached build is suitable for re-use
type: boolean
example: true
instance_size_cpu_type:
default: UNSPECIFIED
enum:
- UNSPECIFIED
- SHARED
- DEDICATED
title: |-
- SHARED: Shared vCPU cores
- DEDICATED: Dedicated vCPU cores
type: string
example: SHARED
apps_instance_size:
properties:
bandwidth_allowance_gib:
format: int64
title: The bandwidth allowance in GiB for the instance size
type: string
example: '1'
cpu_type:
$ref: '#/components/schemas/instance_size_cpu_type'
cpus:
format: int64
title: The number of allotted vCPU cores
type: string
example: '3'
deprecation_intent:
title: Indicates if the instance size is intended for deprecation
type: boolean
example: true
memory_bytes:
format: int64
title: The allotted memory in bytes
type: string
example: '1048'
name:
title: A human-readable name of the instance size
type: string
example: name
scalable:
title: Indicates if the instance size can enable autoscaling
type: boolean
example: false
single_instance_only:
title: Indicates if the instance size allows more than one instance
type: boolean
example: true
slug:
title: The slug of the instance size
type: string
example: apps-s-1vcpu-1gb
tier_downgrade_to:
title: >-
The slug of the corresponding downgradable instance size on the
lower tier
type: string
example: basic
deprecated: true
tier_slug:
title: The slug of the tier to which this instance size belongs
type: string
example: basic
tier_upgrade_to:
title: >-
The slug of the corresponding upgradable instance size on the higher
tier
type: string
example: basic
deprecated: true
usd_per_month:
title: The cost of this instance size in USD per month
type: string
example: '23'
usd_per_second:
title: The cost of this instance size in USD per second
type: string
example: '0.00000001232'
type: object
apps_list_instance_sizes_response:
properties:
discount_percent:
format: float
type: number
example: 2.32
instance_sizes:
items:
$ref: '#/components/schemas/apps_instance_size'
type: array
type: object
apps_get_instance_size_response:
properties:
instance_size:
$ref: '#/components/schemas/apps_instance_size'
type: object
apps_list_regions_response:
properties:
regions:
items:
$ref: '#/components/schemas/apps_region'
type: array
type: object
app_propose:
type: object
properties:
spec:
$ref: '#/components/schemas/app_spec'
app_id:
type: string
description: >-
An optional ID of an existing app. If set, the spec will be treated
as a proposed update to the specified app. The existing app is not
modified using this method.
example: b6bdf840-2854-4f87-a36c-5f231c617c84
required:
- spec
app_propose_response:
type: object
properties:
app_is_static:
type: boolean
description: Indicates whether the app is a static app.
example: true
app_name_available:
type: boolean
description: Indicates whether the app name is available.
example: true
app_name_suggestion:
type: string
description: The suggested name if the proposed app name is unavailable.
example: newName
existing_static_apps:
type: string
description: >-
The maximum number of free static apps the account can have. We will
charge you for any additional static apps.
example: '2'
spec:
$ref: '#/components/schemas/app_spec'
app_cost:
type: integer
format: int32
description: The monthly cost of the proposed app in USD.
example: 5
app_tier_downgrade_cost:
type: integer
format: int32
description: >-
The monthly cost of the proposed app in USD using the previous
pricing plan tier. For example, if you propose an app that uses the
Professional tier, the `app_tier_downgrade_cost` field displays the
monthly cost of the app if it were to use the Basic tier. If the
proposed app already uses the lest expensive tier, the field is
empty.
example: 17
deprecated: true
app_alert_email:
default: ''
type: string
example: sammy@digitalocean.com
app_alert_slack_webhook:
properties:
url:
title: URL of the Slack webhook
type: string
example: >-
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
channel:
title: Name of the Slack Webhook Channel
type: string
example: Channel Name
type: object
app_alert_phase:
default: UNKNOWN
enum:
- UNKNOWN
- PENDING
- CONFIGURING
- ACTIVE
- ERROR
type: string
example: ACTIVE
app_alert_progress_step_status:
default: UNKNOWN
enum:
- UNKNOWN
- PENDING
- RUNNING
- ERROR
- SUCCESS
type: string
example: SUCCESS
app_alert_progress_step_reason:
properties:
code:
title: The error code
type: string
example: Title of Error
message:
title: The error message
type: string
example: This is an error
type: object
app_alert_progress_step:
properties:
name:
title: The name of this step
type: string
example: example_step
status:
$ref: '#/components/schemas/app_alert_progress_step_status'
started_at:
format: date-time
title: The start time of this step
type: string
example: '2020-11-19T20:27:18Z'
ended_at:
format: date-time
title: The start time of this step
type: string
example: '2020-11-19T20:27:18Z'
reason:
$ref: '#/components/schemas/app_alert_progress_step_reason'
type: object
app_alert_progress:
properties:
steps:
title: Steps of an alert's progress.
type: array
items:
$ref: '#/components/schemas/app_alert_progress_step'
type: object
app_alert:
properties:
id:
readOnly: true
title: The ID of the alert
type: string
example: 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
component_name:
title: Name of component the alert belongs to
type: string
example: backend
spec:
$ref: '#/components/schemas/app_alert_spec'
emails:
title: Emails for alerts to go to
type: array
items:
$ref: '#/components/schemas/app_alert_email'
example:
- sammy@digitalocean.com
slack_webhooks:
title: Slack Webhooks to send alerts to
type: array
items:
$ref: '#/components/schemas/app_alert_slack_webhook'
phase:
$ref: '#/components/schemas/app_alert_phase'
progress:
$ref: '#/components/schemas/app_alert_progress'
type: object
apps_list_alerts_response:
properties:
alerts:
type: array
items:
$ref: '#/components/schemas/app_alert'
type: object
apps_assign_app_alert_destinations_request:
properties:
emails:
type: array
items:
$ref: '#/components/schemas/app_alert_email'
example:
- sammy@digitalocean.com
slack_webhooks:
type: array
items:
$ref: '#/components/schemas/app_alert_slack_webhook'
type: object
apps_alert_response:
properties:
alert:
$ref: '#/components/schemas/app_alert'
type: object
apps_rollback_app_request:
type: object
properties:
deployment_id:
type: string
description: The ID of the deployment to rollback to.
example: 3aa4d20e-5527-4c00-b496-601fbd22520a
skip_pin:
type: boolean
description: >-
Whether to skip pinning the rollback deployment. If false, the
rollback deployment will be pinned and any new deployments including
Auto Deploy on Push hooks will be disabled until the rollback is
either manually committed or reverted via the CommitAppRollback or
RevertAppRollback endpoints respectively. If true, the rollback will
be immediately committed and the app will remain unpinned.
example: false
app_rollback_validation_condition:
type: object
properties:
code:
type: string
enum:
- incompatible_phase
- incompatible_result
- exceeded_revision_limit
- app_pinned
- database_config_conflict
- region_conflict
- static_site_requires_rebuild
- image_source_missing_digest
example: exceeded_revision_limit
description: |
A code identifier that represents the failing condition.
Failing conditions:
- `incompatible_phase` - indicates that the deployment's phase is not suitable for rollback.
- `incompatible_result` - indicates that the deployment's result is not suitable for rollback.
- `exceeded_revision_limit` - indicates that the app has exceeded the rollback revision limits for its tier.
- `app_pinned` - indicates that there is already a rollback in progress and the app is pinned.
- `database_config_conflict` - indicates that the deployment's database config is different than the current config.
- `region_conflict` - indicates that the deployment's region differs from the current app region.
Warning conditions:
- `static_site_requires_rebuild` - indicates that the deployment contains at least one static site that will require a rebuild.
- `image_source_missing_digest` - indicates that the deployment contains at least one component with an image source that is missing a digest.
message:
type: string
description: A human-readable message describing the failing condition.
example: >-
the deployment is past the maximum historical revision limit of 0
for the "starter" app tier
components:
type: array
items:
type: string
description: >-
If applicable, a list of components that are failing the
condition.
example:
- www
app_metrics_bandwidth_usage_details:
type: object
properties:
app_id:
type: string
description: The ID of the app.
example: 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
bandwidth_bytes:
type: string
format: uint64
description: The used bandwidth amount in bytes.
example: '513668'
description: Bandwidth usage for an app.
app_metrics_bandwidth_usage:
type: object
properties:
app_bandwidth_usage:
type: array
items:
$ref: '#/components/schemas/app_metrics_bandwidth_usage_details'
description: A list of bandwidth usage details by app.
date:
type: string
format: date-time
description: The date for the metrics data.
example: '2023-01-17T00:00:00Z'
app_metrics_bandwidth_usage_request:
type: object
properties:
app_ids:
type: array
items:
type: string
description: A list of app IDs to query bandwidth metrics for.
maxItems: 100
example:
- 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
- c2a93513-8d9b-4223-9d61-5e7272c81cf5
date:
type: string
format: date-time
description: >-
Optional day to query. Only the date component of the timestamp will
be considered. Default: yesterday.
example: '2023-01-17T00:00:00Z'
required:
- app_ids
cdn_endpoint:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
example: 892071a0-bb95-49bc-8021-3afd67a210bf
description: >-
A unique ID that can be used to identify and reference a CDN
endpoint.
origin:
type: string
format: hostname
example: static-images.nyc3.digitaloceanspaces.com
description: >-
The fully qualified domain name (FQDN) for the origin server which
provides the content for the CDN. This is currently restricted to a
Space.
endpoint:
type: string
format: hostname
readOnly: true
example: static-images.nyc3.cdn.digitaloceanspaces.com
description: >-
The fully qualified domain name (FQDN) from which the CDN-backed
content is served.
ttl:
type: integer
example: 3600
enum:
- 60
- 600
- 3600
- 86400
- 604800
default: 3600
description: >-
The amount of time the content is cached by the CDN's edge servers
in seconds. TTL must be one of 60, 600, 3600, 86400, or 604800.
Defaults to 3600 (one hour) when excluded.
certificate_id:
type: string
format: uuid
example: 892071a0-bb95-49bc-8021-3afd67a210bf
description: >-
The ID of a DigitalOcean managed TLS certificate used for SSL when a
custom subdomain is provided.
custom_domain:
type: string
format: hostname
example: static.example.com
description: >-
The fully qualified domain name (FQDN) of the custom subdomain used
with the CDN endpoint.
created_at:
type: string
format: date-time
readOnly: true
example: '2018-03-21T16:02:37Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the CDN endpoint was created.
required:
- origin
update_endpoint:
type: object
properties:
ttl:
type: integer
example: 3600
enum:
- 60
- 600
- 3600
- 86400
- 604800
default: 3600
description: >-
The amount of time the content is cached by the CDN's edge servers
in seconds. TTL must be one of 60, 600, 3600, 86400, or 604800.
Defaults to 3600 (one hour) when excluded.
certificate_id:
type: string
format: uuid
example: 892071a0-bb95-49bc-8021-3afd67a210bf
description: >-
The ID of a DigitalOcean managed TLS certificate used for SSL when a
custom subdomain is provided.
custom_domain:
type: string
format: hostname
example: static.example.com
description: >-
The fully qualified domain name (FQDN) of the custom subdomain used
with the CDN endpoint.
purge_cache:
type: object
properties:
files:
type: array
items:
type: string
example:
- path/to/image.png
- path/to/css/*
description: >-
An array of strings containing the path to the content to be purged
from the CDN cache.
required:
- files
certificate:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
example: 892071a0-bb95-49bc-8021-3afd67a210bf
description: >-
A unique ID that can be used to identify and reference a
certificate.
name:
type: string
example: web-cert-01
description: A unique human-readable name referring to a certificate.
not_after:
type: string
format: date-time
readOnly: true
example: '2017-02-22T00:23:00Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents the certificate's expiration date.
sha1_fingerprint:
type: string
readOnly: true
example: dfcc9f57d86bf58e321c2c6c31c7a971be244ac7
description: >-
A unique identifier generated from the SHA-1 fingerprint of the
certificate.
created_at:
type: string
format: date-time
readOnly: true
example: '2017-02-08T16:02:37Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the certificate was created.
dns_names:
type: array
items:
type: string
example:
- www.example.com
- example.com
description: >-
An array of fully qualified domain names (FQDNs) for which the
certificate was issued.
state:
type: string
enum:
- pending
- verified
- error
readOnly: true
example: verified
description: >-
A string representing the current state of the certificate. It may
be `pending`, `verified`, or `error`.
type:
type: string
enum:
- custom
- lets_encrypt
example: lets_encrypt
description: >-
A string representing the type of the certificate. The value will be
`custom` for a user-uploaded certificate or `lets_encrypt` for one
automatically generated with Let's Encrypt.
certificate_create_base:
type: object
properties:
name:
type: string
example: web-cert-01
description: A unique human-readable name referring to a certificate.
type:
type: string
enum:
- custom
- lets_encrypt
example: lets_encrypt
description: >-
A string representing the type of the certificate. The value will be
`custom` for a user-uploaded certificate or `lets_encrypt` for one
automatically generated with Let's Encrypt.
required:
- name
certificate_request_lets_encrypt:
title: Let's Encrypt Certificate Request
allOf:
- $ref: '#/components/schemas/certificate_create_base'
- type: object
properties:
dns_names:
type: array
items:
type: string
example:
- www.example.com
- example.com
description: >-
An array of fully qualified domain names (FQDNs) for which the
certificate was issued. A certificate covering all subdomains
can be issued using a wildcard (e.g. `*.example.com`).
required:
- dns_names
certificate_request_custom:
title: Custom Certificate Request
allOf:
- $ref: '#/components/schemas/certificate_create_base'
- type: object
properties:
private_key:
type: string
example: |-
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBIZMz8pnK6V52
SVf+CYssOfCQHAx5f0Ou5rYbq3xNh8VHAIYJCQ1QxQIxKSP6+uODSYrb2KWyurP1
DwGb8OYm0J3syEDtCUQik1cpCzpeNlAZ2f8FzXyYQAqPopxdRpsFz8DtZnVvu86X
wrE4oFPl9MReICmZfBNWylpV5qgFPoXyJ70ZAsTm3cEe3n+LBXEnY4YrVDRWxA3w
Z2mzZ03HZ1hHrxK9CMnS829U+8sK+UneZpCO7yLRPuxwhmps0wpK/YuZZfRAKF1F
ZRnak/SIQ28rnWufmdg16YqqHgl5JOgnb3aslKRvL4dI2Gwnkd2IHtpZnTR0gxFX
fqqbQwuRAgMBAAECggEBAILLmkW0JzOkmLTDNzR0giyRkLoIROqDpfLtjKdwm95l
9NUBJcU4vCvXQITKt/NhtnNTexcowg8pInb0ksJpg3UGE+4oMNBXVi2UW5MQZ5cm
cVkQqgXkBF2YAY8FMaB6EML+0En2+dGR/3gIAr221xsFiXe1kHbB8Nb2c/d5HpFt
eRpLVJnK+TxSr78PcZA8DDGlSgwvgimdAaFUNO2OqB9/0E9UPyKk2ycdff/Z6ldF
0hkCLtdYTTl8Kf/OwjcuTgmA2O3Y8/CoQX/L+oP9Rvt9pWCEfuebiOmHJVPO6Y6x
gtQVEXwmF1pDHH4Qtz/e6UZTdYeMl9G4aNO2CawwcaYECgYEA57imgSOG4XsJLRh
GGncV9R/xhy4AbDWLtAMzQRX4ktvKCaHWyQV2XK2we/cu29NLv2Y89WmerTNPOU+
P8+pB31uty2ELySVn15QhKpQClVEAlxCnnNjXYrii5LOM80+lVmxvQwxVd8Yz8nj
IntyioXNBEnYS7V2RxxFGgFun1cCgYEA1V3W+Uyamhq8JS5EY0FhyGcXdHd70K49
W1ou7McIpncf9tM9acLS1hkI98rd2T69Zo8mKoV1V2hjFaKUYfNys6tTkYWeZCcJ
3rW44j9DTD+FmmjcX6b8DzfybGLehfNbCw6n67/r45DXIV/fk6XZfkx6IEGO4ODt
Nfnvx4TuI1cCgYBACDiKqwSUvmkUuweOo4IuCxyb5Ee8v98P5JIE/VRDxlCbKbpx
pxEam6aBBQVcDi+n8o0H3WjjlKc6UqbW/01YMoMrvzotxNBLz8Y0QtQHZvR6KoCG
RKCKstxTcWflzKuknbqN4RapAhNbKBDJ8PMSWfyDWNyaXzSmBdvaidbF1QKBgDI0
o4oD0Xkjg1QIYAUu9FBQmb9JAjRnW36saNBEQS/SZg4RRKknM683MtoDvVIKJk0E
sAlfX+4SXQZRPDMUMtA+Jyrd0xhj6zmhbwClvDMr20crF3fWdgcqtft1BEFmsuyW
JUMe5OWmRkjPI2+9ncDPRAllA7a8lnSV/Crph5N/AoGBAIK249temKrGe9pmsmAo
QbNuYSmwpnMoAqdHTrl70HEmK7ob6SIVmsR8QFAkH7xkYZc4Bxbx4h1bdpozGB+/
AangbiaYJcAOD1QyfiFbflvI1RFeHgrk7VIafeSeQv6qu0LLMi2zUbpgVzxt78Wg
eTuK2xNR0PIM8OI7pRpgyj1I
-----END PRIVATE KEY-----
description: >-
The contents of a PEM-formatted private-key corresponding to the
SSL certificate.
leaf_certificate:
type: string
example: |-
-----BEGIN CERTIFICATE-----
MIIFFjCCA/6gAwIBAgISA0AznUJmXhu08/89ZuSPC/kRMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNjExMjQwMDIzMDBaFw0x
NzAyMjIwMDIzMDBaMCQxIjAgBgNVBAMTGWNsb3VkLmFuZHJld3NvbWV0aGluZy5j
b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBIZMz8pnK6V52SVf+
CYssOfCQHAx5f0Ou5rYbq3xNh8VWHIYJCQ1QxQIxKSP6+uODSYrb2KWyurP1DwGb
8OYm0J3syEDtCUQik1cpCzpeNlAZ2f8FzXyYQAqPopxdRpsFz8DtZnVvu86XwrE4
oFPl9MReICmZfBNWylpV5qgFPoXyJ70ZAsTm3cEe3n+LBXEnY4YrVDRWxA3wZ2mz
Z03HZ1hHrxK9CMnS829U+8sK+UneZpCO7yLRPuxwhmps0wpK/YuZZfRAKF1FZRna
k/SIQ28rnWufmdg16YqqHgl5JOgnb3aslKRvL4dI2Gwnkd2IHtpZnTR0gxFXfqqb
QwuRAgMBAAGjggIaMIICFjAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLsAFcxAhFX1
MbCnzr9hEO5rL4jqMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMHAG
CCsGAQUFBwEBBGQwYjAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuaW50LXgzLmxl
dHNlbmNyeXB0Lm9yZy8wLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5s
ZXRzZW5jcnlwdC5vcmcvMCQGA1UdEQQdMBuCGWNsb3VkLmFuZHJld3NvbWV0aGlu
Zy5jb20wgf4GA1UdIASB9jCB8zAIBgZngQwBAgWrgeYGCysGAQQBgt8TAQEBMIHW
MCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCBqwYIKwYB
BQUHAgIwgZ4MgZtUaGlzIENlcnRpZmljYXRlIG1heSBvbmx5IGJlIHJlbGllZCB1
cG9uIGJ5IFJlbHlpbmcgUGFydGllcyBhbmQgb25seSQ2ziBhY2NvcmRhbmNlIHdp
dGggdGhlIENlcnRpZmljYXRlIFBvbGljeSBmb3VuZCBhdCBodHRwczovL2xldHNl
bmNyeXB0Lm9yZy9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAOZVQvrjM
PKXLARTjB5XsgfyDN3/qwLl7SmwGkPe+B+9FJpfScYG1JzVuCj/SoaPaK34G4x/e
iXwlwOXtMOtqjQYzNu2Pr2C+I+rVmaxIrCUXFmC205IMuUBEeWXG9Y/HvXQLPabD
D3Gdl5+Feink9SDRP7G0HaAwq13hI7ARxkL9p+UIY39X0dV3WOboW2Re8nrkFXJ7
q9Z6shK5QgpBfsLjtjNsQzaGV3ve1gOg25aTJGearBWOvEjJNA1wGMoKVXOtYwm/
WyWoVdCQ8HmconcbJB6xc0UZ1EjvzRr5ZIvSa5uHZD0L3m7/kpPWlAlFJ7hHASPu
UlF1zblDmg2Iaw==
-----END CERTIFICATE-----
description: The contents of a PEM-formatted public SSL certificate.
certificate_chain:
type: string
example: |-
-----BEGIN CERTIFICATE-----
MIIFFjCCA/6gAwIBAgISA0AznUJmXhu08/89ZuSPC/kRMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNjExMjQwMDIzMDBaFw0x
NzAyMjIwMDIzMDBaMCQxIjAgBgNVBAMTGWNsb3VkLmFuZHJld3NvbWV0aGluZy5j
b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBIZMz7tnK6V52SVf+
CYssOfCQHAx5f0Ou5rYbq3xNh8VHAIYJCQ1QxQIxKSP6+uODSYrb2KWyurP1DwGb
8OYm0J3syEDtCUQik1cpCzpeNlAZ2f8FzXyYQAqPopxdRpsFz8DtZnVvu86XwrE4
oFPl9MReICmZfBNWylpV5qgFPoXyJ70ZAsTm3cEe3n+LBXEnY4YrVDRWxA3wZ2mz
Z03HZ1hHrxK9CMnS829U+8sK+UneZpCO7yLRPuxwhmps0wpK/YuZZfRAKF1FZRna
k/SIQ28rnWufmdg16YqqHgl5JOgnb3aslKRvL4dI2Gwnkd2IHtpZnTR0gxFXfqqb
QwuRAgMBAAGjggIaMIICFjAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLsAFcxAhFX1
MbCnzr9hEO5rL4jqMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMHAG
CCsGAQUFBwEBBGQwYjAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuaW50LXgzLmxl
dHNlbmNyeXB0Lm9yZy8wLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5s
ZXRzZW5jcnlwdC5vcmcvMCQGA1UdEQQdMBuCGWNsb3VkLmFuZHJld3NvbWV0aGlu
Zy5jb20wgf4GA1UdIASB9jCB8zAIBgZngQwBAgEwgeWECysGAQQBgt8TAQEBMIHW
MCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCBqwYIKwYB
BQUHAgIwgZ4MgZtUaGlzIENlcnRpZmljYXRlIG1heSBvbmx5IGJlIHJlbGllZCB1
cG9uIGJ5IFJlbHlpbmcgUGFydGllcyBhbmQgb25seSQ2ziBhY2NvcmRhbmNlIHdp
dGggdGhlIENlcnRpZmljYXRlIFBvbGljeSBmb3VuZCBhdCBsdHRwczovL2xldHNl
bmNyeXB0Lm9yZy9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAOZVQvrjM
PKXLARTjB5XsgfyDN3/qwLl7SmwGkPe+B+9FJpfScYG1JzVuCj/SoaPaK34G4x/e
iXwlwOXtMOtqjQYzNu2Pr2C+I+rVmaxIrCUXFmC205IMuUBEeWXG9Y/HvXQLPabD
D3Gdl5+Feink9SDRP7G0HaAwq13hI7ARxkL3o+UIY39X0dV3WOboW2Re8nrkFXJ7
q9Z6shK5QgpBfsLjtjNsQzaGV3ve1gOg25aTJGearBWOvEjJNA1wGMoKVXOtYwm/
WyWoVdCQ8HmconcbJB6xc0UZ1EjvzRr5ZIvSa5uHZD0L3m7/kpPWlAlFJ7hHASPu
UlF1zblDmg2Iaw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAnNMM8FrlLsd3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIPOIUo4IBfTCCAXkwEgYDVR0T
AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----
description: >-
The full PEM-formatted trust chain between the certificate
authority's certificate and your domain's SSL certificate.
required:
- private_key
- leaf_certificate
balance:
type: object
properties:
month_to_date_balance:
type: string
description: >-
Balance as of the `generated_at` time. This value includes the
`account_balance` and `month_to_date_usage`.
example: '23.44'
account_balance:
type: string
description: >-
Current balance of the customer's most recent billing activity.
Does not reflect `month_to_date_usage`.
example: '12.23'
month_to_date_usage:
type: string
description: >-
Amount used in the current billing period as of the `generated_at`
time.
example: '11.21'
generated_at:
type: string
format: date-time
description: The time at which balances were most recently generated.
example: '2019-07-09T15:01:12Z'
billing_history:
type: object
properties:
description:
type: string
description: Description of the billing history entry.
example: Invoice for May 2018
amount:
type: string
description: Amount of the billing history entry.
example: '12.34'
invoice_id:
type: string
description: >-
ID of the invoice associated with the billing history entry, if
applicable.
example: '123'
invoice_uuid:
type: string
description: >-
UUID of the invoice associated with the billing history entry, if
applicable.
example: example-uuid
date:
type: string
format: date-time
description: Time the billing history entry occurred.
example: '2018-06-01T08:44:38Z'
type:
type: string
description: Type of billing history entry.
example: Invoice
enum:
- ACHFailure
- Adjustment
- AttemptFailed
- Chargeback
- Credit
- CreditExpiration
- Invoice
- Payment
- Refund
- Reversal
meta_optional_total:
type: object
properties:
meta:
$ref: '#/components/schemas/meta_properties'
required:
- meta
invoice_preview:
type: object
description: The invoice preview.
properties:
invoice_uuid:
type: string
description: The UUID of the invoice. The canonical reference for the invoice.
example: fdabb512-6faf-443c-ba2e-665452332a9e
invoice_id:
type: string
description: >-
ID of the invoice. Listed on the face of the invoice PDF as the
"Invoice number".
example: '123456789'
amount:
type: string
description: >-
Total amount of the invoice, in USD. This will reflect
month-to-date usage in the invoice preview.
example: '23.45'
invoice_period:
type: string
description: >-
Billing period of usage for which the invoice is issued, in
`YYYY-MM` format.
example: 2020-01
updated_at:
type: string
description: >-
Time the invoice was last updated. This is only included with the
invoice preview.
example: '2020-01-23T06:31:50Z'
invoice_item:
type: object
properties:
product:
type: string
description: Name of the product being billed in the invoice item.
example: Kubernetes Clusters
resource_uuid:
type: string
description: UUID of the resource billing in the invoice item if available.
example: 711157cb-37c8-4817-b371-44fa3504a39c
resource_id:
type: string
description: ID of the resource billing in the invoice item if available.
example: '2353624'
group_description:
type: string
description: >-
Description of the invoice item when it is a grouped set of usage,
such as DOKS or databases.
example: my-doks-cluster
description:
type: string
description: Description of the invoice item.
example: a56e086a317d8410c8b4cfd1f4dc9f82
amount:
type: string
description: Billed amount of this invoice item. Billed in USD.
example: '12.34'
duration:
type: string
description: Duration of time this invoice item was used and subsequently billed.
example: '744'
duration_unit:
type: string
description: Unit of time for duration.
example: Hours
start_time:
type: string
description: Time the invoice item began to be billed for usage.
example: '2020-01-01T00:00:00Z'
end_time:
type: string
description: Time the invoice item stopped being billed for usage.
example: '2020-02-01T00:00:00Z'
project_name:
type: string
description: Name of the DigitalOcean Project this resource belongs to.
example: web
billing_address:
type: object
properties:
address_line1:
type: string
description: Street address line 1
example: 101 Shark Row
address_line2:
type: string
description: Street address line 2
example: ' '
city:
type: string
description: City
example: Atlantis
region:
type: string
description: Region
example: OC
postal_code:
type: string
description: Postal code
example: '12345'
country_iso2_code:
type: string
description: Country (ISO2) code
example: US
created_at:
type: string
description: Timestamp billing address was created
example: '2019-09-03T16:34:46.000+00:00'
updated_at:
type: string
description: Timestamp billing address was updated
example: '2019-09-03T16:34:46.000+00:00'
product_charge_item:
type: object
properties:
amount:
type: string
description: Amount of the charge
example: '10.00'
name:
type: string
description: Description of the charge
example: Spaces Subscription
count:
type: string
description: Number of times the charge was applied
example: '1'
product_usage_charges:
type: object
properties:
name:
type: string
description: Description of usage charges
example: Product usage charges
amount:
type: string
description: Total amount charged
example: '12.34'
items:
type: array
description: List of amount, and grouped aggregates by resource type.
items:
$ref: '#/components/schemas/product_charge_item'
example:
- amount: '10.00'
name: Spaces Subscription
count: '1'
- amount: '2.34'
name: Database Clusters
count: '1'
simple_charge:
type: object
properties:
name:
type: string
description: Name of the charge
example: Overages
amount:
type: string
description: Total amount charged in USD
example: '3.45'
invoice_summary:
type: object
properties:
invoice_uuid:
type: string
description: UUID of the invoice
example: 22737513-0ea7-4206-8ceb-98a575af7681
invoice_id:
type: string
description: ID of the invoice
example: '123456789'
billing_period:
type: string
description: >-
Billing period of usage for which the invoice is issued, in
`YYYY-MM` format.
example: 2020-01
amount:
type: string
description: >-
Total amount of the invoice, in USD. This will reflect
month-to-date usage in the invoice preview.
example: '27.13'
user_name:
type: string
description: Name of the DigitalOcean customer being invoiced.
example: Sammy Shark
user_billing_address:
allOf:
- description: The billing address of the customer being invoiced.
- $ref: '#/components/schemas/billing_address'
user_company:
type: string
description: Company of the DigitalOcean customer being invoiced, if set.
example: DigitalOcean
user_email:
type: string
description: Email of the DigitalOcean customer being invoiced.
example: sammy@digitalocean.com
product_charges:
allOf:
- description: >-
A summary of the product usage charges contributing to the
invoice. This will include an amount, and grouped aggregates by
resource type under the `items` key.
- $ref: '#/components/schemas/product_usage_charges'
overages:
allOf:
- description: A summary of the overages contributing to the invoice.
- $ref: '#/components/schemas/simple_charge'
taxes:
allOf:
- description: A summary of the taxes contributing to the invoice.
- $ref: '#/components/schemas/simple_charge'
credits_and_adjustments:
allOf:
- description: >-
A summary of the credits and adjustments contributing to the
invoice.
- $ref: '#/components/schemas/simple_charge'
database_region_options:
type: object
properties:
regions:
type: array
items:
type: string
example:
- ams3
- blr1
readOnly: true
description: An array of strings containing the names of available regions
database_version_options:
type: object
properties:
versions:
type: array
items:
type: string
example:
- '4.4'
- '5.0'
readOnly: true
description: An array of strings containing the names of available regions
database_layout_option:
type: object
properties:
num_nodes:
type: integer
example: 1
sizes:
type: array
items:
type: string
example:
- db-s-1vcpu-1gb
- db-s-1vcpu-2gb
readOnly: true
description: >-
An array of objects containing the slugs available with various node
counts
database_layout_options:
type: object
properties:
layouts:
type: array
readOnly: true
description: >-
An array of objects, each indicating the node sizes (otherwise
referred to as slugs) that are available with various numbers of
nodes in the database cluster. Each slugs denotes the node's
identifier, CPU, and RAM (in that order).
items:
$ref: '#/components/schemas/database_layout_option'
database_version_availability:
type: object
properties:
end_of_life:
type: string
example: '2023-11-09T00:00:00Z'
nullable: true
description: >-
A timestamp referring to the date when the particular version will
no longer be supported. If null, the version does not have an end of
life timeline.
end_of_availability:
type: string
example: '2023-05-09T00:00:00Z'
nullable: true
description: >-
A timestamp referring to the date when the particular version will
no longer be available for creating new clusters. If null, the
version does not have an end of availability timeline.
version:
type: string
example: '8'
description: The engine version.
database_version_availabilities:
type: array
description: >-
An array of objects, each indicating the version end-of-life,
end-of-availability for various database engines
items:
$ref: '#/components/schemas/database_version_availability'
options:
type: object
properties:
options:
type: object
properties:
kafka:
allOf:
- $ref: '#/components/schemas/database_region_options'
- $ref: '#/components/schemas/database_version_options'
- $ref: '#/components/schemas/database_layout_options'
mongodb:
allOf:
- $ref: '#/components/schemas/database_region_options'
- $ref: '#/components/schemas/database_version_options'
- $ref: '#/components/schemas/database_layout_options'
pg:
allOf:
- $ref: '#/components/schemas/database_region_options'
- $ref: '#/components/schemas/database_version_options'
- $ref: '#/components/schemas/database_layout_options'
mysql:
allOf:
- $ref: '#/components/schemas/database_region_options'
- $ref: '#/components/schemas/database_version_options'
- $ref: '#/components/schemas/database_layout_options'
redis:
allOf:
- $ref: '#/components/schemas/database_region_options'
- $ref: '#/components/schemas/database_version_options'
- $ref: '#/components/schemas/database_layout_options'
opensearch:
allOf:
- $ref: '#/components/schemas/database_region_options'
- $ref: '#/components/schemas/database_version_options'
- $ref: '#/components/schemas/database_layout_options'
version_availability:
type: object
properties:
kafka:
$ref: '#/components/schemas/database_version_availabilities'
pg:
$ref: '#/components/schemas/database_version_availabilities'
mysql:
$ref: '#/components/schemas/database_version_availabilities'
redis:
$ref: '#/components/schemas/database_version_availabilities'
mongodb:
$ref: '#/components/schemas/database_version_availabilities'
opensearch:
$ref: '#/components/schemas/database_version_availabilities'
opensearch_connection:
type: object
properties:
uri:
type: string
description: >-
This is provided as a convenience and should be able to be
constructed by the other attributes.
example: >-
https://doadmin:wv78n3zpz42xezdk@backend-do-user-19081923-0.db.ondigitalocean.com:25060
readOnly: true
host:
type: string
description: The FQDN pointing to the opensearch cluster's current primary node.
example: backend-do-user-19081923-0.db.ondigitalocean.com
readOnly: true
port:
type: integer
description: The port on which the opensearch dashboard is listening.
example: 25060
readOnly: true
user:
type: string
description: The default user for the opensearch dashboard.
example: doadmin
readOnly: true
password:
type: string
description: The randomly generated password for the default user.
example: wv78n3zpz42xezdk
readOnly: true
ssl:
type: boolean
description: >-
A boolean value indicating if the connection should be made over
SSL.
example: true
readOnly: true
database_connection:
type: object
properties:
uri:
type: string
description: >-
A connection string in the format accepted by the `psql` command.
This is provided as a convenience and should be able to be
constructed by the other attributes.
example: >-
postgres://doadmin:wv78n3zpz42xezdk@backend-do-user-19081923-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require
readOnly: true
database:
type: string
description: The name of the default database.
example: defaultdb
readOnly: true
host:
type: string
description: The FQDN pointing to the database cluster's current primary node.
example: backend-do-user-19081923-0.db.ondigitalocean.com
readOnly: true
port:
type: integer
description: The port on which the database cluster is listening.
example: 25060
readOnly: true
user:
type: string
description: The default user for the database.
example: doadmin
readOnly: true
password:
type: string
description: The randomly generated password for the default user.
example: wv78n3zpz42xezdk
readOnly: true
ssl:
type: boolean
description: >-
A boolean value indicating if the connection should be made over
SSL.
example: true
readOnly: true
mysql_settings:
type: object
properties:
auth_plugin:
type: string
enum:
- mysql_native_password
- caching_sha2_password
example: mysql_native_password
description: >
A string specifying the authentication method to be used for
connections
to the MySQL user account. The valid values are
`mysql_native_password`
or `caching_sha2_password`. If excluded when creating a new user,
the
default for the version of MySQL in use will be used. As of MySQL
8.0, the
default is `caching_sha2_password`.
required:
- auth_plugin
user_settings:
type: object
properties:
pg_allow_replication:
type: boolean
example: true
description: >
For Postgres clusters, set to `true` for a user with replication
rights.
This option is not currently supported for other database engines.
opensearch_acl:
type: array
items:
type: object
properties:
index:
type: string
example: index-abc.*
description: >-
A regex for matching the indexes that this ACL should apply
to.
permission:
type: string
enum:
- deny
- admin
- read
- readwrite
- write
example: read
description: >-
Permission set applied to the ACL. 'read' allows user to read
from the index. 'write' allows for user to write to the index.
'readwrite' allows for both 'read' and 'write' permission.
'deny'(default) restricts user from performing any operation
over an index. 'admin' allows for 'readwrite' as well as any
operations to administer the index.
description: >-
ACLs (Access Control Lists) specifying permissions on index within a
OpenSearch cluster.
acl:
type: array
items:
type: object
properties:
id:
type: string
description: >-
An identifier for the ACL. Will be computed after the ACL is
created/updated.
example: aaa
topic:
type: string
example: topic-abc.*
description: >-
A regex for matching the topic(s) that this ACL should apply
to.
permission:
type: string
enum:
- admin
- consume
- produce
- produceconsume
example: consume
description: >-
Permission set applied to the ACL. 'consume' allows for
messages to be consumed from the topic. 'produce' allows for
messages to be published to the topic. 'produceconsume' allows
for both 'consume' and 'produce' permission. 'admin' allows
for 'produceconsume' as well as any operations to administer
the topic (delete, update).
required:
- topic
- permission
description: >-
ACLs (Access Control Lists) specifying permissions on topics within
a Kafka cluster.
database_user:
type: object
properties:
name:
type: string
example: app-01
description: The name of a database user.
role:
type: string
enum:
- primary
- normal
example: normal
description: >
A string representing the database user's role. The value will be
either
"primary" or "normal".
readOnly: true
password:
type: string
example: jge5lfxtzhx42iff
description: A randomly generated password for the database user.
readOnly: true
access_cert:
type: string
example: |-
-----BEGIN CERTIFICATE-----
MIIFFjCCA/6gAwIBAgISA0AznUJmXhu08/89ZuSPC/kRMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNjExMjQwMDIzMDBaFw0x
NzAyMjIwMDIzMDBaMCQxIjAgBgNVBAMTGWNsb3VkLmFuZHJld3NvbWV0aGluZy5j
b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBIZMz8pnK6V52SVf+
CYssOfCQHAx5f0Ou5rYbq3xNh8VWHIYJCQ1QxQIxKSP6+uODSYrb2KWyurP1DwGb
8OYm0J3syEDtCUQik1cpCzpeNlAZ2f8FzXyYQAqPopxdRpsFz8DtZnVvu86XwrE4
oFPl9MReICmZfBNWylpV5qgFPoXyJ70ZAsTm3cEe3n+LBXEnY4YrVDRWxA3wZ2mz
Z03HZ1hHrxK9CMnS829U+8sK+UneZpCO7yLRPuxwhmps0wpK/YuZZfRAKF1FZRna
k/SIQ28rnWufmdg16YqqHgl5JOgnb3aslKRvL4dI2Gwnkd2IHtpZnTR0gxFXfqqb
QwuRAgMBAAGjggIaMIICFjAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLsAFcxAhFX1
MbCnzr9hEO5rL4jqMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMHAG
CCsGAQUFBwEBBGQwYjAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuaW50LXgzLmxl
dHNlbmNyeXB0Lm9yZy8wLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5s
ZXRzZW5jcnlwdC5vcmcvMCQGA1UdEQQdMBuCGWNsb3VkLmFuZHJld3NvbWV0aGlu
Zy5jb20wgf4GA1UdIASB9jCB8zAIBgZngQwBAgWrgeYGCysGAQQBgt8TAQEBMIHW
MCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCBqwYIKwYB
BQUHAgIwgZ4MgZtUaGlzIENlcnRpZmljYXRlIG1heSBvbmx5IGJlIHJlbGllZCB1
cG9uIGJ5IFJlbHlpbmcgUGFydGllcyBhbmQgb25seSQ2ziBhY2NvcmRhbmNlIHdp
dGggdGhlIENlcnRpZmljYXRlIFBvbGljeSBmb3VuZCBhdCBodHRwczovL2xldHNl
bmNyeXB0Lm9yZy9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAOZVQvrjM
PKXLARTjB5XsgfyDN3/qwLl7SmwGkPe+B+9FJpfScYG1JzVuCj/SoaPaK34G4x/e
iXwlwOXtMOtqjQYzNu2Pr2C+I+rVmaxIrCUXFmC205IMuUBEeWXG9Y/HvXQLPabD
D3Gdl5+Feink9SDRP7G0HaAwq13hI7ARxkL9p+UIY39X0dV3WOboW2Re8nrkFXJ7
q9Z6shK5QgpBfsLjtjNsQzaGV3ve1gOg25aTJGearBWOvEjJNA1wGMoKVXOtYwm/
WyWoVdCQ8HmconcbJB6xc0UZ1EjvzRr5ZIvSa5uHZD0L3m7/kpPWlAlFJ7hHASPu
UlF1zblDmg2Iaw==
-----END CERTIFICATE-----
description: Access certificate for TLS client authentication. (Kafka only)
readOnly: true
access_key:
type: string
example: |-
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBIZMz8pnK6V52
SVf+CYssOfCQHAx5f0Ou5rYbq3xNh8VHAIYJCQ1QxQIxKSP6+uODSYrb2KWyurP1
DwGb8OYm0J3syEDtCUQik1cpCzpeNlAZ2f8FzXyYQAqPopxdRpsFz8DtZnVvu86X
wrE4oFPl9MReICmZfBNWylpV5qgFPoXyJ70ZAsTm3cEe3n+LBXEnY4YrVDRWxA3w
Z2mzZ03HZ1hHrxK9CMnS829U+8sK+UneZpCO7yLRPuxwhmps0wpK/YuZZfRAKF1F
ZRnak/SIQ28rnWufmdg16YqqHgl5JOgnb3aslKRvL4dI2Gwnkd2IHtpZnTR0gxFX
fqqbQwuRAgMBAAECggEBAILLmkW0JzOkmLTDNzR0giyRkLoIROqDpfLtjKdwm95l
9NUBJcU4vCvXQITKt/NhtnNTexcowg8pInb0ksJpg3UGE+4oMNBXVi2UW5MQZ5cm
cVkQqgXkBF2YAY8FMaB6EML+0En2+dGR/3gIAr221xsFiXe1kHbB8Nb2c/d5HpFt
eRpLVJnK+TxSr78PcZA8DDGlSgwvgimdAaFUNO2OqB9/0E9UPyKk2ycdff/Z6ldF
0hkCLtdYTTl8Kf/OwjcuTgmA2O3Y8/CoQX/L+oP9Rvt9pWCEfuebiOmHJVPO6Y6x
gtQVEXwmF1pDHH4Qtz/e6UZTdYeMl9G4aNO2CawwcaYECgYEA57imgSOG4XsJLRh
GGncV9R/xhy4AbDWLtAMzQRX4ktvKCaHWyQV2XK2we/cu29NLv2Y89WmerTNPOU+
P8+pB31uty2ELySVn15QhKpQClVEAlxCnnNjXYrii5LOM80+lVmxvQwxVd8Yz8nj
IntyioXNBEnYS7V2RxxFGgFun1cCgYEA1V3W+Uyamhq8JS5EY0FhyGcXdHd70K49
W1ou7McIpncf9tM9acLS1hkI98rd2T69Zo8mKoV1V2hjFaKUYfNys6tTkYWeZCcJ
3rW44j9DTD+FmmjcX6b8DzfybGLehfNbCw6n67/r45DXIV/fk6XZfkx6IEGO4ODt
Nfnvx4TuI1cCgYBACDiKqwSUvmkUuweOo4IuCxyb5Ee8v98P5JIE/VRDxlCbKbpx
pxEam6aBBQVcDi+n8o0H3WjjlKc6UqbW/01YMoMrvzotxNBLz8Y0QtQHZvR6KoCG
RKCKstxTcWflzKuknbqN4RapAhNbKBDJ8PMSWfyDWNyaXzSmBdvaidbF1QKBgDI0
o4oD0Xkjg1QIYAUu9FBQmb9JAjRnW36saNBEQS/SZg4RRKknM683MtoDvVIKJk0E
sAlfX+4SXQZRPDMUMtA+Jyrd0xhj6zmhbwClvDMr20crF3fWdgcqtft1BEFmsuyW
JUMe5OWmRkjPI2+9ncDPRAllA7a8lnSV/Crph5N/AoGBAIK249temKrGe9pmsmAo
QbNuYSmwpnMoAqdHTrl70HEmK7ob6SIVmsR8QFAkH7xkYZc4Bxbx4h1bdpozGB+/
AangbiaYJcAOD1QyfiFbflvI1RFeHgrk7VIafeSeQv6qu0LLMi2zUbpgVzxt78Wg
eTuK2xNR0PIM8OI7pRpgyj1I
-----END PRIVATE KEY-----
description: Access key for TLS client authentication. (Kafka only)
readOnly: true
mysql_settings:
$ref: '#/components/schemas/mysql_settings'
settings:
$ref: '#/components/schemas/user_settings'
required:
- name
database_maintenance_window:
type: object
nullable: true
properties:
day:
type: string
example: tuesday
description: The day of the week on which to apply maintenance updates.
hour:
type: string
example: '14:00'
description: >-
The hour in UTC at which maintenance updates will be applied in 24
hour format.
pending:
type: boolean
example: true
description: >-
A boolean value indicating whether any maintenance is scheduled to
be performed in the next window.
readOnly: true
description:
type: array
items:
type: string
description: >-
A list of strings, each containing information about a pending
maintenance update.
example:
- Update TimescaleDB to version 1.2.1
- Upgrade to PostgreSQL 11.2 and 10.7 bugfix releases
readOnly: true
required:
- day
- hour
firewall_rule:
type: object
properties:
uuid:
type: string
pattern: ^$|[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}
example: 79f26d28-ea8a-41f2-8ad8-8cfcdd020095
description: A unique ID for the firewall rule itself.
cluster_uuid:
type: string
pattern: ^$|[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}
example: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
readOnly: true
description: A unique ID for the database cluster to which the rule is applied.
type:
type: string
enum:
- droplet
- k8s
- ip_addr
- tag
- app
example: droplet
description: >-
The type of resource that the firewall rule allows to access the
database cluster.
value:
type: string
example: ff2a6c52-5a44-4b63-b99c-0e98e7a63d61
description: >-
The ID of the specific resource, the name of a tag applied to a
group of resources, or the IP address that the firewall rule allows
to access the database cluster.
created_at:
type: string
format: date-time
example: '2019-01-11T18:37:36Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the firewall rule was created.
readOnly: true
required:
- type
- value
database_service_endpoint:
type: object
properties:
host:
type: string
description: A FQDN pointing to the database cluster's node(s).
example: backend-do-user-19081923-0.db.ondigitalocean.com
readOnly: true
port:
type: integer
description: The port on which a service is listening.
example: 9273
readOnly: true
database_cluster:
type: object
properties:
id:
type: string
format: uuid
example: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
description: >-
A unique ID that can be used to identify and reference a database
cluster.
readOnly: true
name:
type: string
example: backend
description: A unique, human-readable name referring to a database cluster.
engine:
type: string
example: mysql
enum:
- pg
- mysql
- redis
- mongodb
- kafka
- opensearch
description: >-
A slug representing the database engine used for the cluster. The
possible values are: "pg" for PostgreSQL, "mysql" for MySQL, "redis"
for Redis, "mongodb" for MongoDB, "kafka" for Kafka, and
"opensearch" for OpenSearch.
version:
type: string
example: '8'
description: >-
A string representing the version of the database engine in use for
the cluster.
semantic_version:
type: string
example: 8.0.28
description: >-
A string representing the semantic version of the database engine in
use for the cluster.
readOnly: true
num_nodes:
type: integer
example: 2
description: The number of nodes in the database cluster.
size:
type: string
example: db-s-2vcpu-4gb
description: >-
The slug identifier representing the size of the nodes in the
database cluster.
region:
type: string
example: nyc3
description: >-
The slug identifier for the region where the database cluster is
located.
status:
type: string
enum:
- creating
- online
- resizing
- migrating
- forking
example: creating
description: A string representing the current status of the database cluster.
readOnly: true
created_at:
type: string
format: date-time
example: '2019-01-11T18:37:36Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the database cluster was created.
readOnly: true
private_network_uuid:
type: string
pattern: ^$|[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}
example: d455e75d-4858-4eec-8c95-da2f0a5f93a7
description: >-
A string specifying the UUID of the VPC to which the database
cluster will be assigned. If excluded, the cluster when creating a
new database cluster, it will be assigned to your account's default
VPC for the region.
tags:
type: array
items:
type: string
example:
- production
nullable: true
description: An array of tags that have been applied to the database cluster.
db_names:
type: array
items:
type: string
example:
- doadmin
nullable: true
readOnly: true
description: >-
An array of strings containing the names of databases created in the
database cluster.
ui_connection:
allOf:
- $ref: '#/components/schemas/opensearch_connection'
- readOnly: true
description: 'The connection details for OpenSearch dashboard. '
connection:
allOf:
- $ref: '#/components/schemas/database_connection'
- readOnly: true
private_connection:
allOf:
- $ref: '#/components/schemas/database_connection'
- readOnly: true
standby_connection:
allOf:
- $ref: '#/components/schemas/database_connection'
- readOnly: true
standby_private_connection:
allOf:
- $ref: '#/components/schemas/database_connection'
- readOnly: true
users:
type: array
nullable: true
items:
$ref: '#/components/schemas/database_user'
readOnly: true
maintenance_window:
allOf:
- $ref: '#/components/schemas/database_maintenance_window'
- readOnly: true
project_id:
type: string
format: uuid
example: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
description: >-
The ID of the project that the database cluster is assigned to. If
excluded when creating a new database cluster, it will be assigned
to your default project.
rules:
type: array
items:
$ref: '#/components/schemas/firewall_rule'
version_end_of_life:
type: string
example: '2023-11-09T00:00:00Z'
readOnly: true
description: >-
A timestamp referring to the date when the particular version will
no longer be supported. If null, the version does not have an end of
life timeline.
version_end_of_availability:
type: string
example: '2023-05-09T00:00:00Z'
readOnly: true
description: >-
A timestamp referring to the date when the particular version will
no longer be available for creating new clusters. If null, the
version does not have an end of availability timeline.
storage_size_mib:
type: integer
example: 61440
description: >-
Additional storage added to the cluster, in MiB. If null, no
additional storage is added to the cluster, beyond what is provided
as a base amount from the 'size' and any previously added additional
storage.
metrics_endpoints:
type: array
items:
$ref: '#/components/schemas/database_service_endpoint'
description: >-
Public hostname and port of the cluster's metrics endpoint(s).
Includes one record for the cluster's primary node and a second
entry for the cluster's standby node(s).
readOnly: true
required:
- name
- engine
- num_nodes
- size
- region
database_backup:
type: object
properties:
database_name:
type: string
example: backend
description: >-
The name of an existing database cluster from which the backup will
be restored.
backup_created_at:
type: string
format: date-time
example: '2019-01-31T19:25:22Z'
description: >-
The timestamp of an existing database cluster backup in ISO8601
combined date and time format. The most recent backup will be used
if excluded.
required:
- database_name
mysql_advanced_config:
type: object
properties:
backup_hour:
description: >-
The hour of day (in UTC) when backup for the service starts. New
backup only starts if previous backup has already completed.
minimum: 0
maximum: 23
type: integer
example: 3
backup_minute:
description: >-
The minute of the backup hour when backup for the service starts.
New backup only starts if previous backup has already completed.
minimum: 0
maximum: 59
type: integer
example: 30
sql_mode:
description: >-
Global SQL mode. If empty, uses MySQL server defaults. Must only
include uppercase alphabetic characters, underscores, and commas.
type: string
pattern: ^[A-Z_]*(,[A-Z_]+)*$
example: ANSI,TRADITIONAL
maxLength: 1024
connect_timeout:
description: >-
The number of seconds that the mysqld server waits for a connect
packet before responding with bad handshake.
type: integer
minimum: 2
maximum: 3600
example: 10
default_time_zone:
description: >-
Default server time zone, in the form of an offset from UTC (from
-12:00 to +12:00), a time zone name (EST), or 'SYSTEM' to use the
MySQL server default.
type: string
example: '+03:00'
minLength: 2
maxLength: 100
group_concat_max_len:
description: >-
The maximum permitted result length, in bytes, for the
GROUP_CONCAT() function.
type: integer
minimum: 4
maximum: 18446744073709552000
example: 1024
information_schema_stats_expiry:
description: The time, in seconds, before cached statistics expire.
type: integer
minimum: 900
maximum: 31536000
example: 86400
innodb_ft_min_token_size:
description: The minimum length of words that an InnoDB FULLTEXT index stores.
type: integer
minimum: 0
maximum: 16
example: 3
innodb_ft_server_stopword_table:
description: The InnoDB FULLTEXT index stopword list for all InnoDB tables.
type: string
pattern: ^.+/.+$
example: db_name/table_name
maxLength: 1024
innodb_lock_wait_timeout:
description: >-
The time, in seconds, that an InnoDB transaction waits for a row
lock. before giving up.
type: integer
minimum: 1
maximum: 3600
example: 50
innodb_log_buffer_size:
description: >-
The size of the buffer, in bytes, that InnoDB uses to write to the
log files. on disk.
type: integer
minimum: 1048576
maximum: 4294967295
example: 16777216
innodb_online_alter_log_max_size:
description: >-
The upper limit, in bytes, of the size of the temporary log files
used during online DDL operations for InnoDB tables.
type: integer
minimum: 65536
maximum: 1099511627776
example: 134217728
innodb_print_all_deadlocks:
description: >-
When enabled, records information about all deadlocks in InnoDB user
transactions in the error log. Disabled by default.
type: boolean
example: true
innodb_rollback_on_timeout:
description: >-
When enabled, transaction timeouts cause InnoDB to abort and roll
back the entire transaction.
type: boolean
example: true
interactive_timeout:
description: >-
The time, in seconds, the server waits for activity on an
interactive. connection before closing it.
type: integer
minimum: 30
maximum: 604800
example: 3600
internal_tmp_mem_storage_engine:
description: The storage engine for in-memory internal temporary tables.
type: string
enum:
- TempTable
- MEMORY
example: TempTable
net_read_timeout:
description: >-
The time, in seconds, to wait for more data from an existing
connection. aborting the read.
type: integer
minimum: 1
maximum: 3600
example: 30
net_write_timeout:
description: >-
The number of seconds to wait for a block to be written to a
connection before aborting the write.
type: integer
minimum: 1
maximum: 3600
example: 30
sql_require_primary_key:
description: >-
Require primary key to be defined for new tables or old tables
modified with ALTER TABLE and fail if missing. It is recommended to
always have primary keys because various functionality may break if
any large table is missing them.
type: boolean
example: true
wait_timeout:
description: >-
The number of seconds the server waits for activity on a
noninteractive connection before closing it.
type: integer
minimum: 1
maximum: 2147483
example: 28800
max_allowed_packet:
description: >-
The size of the largest message, in bytes, that can be received by
the server. Default is 67108864 (64M).
type: integer
minimum: 102400
maximum: 1073741824
example: 67108864
max_heap_table_size:
description: >-
The maximum size, in bytes, of internal in-memory tables. Also set
tmp_table_size. Default is 16777216 (16M)
type: integer
minimum: 1048576
maximum: 1073741824
example: 16777216
sort_buffer_size:
description: >-
The sort buffer size, in bytes, for ORDER BY optimization. Default
is 262144. (256K).
type: integer
minimum: 32768
maximum: 1073741824
example: 262144
tmp_table_size:
description: >-
The maximum size, in bytes, of internal in-memory tables. Also set
max_heap_table_size. Default is 16777216 (16M).
type: integer
minimum: 1048576
maximum: 1073741824
example: 16777216
slow_query_log:
description: >-
When enabled, captures slow queries. When disabled, also truncates
the mysql.slow_log table. Default is false.
type: boolean
example: true
long_query_time:
description: >-
The time, in seconds, for a query to take to execute before being
captured by slow_query_logs. Default is 10 seconds.
type: number
minimum: 0
maximum: 3600
example: 10
binlog_retention_period:
description: >-
The minimum amount of time, in seconds, to keep binlog entries
before deletion. This may be extended for services that require
binlog entries for longer than the default, for example if using the
MySQL Debezium Kafka connector.
type: number
minimum: 600
maximum: 86400
example: 600
innodb_change_buffer_max_size:
description: >-
Specifies the maximum size of the InnoDB change buffer as a
percentage of the buffer pool.
type: integer
minimum: 0
maximum: 50
example: 25
innodb_flush_neighbors:
description: >-
Specifies whether flushing a page from the InnoDB buffer pool also
flushes other dirty pages in the same extent.
- 0 — disables this functionality, dirty pages in the same extent are not flushed.
- 1 — flushes contiguous dirty pages in the same extent.
- 2 — flushes dirty pages in the same extent.
type: integer
enum:
- 0
- 1
- 2
example: 0
innodb_read_io_threads:
description: >-
The number of I/O threads for read operations in InnoDB. Changing
this parameter will lead to a restart of the MySQL service.
type: integer
minimum: 1
maximum: 64
example: 16
innodb_write_io_threads:
description: >-
The number of I/O threads for write operations in InnoDB. Changing
this parameter will lead to a restart of the MySQL service.
type: integer
minimum: 1
maximum: 64
example: 16
innodb_thread_concurrency:
description: >-
Defines the maximum number of threads permitted inside of InnoDB. A
value of 0 (the default) is interpreted as infinite concurrency (no
limit). This variable is intended for performance tuning on high
concurrency systems.
type: integer
minimum: 0
maximum: 1000
example: 0
net_buffer_length:
description: >-
Start sizes of connection buffer and result buffer, must be multiple
of 1024. Changing this parameter will lead to a restart of the MySQL
service.
type: integer
minimum: 1024
maximum: 1048576
example: 4096
log_output:
description: >-
Defines the destination for logs. Can be `INSIGHTS`, `TABLE`, or
both (`INSIGHTS,TABLE`), or `NONE` to disable logs. To specify both
destinations, use `INSIGHTS,TABLE` (order matters). Default is NONE.
type: string
enum:
- INSIGHTS
- TABLE
- INSIGHTS,TABLE
- NONE
example: INSIGHTS
default: NONE
pgbouncer_advanced_config:
type: object
description: PGBouncer connection pooling settings
properties:
server_reset_query_always:
description: Run server_reset_query (DISCARD ALL) in all pooling modes.
type: boolean
example: false
ignore_startup_parameters:
description: List of parameters to ignore when given in startup packet.
type: array
example:
- extra_float_digits
- search_path
items:
description: Enum of parameters to ignore when given in startup packet.
type: string
enum:
- extra_float_digits
- search_path
maxItems: 32
min_pool_size:
description: >-
If current server connections are below this number, adds more.
Improves behavior when usual load comes suddenly back after period
of total inactivity. The value is effectively capped at the pool
size.
type: integer
minimum: 0
maximum: 10000
example: 1
server_lifetime:
description: >-
The pooler closes any unused server connection that has been
connected longer than this amount of seconds.
type: integer
minimum: 60
maximum: 86400
example: 3600
server_idle_timeout:
description: >-
Drops server connections if they have been idle more than this many
seconds. If 0, timeout is disabled.
type: integer
minimum: 0
maximum: 86400
example: 600
autodb_pool_size:
description: >-
If non-zero, automatically creates a pool of that size per user when
a pool doesn't exist.
type: integer
minimum: 0
maximum: 10000
example: 1
autodb_pool_mode:
enum:
- session
- transaction
- statement
example: session
description: PGBouncer pool mode
type: string
autodb_max_db_connections:
description: >-
Only allows a maximum this many server connections per database
(regardless of user). If 0, allows unlimited connections.
type: integer
minimum: 0
maximum: 2147483647
example: 1
autodb_idle_timeout:
description: >-
If the automatically-created database pools have been unused this
many seconds, they are freed. If 0, timeout is disabled.
type: integer
minimum: 0
maximum: 86400
example: 3600
timescaledb_advanced_config:
type: object
description: TimescaleDB extension configuration values
properties:
max_background_workers:
description: >-
The number of background workers for timescaledb operations. Set to
the sum of your number of databases and the total number of
concurrent background workers you want running at any given point in
time.
type: integer
minimum: 1
maximum: 4096
example: 8
postgres_advanced_config:
type: object
properties:
autovacuum_freeze_max_age:
description: >-
Specifies the maximum age (in transactions) that a table's
pg_class.relfrozenxid field can attain before a VACUUM operation is
forced to prevent transaction ID wraparound within the table. Note
that the system will launch autovacuum processes to prevent
wraparound even when autovacuum is otherwise disabled. This
parameter will cause the server to be restarted.
type: integer
minimum: 200000000
maximum: 1500000000
example: 200000000
autovacuum_max_workers:
description: >-
Specifies the maximum number of autovacuum processes (other than the
autovacuum launcher) that may be running at any one time. The
default is three. This parameter can only be set at server start.
type: integer
minimum: 1
maximum: 20
example: 5
autovacuum_naptime:
description: >-
Specifies the minimum delay, in seconds, between autovacuum runs on
any given database. The default is one minute.
type: integer
minimum: 0
maximum: 86400
example: 43200
autovacuum_vacuum_threshold:
description: >-
Specifies the minimum number of updated or deleted tuples needed to
trigger a VACUUM in any one table. The default is 50 tuples.
type: integer
minimum: 0
maximum: 2147483647
example: 50
autovacuum_analyze_threshold:
description: >-
Specifies the minimum number of inserted, updated, or deleted tuples
needed to trigger an ANALYZE in any one table. The default is 50
tuples.
type: integer
minimum: 0
maximum: 2147483647
example: 50
autovacuum_vacuum_scale_factor:
description: >-
Specifies a fraction, in a decimal value, of the table size to add
to autovacuum_vacuum_threshold when deciding whether to trigger a
VACUUM. The default is 0.2 (20% of table size).
type: number
minimum: 0
maximum: 1
example: 0.2
autovacuum_analyze_scale_factor:
description: >-
Specifies a fraction, in a decimal value, of the table size to add
to autovacuum_analyze_threshold when deciding whether to trigger an
ANALYZE. The default is 0.2 (20% of table size).
type: number
minimum: 0
maximum: 1
example: 0.2
autovacuum_vacuum_cost_delay:
description: >-
Specifies the cost delay value, in milliseconds, that will be used
in automatic VACUUM operations. If -1, uses the regular
vacuum_cost_delay value, which is 20 milliseconds.
type: integer
minimum: -1
maximum: 100
example: 20
autovacuum_vacuum_cost_limit:
description: >-
Specifies the cost limit value that will be used in automatic VACUUM
operations. If -1 is specified (which is the default), the regular
vacuum_cost_limit value will be used.
type: integer
minimum: -1
maximum: 10000
example: -1
backup_hour:
description: >-
The hour of day (in UTC) when backup for the service starts. New
backup only starts if previous backup has already completed.
minimum: 0
maximum: 23
type: integer
example: 3
backup_minute:
description: >-
The minute of the backup hour when backup for the service starts.
New backup is only started if previous backup has already completed.
minimum: 0
maximum: 59
type: integer
example: 30
bgwriter_delay:
description: >-
Specifies the delay, in milliseconds, between activity rounds for
the background writer. Default is 200 ms.
type: integer
minimum: 10
maximum: 10000
example: 200
bgwriter_flush_after:
description: >-
The amount of kilobytes that need to be written by the background
writer before attempting to force the OS to issue these writes to
underlying storage. Specified in kilobytes, default is 512. Setting
of 0 disables forced writeback.
type: integer
minimum: 0
maximum: 2048
example: 512
bgwriter_lru_maxpages:
description: >-
The maximum number of buffers that the background writer can write.
Setting this to zero disables background writing. Default is 100.
type: integer
minimum: 0
maximum: 1073741823
example: 100
bgwriter_lru_multiplier:
description: >-
The average recent need for new buffers is multiplied by
bgwriter_lru_multiplier to arrive at an estimate of the number that
will be needed during the next round, (up to bgwriter_lru_maxpages).
1.0 represents a just in time policy of writing exactly the number
of buffers predicted to be needed. Larger values provide some
cushion against spikes in demand, while smaller values intentionally
leave writes to be done by server processes. The default is 2.0.
type: number
minimum: 0
maximum: 10
example: 2
deadlock_timeout:
description: >-
The amount of time, in milliseconds, to wait on a lock before
checking to see if there is a deadlock condition.
type: integer
minimum: 500
maximum: 1800000
example: 1000
default_toast_compression:
description: >-
Specifies the default TOAST compression method for values of
compressible columns (the default is lz4).
type: string
enum:
- lz4
- pglz
example: lz4
idle_in_transaction_session_timeout:
description: >-
Time out sessions with open transactions after this number of
milliseconds
type: integer
minimum: 0
maximum: 604800000
example: 10000
jit:
description: >-
Activates, in a boolean, the system-wide use of Just-in-Time
Compilation (JIT).
type: boolean
example: true
log_autovacuum_min_duration:
description: >-
Causes each action executed by autovacuum to be logged if it ran for
at least the specified number of milliseconds. Setting this to zero
logs all autovacuum actions. Minus-one (the default) disables
logging autovacuum actions.
type: integer
minimum: -1
maximum: 2147483647
example: -1
log_error_verbosity:
description: >-
Controls the amount of detail written in the server log for each
message that is logged.
type: string
enum:
- TERSE
- DEFAULT
- VERBOSE
example: VERBOSE
log_line_prefix:
description: >-
Selects one of the available log-formats. These can support popular
log analyzers like pgbadger, pganalyze, etc.
type: string
enum:
- pid=%p,user=%u,db=%d,app=%a,client=%h
- '%m [%p] %q[user=%u,db=%d,app=%a]'
- '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h'
example: pid=%p,user=%u,db=%d,app=%a,client=%h
log_min_duration_statement:
description: >-
Log statements that take more than this number of milliseconds to
run. If -1, disables.
type: integer
minimum: -1
maximum: 86400000
example: -1
max_files_per_process:
description: PostgreSQL maximum number of files that can be open per process.
type: integer
minimum: 1000
maximum: 4096
example: 2048
max_prepared_transactions:
description: >-
PostgreSQL maximum prepared transactions. Once increased, this
parameter cannot be lowered from its set value.
type: integer
minimum: 0
maximum: 10000
example: 20
max_pred_locks_per_transaction:
description: PostgreSQL maximum predicate locks per transaction.
type: integer
minimum: 64
maximum: 640
example: 128
max_locks_per_transaction:
description: >-
PostgreSQL maximum locks per transaction. Once increased, this
parameter cannot be lowered from its set value.
type: integer
minimum: 64
maximum: 6400
example: 128
max_stack_depth:
description: Maximum depth of the stack in bytes.
type: integer
minimum: 2097152
maximum: 6291456
example: 2097152
max_standby_archive_delay:
description: Max standby archive delay in milliseconds.
type: integer
minimum: 1
maximum: 43200000
example: 43200
max_standby_streaming_delay:
description: Max standby streaming delay in milliseconds.
type: integer
minimum: 1
maximum: 43200000
example: 43200
max_replication_slots:
description: PostgreSQL maximum replication slots.
type: integer
minimum: 8
maximum: 64
example: 16
max_logical_replication_workers:
description: >-
PostgreSQL maximum logical replication workers (taken from the pool
of max_parallel_workers).
type: integer
minimum: 4
maximum: 64
example: 16
max_parallel_workers:
description: >-
Sets the maximum number of workers that the system can support for
parallel queries.
type: integer
minimum: 0
maximum: 96
example: 12
max_parallel_workers_per_gather:
description: >-
Sets the maximum number of workers that can be started by a single
Gather or Gather Merge node.
type: integer
minimum: 0
maximum: 96
example: 16
max_worker_processes:
description: >-
Sets the maximum number of background processes that the system can
support. Once increased, this parameter cannot be lowered from its
set value.
type: integer
minimum: 8
maximum: 96
example: 16
pg_partman_bgw.role:
type: string
pattern: ^[_A-Za-z0-9][-._A-Za-z0-9]{0,63}$
maxLength: 64
example: myrolename
description: >-
Controls which role to use for pg_partman's scheduled background
tasks. Must consist of alpha-numeric characters, dots, underscores,
or dashes. May not start with dash or dot. Maximum of 64 characters.
pg_partman_bgw.interval:
description: Sets the time interval to run pg_partman's scheduled tasks.
type: integer
minimum: 3600
maximum: 604800
example: 3600
pg_stat_statements.track:
description: >-
Controls which statements are counted. Specify 'top' to track
top-level statements (those issued directly by clients), 'all' to
also track nested statements (such as statements invoked within
functions), or 'none' to disable statement statistics collection.
The default value is top.
type: string
enum:
- all
- top
- none
example: all
temp_file_limit:
description: PostgreSQL temporary file limit in KiB. If -1, sets to unlimited.
type: integer
example: 5000000
minimum: -1
maximum: 2147483647
timezone:
description: PostgreSQL service timezone
type: string
example: Europe/Helsinki
maxLength: 64
track_activity_query_size:
description: >-
Specifies the number of bytes reserved to track the currently
executing command for each active session.
type: integer
example: 1024
minimum: 1024
maximum: 10240
track_commit_timestamp:
description: Record commit time of transactions.
type: string
enum:
- 'off'
- 'on'
example: 'off'
track_functions:
description: Enables tracking of function call counts and time used.
type: string
enum:
- all
- pl
- none
example: all
track_io_timing:
description: >-
Enables timing of database I/O calls. This parameter is off by
default, because it will repeatedly query the operating system for
the current time, which may cause significant overhead on some
platforms.
type: string
enum:
- 'off'
- 'on'
example: 'off'
max_wal_senders:
description: >-
PostgreSQL maximum WAL senders. Once increased, this parameter
cannot be lowered from its set value.
type: integer
minimum: 20
maximum: 64
example: 32
wal_sender_timeout:
description: >-
Terminate replication connections that are inactive for longer than
this amount of time, in milliseconds. Setting this value to zero
disables the timeout. Must be either 0 or between 5000 and 10800000.
type: integer
minimum: 0
maximum: 10800000
example: 60000
wal_writer_delay:
description: >-
WAL flush interval in milliseconds. Note that setting this value to
lower than the default 200ms may negatively impact performance
type: integer
minimum: 10
maximum: 200
example: 50
shared_buffers_percentage:
description: >-
Percentage of total RAM that the database server uses for shared
memory buffers. Valid range is 20-60 (float), which corresponds to
20% - 60%. This setting adjusts the shared_buffers configuration
value.
type: number
minimum: 20
maximum: 60
example: 41.5
pgbouncer:
$ref: '#/components/schemas/pgbouncer_advanced_config'
work_mem:
description: >-
The maximum amount of memory, in MB, used by a query operation (such
as a sort or hash table) before writing to temporary disk files.
Default is 1MB + 0.075% of total RAM (up to 32MB).
type: integer
minimum: 1
maximum: 1024
example: 4
timescaledb:
$ref: '#/components/schemas/timescaledb_advanced_config'
synchronous_replication:
description: >-
Synchronous replication type. Note that the service plan also needs
to support synchronous replication.
type: string
example: 'off'
enum:
- 'off'
- quorum
stat_monitor_enable:
description: >-
Enable the pg_stat_monitor extension. Enabling this extension
will cause the cluster to be restarted. When this extension is
enabled, pg_stat_statements results for utility commands are
unreliable.
type: boolean
example: false
max_failover_replication_time_lag:
description: >-
Number of seconds of master unavailability before triggering
database failover to standby. The default value is 60.
type: integer
minimum: 10
maximum: 9223372036854776000
example: 50
eviction_policy_model:
type: string
enum:
- noeviction
- allkeys_lru
- allkeys_random
- volatile_lru
- volatile_random
- volatile_ttl
description: >-
A string specifying the desired eviction policy for the Redis cluster.
- `noeviction`: Don't evict any data, returns error when memory limit is
reached.
- `allkeys_lru:` Evict any key, least recently used (LRU) first.
- `allkeys_random`: Evict keys in a random order.
- `volatile_lru`: Evict keys with expiration only, least recently used
(LRU) first.
- `volatile_random`: Evict keys with expiration only in a random order.
- `volatile_ttl`: Evict keys with expiration only, shortest time-to-live
(TTL) first.
example: allkeys_lru
redis_advanced_config:
type: object
properties:
redis_maxmemory_policy:
$ref: '#/components/schemas/eviction_policy_model'
redis_pubsub_client_output_buffer_limit:
description: >-
Set output buffer limit for pub / sub clients in MB. The value is
the hard limit, the soft limit is 1/4 of the hard limit. When
setting the limit, be mindful of the available memory in the
selected service plan.
type: integer
minimum: 32
maximum: 512
example: 64
redis_number_of_databases:
type: integer
minimum: 1
maximum: 128
description: >-
Set number of redis databases. Changing this will cause a restart of
redis service.
example: 16
redis_io_threads:
description: Redis IO thread count
type: integer
minimum: 1
maximum: 32
example: 1
redis_lfu_log_factor:
description: >-
Counter logarithm factor for volatile-lfu and allkeys-lfu
maxmemory-policies
type: integer
minimum: 0
maximum: 100
default: 10
example: 10
redis_lfu_decay_time:
description: LFU maxmemory-policy counter decay time in minutes
type: integer
minimum: 1
maximum: 120
default: 1
example: 1
redis_ssl:
description: >
Require SSL to access Redis.
- When enabled, Redis accepts only SSL connections on port `25061`.
- When disabled, port `25060` is opened for non-SSL connections,
while port `25061` remains available for SSL connections.
type: boolean
default: true
example: true
redis_timeout:
description: Redis idle connection timeout in seconds
type: integer
minimum: 0
maximum: 31536000
default: 300
example: 300
redis_notify_keyspace_events:
description: >-
Set notify-keyspace-events option. Requires at least `K` or `E` and
accepts any combination of the following options. Setting the
parameter to `""` disables notifications.
- `K` — Keyspace events
- `E` — Keyevent events
- `g` — Generic commands (e.g. `DEL`, `EXPIRE`, `RENAME`, ...)
- `$` — String commands
- `l` — List commands
- `s` — Set commands
- `h` — Hash commands
- `z` — Sorted set commands
- `t` — Stream commands
- `d` — Module key type events
- `x` — Expired events
- `e` — Evicted events
- `m` — Key miss events
- `n` — New key events
- `A` — Alias for `"g$lshztxed"`
type: string
pattern: ^[KEg\$lshzxeA]*$
default: ''
maxLength: 32
example: K
redis_persistence:
type: string
enum:
- 'off'
- rdb
description: >-
Creates an RDB dump of the database every 10 minutes that can be
used to recover data after a node crash. The database does not
create the dump if no keys have changed since the last dump. When
set to `off`, the database cannot fork services, and data can be
lost if a service is restarted or powered off. DigitalOcean Managed
Caching databases do not support the Append Only File (AOF)
persistence method.
example: rdb
redis_acl_channels_default:
type: string
enum:
- allchannels
- resetchannels
description: >-
Determines default pub/sub channels' ACL for new users if ACL is not
supplied. When this option is not defined, all_channels is assumed
to keep backward compatibility. This option doesn't affect Redis
configuration acl-pubsub-default.
example: allchannels
kafka_advanced_config:
type: object
properties:
compression_type:
description: >-
Specify the final compression type for a given topic. This
configuration accepts the standard compression codecs ('gzip',
'snappy', 'lz4', 'zstd'). It additionally accepts 'uncompressed'
which is equivalent to no compression; and 'producer' which means
retain the original compression codec set by the producer.
type: string
enum:
- gzip
- snappy
- lz4
- zstd
- uncompressed
- producer
example: gzip
group_initial_rebalance_delay_ms:
description: >-
The amount of time, in milliseconds, the group coordinator will wait
for more consumers to join a new group before performing the first
rebalance. A longer delay means potentially fewer rebalances, but
increases the time until processing begins. The default value for
this is 3 seconds. During development and testing it might be
desirable to set this to 0 in order to not delay test execution
time.
type: integer
example: 3000
minimum: 0
maximum: 300000
group_min_session_timeout_ms:
description: >-
The minimum allowed session timeout for registered consumers. Longer
timeouts give consumers more time to process messages in between
heartbeats at the cost of a longer time to detect failures.
type: integer
example: 6000
minimum: 0
maximum: 60000
group_max_session_timeout_ms:
description: >-
The maximum allowed session timeout for registered consumers. Longer
timeouts give consumers more time to process messages in between
heartbeats at the cost of a longer time to detect failures.
type: integer
example: 1800000
minimum: 0
maximum: 1800000
connections_max_idle_ms:
description: >-
Idle connections timeout: the server socket processor threads close
the connections that idle for longer than this.
type: integer
minimum: 1000
example: 540000
maximum: 3600000
max_incremental_fetch_session_cache_slots:
description: >-
The maximum number of incremental fetch sessions that the broker
will maintain.
type: integer
example: 1000
minimum: 1000
maximum: 10000
message_max_bytes:
description: The maximum size of message that the server can receive.
type: integer
example: 1048588
minimum: 0
maximum: 100001200
offsets_retention_minutes:
description: Log retention window in minutes for offsets topic
type: integer
example: 10080
minimum: 1
maximum: 2147483647
log_cleaner_delete_retention_ms:
description: How long are delete records retained?
type: integer
minimum: 0
maximum: 315569260000
example: 86400000
log_cleaner_min_cleanable_ratio:
description: >-
Controls log compactor frequency. Larger value means more frequent
compactions but also more space wasted for logs. Consider setting
log_cleaner_max_compaction_lag_ms to enforce compactions sooner,
instead of setting a very high value for this option.
type: number
minimum: 0.2
maximum: 0.9
example: 0.5
log_cleaner_max_compaction_lag_ms:
description: >-
The maximum amount of time message will remain uncompacted. Only
applicable for logs that are being compacted
type: integer
minimum: 30000
maximum: 9223372036854776000
example: 60000
log_cleaner_min_compaction_lag_ms:
description: >-
The minimum time a message will remain uncompacted in the log. Only
applicable for logs that are being compacted.
type: integer
minimum: 0
maximum: 9223372036854776000
example: 100000
log_cleanup_policy:
description: The default cleanup policy for segments beyond the retention window
type: string
enum:
- delete
- compact
- compact,delete
example: delete
log_flush_interval_messages:
description: >-
The number of messages accumulated on a log partition before
messages are flushed to disk
type: integer
minimum: 1
maximum: 9223372036854776000
example: 9223372036854776000
log_flush_interval_ms:
description: >-
The maximum time in ms that a message in any topic is kept in memory
before flushed to disk. If not set, the value in
log.flush.scheduler.interval.ms is used
type: integer
minimum: 0
maximum: 9223372036854776000
example: 1000000
log_index_interval_bytes:
description: The interval with which Kafka adds an entry to the offset index
type: integer
minimum: 0
maximum: 104857600
example: 4096
log_index_size_max_bytes:
description: The maximum size in bytes of the offset index
type: integer
minimum: 1048576
maximum: 104857600
example: 10485760
log_message_downconversion_enable:
description: >-
This configuration controls whether down-conversion of message
formats is enabled to satisfy consume requests.
type: boolean
example: true
log_message_timestamp_type:
description: >-
Define whether the timestamp in the message is message create time
or log append time.
type: string
enum:
- CreateTime
- LogAppendTime
example: CreateTime
log_message_timestamp_difference_max_ms:
description: >-
The maximum difference allowed between the timestamp when a broker
receives a message and the timestamp specified in the message
type: integer
minimum: 0
maximum: 9223372036854776000
example: 1000000
log_preallocate:
description: Controls whether to preallocate a file when creating a new segment
type: boolean
example: false
log_retention_bytes:
description: The maximum size of the log before deleting messages
type: integer
minimum: -1
maximum: 9223372036854776000
example: 1000000
log_retention_hours:
description: The number of hours to keep a log file before deleting it
type: integer
minimum: -1
maximum: 2147483647
example: 1000000
log_retention_ms:
description: >-
The number of milliseconds to keep a log file before deleting it (in
milliseconds), If not set, the value in log.retention.minutes is
used. If set to -1, no time limit is applied.
type: integer
minimum: -1
maximum: 9223372036854776000
example: 100000000
log_roll_jitter_ms:
description: >-
The maximum jitter to subtract from logRollTimeMillis (in
milliseconds). If not set, the value in log.roll.jitter.hours is
used
type: integer
minimum: 0
maximum: 9223372036854776000
example: 10000000
log_roll_ms:
description: >-
The maximum time before a new log segment is rolled out (in
milliseconds).
type: integer
minimum: 1
maximum: 9223372036854776000
example: 1000000
log_segment_bytes:
description: The maximum size of a single log file
type: integer
minimum: 10485760
maximum: 1073741824
example: 100000000
log_segment_delete_delay_ms:
description: >-
The amount of time to wait before deleting a file from the
filesystem
type: integer
minimum: 0
maximum: 3600000
example: 60000
auto_create_topics_enable:
description: Enable auto creation of topics
type: boolean
example: true
min_insync_replicas:
description: >-
When a producer sets acks to 'all' (or '-1'), min_insync_replicas
specifies the minimum number of replicas that must acknowledge a
write for the write to be considered successful.
type: integer
minimum: 1
maximum: 7
example: 1
num_partitions:
description: Number of partitions for autocreated topics
type: integer
minimum: 1
maximum: 1000
example: 10
default_replication_factor:
description: Replication factor for autocreated topics
type: integer
minimum: 1
maximum: 10
example: 2
replica_fetch_max_bytes:
description: >-
The number of bytes of messages to attempt to fetch for each
partition (defaults to 1048576). This is not an absolute maximum, if
the first record batch in the first non-empty partition of the fetch
is larger than this value, the record batch will still be returned
to ensure that progress can be made.
type: integer
minimum: 1048576
maximum: 104857600
example: 2097152
replica_fetch_response_max_bytes:
description: >-
Maximum bytes expected for the entire fetch response (defaults to
10485760). Records are fetched in batches, and if the first record
batch in the first non-empty partition of the fetch is larger than
this value, the record batch will still be returned to ensure that
progress can be made. As such, this is not an absolute maximum.
type: integer
minimum: 10485760
maximum: 1048576000
example: 20971520
max_connections_per_ip:
description: >-
The maximum number of connections allowed from each ip address
(defaults to 2147483647).
type: integer
minimum: 256
maximum: 2147483647
example: 512
producer_purgatory_purge_interval_requests:
description: >-
The purge interval (in number of requests) of the producer request
purgatory (defaults to 1000).
type: integer
minimum: 10
maximum: 10000
example: 100
socket_request_max_bytes:
description: >-
The maximum number of bytes in a socket request (defaults to
104857600).
type: integer
minimum: 10485760
maximum: 209715200
example: 20971520
transaction_state_log_segment_bytes:
description: >-
The transaction topic segment bytes should be kept relatively small
in order to facilitate faster log compaction and cache loads
(defaults to 104857600 (100 mebibytes)).
type: integer
minimum: 1048576
maximum: 2147483647
example: 104857600
transaction_remove_expired_transaction_cleanup_interval_ms:
description: >-
The interval at which to remove transactions that have expired due
to transactional.id.expiration.ms passing (defaults to 3600000 (1
hour)).
type: integer
minimum: 600000
maximum: 3600000
example: 3600000
opensearch_advanced_config:
type: object
properties:
http_max_content_length_bytes:
description: >-
Maximum content length for HTTP requests to the OpenSearch HTTP API,
in bytes.
type: integer
example: 100000000
minimum: 1
maximum: 2147483647
default: 100000000
http_max_header_size_bytes:
description: Maximum size of allowed headers, in bytes.
type: integer
example: 8192
minimum: 1024
maximum: 262144
default: 8192
http_max_initial_line_length_bytes:
description: Maximum length of an HTTP URL, in bytes.
type: integer
example: 4096
minimum: 1024
maximum: 65536
default: 4096
indices_query_bool_max_clause_count:
description: >-
Maximum number of clauses Lucene BooleanQuery can have. Only
increase it if necessary, as it may cause performance issues.
type: integer
example: 1024
minimum: 64
maximum: 4096
default: 1024
indices_fielddata_cache_size_percentage:
description: >-
Maximum amount of heap memory used for field data cache, expressed
as a percentage. Decreasing the value too much will increase
overhead of loading field data. Increasing the value too much will
decrease amount of heap available for other operations.
type: integer
example: 3
minimum: 3
maximum: 100
indices_memory_index_buffer_size_percentage:
description: >-
Total amount of heap used for indexing buffer before writing
segments to disk, expressed as a percentage. Too low value will slow
down indexing; too high value will increase indexing performance but
causes performance issues for query performance.
type: integer
example: 10
minimum: 3
maximum: 40
default: 10
indices_memory_min_index_buffer_size_mb:
description: >-
Minimum amount of heap used for indexing buffer before writing
segments to disk, in mb. Works in conjunction with
indices_memory_index_buffer_size_percentage, each being enforced.
type: integer
example: 48
minimum: 3
maximum: 2048
default: 48
indices_memory_max_index_buffer_size_mb:
description: >-
Maximum amount of heap used for indexing buffer before writing
segments to disk, in mb. Works in conjunction with
indices_memory_index_buffer_size_percentage, each being enforced.
The default is unbounded.
type: integer
example: 48
minimum: 3
maximum: 2048
indices_queries_cache_size_percentage:
description: >-
Maximum amount of heap used for query cache. Too low value will
decrease query performance and increase performance for other
operations; too high value will cause issues with other
functionality.
type: integer
example: 10
minimum: 3
maximum: 40
default: 10
indices_recovery_max_mb_per_sec:
description: >-
Limits total inbound and outbound recovery traffic for each node,
expressed in mb per second. Applies to both peer recoveries as well
as snapshot recoveries (i.e., restores from a snapshot).
type: integer
example: 40
minimum: 40
maximum: 400
default: 40
indices_recovery_max_concurrent_file_chunks:
description: Maximum number of file chunks sent in parallel for each recovery.
type: integer
example: 2
minimum: 2
maximum: 5
default: 2
thread_pool_search_size:
description: >-
Number of workers in the search operation thread pool. Do note this
may have maximum value depending on CPU count - value is
automatically lowered if set to higher than maximum value.
type: integer
example: 1
minimum: 1
maximum: 128
thread_pool_search_throttled_size:
description: >-
Number of workers in the search throttled operation thread pool.
This pool is used for searching frozen indices. Do note this may
have maximum value depending on CPU count - value is automatically
lowered if set to higher than maximum value.
type: integer
example: 1
minimum: 1
maximum: 128
thread_pool_get_size:
description: >-
Number of workers in the get operation thread pool. Do note this
may have maximum value depending on CPU count - value is
automatically lowered if set to higher than maximum value.
type: integer
example: 1
minimum: 1
maximum: 128
thread_pool_analyze_size:
description: >-
Number of workers in the analyze operation thread pool. Do note
this may have maximum value depending on CPU count - value is
automatically lowered if set to higher than maximum value.
type: integer
example: 1
minimum: 1
maximum: 128
thread_pool_write_size:
description: >-
Number of workers in the write operation thread pool. Do note this
may have maximum value depending on CPU count - value is
automatically lowered if set to higher than maximum value.
type: integer
example: 1
minimum: 1
maximum: 128
thread_pool_force_merge_size:
description: >-
Number of workers in the force merge operation thread pool. This
pool is used for forcing a merge between shards of one or more
indices. Do note this may have maximum value depending on CPU count
- value is automatically lowered if set to higher than maximum
value.
type: integer
example: 1
minimum: 1
maximum: 128
thread_pool_search_queue_size:
description: Size of queue for operations in the search thread pool.
type: integer
example: 10
minimum: 10
maximum: 2000
thread_pool_search_throttled_queue_size:
description: Size of queue for operations in the search throttled thread pool.
type: integer
example: 10
minimum: 10
maximum: 2000
thread_pool_get_queue_size:
description: Size of queue for operations in the get thread pool.
type: integer
example: 10
minimum: 10
maximum: 2000
thread_pool_analyze_queue_size:
description: Size of queue for operations in the analyze thread pool.
type: integer
example: 10
minimum: 10
maximum: 2000
thread_pool_write_queue_size:
description: Size of queue for operations in the write thread pool.
type: integer
example: 10
minimum: 10
maximum: 2000
ism_enabled:
description: Specifies whether ISM is enabled or not.
type: boolean
example: true
default: true
ism_history_enabled:
description: >-
Specifies whether audit history is enabled or not. The logs from ISM
are automatically indexed to a logs document.
type: boolean
example: true
default: true
ism_history_max_age_hours:
description: Maximum age before rolling over the audit history index, in hours.
type: integer
example: 24
minimum: 1
maximum: 2147483647
default: 24
ism_history_max_docs:
description: >-
Maximum number of documents before rolling over the audit history
index.
type: integer
example: 2500000
minimum: 1
maximum: 9223372036854776000
default: 2500000
ism_history_rollover_check_period_hours:
description: >-
The time between rollover checks for the audit history index, in
hours.
type: integer
example: 8
minimum: 1
maximum: 2147483647
default: 8
ism_history_rollover_retention_period_days:
description: Length of time long audit history indices are kept, in days.
type: integer
example: 30
minimum: 1
maximum: 2147483647
default: 30
search_max_buckets:
description: Maximum number of aggregation buckets allowed in a single response.
type: integer
example: 10000
minimum: 1
maximum: 1000000
default: 10000
action_auto_create_index_enabled:
description: Specifices whether to allow automatic creation of indices.
type: boolean
example: true
default: true
enable_security_audit:
description: Specifies whether to allow security audit logging.
type: boolean
example: false
default: false
action_destructive_requires_name:
description: >-
Specifies whether to require explicit index names when deleting
indices.
type: boolean
example: false
cluster_max_shards_per_node:
description: Maximum number of shards allowed per data node.
type: integer
example: 100
minimum: 100
maximum: 10000
override_main_response_version:
description: >-
Compatibility mode sets OpenSearch to report its version as 7.10 so
clients continue to work.
type: boolean
example: false
default: false
script_max_compilations_rate:
description: >-
Limits the number of inline script compilations within a period of
time. Default is use-context
type: string
example: 75/5m
default: use-context
cluster_routing_allocation_node_concurrent_recoveries:
description: >-
Maximum concurrent incoming/outgoing shard recoveries (normally
replicas) are allowed to happen per node .
type: integer
example: 2
minimum: 2
maximum: 16
default: 2
reindex_remote_whitelist:
description: >-
Allowlist of remote IP addresses for reindexing. Changing this value
will cause all OpenSearch instances to restart.
type: array
items:
type: string
example:
- 255.255.223.233:9200
- 222.33.222.222:6300
plugins_alerting_filter_by_backend_roles_enabled:
description: Enable or disable filtering of alerting by backend roles.
type: boolean
example: false
default: false
mongo_advanced_config:
type: object
properties:
default_read_concern:
description: >-
Specifies the default consistency behavior of reads from the
database. Data that is returned from the query with may or may not
have been acknowledged by all nodes in the replicaset depending on
this value. Learn more
[here](https://www.mongodb.com/docs/manual/reference/read-concern/).
type: string
enum:
- local
- available
- majority
default: local
example: local
default_write_concern:
description: >-
Describes the level of acknowledgment requested from MongoDB for
write operations clusters. This field can set to either `majority`
or a number `0...n` which will describe the number of nodes that
must acknowledge the write operation before it is fully accepted.
Setting to `0` will request no acknowledgement of the write
operation. Learn more
[here](https://www.mongodb.com/docs/manual/reference/write-concern/).
type: string
default: majority
example: majority
transaction_lifetime_limit_seconds:
description: >-
Specifies the lifetime of multi-document transactions. Transactions
that exceed this limit are considered expired and will be aborted
by a periodic cleanup process. The cleanup process runs every
`transactionLifetimeLimitSeconds/2 seconds` or at least once every
60 seconds. *Changing this parameter will lead to a restart of the
MongoDB service.* Learn more
[here](https://www.mongodb.com/docs/manual/reference/parameters/#mongodb-parameter-param.transactionLifetimeLimitSeconds).
type: integer
minimum: 1
default: 60
example: 100
slow_op_threshold_ms:
description: >-
Operations that run for longer than this threshold are considered
slow which are then recorded to the diagnostic logs. Higher log
levels (verbosity) will record all operations regardless of this
threshold on the primary node. *Changing this parameter will lead
to a restart of the MongoDB service.* Learn more
[here](https://www.mongodb.com/docs/manual/reference/configuration-options/#mongodb-setting-operationProfiling.slowOpThresholdMs).
type: integer
minimum: 0
default: 100
example: 200
verbosity:
description: >-
The log message verbosity level. The verbosity level determines the
amount of Informational and Debug messages MongoDB outputs. 0
includes informational messages while 1...5 increases the level to
include debug messages. *Changing this parameter will lead to a
restart of the MongoDB service.* Learn more
[here](https://www.mongodb.com/docs/manual/reference/configuration-options/#mongodb-setting-systemLog.verbosity).
type: integer
minimum: 0
maximum: 5
default: 0
example: 3
database_config:
type: object
properties:
config:
anyOf:
- $ref: '#/components/schemas/mysql_advanced_config'
- $ref: '#/components/schemas/postgres_advanced_config'
- $ref: '#/components/schemas/redis_advanced_config'
- $ref: '#/components/schemas/mongo_advanced_config'
- $ref: '#/components/schemas/kafka_advanced_config'
- $ref: '#/components/schemas/opensearch_advanced_config'
ca:
type: object
properties:
certificate:
type: string
example: >-
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVRVENDQXFtZ0F3SUJBZ0lVRUZZWTdBWFZQS0Raam9jb1lpMk00Y0dvcU0wd0RRWUpLb1pJaHZjTkFRRU0KQlFBd09qRTRNRFlHQTFVRUF3d3ZOek0zT1RaaE1XRXRaamhrTUMwME9HSmpMV0V4Wm1NdFpqbGhNVFZsWXprdwpORGhsSUZCeWIycGxZM1FnUTBFd0hoY05NakF3TnpFM01UVTFNREEyV2hjTk16QXdOekUxTVRVMU1EQTJXakE2Ck1UZ3dOZ1lEVlFRRERDODNNemM1Tm1FeFlTMW1PR1F3TFRRNFltTXRZVEZtWXkxbU9XRXhOV1ZqT1RBME9HVWcKVUhKdmFtVmpkQ0JEUVRDQ0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBTVdScXhycwpMZnpNdHZyUmxKVEw4MldYMVBLZkhKbitvYjNYcmVBY3FZd1dBUUp2Q3IycmhxSXZieVZzMGlaU0NzOHI4c3RGClljQ0R1bkxJNmUwTy9laERZYTBIT2RrMkFFRzE1ckVOVmNha2NSczcyQWlHVHNrdkNXS2VkUjFTUWswVWt0WCsKQUg4S1ExS3F5bzNtZ2Y2cVV1WUpzc3JNTXFselk3YTN1RVpEb2ZqTjN5Q3MvM21pTVJKcVcyNm1JV0IrUUlEbAo5YzdLRVF5MTZvdCtjeHVnd0lLMm9oZHMzaFY1bjBKMFVBM0I3QWRBdXY5aUl5L3JHaHlTNm5CNTdaWm9JZnAyCnFybXdOY0UrVjlIdXhQSGtRVjFOQjUwOFFudWZ4Z0E5VCtqU2VrdGVUbWFORkxqNjFXL3BtcndrTytOaWFXUTIKaGgzVXBKOEozY1BoNkErbHRnUmpSV2NEb2lsYVNwRVVpU09WemNNYVFvalZKYVJlNk9NbnZYc29NaSs3ZzdneApWcittQ0lUcGcvck9DaXpBWWQ2UFAxLzdYTjk1ZXNmU2tBQnM5c3hJakpjTUFqbDBYTEFzRmtGZVdyeHNIajlVCmJnaDNWYXdtcnpUeXhZT0RQcXV1cS9JcGlwc0RRT3Fpb2ZsUStkWEJJL3NUT0NNbVp6K0pNcG5HYXdJREFRQUIKb3o4d1BUQWRCZ05WSFE0RUZnUVVSekdDRlE3WEtUdHRDN3JzNS8ydFlQcExTZGN3RHdZRFZSMFRCQWd3QmdFQgovd0lCQURBTEJnTlZIUThFQkFNQ0FRWXdEUVlKS29aSWh2Y05BUUVNQlFBRGdnR0JBSWFKQ0dSVVNxUExtcmcvCmk3MW10b0NHUDdzeG1BVXVCek1oOEdrU25uaVdaZnZGMTRwSUtqTlkwbzVkWmpHKzZqK1VjalZtK0RIdGE1RjYKOWJPeEk5S0NFeEI1blBjRXpMWjNZYitNOTcrellxbm9zUm85S21DVFJBb2JrNTZ0WU1FS1h1aVJja2tkMm1yUQo4cGw2N2xxdThjM1V4c0dHZEZVT01wMkk3ZTNpdUdWVm5UR0ZWM3JQZUdaQ0J3WGVyUUQyY0F4UjkzS3BnWVZ2ClhUUzk5dnpSbm1HOHhhUm9EVy9FbEdXZ2xWd0Q5a1JrbXhUUkdoYTdDWVZCcjFQVWY2dVVFVjhmVFIxc1hFZnIKLytMR1JoSVVsSUhWT3l2Yzk3YnZYQURPbWF1MWZDVE5lWGtRdTNyZnZFSlBmaFlLeVIwT0V3eWVvdlhRNzl0LwpTV2ZGTjBreU1Pc1UrNVNIdHJKSEh1eWNWcU0yQlVVK083VjM1UnNwOU9MZGRZMFFVbTZldFpEVEhhSUhYYzRRCnl1Rm1OL1NhSFZtNE0wL3BTVlJQdVd6TmpxMnZyRllvSDRtbGhIZk95TUNJMjc2elE2aWhGNkdDSHlkOUJqajcKUm1UWGEyNHM3NWhmSi9YTDV2bnJSdEtpVHJlVHF6V21EOVhnUmNMQ0gyS1hJaVRtSWc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
description: >-
base64 encoding of the certificate used to secure database
connections
readOnly: true
required:
- certificate
online_migration:
type: object
properties:
id:
type: string
description: The ID of the most recent migration.
example: 77b28fc8-19ff-11eb-8c9c-c68e24557488
status:
type: string
description: The current status of the migration.
enum:
- running
- canceled
- error
- done
example: running
created_at:
type: string
description: The time the migration was initiated, in ISO 8601 format.
example: '2020-10-29T15:57:38Z'
source_database:
type: object
properties:
source:
type: object
properties:
host:
type: string
description: >-
The FQDN pointing to the database cluster's current primary
node.
example: backend-do-user-19081923-0.db.ondigitalocean.com
port:
type: integer
description: The port on which the database cluster is listening.
example: 25060
dbname:
type: string
description: The name of the default database.
example: defaultdb
username:
type: string
description: The default user for the database.
example: doadmin
password:
type: string
description: The randomly generated password for the default user.
example: wv78n3zpz42xezdk
disable_ssl:
type: boolean
description: Enables SSL encryption when connecting to the source database.
example: false
ignore_dbs:
type: array
items:
type: string
example:
- db0
- db1
default: []
description: List of databases that should be ignored during migration.
database_cluster_resize:
type: object
properties:
size:
type: string
example: db-s-4vcpu-8gb
description: >-
A slug identifier representing desired the size of the nodes in the
database cluster.
num_nodes:
type: integer
format: int32
example: 3
description: >-
The number of nodes in the database cluster. Valid values are are
1-3. In addition to the primary node, up to two standby nodes may be
added for highly available configurations.
storage_size_mib:
type: integer
example: 61440
description: >-
Additional storage added to the cluster, in MiB. If null, no
additional storage is added to the cluster, beyond what is provided
as a base amount from the 'size' and any previously added additional
storage.
required:
- size
- num_nodes
backup:
type: object
properties:
created_at:
type: string
format: date-time
example: '2019-01-31T19:25:22Z'
description: >-
A time value given in ISO8601 combined date and time format at which
the backup was created.
size_gigabytes:
type: number
example: 0.03364864
description: The size of the database backup in GBs.
required:
- created_at
- size_gigabytes
database_replica:
type: object
properties:
id:
type: string
format: uuid
example: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
description: >-
A unique ID that can be used to identify and reference a database
replica.
readOnly: true
name:
type: string
example: read-nyc3-01
description: The name to give the read-only replicating
region:
type: string
example: nyc3
description: >-
A slug identifier for the region where the read-only replica will be
located. If excluded, the replica will be placed in the same region
as the cluster.
size:
type: string
example: db-s-2vcpu-4gb
description: >-
A slug identifier representing the size of the node for the
read-only replica. The size of the replica must be at least as large
as the node size for the database cluster from which it is
replicating.
status:
type: string
enum:
- creating
- online
- resizing
- migrating
- forking
example: creating
description: A string representing the current status of the database cluster.
readOnly: true
tags:
type: array
items:
type: string
example:
- production
description: >-
A flat array of tag names as strings to apply to the read-only
replica after it is created. Tag names can either be existing or new
tags.
created_at:
type: string
format: date-time
example: '2019-01-11T18:37:36Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the database cluster was created.
readOnly: true
private_network_uuid:
type: string
example: 9423cbad-9211-442f-820b-ef6915e99b5f
description: >-
A string specifying the UUID of the VPC to which the read-only
replica will be assigned. If excluded, the replica will be assigned
to your account's default VPC for the region.
connection:
allOf:
- readOnly: true
- $ref: '#/components/schemas/database_connection'
private_connection:
allOf:
- readOnly: true
- $ref: '#/components/schemas/database_connection'
storage_size_mib:
type: integer
example: 61440
description: >-
Additional storage added to the cluster, in MiB. If null, no
additional storage is added to the cluster, beyond what is provided
as a base amount from the 'size' and any previously added additional
storage.
required:
- name
events_logs:
type: object
properties:
id:
type: string
description: ID of the particular event.
example: pe8u2huh
cluster_name:
type: string
description: The name of cluster.
example: sample_cluster
event_type:
type: string
enum:
- cluster_maintenance_perform
- cluster_master_promotion
- cluster_create
- cluster_update
- cluster_delete
- cluster_poweron
- cluster_poweroff
description: Type of the event.
example: cluster_create
create_time:
type: string
description: The time of the generation of a event.
example: '2020-10-29T15:57:38Z'
database:
type: object
properties:
name:
type: string
example: alpha
description: The name of the database.
required:
- name
connection_pool:
type: object
properties:
name:
type: string
description: >-
A unique name for the connection pool. Must be between 3 and 60
characters.
example: backend-pool
mode:
type: string
description: >-
The PGBouncer transaction mode for the connection pool. The allowed
values are session, transaction, and statement.
example: transaction
size:
type: integer
format: int32
description: >-
The desired size of the PGBouncer connection pool. The maximum
allowed size is determined by the size of the cluster's primary
node. 25 backend server connections are allowed for every 1GB of
RAM. Three are reserved for maintenance. For example, a primary node
with 1 GB of RAM allows for a maximum of 22 backend server
connections while one with 4 GB would allow for 97. Note that these
are shared across all connection pools in a cluster.
example: 10
db:
type: string
description: The database for use with the connection pool.
example: defaultdb
user:
type: string
description: >-
The name of the user for use with the connection pool. When
excluded, all sessions connect to the database as the inbound user.
example: doadmin
connection:
allOf:
- $ref: '#/components/schemas/database_connection'
- readOnly: true
private_connection:
allOf:
- $ref: '#/components/schemas/database_connection'
- readOnly: true
standby_connection:
allOf:
- $ref: '#/components/schemas/database_connection'
- readOnly: true
standby_private_connection:
allOf:
- $ref: '#/components/schemas/database_connection'
- readOnly: true
required:
- name
- mode
- size
- db
connection_pools:
type: object
properties:
pools:
type: array
readOnly: true
description: An array of connection pool objects.
items:
$ref: '#/components/schemas/connection_pool'
connection_pool_update:
type: object
properties:
mode:
type: string
description: >-
The PGBouncer transaction mode for the connection pool. The allowed
values are session, transaction, and statement.
example: transaction
size:
type: integer
format: int32
description: >-
The desired size of the PGBouncer connection pool. The maximum
allowed size is determined by the size of the cluster's primary
node. 25 backend server connections are allowed for every 1GB of
RAM. Three are reserved for maintenance. For example, a primary node
with 1 GB of RAM allows for a maximum of 22 backend server
connections while one with 4 GB would allow for 97. Note that these
are shared across all connection pools in a cluster.
example: 10
db:
type: string
description: The database for use with the connection pool.
example: defaultdb
user:
type: string
description: >-
The name of the user for use with the connection pool. When
excluded, all sessions connect to the database as the inbound user.
example: doadmin
required:
- mode
- size
- db
sql_mode:
type: object
properties:
sql_mode:
type: string
example: >-
ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,STRICT_ALL_TABLES
description: A string specifying the configured SQL modes for the MySQL cluster.
required:
- sql_mode
version:
type: string
example: '8'
description: >-
A string representing the version of the database engine in use for the
cluster.
version-2:
type: object
properties:
version:
$ref: '#/components/schemas/version'
kafka_topic_base:
type: object
properties:
name:
type: string
description: The name of the Kafka topic.
example: events
replication_factor:
type: integer
example: 2
description: The number of nodes to replicate data across the cluster.
partition_count:
type: integer
example: 3
description: >-
The number of partitions available for the topic. On update, this
value can only be increased.
kafka_topic:
type: object
allOf:
- $ref: '#/components/schemas/kafka_topic_base'
- properties:
state:
type: string
enum:
- active
- configuring
- deleting
- unknown
example: active
description: The state of the Kafka topic.
kafka_topic_config:
type: object
properties:
cleanup_policy:
type: string
enum:
- delete
- compact
- compact_delete
example: delete
default: delete
description: >-
The cleanup_policy sets the retention policy to use on log segments.
'delete' will discard old segments when retention time/size limits
are reached. 'compact' will enable log compaction, resulting in
retention of the latest value for each key.
compression_type:
type: string
enum:
- producer
- gzip
- snappy
- Iz4
- zstd
- uncompressed
example: producer
default: producer
description: The compression_type specifies the compression type of the topic.
delete_retention_ms:
type: integer
example: 86400000
default: 86400000
description: >-
The delete_retention_ms specifies how long (in ms) to retain delete
tombstone markers for topics.
file_delete_delay_ms:
type: integer
example: 60000
default: 60000
description: >-
The file_delete_delay_ms specifies the time (in ms) to wait before
deleting a file from the filesystem.
flush_messages:
type: integer
example: 9223372036854776000
default: 9223372036854776000
description: >-
The flush_messages specifies the number of messages to accumulate on
a log partition before messages are flushed to disk.
flush_ms:
type: integer
example: 9223372036854776000
default: 9223372036854776000
description: >-
The flush_ms specifies the maximum time (in ms) that a message is
kept in memory before being flushed to disk.
index_interval_bytes:
type: integer
example: 4096
default: 4096
description: >-
The index_interval_bytes specifies the number of bytes between
entries being added into te offset index.
max_compaction_lag_ms:
type: integer
example: 9223372036854776000
default: 9223372036854776000
description: >-
The max_compaction_lag_ms specifies the maximum amount of time (in
ms) that a message will remain uncompacted. This is only applicable
if the logs are have compaction enabled.
max_message_bytes:
type: integer
example: 1048588
default: 1048588
description: >-
The max_messages_bytes specifies the largest record batch size (in
bytes) that can be sent to the server. This is calculated after
compression if compression is enabled.
message_down_conversion_enable:
type: boolean
example: true
default: true
description: >-
The message_down_conversion_enable specifies whether down-conversion
of message formats is enabled to satisfy consumer requests. When
'false', the broker will not perform conversion for consumers
expecting older message formats. The broker will respond with an
`UNSUPPORTED_VERSION` error for consume requests from these older
clients.
message_format_version:
type: string
example: 3.0-IV1
enum:
- 0.8.0
- 0.8.1
- 0.8.2
- 0.9.0
- 0.10.0-IV0
- 0.10.0-IV1
- 0.10.1-IV0
- 0.10.1-IV1
- 0.10.1-IV2
- 0.10.2-IV0
- 0.11.0-IV0
- 0.11.0-IV1
- 0.11.0-IV2
- 1.0-IV0
- 1.1-IV0
- 2.0-IV0
- 2.0-IV1
- 2.1-IV0
- 2.1-IV1
- 2.1-IV2
- 2.2-IV0
- 2.2-IV1
- 2.3-IV0
- 2.3-IV1
- 2.4-IV0
- 2.4-IV1
- 2.5-IV0
- 2.6-IV0
- 2.7-IV0
- 2.7-IV1
- 2.7-IV2
- 2.8-IV0
- 2.8-IV1
- 3.0-IV0
- 3.0-IV1
- 3.1-IV0
- 3.2-IV0
- 3.3-IV0
- 3.3-IV1
- 3.3-IV2
- 3.3-IV3
default: 3.0-IV1
description: >-
The message_format_version specifies the message format version used
by the broker to append messages to the logs. The value of this
setting is assumed to be 3.0-IV1 if the broker protocol version is
3.0 or higher. By setting a particular message format version, all
existing messages on disk must be smaller or equal to the specified
version.
message_timestamp_type:
type: string
example: create_time
enum:
- create_time
- log_append_time
default: create_time
description: >-
The message_timestamp_type specifies whether to use the message
create time or log append time as the timestamp on a message.
min_cleanable_dirty_ratio:
type: number
format: float
default: 0.5
example: 0.5
minimum: 0
maximum: 1
description: >-
The min_cleanable_dirty_ratio specifies the frequency of log
compaction (if enabled) in relation to duplicates present in the
logs. For example, at 0.5, at most 50% of the log could be
duplicates before compaction would begin.
min_compaction_lag_ms:
type: integer
example: 0
default: 0
description: >-
The min_compaction_lag_ms specifies the minimum time (in ms) that a
message will remain uncompacted in the log. Only relevant if log
compaction is enabled.
min_insync_replicas:
type: integer
example: 1
default: 1
minimum: 1
description: >-
The min_insync_replicas specifies the number of replicas that must
ACK a write for the write to be considered successful.
preallocate:
type: boolean
example: false
default: false
description: >-
The preallocate specifies whether a file should be preallocated on
disk when creating a new log segment.
retention_bytes:
type: integer
example: 1000000
default: -1
description: >-
The retention_bytes specifies the maximum size of the log (in bytes)
before deleting messages. -1 indicates that there is no limit.
retention_ms:
type: integer
example: 604800000
default: 604800000
description: >-
The retention_ms specifies the maximum amount of time (in ms) to
keep a message before deleting it.
segment_bytes:
type: integer
example: 209715200
default: 209715200
minimum: 14
description: >-
The segment_bytes specifies the maximum size of a single log file
(in bytes).
segment_jitter_ms:
type: integer
example: 0
default: 0
description: >-
The segment_jitter_ms specifies the maximum random jitter subtracted
from the scheduled segment roll time to avoid thundering herds of
segment rolling.
segment_ms:
type: integer
example: 604800000
default: 604800000
minimum: 1
description: >-
The segment_ms specifies the period of time after which the log will
be forced to roll if the segment file isn't full. This ensures that
retention can delete or compact old data.
kafka_topic_create:
type: object
allOf:
- $ref: '#/components/schemas/kafka_topic_base'
- properties:
config:
$ref: '#/components/schemas/kafka_topic_config'
kafka_topic_partition:
type: object
properties:
size:
type: integer
description: Size of the topic partition in bytes.
example: 4096
id:
type: integer
description: An identifier for the partition.
example: 1
in_sync_replicas:
type: integer
description: >-
The number of nodes that are in-sync (have the latest data) for the
given partition
example: 3
earliest_offset:
type: integer
description: The earliest consumer offset amongst consumer groups.
example: 0
consumer_groups:
type: array
nullable: true
items:
type: object
properties:
group_name:
type: string
description: Name of the consumer group.
example: consumer
offset:
type: integer
description: The current offset of the consumer group.
example: 0
kafka_topic_verbose:
type: object
properties:
name:
type: string
description: The name of the Kafka topic.
example: events
state:
type: string
enum:
- active
- configuring
- deleting
- unknown
example: active
description: The state of the Kafka topic.
replication_factor:
type: integer
example: 2
description: The number of nodes to replicate data across the cluster.
partitions:
type: array
items:
$ref: '#/components/schemas/kafka_topic_partition'
config:
$ref: '#/components/schemas/kafka_topic_config'
kafka_topic_update:
type: object
properties:
replication_factor:
type: integer
example: 2
description: The number of nodes to replicate data across the cluster.
partition_count:
type: integer
example: 3
description: >-
The number of partitions available for the topic. On update, this
value can only be increased.
config:
$ref: '#/components/schemas/kafka_topic_config'
logsink_base_verbose:
type: object
properties:
sink_id:
type: string
example: dfcc9f57d86bf58e321c2c6c31c7a971be244ac7
description: A unique identifier for Logsink
sink_name:
type: string
description: The name of the Logsink
example: prod-logsink
sink_type:
type: string
enum:
- rsyslog
- elasticsearch
- opensearch
example: rsyslog
rsyslog_logsink:
type: object
properties:
server:
type: string
example: 192.168.0.1
description: DNS name or IPv4 address of the rsyslog server
port:
type: integer
example: 514
maximum: 65535
description: The internal port on which the rsyslog server is listening
tls:
type: boolean
example: false
description: >-
Use TLS (as the messages are not filtered and may contain sensitive
information, it is highly recommended to set this to true if the
remote server supports it)
format:
type: string
enum:
- rfc5424
- rfc3164
- custom
example: rfc5424
description: >-
Message format used by the server, this can be either rfc3164 (the
old BSD style message format), `rfc5424` (current syslog message
format) or custom
logline:
type: string
example: <%pri%>%timestamp:::date-rfc3339% %HOSTNAME% %app-name% %msg%
description: >
Conditional (required if `format` == `custom`).
Syslog log line template for a custom format, supporting limited
rsyslog style templating (using `%tag%`). Supported tags are:
`HOSTNAME`, `app-name`, `msg`, `msgid`, `pri`, `procid`,
`structured-data`, `timestamp` and `timestamp:::date-rfc3339`.
sd:
type: string
example: TOKEN tag="LiteralValue"
description: content of the structured data block of rfc5424 message
ca:
type: string
example: '-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n'
description: PEM encoded CA certificate
key:
type: string
example: '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n'
description: (PEM format) client key if the server requires client authentication
cert:
type: string
example: '-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n'
description: (PEM format) client cert to use
required:
- server
- port
- tls
- format
elasticsearch_logsink:
type: object
properties:
url:
type: string
example: https://user:passwd@192.168.0.1:9200
description: Elasticsearch connection URL
index_prefix:
type: string
example: elastic-logs
description: Elasticsearch index prefix
index_days_max:
type: integer
default: 7
example: 5
maximum: 10000
minimum: 1
description: Maximum number of days of logs to keep
timeout:
type: number
format: float
example: 10
default: 10
minimum: 10
maximum: 120
description: Elasticsearch request timeout limit
ca:
type: string
example: '-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n'
description: PEM encoded CA certificate
required:
- url
- index_prefix
opensearch_logsink:
type: object
properties:
url:
type: string
example: https://user:passwd@192.168.0.1:9200
description: Opensearch connection URL
index_prefix:
type: string
example: opensearch-logs
description: Opensearch index prefix
index_days_max:
type: integer
default: 7
example: 5
maximum: 10000
minimum: 1
description: Maximum number of days of logs to keep
timeout:
type: number
format: float
example: 10
default: 10
minimum: 10
maximum: 120
description: Opensearch request timeout limit
ca:
type: string
example: '-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n'
description: PEM encoded CA certificate
required:
- url
- index_prefix
logsink_verbose:
type: object
allOf:
- $ref: '#/components/schemas/logsink_base_verbose'
- properties:
config:
anyOf:
- $ref: '#/components/schemas/rsyslog_logsink'
- $ref: '#/components/schemas/elasticsearch_logsink'
- $ref: '#/components/schemas/opensearch_logsink'
example:
config:
server: 192.168.0.1
port: 514
tls: false
format: rfc5424
logsink_base:
type: object
properties:
sink_name:
type: string
description: The name of the Logsink
example: prod-logsink
sink_type:
type: string
enum:
- rsyslog
- elasticsearch
- opensearch
example: rsyslog
logsink_create:
type: object
allOf:
- $ref: '#/components/schemas/logsink_base'
- properties:
config:
anyOf:
- $ref: '#/components/schemas/rsyslog_logsink'
- $ref: '#/components/schemas/elasticsearch_logsink'
- $ref: '#/components/schemas/opensearch_logsink'
logsink_update:
type: object
properties:
config:
anyOf:
- $ref: '#/components/schemas/rsyslog_logsink'
- $ref: '#/components/schemas/elasticsearch_logsink'
- $ref: '#/components/schemas/opensearch_logsink'
required:
- config
databases_basic_auth_credentials:
type: object
properties:
basic_auth_username:
type: string
example: username
description: basic authentication username for metrics HTTP endpoint
basic_auth_password:
type: string
example: password
description: basic authentication password for metrics HTTP endpoint
database_metrics_credentials:
type: object
properties:
credentials:
$ref: '#/components/schemas/databases_basic_auth_credentials'
opensearch_index_base:
type: object
properties:
index_name:
type: string
description: The name of the opensearch index.
example: events
number_of_shards:
type: integer
example: 2
description: The number of shards for the index.
number_of_replicas:
type: integer
example: 3
description: The number of replicas for the index.
size:
type: integer
example: 208
description: The size of the index.
created_time:
type: string
format: date-time
example: '2021-01-01T00:00:00Z'
description: The date and time the index was created.
opensearch_index:
type: object
allOf:
- $ref: '#/components/schemas/opensearch_index_base'
- properties:
status:
type: string
enum:
- unknown
- open
- close
- none
example: open
description: The status of the OpenSearch index.
health:
type: string
enum:
- unknown
- green
- yellow
- red
- red*
example: green
description: The health of the OpenSearch index.
domain:
type: object
properties:
name:
type: string
description: >-
The name of the domain itself. This should follow the standard
domain format of domain.TLD. For instance, `example.com` is a valid
domain name.
example: example.com
ip_address:
type: string
writeOnly: true
description: >-
This optional attribute may contain an IP address. When provided, an
A record will be automatically created pointing to the apex domain.
example: 192.0.2.1
ttl:
type: integer
readOnly: true
nullable: true
description: >-
This value is the time to live for the records on this domain, in
seconds. This defines the time frame that clients can cache queried
information before a refresh should be requested.
example: 1800
zone_file:
type: string
readOnly: true
nullable: true
description: >-
This attribute contains the complete contents of the zone file for
the selected domain. Individual domain record resources should be
used to get more granular control over records. However, this
attribute can also be used to get information about the SOA record,
which is created automatically and is not accessible as an
individual record resource.
example: >
$ORIGIN example.com.
$TTL 1800
example.com. IN SOA ns1.digitalocean.com. hostmaster.example.com.
1415982609 10800 3600 604800 1800
example.com. 1800 IN NS ns1.digitalocean.com.
example.com. 1800 IN NS ns2.digitalocean.com.
example.com. 1800 IN NS ns3.digitalocean.com.
example.com. 1800 IN A 1.2.3.4
domain_record:
type: object
required:
- type
properties:
id:
type: integer
description: A unique identifier for each domain record.
example: 28448429
readOnly: true
type:
type: string
description: 'The type of the DNS record. For example: A, CNAME, TXT, ...'
example: NS
name:
type: string
description: The host name, alias, or service being defined by the record.
example: '@'
data:
type: string
description: >-
Variable data depending on record type. For example, the "data"
value for an A record would be the IPv4 address to which the domain
will be mapped. For a CAA record, it would contain the domain name
of the CA being granted permission to issue certificates.
example: ns1.digitalocean.com
priority:
type: integer
description: The priority for SRV and MX records.
nullable: true
example: null
port:
type: integer
description: The port for SRV records.
nullable: true
example: null
ttl:
type: integer
description: >-
This value is the time to live for the record, in seconds. This
defines the time frame that clients can cache queried information
before a refresh should be requested.
example: 1800
weight:
type: integer
description: The weight for SRV records.
nullable: true
example: null
flags:
type: integer
description: An unsigned integer between 0-255 used for CAA records.
nullable: true
example: null
tag:
type: string
description: >-
The parameter tag for CAA records. Valid values are "issue",
"issuewild", or "iodef"
nullable: true
example: null
domain_record_a:
allOf:
- $ref: '#/components/schemas/domain_record'
- required:
- type
- name
- data
domain_record_aaaa:
allOf:
- $ref: '#/components/schemas/domain_record'
- required:
- type
- name
- data
domain_record_caa:
allOf:
- $ref: '#/components/schemas/domain_record'
- required:
- type
- name
- data
- flags
- tag
domain_record_cname:
allOf:
- $ref: '#/components/schemas/domain_record'
- required:
- type
- name
- data
domain_record_mx:
allOf:
- $ref: '#/components/schemas/domain_record'
- required:
- type
- data
- priority
domain_record_ns:
allOf:
- $ref: '#/components/schemas/domain_record'
- required:
- type
- name
- data
- flags
- tag
domain_record_soa:
allOf:
- $ref: '#/components/schemas/domain_record'
- required:
- type
- ttl
domain_record_srv:
allOf:
- $ref: '#/components/schemas/domain_record'
- required:
- type
- name
- data
- priority
- port
- flags
- tag
domain_record_txt:
allOf:
- $ref: '#/components/schemas/domain_record'
- required:
- type
- name
- data
- flags
- tag
disk_info:
type: object
properties:
type:
type: string
enum:
- local
- scratch
description: >-
The type of disk. All Droplets contain a `local` disk. Additionally,
GPU Droplets can also have a `scratch` disk for non-persistent data.
example: local
size:
type: object
properties:
amount:
type: integer
description: The amount of space allocated to the disk.
example: 25
unit:
type: string
description: The unit of measure for the disk size.
example: gib
kernel:
type: object
description: >
**Note**: All Droplets created after March 2017 use internal kernels by
default.
These Droplets will have this attribute set to `null`.
The current
[kernel](https://docs.digitalocean.com/products/droplets/how-to/kernel/)
for Droplets with externally managed kernels. This will initially be set
to
the kernel of the base image when the Droplet is created.
nullable: true
deprecated: true
properties:
id:
type: integer
example: 7515
description: A unique number used to identify and reference a specific kernel.
name:
type: string
example: DigitalOcean GrubLoader v0.2 (20160714)
description: >-
The display name of the kernel. This is shown in the web UI and is
generally a descriptive title for the kernel in question.
version:
type: string
example: 2016.07.13-DigitalOcean_loader_Ubuntu
description: >-
A standard kernel version string representing the version, patch,
and release information.
droplet_next_backup_window:
type: object
nullable: true
properties:
start:
type: string
format: date-time
example: '2019-12-04T00:00:00Z'
description: >-
A time value given in ISO8601 combined date and time format
specifying the start of the Droplet's backup window.
end:
type: string
format: date-time
example: '2019-12-04T23:00:00Z'
description: >-
A time value given in ISO8601 combined date and time format
specifying the end of the Droplet's backup window.
image_name:
type: string
description: >-
The display name that has been given to an image. This is what is shown
in the control panel and is generally a descriptive title for the image
in question.
example: Nifty New Snapshot
distribution:
type: string
description: >-
The name of a custom image's distribution. Currently, the valid values
are `Arch Linux`, `CentOS`, `CoreOS`, `Debian`, `Fedora`, `Fedora
Atomic`, `FreeBSD`, `Gentoo`, `openSUSE`, `RancherOS`, `Rocky Linux`,
`Ubuntu`, and `Unknown`. Any other value will be accepted but ignored,
and `Unknown` will be used in its place.
enum:
- Arch Linux
- CentOS
- CoreOS
- Debian
- Fedora
- Fedora Atomic
- FreeBSD
- Gentoo
- openSUSE
- RancherOS
- Rocky Linux
- Ubuntu
- Unknown
example: Ubuntu
region_slug:
type: string
description: >-
The slug identifier for the region where the resource will initially be
available.
enum:
- ams1
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
- syd1
example: nyc3
regions_array:
type: array
items:
$ref: '#/components/schemas/region_slug'
description: >-
This attribute is an array of the regions that the image is available
in. The regions are represented by their identifying slug values.
example:
- nyc1
- nyc2
image_description:
type: string
description: An optional free-form text field to describe an image.
example: ' '
tags_array:
type: array
items:
type: string
nullable: true
description: >-
A flat array of tag names as strings to be applied to the resource. Tag
names may be for either existing or new tags.
example:
- base-image
- prod
image:
type: object
properties:
id:
type: integer
description: >-
A unique number that can be used to identify and reference a
specific image.
example: 7555620
readOnly: true
name:
$ref: '#/components/schemas/image_name'
type:
type: string
description: >-
Describes the kind of image. It may be one of `base`, `snapshot`,
`backup`, `custom`, or `admin`. Respectively, this specifies whether
an image is a DigitalOcean base OS image, user-generated Droplet
snapshot, automatically created Droplet backup, user-provided
virtual machine image, or an image used for DigitalOcean managed
resources (e.g. DOKS worker nodes).
enum:
- base
- snapshot
- backup
- custom
- admin
example: snapshot
distribution:
$ref: '#/components/schemas/distribution'
slug:
type: string
nullable: true
description: >-
A uniquely identifying string that is associated with each of the
DigitalOcean-provided public images. These can be used to reference
a public image as an alternative to the numeric id.
example: nifty1
public:
type: boolean
description: >-
This is a boolean value that indicates whether the image in question
is public or not. An image that is public is available to all
accounts. A non-public image is only accessible from your account.
example: true
regions:
$ref: '#/components/schemas/regions_array'
created_at:
type: string
format: date-time
description: >-
A time value given in ISO8601 combined date and time format that
represents when the image was created.
example: '2020-05-04T22:23:02Z'
min_disk_size:
type: integer
description: >-
The minimum disk size in GB required for a Droplet to use this
image.
example: 20
nullable: true
minimum: 0
size_gigabytes:
type: number
format: float
nullable: true
description: The size of the image in gigabytes.
example: 2.34
description:
$ref: '#/components/schemas/image_description'
tags:
$ref: '#/components/schemas/tags_array'
status:
type: string
description: >-
A status string indicating the state of a custom image. This may be
`NEW`,
`available`, `pending`, `deleted`, or `retired`.
enum:
- NEW
- available
- pending
- deleted
- retired
example: NEW
error_message:
type: string
description: >-
A string containing information about errors that may occur when
importing
a custom image.
example: ' '
gpu_info:
type: object
description: >-
An object containing information about the GPU capabilities of Droplets
created with this size.
properties:
count:
type: integer
description: The number of GPUs allocated to the Droplet.
example: 1
model:
type: string
description: The model of the GPU.
example: nvidia_h100
vram:
type: object
properties:
amount:
type: integer
description: The amount of VRAM allocated to the GPU.
example: 25
unit:
type: string
description: The unit of measure for the VRAM.
example: gib
size:
type: object
properties:
slug:
type: string
example: s-1vcpu-1gb
description: A human-readable string that is used to uniquely identify each size.
memory:
type: integer
multipleOf: 8
minimum: 8
example: 1024
description: >-
The amount of RAM allocated to Droplets created of this size. The
value is represented in megabytes.
vcpus:
type: integer
example: 1
description: The number of CPUs allocated to Droplets of this size.
disk:
type: integer
example: 25
description: >-
The amount of disk space set aside for Droplets of this size. The
value is represented in gigabytes.
transfer:
type: number
format: float
example: 1
description: >-
The amount of transfer bandwidth that is available for Droplets
created in this size. This only counts traffic on the public
interface. The value is given in terabytes.
price_monthly:
type: number
format: float
example: 5
description: >-
This attribute describes the monthly cost of this Droplet size if
the Droplet is kept for an entire month. The value is measured in US
dollars.
price_hourly:
type: number
format: float
example: 0.00743999984115362
description: >-
This describes the price of the Droplet size as measured hourly. The
value is measured in US dollars.
regions:
type: array
items:
type: string
example:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
description: >-
An array containing the region slugs where this size is available
for Droplet creates.
available:
type: boolean
default: true
example: true
description: >-
This is a boolean value that represents whether new Droplets can be
created with this size.
description:
type: string
example: Basic
description: >-
A string describing the class of Droplets created from this size.
For example: Basic, General Purpose, CPU-Optimized,
Memory-Optimized, or Storage-Optimized.
disk_info:
type: array
description: >-
An array of objects containing information about the disks available
to Droplets created with this size.
items:
$ref: '#/components/schemas/disk_info'
gpu_info:
$ref: '#/components/schemas/gpu_info'
required:
- available
- disk
- memory
- price_hourly
- price_monthly
- regions
- slug
- transfer
- vcpus
- description
network_v4:
type: object
properties:
ip_address:
type: string
format: ipv4
example: 104.236.32.182
description: The IP address of the IPv4 network interface.
netmask:
type: string
format: ipv4
example: 255.255.192.0
description: The netmask of the IPv4 network interface.
gateway:
type: string
example: 104.236.0.1
description: >
The gateway of the specified IPv4 network interface.
For private interfaces, a gateway is not provided. This is denoted
by
returning `nil` as its value.
type:
type: string
enum:
- public
- private
example: public
description: The type of the IPv4 network interface.
network_v6:
type: object
properties:
ip_address:
type: string
format: ipv6
example: 2604:a880:0:1010::18a:a001
description: The IP address of the IPv6 network interface.
netmask:
type: integer
example: 64
description: The netmask of the IPv6 network interface.
gateway:
type: string
format: ipv6
example: 2604:a880:0:1010::1
description: The gateway of the specified IPv6 network interface.
type:
type: string
enum:
- public
example: public
description: |
The type of the IPv6 network interface.
**Note**: IPv6 private networking is not currently supported.
droplet:
type: object
properties:
id:
type: integer
example: 3164444
description: >-
A unique identifier for each Droplet instance. This is automatically
generated upon Droplet creation.
name:
type: string
example: example.com
description: The human-readable name set for the Droplet instance.
memory:
type: integer
multipleOf: 8
example: 1024
description: Memory of the Droplet in megabytes.
vcpus:
type: integer
example: 1
description: The number of virtual CPUs.
disk:
type: integer
example: 25
description: The size of the Droplet's disk in gigabytes.
disk_info:
type: array
description: >-
An array of objects containing information about the disks available
to the Droplet.
items:
$ref: '#/components/schemas/disk_info'
locked:
type: boolean
example: false
description: >-
A boolean value indicating whether the Droplet has been locked,
preventing actions by users.
status:
type: string
enum:
- new
- active
- 'off'
- archive
example: active
description: >-
A status string indicating the state of the Droplet instance. This
may be "new", "active", "off", or "archive".
kernel:
$ref: '#/components/schemas/kernel'
created_at:
type: string
format: date-time
example: '2020-07-21T18:37:44Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the Droplet was created.
features:
type: array
items:
type: string
example:
- backups
- private_networking
- ipv6
description: An array of features enabled on this Droplet.
backup_ids:
type: array
items:
type: integer
example:
- 53893572
description: >-
An array of backup IDs of any backups that have been taken of the
Droplet instance. Droplet backups are enabled at the time of the
instance creation.
next_backup_window:
allOf:
- $ref: '#/components/schemas/droplet_next_backup_window'
- description: >-
The details of the Droplet's backups feature, if backups are
configured for the Droplet. This object contains keys for the
start and end times of the window during which the backup will
start.
snapshot_ids:
type: array
items:
type: integer
example:
- 67512819
description: >-
An array of snapshot IDs of any snapshots created from the Droplet
instance.
image:
$ref: '#/components/schemas/image'
volume_ids:
type: array
items:
type: string
example:
- 506f78a4-e098-11e5-ad9f-000f53306ae1
description: >-
A flat array including the unique identifier for each Block Storage
volume attached to the Droplet.
size:
$ref: '#/components/schemas/size'
size_slug:
type: string
example: s-1vcpu-1gb
description: The unique slug identifier for the size of this Droplet.
networks:
type: object
description: >-
The details of the network that are configured for the Droplet
instance. This is an object that contains keys for IPv4 and IPv6.
The value of each of these is an array that contains objects
describing an individual IP resource allocated to the Droplet.
These will define attributes like the IP address, netmask, and
gateway of the specific network depending on the type of network it
is.
properties:
v4:
type: array
items:
$ref: '#/components/schemas/network_v4'
v6:
type: array
items:
$ref: '#/components/schemas/network_v6'
region:
$ref: '#/components/schemas/region'
tags:
type: array
items:
type: string
example:
- web
- env:prod
description: An array of Tags the Droplet has been tagged with.
vpc_uuid:
type: string
example: 760e09ef-dc84-11e8-981e-3cfdfeaae000
description: >-
A string specifying the UUID of the VPC to which the Droplet is
assigned.
gpu_info:
$ref: '#/components/schemas/gpu_info'
required:
- id
- name
- memory
- vcpus
- disk
- locked
- status
- created_at
- features
- backup_ids
- next_backup_window
- snapshot_ids
- image
- volume_ids
- size
- size_slug
- networks
- region
- tags
droplet_backup_policy:
type: object
properties:
plan:
type: string
enum:
- daily
- weekly
example: daily
description: >-
The backup plan used for the Droplet. The plan can be either `daily`
or `weekly`.
weekday:
type: string
enum:
- SUN
- MON
- TUE
- WED
- THU
- FRI
- SAT
example: SUN
description: The day of the week on which the backup will occur.
hour:
type: integer
enum:
- 0
- 4
- 8
- 12
- 16
- 20
example: 0
description: The hour of the day that the backup window will start.
window_length_hours:
type: integer
readOnly: true
example: 4
description: The length of the backup window starting from `hour`.
retention_period_days:
type: integer
readOnly: true
example: 7
description: The number of days the backup will be retained.
droplet_create:
type: object
properties:
region:
type: string
example: nyc3
description: >-
The slug identifier for the region that you wish to deploy the
Droplet in. If the specific datacenter is not not important, a slug
prefix (e.g. `nyc`) can be used to deploy the Droplet in any of the
that region's locations (`nyc1`, `nyc2`, or `nyc3`). If the region
is omitted from the create request completely, the Droplet may
deploy in any region.
size:
type: string
example: s-1vcpu-1gb
description: >-
The slug identifier for the size that you wish to select for this
Droplet.
image:
oneOf:
- type: string
- type: integer
example: ubuntu-20-04-x64
description: >-
The image ID of a public or private image or the slug identifier for
a public image. This image will be the base image for your Droplet.
ssh_keys:
type: array
items:
anyOf:
- type: string
- type: integer
example:
- 289794
- 3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45
default: []
description: >-
An array containing the IDs or fingerprints of the SSH keys that you
wish to embed in the Droplet's root account upon creation.
backups:
type: boolean
example: true
default: false
description: >-
A boolean indicating whether automated backups should be enabled for
the Droplet.
backup_policy:
allOf:
- $ref: '#/components/schemas/droplet_backup_policy'
- description: >-
An object specifying the backup policy for the Droplet. If
omitted and `backups` is `true`, the backup plan will default to
daily.
ipv6:
type: boolean
example: true
default: false
description: A boolean indicating whether to enable IPv6 on the Droplet.
monitoring:
type: boolean
example: true
default: false
description: >-
A boolean indicating whether to install the DigitalOcean agent for
monitoring.
tags:
type: array
items:
type: string
nullable: true
example:
- env:prod
- web
default: []
description: >-
A flat array of tag names as strings to apply to the Droplet after
it is created. Tag names can either be existing or new tags.
user_data:
type: string
example: |
#cloud-config
runcmd:
- touch /test.txt
description: >-
A string containing 'user data' which may be used to configure the
Droplet on first boot, often a 'cloud-config' file or Bash script.
It must be plain text and may not exceed 64 KiB in size.
private_networking:
type: boolean
example: true
default: false
deprecated: true
description: >-
This parameter has been deprecated. Use `vpc_uuid` instead to
specify a VPC network for the Droplet. If no `vpc_uuid` is provided,
the Droplet will be placed in your account's default VPC for the
region.
volumes:
type: array
items:
type: string
example:
- 12e97116-7280-11ed-b3d0-0a58ac146812
default: []
description: >-
An array of IDs for block storage volumes that will be attached to
the Droplet once created. The volumes must not already be attached
to an existing Droplet.
vpc_uuid:
type: string
example: 760e09ef-dc84-11e8-981e-3cfdfeaae000
description: >-
A string specifying the UUID of the VPC to which the Droplet will be
assigned. If excluded, the Droplet will be assigned to your
account's default VPC for the region.
with_droplet_agent:
type: boolean
example: true
description: >-
A boolean indicating whether to install the DigitalOcean agent used
for providing access to the Droplet web console in the control
panel. By default, the agent is installed on new Droplets but
installation errors (i.e. OS not supported) are ignored. To prevent
it from being installed, set to `false`. To make installation errors
fatal, explicitly set it to `true`.
required:
- size
- image
droplet_single_create:
title: Single Droplet Request
allOf:
- type: object
properties:
name:
type: string
maxLength: 255
pattern: ^[a-zA-Z0-9]?[a-z0-9A-Z.\-]*[a-z0-9A-Z]$
example: example.com
description: >-
The human-readable string you wish to use when displaying the
Droplet name. The name, if set to a domain name managed in the
DigitalOcean DNS management system, will configure a PTR record
for the Droplet. The name set during creation will also
determine the hostname for the Droplet in its internal
configuration.
required:
- name
- $ref: '#/components/schemas/droplet_create'
droplet_multi_create:
title: Multiple Droplet Request
allOf:
- type: object
properties:
names:
type: array
items:
type: string
maxLength: 255
pattern: ^[a-zA-Z0-9]?[a-z0-9A-Z.\-]*[a-z0-9A-Z]$
example:
- sub-01.example.com
- sub-02.example.com
description: >-
An array of human human-readable strings you wish to use when
displaying the Droplet name. Each name, if set to a domain name
managed in the DigitalOcean DNS management system, will
configure a PTR record for the Droplet. Each name set during
creation will also determine the hostname for the Droplet in its
internal configuration.
required:
- names
- $ref: '#/components/schemas/droplet_create'
action_link:
type: object
description: >-
The linked actions can be used to check the status of a Droplet's create
event.
properties:
id:
type: integer
example: 7515
description: >-
A unique numeric ID that can be used to identify and reference an
action.
rel:
type: string
example: create
description: A string specifying the type of the related action.
href:
type: string
format: uri
example: https://api.digitalocean.com/v2/actions/7515
description: A URL that can be used to access the action.
snapshots_base:
type: object
properties:
name:
type: string
example: web-01-1595954862243
description: A human-readable name for the snapshot.
created_at:
type: string
format: date-time
example: '2020-07-28T16:47:44Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the snapshot was created.
regions:
type: array
items:
type: string
example:
- nyc3
- sfo3
description: >-
An array of the regions that the snapshot is available in. The
regions are represented by their identifying slug values.
min_disk_size:
type: integer
example: 25
description: >-
The minimum size in GB required for a volume or Droplet to use this
snapshot.
size_gigabytes:
type: number
format: float
example: 2.34
description: The billable size of the snapshot in gigabytes.
required:
- name
- created_at
- regions
- min_disk_size
- size_gigabytes
droplet_snapshot:
allOf:
- type: object
properties:
id:
type: integer
example: 6372321
description: The unique identifier for the snapshot or backup.
required:
- id
- $ref: '#/components/schemas/snapshots_base'
- type: object
properties:
type:
type: string
enum:
- snapshot
- backup
example: snapshot
description: >-
Describes the kind of image. It may be one of `snapshot` or
`backup`. This specifies whether an image is a user-generated
Droplet snapshot or automatically created Droplet backup.
required:
- type
droplet_backup_policy_record:
type: object
properties:
droplet_id:
type: integer
example: 7101383
description: The unique identifier for the Droplet.
backup_enabled:
type: boolean
example: true
description: >-
A boolean value indicating whether backups are enabled for the
Droplet.
backup_policy:
allOf:
- $ref: '#/components/schemas/droplet_backup_policy'
- description: An object specifying the backup policy for the Droplet.
next_backup_window:
allOf:
- $ref: '#/components/schemas/droplet_next_backup_window'
- description: >-
An object containing keys with the start and end times of the
window during which the backup will occur.
supported_droplet_backup_policy:
type: object
properties:
name:
type: string
example: daily
description: The name of the Droplet backup plan.
possible_window_starts:
type: array
items:
type: integer
description: >
An array of integers representing the hours of the day that a backup
can
start.
example:
- 0
- 4
- 8
- 12
- 16
- 20
window_length_hours:
type: integer
example: 4
description: The number of hours that a backup window is open.
retention_period_days:
type: integer
example: 7
description: The number of days that a backup will be kept.
possible_days:
type: array
items:
type: string
example:
- SUN
- MON
- TUE
- WED
- THU
- FRI
- SAT
description: The day of the week the backup will occur.
droplet_action:
required:
- type
type: object
description: Specifies the action that will be taken on the Droplet.
properties:
type:
type: string
enum:
- enable_backups
- disable_backups
- reboot
- power_cycle
- shutdown
- power_off
- power_on
- restore
- password_reset
- resize
- rebuild
- rename
- change_kernel
- enable_ipv6
- snapshot
example: reboot
description: The type of action to initiate for the Droplet.
droplet_action_enable_backups:
allOf:
- $ref: '#/components/schemas/droplet_action'
- type: object
properties:
backup_policy:
allOf:
- $ref: '#/components/schemas/droplet_backup_policy'
- description: >-
An object specifying the backup policy for the Droplet. If
omitted, the backup plan will default to daily.
example:
type: enable_backups
backup_policy:
plan: daily
hour: 20
droplet_action_change_backup_policy:
allOf:
- $ref: '#/components/schemas/droplet_action'
- type: object
properties:
backup_policy:
allOf:
- $ref: '#/components/schemas/droplet_backup_policy'
- description: An object specifying the backup policy for the Droplet.
required:
- backup_policy
example:
type: enable_backups
backup_policy:
plan: weekly
day: SUN
hour: 20
droplet_action_restore:
allOf:
- $ref: '#/components/schemas/droplet_action'
- type: object
properties:
image:
type: integer
example: 12389723
description: >-
The ID of a backup of the current Droplet instance to restore
from.
droplet_action_resize:
allOf:
- $ref: '#/components/schemas/droplet_action'
- type: object
properties:
disk:
type: boolean
example: true
description: >-
When `true`, the Droplet's disk will be resized in addition to
its RAM and CPU. This is a permanent change and cannot be
reversed as a Droplet's disk size cannot be decreased.
size:
type: string
example: s-2vcpu-2gb
description: >-
The slug identifier for the size to which you wish to resize the
Droplet.
droplet_action_rebuild:
allOf:
- $ref: '#/components/schemas/droplet_action'
- type: object
properties:
image:
oneOf:
- type: string
- type: integer
example: ubuntu-20-04-x64
description: >-
The image ID of a public or private image or the slug identifier
for a public image. The Droplet will be rebuilt using this image
as its base.
droplet_action_rename:
allOf:
- $ref: '#/components/schemas/droplet_action'
- type: object
properties:
name:
type: string
example: nifty-new-name
description: The new name for the Droplet.
droplet_action_change_kernel:
allOf:
- $ref: '#/components/schemas/droplet_action'
- type: object
properties:
kernel:
type: integer
example: 12389723
description: >-
A unique number used to identify and reference a specific
kernel.
droplet_action_snapshot:
allOf:
- $ref: '#/components/schemas/droplet_action'
- type: object
properties:
name:
type: string
example: Nifty New Snapshot
description: The name to give the new snapshot of the Droplet.
existing_tags_array:
type: array
items:
type: string
nullable: true
description: >-
A flat array of tag names as strings to be applied to the resource. Tag
names must exist in order to be referenced in a request.
example:
- base-image
- prod
firewall_rule_base:
type: object
properties:
protocol:
type: string
enum:
- tcp
- udp
- icmp
description: >-
The type of traffic to be allowed. This may be one of `tcp`, `udp`,
or `icmp`.
example: tcp
ports:
type: string
description: >-
The ports on which traffic will be allowed specified as a string
containing a single port, a range (e.g. "8000-9000"), or "0" when
all ports are open for a protocol. For ICMP rules this parameter
will always return "0".
example: '8000'
required:
- protocol
- ports
firewall_rule_target:
type: object
properties:
addresses:
type: array
items:
type: string
description: >-
An array of strings containing the IPv4 addresses, IPv6 addresses,
IPv4 CIDRs, and/or IPv6 CIDRs to which the firewall will allow
traffic.
example:
- 1.2.3.4
- 18.0.0.0/8
droplet_ids:
type: array
items:
type: integer
description: >-
An array containing the IDs of the Droplets to which the firewall
will allow traffic.
example:
- 8043964
load_balancer_uids:
type: array
items:
type: string
description: >-
An array containing the IDs of the load balancers to which the
firewall will allow traffic.
example:
- 4de7ac8b-495b-4884-9a69-1050c6793cd6
kubernetes_ids:
type: array
items:
type: string
description: >-
An array containing the IDs of the Kubernetes clusters to which the
firewall will allow traffic.
example:
- 41b74c5d-9bd0-5555-5555-a57c495b81a3
tags:
allOf:
- $ref: '#/components/schemas/existing_tags_array'
- description: >-
An array containing the names of Tags corresponding to groups of
Droplets to which the firewall will allow traffic.
example:
- frontend
firewall_rules:
type: object
properties:
inbound_rules:
nullable: true
type: array
items:
allOf:
- $ref: '#/components/schemas/firewall_rule_base'
- properties:
sources:
allOf:
- $ref: '#/components/schemas/firewall_rule_target'
- description: >-
An object specifying locations from which inbound
traffic will be accepted.
required:
- sources
outbound_rules:
nullable: true
type: array
items:
allOf:
- $ref: '#/components/schemas/firewall_rule_base'
- properties:
destinations:
allOf:
- $ref: '#/components/schemas/firewall_rule_target'
- description: >-
An object specifying locations to which outbound
traffic that will be allowed.
required:
- destinations
firewall:
type: object
allOf:
- properties:
id:
type: string
description: >-
A unique ID that can be used to identify and reference a
firewall.
readOnly: true
example: bb4b2611-3d72-467b-8602-280330ecd65c
status:
type: string
description: >-
A status string indicating the current state of the firewall.
This can be "waiting", "succeeded", or "failed".
enum:
- waiting
- succeeded
- failed
readOnly: true
example: waiting
created_at:
type: string
format: date-time
description: >-
A time value given in ISO8601 combined date and time format that
represents when the firewall was created.
readOnly: true
example: '2020-05-23T21:24:00Z'
pending_changes:
type: array
description: >-
An array of objects each containing the fields "droplet_id",
"removing", and "status". It is provided to detail exactly which
Droplets are having their security policies updated. When empty,
all changes have been successfully applied.
items:
type: object
properties:
droplet_id:
type: integer
example: 8043964
removing:
type: boolean
example: false
status:
type: string
example: waiting
readOnly: true
example:
- droplet_id: 8043964
removing: false
status: waiting
name:
type: string
description: >-
A human-readable name for a firewall. The name must begin with
an alphanumeric character. Subsequent characters must either be
alphanumeric characters, a period (.), or a dash (-).
pattern: ^[a-zA-Z0-9][a-zA-Z0-9\.-]+$
example: firewall
droplet_ids:
type: array
description: >-
An array containing the IDs of the Droplets assigned to the
firewall.
nullable: true
items:
type: integer
example:
- 8043964
tags:
allOf:
- $ref: '#/components/schemas/existing_tags_array'
- description: >-
An array containing the names of the Tags assigned to the
firewall.
example: gateway
- $ref: '#/components/schemas/firewall_rules'
associated_resource:
type: object
description: >-
An objects containing information about a resource associated with a
Droplet.
properties:
id:
type: string
example: '61486916'
description: The unique identifier for the resource associated with the Droplet.
name:
type: string
example: ubuntu-s-1vcpu-1gb-nyc1-01-1585758823330
description: The name of the resource associated with the Droplet.
cost:
type: string
example: '0.05'
description: >-
The cost of the resource in USD per month if the resource is
retained after the Droplet is destroyed.
selective_destroy_associated_resource:
type: object
description: >-
An object containing information about a resource to be scheduled for
deletion.
properties:
floating_ips:
type: array
deprecated: true
description: >-
An array of unique identifiers for the floating IPs to be scheduled
for deletion.
items:
type: string
example:
- '6186916'
reserved_ips:
type: array
description: >-
An array of unique identifiers for the reserved IPs to be scheduled
for deletion.
items:
type: string
example:
- '6186916'
snapshots:
type: array
description: >-
An array of unique identifiers for the snapshots to be scheduled for
deletion.
items:
type: string
example:
- '61486916'
volumes:
type: array
description: >-
An array of unique identifiers for the volumes to be scheduled for
deletion.
items:
type: string
example:
- ba49449a-7435-11ea-b89e-0a58ac14480f
volume_snapshots:
type: array
description: >-
An array of unique identifiers for the volume snapshots to be
scheduled for deletion.
items:
type: string
example:
- edb0478d-7436-11ea-86e6-0a58ac144b91
destroyed_associated_resource:
type: object
description: >-
An object containing information about a resource scheduled for
deletion.
properties:
id:
type: string
example: '61486916'
description: The unique identifier for the resource scheduled for deletion.
name:
type: string
example: ubuntu-s-1vcpu-1gb-nyc1-01-1585758823330
description: The name of the resource scheduled for deletion.
destroyed_at:
type: string
format: date-time
example: '2020-04-01T18:11:49Z'
description: >-
A time value given in ISO8601 combined date and time format
indicating when the resource was destroyed if the request was
successful.
error_message:
type: string
example: ' '
description: >-
A string indicating that the resource was not successfully destroyed
and providing additional information.
associated_resource_status:
type: object
description: >-
An objects containing information about a resources scheduled for
deletion.
properties:
droplet:
$ref: '#/components/schemas/destroyed_associated_resource'
resources:
type: object
description: >-
An object containing additional information about resource related
to a Droplet requested to be destroyed.
properties:
reserved_ips:
type: array
items:
$ref: '#/components/schemas/destroyed_associated_resource'
floating_ips:
type: array
items:
$ref: '#/components/schemas/destroyed_associated_resource'
snapshots:
type: array
items:
$ref: '#/components/schemas/destroyed_associated_resource'
volumes:
type: array
items:
$ref: '#/components/schemas/destroyed_associated_resource'
volume_snapshots:
type: array
items:
$ref: '#/components/schemas/destroyed_associated_resource'
completed_at:
type: string
format: date-time
example: '2020-04-01T18:11:49Z'
description: >-
A time value given in ISO8601 combined date and time format
indicating when the requested action was completed.
failures:
type: integer
example: 0
description: >-
A count of the associated resources that failed to be destroyed, if
any.
autoscale_pool_static_config:
type: object
properties:
target_number_instances:
title: static config
type: integer
example: 3
description: Fixed number of instances in an autoscale pool.
minimum: 1
maximum: 1000
required:
- target_number_instances
autoscale_pool_dynamic_config:
type: object
properties:
min_instances:
type: integer
example: 5
description: The minimum number of Droplets in an autoscale pool.
minimum: 1
maximum: 500
max_instances:
type: integer
example: 10
description: The maximum number of Droplets in an autoscale pool.
minimum: 1
maximum: 1000
target_cpu_utilization:
type: number
format: float
example: 0.6
description: Target CPU utilization as a decimal.
minimum: 0.05
maximum: 1
target_memory_utilization:
type: number
format: float
example: 0.6
description: Target memory utilization as a decimal.
minimum: 0.05
maximum: 1
cooldown_minutes:
type: integer
example: 5
description: >-
The number of minutes to wait between scaling events in an autoscale
pool. Defaults to 10 minutes.
minimum: 5
maximum: 20
required:
- min_instances
- max_instances
autoscale_pool_droplet_template:
type: object
properties:
name:
type: string
example: my-droplet-name
description: The name(s) to be applied to all Droplets in the autoscale pool.
region:
type: string
example: tor1
enum:
- nyc1
- nyc2
- nyc3
- ams2
- ams3
- sfo1
- sfo2
- sfo3
- sgp1
- lon1
- fra1
- tor1
- blr1
- syd1
description: The datacenter in which all of the Droplets will be created.
size:
type: string
example: c-2
description: The Droplet size to be used for all Droplets in the autoscale pool.
image:
type: string
example: ubuntu-20-04-x64
description: >-
The Droplet image to be used for all Droplets in the autoscale pool.
You may specify the slug or the image ID.
ssh_keys:
type: array
items:
type: string
example:
- 88:66:90:d2:68:d5:b5:85:e3:26:26:11:31:57:e6:f8
description: >-
The SSH keys to be installed on the Droplets in the autoscale pool.
You can either specify the key ID or the fingerprint.
tags:
type: array
items:
type: string
example:
- my-tag
description: The tags to apply to each of the Droplets in the autoscale pool.
vpc_uuid:
type: string
description: >-
The VPC where the Droplets in the autoscale pool will be created.
The VPC must be in the region where you want to create the Droplets.
example: 760e09ef-dc84-11e8-981e-3cfdfeaae000
with_droplet_agent:
type: boolean
description: >-
Installs the Droplet agent. This must be set to true to monitor
Droplets for resource utilization scaling.
example: true
project_id:
type: string
description: The project that the Droplets in the autoscale pool will belong to.
example: 746c6152-2fa2-11ed-92d3-27aaa54e4988
ipv6:
type: boolean
description: >-
Assigns a unique IPv6 address to each of the Droplets in the
autoscale pool.
example: true
user_data:
type: string
example: |
#cloud-config
runcmd:
- touch /test.txt
description: >-
A string containing user data that cloud-init consumes to configure
a Droplet on first boot. User data is often a cloud-config file or
Bash script. It must be plain text and may not exceed 64 KiB in
size.
required:
- region
- image
- size
- ssh_keys
current_utilization:
type: object
properties:
memory:
type: number
format: float
example: 0.3588531587713522
description: The average memory utilization of the autoscale pool.
minimum: 0
maximum: 1
cpu:
type: number
format: float
example: 0.0007338008770232183
description: The average CPU utilization of the autoscale pool.
minimum: 0
maximum: 1
autoscale_pool:
type: object
properties:
id:
type: string
example: 0d3db13e-a604-4944-9827-7ec2642d32ac
description: >-
A unique identifier for each autoscale pool instance. This is
automatically generated upon autoscale pool creation.
name:
type: string
example: my-autoscale-pool
description: The human-readable name set for the autoscale pool.
config:
oneOf:
- $ref: '#/components/schemas/autoscale_pool_static_config'
- $ref: '#/components/schemas/autoscale_pool_dynamic_config'
type: object
description: >-
The scaling configuration for an autoscale pool, which is how the
pool scales up and down (either by resource utilization or static
configuration).
droplet_template:
$ref: '#/components/schemas/autoscale_pool_droplet_template'
current_utilization:
$ref: '#/components/schemas/current_utilization'
created_at:
format: date-time
title: The creation time of the autoscale pool
type: string
example: '2020-07-28T18:00:00Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the autoscale pool was created.
updated_at:
format: date-time
title: When the autoscale pool was last updated
type: string
example: '2020-07-28T18:00:00Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the autoscale pool was last updated.
status:
type: string
enum:
- active
- deleting
- error
description: The current status of the autoscale pool.
example: active
active_resources_count:
type: integer
example: 1
description: The number of active Droplets in the autoscale pool.
required:
- id
- name
- config
- droplet_template
- created_at
- updated_at
- status
- active_resources_count
autoscale_pool_create:
type: object
properties:
name:
example: my-autoscale-pool
type: string
description: >-
The human-readable name of the autoscale pool. This field cannot be
updated
config:
oneOf:
- $ref: '#/components/schemas/autoscale_pool_static_config'
- $ref: '#/components/schemas/autoscale_pool_dynamic_config'
type: object
description: >-
The scaling configuration for an autoscale pool, which is how the
pool scales up and down (either by resource utilization or static
configuration).
droplet_template:
$ref: '#/components/schemas/autoscale_pool_droplet_template'
required:
- name
- config
- droplet_template
member_current_utilization:
type: object
properties:
memory:
type: number
format: float
example: 0.3588531587713522
description: The memory utilization average of the individual Droplet.
cpu:
type: number
format: float
example: 0.0007338008770232183
description: The CPU utilization average of the individual Droplet.
member:
type: object
properties:
droplet_id:
type: integer
example: 459903570
description: The unique identifier of the Droplet.
created_at:
format: date-time
description: >-
The creation time of the Droplet in ISO8601 combined date and time
format.
type: string
example: '2020-07-28T18:00:00Z'
updated_at:
format: date-time
description: >-
The last updated time of the Droplet in ISO8601 combined date and
time format.
type: string
example: '2020-07-28T18:00:00Z'
health_status:
type: string
example: active
description: The health status of the Droplet.
status:
type: string
enum:
- provisioning
- active
- deleting
- 'off'
description: The power status of the Droplet.
example: active
current_utilization:
$ref: '#/components/schemas/member_current_utilization'
required:
- droplet_id
- created_at
- updated_at
- health_status
- status
- current_utilization
history:
type: object
properties:
history_event_id:
type: string
example: 01936530-4471-7b86-9634-32d8fcfecbc6
description: The unique identifier of the history event.
current_instance_count:
type: integer
example: 2
description: The current number of Droplets in the autoscale pool.
desired_instance_count:
type: integer
example: 2
description: >-
The target number of Droplets for the autoscale pool after the
scaling event.
reason:
type: string
enum:
- CONFIGURATION_CHANGE
- SCALE_UP
- SCALE_DOWN
description: The reason for the scaling event.
example: CONFIGURATION_CHANGE
status:
type: string
enum:
- in_progress
- success
- error
description: The status of the scaling event.
example: success
created_at:
format: date-time
description: >-
The creation time of the history event in ISO8601 combined date and
time format.
type: string
example: '2020-07-28T18:00:00Z'
updated_at:
format: date-time
description: >-
The last updated time of the history event in ISO8601 combined date
and time format.
type: string
example: '2020-07-28T18:00:00Z'
required:
- history_event_id
- current_instance_count
- desired_instance_count
- reason
- status
- created_at
- updated_at
floating_ip:
type: object
properties:
ip:
type: string
format: ipv4
example: 45.55.96.47
description: >-
The public IP address of the floating IP. It also serves as its
identifier.
region:
allOf:
- $ref: '#/components/schemas/region'
- type: object
description: >-
The region that the floating IP is reserved to. When you query a
floating IP, the entire region object will be returned.
droplet:
description: >-
The Droplet that the floating IP has been assigned to. When you
query a floating IP, if it is assigned to a Droplet, the entire
Droplet object will be returned. If it is not assigned, the value
will be null.
anyOf:
- title: 'null'
type: object
nullable: true
description: >-
If the floating IP is not assigned to a Droplet, the value will
be null.
- $ref: '#/components/schemas/droplet'
example: null
locked:
type: boolean
example: true
description: >-
A boolean value indicating whether or not the floating IP has
pending actions preventing new ones from being submitted.
project_id:
type: string
format: uuid
example: 746c6152-2fa2-11ed-92d3-27aaa54e4988
description: The UUID of the project to which the reserved IP currently belongs.
floating_ip_create:
oneOf:
- title: Assign to Droplet
type: object
properties:
droplet_id:
type: integer
example: 2457247
description: The ID of the Droplet that the floating IP will be assigned to.
required:
- droplet_id
- title: Reserve to Region
type: object
properties:
region:
type: string
example: nyc3
description: >-
The slug identifier for the region the floating IP will be
reserved to.
project_id:
type: string
format: uuid
example: 746c6152-2fa2-11ed-92d3-27aaa54e4988
description: >-
The UUID of the project to which the floating IP will be
assigned.
required:
- region
floatingIPsAction:
type: object
required:
- type
properties:
type:
type: string
enum:
- assign
- unassign
description: The type of action to initiate for the floating IP.
discriminator:
propertyName: type
mapping:
assign: '#/components/schemas/floating_ip_action_assign'
unassign: '#/components/schemas/floating_ip_action_unassign'
floating_ip_action_assign:
allOf:
- $ref: '#/components/schemas/floatingIPsAction'
- type: object
required:
- type
- droplet_id
properties:
droplet_id:
type: integer
example: 758604968
description: The ID of the Droplet that the floating IP will be assigned to.
floating_ip_action_unassign:
allOf:
- $ref: '#/components/schemas/floatingIPsAction'
- type: object
required:
- type
namespace_info:
type: object
properties:
api_host:
type: string
example: https://api_host.io
description: >-
The namespace's API hostname. Each function in a namespace is
provided an endpoint at the namespace's hostname.
namespace:
type: string
example: fn-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
description: A unique string format of UUID with a prefix fn-.
created_at:
type: string
example: '2022-09-14T04:16:45Z'
description: UTC time string.
updated_at:
type: string
example: '2022-09-14T04:16:45Z'
description: UTC time string.
label:
type: string
example: my namespace
description: The namespace's unique name.
region:
type: string
example: nyc1
description: The namespace's datacenter region.
uuid:
type: string
example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
description: The namespace's Universally Unique Identifier.
key:
type: string
example: d1zcd455h01mqjfs4s2eaewyejehi5f2uj4etqq3h7cera8iwkub6xg5of1wdde2
description: >-
A random alpha numeric string. This key is used in conjunction with
the namespace's UUID to authenticate
a user to use the namespace via `doctl`, DigitalOcean's official
CLI.
create_namespace:
type: object
properties:
region:
type: string
example: nyc1
description: >-
The [datacenter
region](https://docs.digitalocean.com/products/platform/availability-matrix/#available-datacenters)
in which to create the namespace.
label:
type: string
example: my namespace
description: The namespace's unique name.
required:
- region
- label
scheduled_details:
type: object
description: |
Trigger details for SCHEDULED type, where body is optional.
properties:
cron:
description: >-
valid cron expression string which is required for SCHEDULED type
triggers.
type: string
example: '* * * * *'
body:
description: Optional data to be sent to function while triggering the function.
type: object
nullable: true
properties:
name:
type: string
example: Welcome to DO!
required:
- cron
trigger_info:
type: object
properties:
namespace:
type: string
example: fn-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
description: A unique string format of UUID with a prefix fn-.
name:
type: string
example: my trigger
description: The trigger's unique name within the namespace.
function:
type: string
example: hello
description: Name of function(action) that exists in the given namespace.
type:
type: string
example: SCHEDULED
description: String which indicates the type of trigger source like SCHEDULED.
is_enabled:
type: boolean
example: true
description: Indicates weather the trigger is paused or unpaused.
created_at:
type: string
example: '2022-11-11T04:16:45Z'
description: UTC time string.
updated_at:
type: string
example: '2022-11-11T04:16:45Z'
description: UTC time string.
scheduled_details:
$ref: '#/components/schemas/scheduled_details'
scheduled_runs:
type: object
properties:
last_run_at:
description: >-
Indicates last run time. null value indicates trigger not run
yet.
type: string
nullable: true
example: '2022-11-11T04:16:45Z'
next_run_at:
description: >-
Indicates next run time. null value indicates trigger will not
run.
type: string
nullable: true
example: '2022-11-11T04:16:45Z'
create_trigger:
type: object
properties:
name:
type: string
example: my trigger
description: The trigger's unique name within the namespace.
function:
type: string
example: hello
description: Name of function(action) that exists in the given namespace.
type:
type: string
example: SCHEDULED
description: >-
One of different type of triggers. Currently only SCHEDULED is
supported.
is_enabled:
type: boolean
example: true
description: Indicates weather the trigger is paused or unpaused.
scheduled_details:
$ref: '#/components/schemas/scheduled_details'
required:
- name
- function
- type
- is_enabled
- scheduled_details
update_trigger:
type: object
properties:
is_enabled:
type: boolean
example: true
description: Indicates weather the trigger is paused or unpaused.
scheduled_details:
$ref: '#/components/schemas/scheduled_details'
image_update:
type: object
properties:
name:
$ref: '#/components/schemas/image_name'
distribution:
$ref: '#/components/schemas/distribution'
description:
$ref: '#/components/schemas/image_description'
image_new_custom:
type: object
allOf:
- $ref: '#/components/schemas/image_update'
- properties:
url:
type: string
description: >-
A URL from which the custom Linux virtual machine image may be
retrieved. The image it points to must be in the raw, qcow2,
vhdx, vdi, or vmdk format. It may be compressed using gzip or
bzip2 and must be smaller than 100 GB after being decompressed.
example: >-
http://cloud-images.ubuntu.com/minimal/releases/bionic/release/ubuntu-18.04-minimal-cloudimg-amd64.img
region:
$ref: '#/components/schemas/region_slug'
tags:
$ref: '#/components/schemas/tags_array'
required:
- name
- url
- region
example:
name: ubuntu-18.04-minimal
url: >-
http://cloud-images.ubuntu.com/minimal/releases/bionic/release/ubuntu-18.04-minimal-cloudimg-amd64.img
distribution: Ubuntu
region: nyc3
description: Cloud-optimized image w/ small footprint
tags:
- base-image
- prod
image_action_base:
type: object
properties:
type:
type: string
description: >-
The action to be taken on the image. Can be either `convert` or
`transfer`.
enum:
- convert
- transfer
example: convert
required:
- type
image_action_transfer:
allOf:
- $ref: '#/components/schemas/image_action_base'
- type: object
properties:
region:
$ref: '#/components/schemas/region_slug'
required:
- type
- region
kubernetes_node_pool_size:
type: object
properties:
size:
type: string
example: s-1vcpu-2gb
description: >-
The slug identifier for the type of Droplet used as workers in the
node pool.
kubernetes_node_pool_taint:
type: object
properties:
key:
type: string
example: priority
description: >-
An arbitrary string. The `key` and `value` fields of the `taint`
object form a key-value pair. For example, if the value of the `key`
field is "special" and the value of the `value` field is "gpu", the
key value pair would be `special=gpu`.
value:
type: string
example: high
description: >-
An arbitrary string. The `key` and `value` fields of the `taint`
object form a key-value pair. For example, if the value of the `key`
field is "special" and the value of the `value` field is "gpu", the
key value pair would be `special=gpu`.
effect:
type: string
enum:
- NoSchedule
- PreferNoSchedule
- NoExecute
example: NoSchedule
description: >-
How the node reacts to pods that it won't tolerate. Available effect
values are `NoSchedule`, `PreferNoSchedule`, and `NoExecute`.
node:
type: object
properties:
id:
type: string
format: uuid
example: e78247f8-b1bb-4f7a-8db9-2a5f8d4b8f8f
description: A unique ID that can be used to identify and reference the node.
name:
type: string
example: adoring-newton-3niq
description: An automatically generated, human-readable name for the node.
status:
type: object
description: >-
An object containing a `state` attribute whose value is set to a
string indicating the current status of the node.
properties:
state:
type: string
enum:
- provisioning
- running
- draining
- deleting
example: provisioning
description: A string indicating the current status of the node.
droplet_id:
type: string
example: '205545370'
description: The ID of the Droplet used for the worker node.
created_at:
type: string
format: date-time
example: '2018-11-15T16:00:11Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the node was created.
updated_at:
type: string
format: date-time
example: '2018-11-15T16:00:11Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the node was last updated.
kubernetes_node_pool_base:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
example: cdda885e-7663-40c8-bc74-3a036c66545d
description: >-
A unique ID that can be used to identify and reference a specific
node pool.
name:
type: string
example: frontend-pool
description: A human-readable name for the node pool.
count:
type: integer
example: 3
description: The number of Droplet instances in the node pool.
tags:
type: array
items:
type: string
example:
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s-worker
- production
- web-team
description: >-
An array containing the tags applied to the node pool. All node
pools are automatically tagged `k8s`, `k8s-worker`, and
`k8s:$K8S_CLUSTER_ID`.
labels:
type: object
nullable: true
example: null
description: >-
An object of key/value mappings specifying labels to apply to all
nodes in a pool. Labels will automatically be applied to all
existing nodes and any subsequent nodes added to the pool. Note that
when a label is removed, it is not deleted from the nodes in the
pool.
taints:
type: array
items:
$ref: '#/components/schemas/kubernetes_node_pool_taint'
description: >-
An array of taints to apply to all nodes in a pool. Taints will
automatically be applied to all existing nodes and any subsequent
nodes added to the pool. When a taint is removed, it is deleted from
all nodes in the pool.
auto_scale:
type: boolean
example: true
description: >-
A boolean value indicating whether auto-scaling is enabled for this
node pool.
min_nodes:
type: integer
example: 3
description: >-
The minimum number of nodes that this node pool can be auto-scaled
to. The value will be `0` if `auto_scale` is set to `false`.
max_nodes:
type: integer
example: 6
description: >-
The maximum number of nodes that this node pool can be auto-scaled
to. The value will be `0` if `auto_scale` is set to `false`.
nodes:
type: array
readOnly: true
description: >-
An object specifying the details of a specific worker node in a node
pool.
items:
$ref: '#/components/schemas/node'
kubernetes_node_pool:
type: object
allOf:
- $ref: '#/components/schemas/kubernetes_node_pool_size'
- $ref: '#/components/schemas/kubernetes_node_pool_base'
required:
- name
- size
- count
maintenance_policy:
type: object
nullable: true
description: >-
An object specifying the maintenance window policy for the Kubernetes
cluster.
properties:
start_time:
type: string
example: '12:00'
description: >-
The start time in UTC of the maintenance window policy in 24-hour
clock format / HH:MM notation (e.g., `15:00`).
duration:
type: string
readOnly: true
example: 4h0m0s
description: >-
The duration of the maintenance window policy in human-readable
format.
day:
type: string
enum:
- any
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
- sunday
example: any
description: >-
The day of the maintenance window policy. May be one of `monday`
through `sunday`, or `any` to indicate an arbitrary week day.
control_plane_firewall:
type: object
nullable: true
description: >-
An object specifying the control plane firewall for the Kubernetes
cluster. Control plane firewall is in early availability (invite only).
properties:
enable:
type: boolean
description: Indicates whether the control plane firewall is enabled.
example: true
allowed_addresses:
type: array
description: >-
An array of public addresses (IPv4 or CIDR) allowed to access the
control plane.
items:
type: string
example:
- 1.2.3.4/32
- 1.1.0.0/16
cluster:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
example: bd5f5959-5e1e-4205-a714-a914373942af
description: >-
A unique ID that can be used to identify and reference a Kubernetes
cluster.
name:
type: string
example: prod-cluster-01
description: A human-readable name for a Kubernetes cluster.
region:
type: string
example: nyc1
description: >-
The slug identifier for the region where the Kubernetes cluster is
located.
version:
type: string
example: 1.18.6-do.0
description: >-
The slug identifier for the version of Kubernetes used for the
cluster. If set to a minor version (e.g. "1.14"), the latest version
within it will be used (e.g. "1.14.6-do.1"); if set to "latest", the
latest published version will be used. See the
`/v2/kubernetes/options` endpoint to find all currently available
versions.
cluster_subnet:
type: string
format: cidr
example: 192.168.0.0/20
description: >-
The range of IP addresses for the overlay network of the Kubernetes
cluster in CIDR notation.
service_subnet:
type: string
format: cidr
example: 192.168.16.0/24
description: >-
The range of assignable IP addresses for services running in the
Kubernetes cluster in CIDR notation.
vpc_uuid:
type: string
format: uuid
example: c33931f2-a26a-4e61-b85c-4e95a2ec431b
description: >-
A string specifying the UUID of the VPC to which the Kubernetes
cluster is assigned.
ipv4:
type: string
readOnly: true
example: 68.183.121.157
description: >-
The public IPv4 address of the Kubernetes master node. This will not
be set if high availability is configured on the cluster (v1.21+)
endpoint:
type: string
readOnly: true
example: https://bd5f5959-5e1e-4205-a714-a914373942af.k8s.ondigitalocean.com
description: The base URL of the API server on the Kubernetes master node.
tags:
type: array
items:
type: string
example:
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- production
- web-team
description: >-
An array of tags applied to the Kubernetes cluster. All clusters are
automatically tagged `k8s` and `k8s:$K8S_CLUSTER_ID`.
node_pools:
type: array
description: >-
An object specifying the details of the worker nodes available to
the Kubernetes cluster.
items:
$ref: '#/components/schemas/kubernetes_node_pool'
maintenance_policy:
$ref: '#/components/schemas/maintenance_policy'
auto_upgrade:
type: boolean
default: false
example: true
description: >-
A boolean value indicating whether the cluster will be automatically
upgraded to new patch releases during its maintenance window.
status:
type: object
readOnly: true
description: >-
An object containing a `state` attribute whose value is set to a
string indicating the current status of the cluster.
properties:
state:
type: string
enum:
- running
- provisioning
- degraded
- error
- deleted
- upgrading
- deleting
example: provisioning
description: A string indicating the current status of the cluster.
message:
type: string
example: provisioning
description: >-
An optional message providing additional information about the
current cluster state.
created_at:
type: string
format: date-time
readOnly: true
example: '2018-11-15T16:00:11Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the Kubernetes cluster was created.
updated_at:
type: string
format: date-time
example: '2018-11-15T16:00:11Z'
readOnly: true
description: >-
A time value given in ISO8601 combined date and time format that
represents when the Kubernetes cluster was last updated.
surge_upgrade:
type: boolean
default: false
example: true
description: >-
A boolean value indicating whether surge upgrade is enabled/disabled
for the cluster. Surge upgrade makes cluster upgrades fast and
reliable by bringing up new nodes before destroying the outdated
nodes.
ha:
type: boolean
default: false
example: true
description: >-
A boolean value indicating whether the control plane is run in a
highly available configuration in the cluster. Highly available
control planes incur less downtime. The property cannot be disabled.
registry_enabled:
type: boolean
readOnly: true
example: true
description: >-
A read-only boolean value indicating if a container registry is
integrated with the cluster.
control_plane_firewall:
$ref: '#/components/schemas/control_plane_firewall'
required:
- name
- region
- version
- node_pools
cluster_update:
type: object
properties:
name:
type: string
example: prod-cluster-01
description: A human-readable name for a Kubernetes cluster.
tags:
type: array
items:
type: string
example:
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- production
- web-team
description: >-
An array of tags applied to the Kubernetes cluster. All clusters are
automatically tagged `k8s` and `k8s:$K8S_CLUSTER_ID`.
maintenance_policy:
$ref: '#/components/schemas/maintenance_policy'
auto_upgrade:
type: boolean
default: false
example: true
description: >-
A boolean value indicating whether the cluster will be automatically
upgraded to new patch releases during its maintenance window.
surge_upgrade:
type: boolean
default: false
example: true
description: >-
A boolean value indicating whether surge upgrade is enabled/disabled
for the cluster. Surge upgrade makes cluster upgrades fast and
reliable by bringing up new nodes before destroying the outdated
nodes.
ha:
type: boolean
default: false
example: true
description: >-
A boolean value indicating whether the control plane is run in a
highly available configuration in the cluster. Highly available
control planes incur less downtime. The property cannot be disabled.
control_plane_firewall:
$ref: '#/components/schemas/control_plane_firewall'
required:
- name
associated_kubernetes_resource:
type: object
properties:
id:
type: string
description: The ID of a resource associated with a Kubernetes cluster.
example: edb0478d-7436-11ea-86e6-0a58ac144b91
name:
type: string
description: The name of a resource associated with a Kubernetes cluster.
example: volume-001
associated_kubernetes_resources:
type: object
description: >-
An object containing the IDs of resources associated with a Kubernetes
cluster.
properties:
load_balancers:
type: array
items:
$ref: '#/components/schemas/associated_kubernetes_resource'
example:
- id: 4de7ac8b-495b-4884-9a69-1050c6793cd6
name: lb-001
description: >-
A list of names and IDs for associated load balancers that can be
destroyed along with the cluster.
volumes:
type: array
items:
$ref: '#/components/schemas/associated_kubernetes_resource'
example:
- id: ba49449a-7435-11ea-b89e-0a58ac14480f
name: volume-001
description: >-
A list of names and IDs for associated volumes that can be destroyed
along with the cluster.
volume_snapshots:
type: array
items:
$ref: '#/components/schemas/associated_kubernetes_resource'
example:
- id: edb0478d-7436-11ea-86e6-0a58ac144b91
name: snapshot-001
description: >-
A list of names and IDs for associated volume snapshots that can be
destroyed along with the cluster.
destroy_associated_kubernetes_resources:
type: object
description: >-
An object containing the IDs of resources to be destroyed along with
their associated with a Kubernetes cluster.
properties:
load_balancers:
type: array
items:
type: string
example:
- 4de7ac8b-495b-4884-9a69-1050c6793cd6
description: >-
A list of IDs for associated load balancers to destroy along with
the cluster.
volumes:
type: array
items:
type: string
example:
- ba49449a-7435-11ea-b89e-0a58ac14480f
description: >-
A list of IDs for associated volumes to destroy along with the
cluster.
volume_snapshots:
type: array
items:
type: string
example:
- edb0478d-7436-11ea-86e6-0a58ac144b91
description: >-
A list of IDs for associated volume snapshots to destroy along with
the cluster.
credentials:
type: object
properties:
server:
type: string
format: uri
example: https://bd5f5959-5e1e-4205-a714-a914373942af.k8s.ondigitalocean.com
description: The URL used to access the cluster API server.
certificate_authority_data:
type: string
format: byte
example: >-
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKekNDQWcrZ0F3SUJBZ0lDQm5Vd0RRWUpLb1pJaHZjTkFRRUxCUUF3TXpFVk1CTUdBMVVFQ2hNTVJHbG4KYVhSaGJFOWpaV0Z1TVJvd0dBWURWUVFERXhGck9ITmhZWE1nUTJ4MWMzUmxjaUJEUVRBZUZ3MHlNREE0TURNeApOVEkxTWpoYUZ3MDBNREE0TURNeE5USTFNamhhTURNeEZUQVRCZ05WQkFvVERFUnBaMmwwWVd4UFkyVmhiakVhCk1CZ0dBMVVFQXhNUmF6aHpZV0Z6SUVOc2RYTjBaWElnUTBFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFDc21oa2JrSEpUcGhZQlN0R05VVE1ORVZTd2N3bmRtajArelQvcUZaNGsrOVNxUnYrSgpBd0lCaGpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1CMEdBMVVkRGdRV0JCUlRzazhhZ1hCUnFyZXdlTXJxClhwa3E1NXg5dVRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXB6V2F6bXNqYWxXTEx3ZjVpbWdDblNINDlKcGkKYWkvbzFMdEJvVEpleGdqZzE1ZVppaG5BMUJMc0lWNE9BZGM3UEFsL040L0hlbENrTDVxandjamRnNVdaYnMzYwozcFVUQ0g5bVVwMFg1SVdhT1VKV292Q1hGUlM1R2VKYXlkSDVPUXhqTURzR2N2UlNvZGQrVnQ2MXE3aWdFZ2I1CjBOZ1l5RnRnc2p0MHpJN3hURzZFNnlsOVYvUmFoS3lIQks2eExlM1RnUGU4SXhWa2RwT3QzR0FhSDRaK0pLR3gKYisyMVZia1NnRE1QQTlyR0VKNVZwVXlBV0FEVXZDRVFHV0hmNGpQN2ZGZlc3T050S0JWY3h3YWFjcVBVdUhzWApwRG5DZVR3V1NuUVp6L05xNmQxWUtsMFdtbkwzTEowemJzRVFGbEQ4MkkwL09MY2dZSDVxMklOZHhBPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
description: >-
A base64 encoding of bytes representing the certificate authority
data for accessing the cluster.
client_certificate_data:
type: string
format: byte
deprecated: true
nullable: true
example: null
description: >
A base64 encoding of bytes representing the x509 client
certificate data for access the cluster. This is only returned for
clusters
without support for token-based authentication.
Newly created Kubernetes clusters do not return credentials using
certificate-based authentication. For additional information,
[see
here](https://docs.digitalocean.com/products/kubernetes/how-to/connect-to-cluster/#authenticate).
client_key_data:
type: string
format: byte
deprecated: true
nullable: true
example: null
description: >
A base64 encoding of bytes representing the x509 client key
data for access the cluster. This is only returned for clusters
without
support for token-based authentication.
Newly created Kubernetes clusters do not return credentials using
certificate-based authentication. For additional information,
[see
here](https://docs.digitalocean.com/products/kubernetes/how-to/connect-to-cluster/#authenticate).
token:
type: string
example: $DIGITALOCEAN_TOKEN
description: >-
An access token used to authenticate with the cluster. This is only
returned for clusters with support for token-based authentication.
expires_at:
type: string
format: date-time
example: '2019-11-09T11:50:28.889080521Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the access token expires.
kubernetes_version:
type: object
properties:
slug:
type: string
example: 1.16.13-do.0
description: >-
The slug identifier for an available version of Kubernetes for use
when creating or updating a cluster. The string contains both the
upstream version of Kubernetes as well as the DigitalOcean revision.
kubernetes_version:
type: string
example: 1.16.13
description: >-
The upstream version string for the version of Kubernetes provided
by a given slug.
supported_features:
type: array
items:
type: string
example:
- cluster-autoscaler
- docr-integration
- token-authentication
description: >-
The features available with the version of Kubernetes provided by a
given slug.
kubernetes_node_pool_update:
type: object
allOf:
- $ref: '#/components/schemas/kubernetes_node_pool_base'
required:
- name
- count
user:
type: object
properties:
kubernetes_cluster_user:
type: object
properties:
username:
type: string
format: email
example: sammy@digitalocean.com
description: The username for the cluster admin user.
groups:
type: array
items:
type: string
example:
- k8saas:authenticated
description: A list of in-cluster groups that the user belongs to.
kubernetes_region:
type: object
properties:
name:
type: string
example: New York 3
description: A DigitalOcean region where Kubernetes is available.
slug:
type: string
example: nyc3
description: The identifier for a region for use when creating a new cluster.
kubernetes_size:
type: object
properties:
name:
type: string
example: s-1vcpu-2gb
description: A Droplet size available for use in a Kubernetes node pool.
slug:
type: string
example: s-1vcpu-2gb
description: The identifier for a size for use when creating a new cluster.
kubernetes_options:
type: object
properties:
options:
properties:
regions:
type: array
items:
$ref: '#/components/schemas/kubernetes_region'
versions:
type: array
items:
$ref: '#/components/schemas/kubernetes_version'
sizes:
type: array
items:
$ref: '#/components/schemas/kubernetes_size'
clusterlint_results:
type: object
properties:
run_id:
type: string
example: 50c2f44c-011d-493e-aee5-361a4a0d1844
description: >-
Id of the clusterlint run that can be used later to fetch the
diagnostics.
requested_at:
type: string
format: date-time
example: '2019-10-30T05:34:07Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the schedule clusterlint run request was made.
completed_at:
type: string
format: date-time
example: '2019-10-30T05:34:11Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the schedule clusterlint run request was completed.
diagnostics:
description: >-
An array of diagnostics reporting potential problems for the given
cluster.
type: array
items:
type: object
properties:
check_name:
type: string
example: unused-config-map
description: The clusterlint check that resulted in the diagnostic.
severity:
type: string
example: warning
description: Can be one of error, warning or suggestion.
message:
type: string
example: Unused config map
description: Feedback about the object for users to fix.
object:
type: object
description: >-
Metadata about the Kubernetes API object the diagnostic is
reported on.
properties:
name:
type: string
example: foo
description: Name of the object
kind:
type: string
example: config map
description: The kind of Kubernetes API object
namespace:
type: string
example: kube-system
description: The namespace the object resides in the cluster.
clusterlint_request:
type: object
properties:
include_groups:
type: array
items:
type: string
example:
- basic
- doks
- security
description: >-
An array of check groups that will be run when clusterlint executes
checks.
include_checks:
type: array
items:
type: string
example:
- bare-pods
- resource-requirements
description: >-
An array of checks that will be run when clusterlint executes
checks.
exclude_groups:
type: array
items:
type: string
example:
- workload-health
description: >-
An array of check groups that will be omitted when clusterlint
executes checks.
exclude_checks:
type: array
items:
type: string
example:
- default-namespace
description: >-
An array of checks that will be run when clusterlint executes
checks.
cluster_registries:
type: object
properties:
cluster_uuids:
type: array
items:
type: string
example:
- bd5f5959-5e1e-4205-a714-a914373942af
- 50c2f44c-011d-493e-aee5-361a4a0d1844
description: An array containing the UUIDs of Kubernetes clusters.
forwarding_rule:
type: object
description: An object specifying a forwarding rule for a load balancer.
properties:
entry_protocol:
type: string
enum:
- http
- https
- http2
- http3
- tcp
- udp
example: https
description: >
The protocol used for traffic to the load balancer. The possible
values are: `http`, `https`, `http2`, `http3`, `tcp`, or `udp`. If
you set the `entry_protocol` to `udp`, the `target_protocol` must
be set to `udp`. When using UDP, the load balancer requires that
you set up a health check with a port that uses TCP, HTTP, or HTTPS
to work properly.
entry_port:
type: integer
example: 443
description: >-
An integer representing the port on which the load balancer instance
will listen.
target_protocol:
type: string
enum:
- http
- https
- http2
- tcp
- udp
example: http
description: >
The protocol used for traffic from the load balancer to the backend
Droplets. The possible values are: `http`, `https`, `http2`, `tcp`,
or `udp`. If you set the `target_protocol` to `udp`, the
`entry_protocol` must be set to `udp`. When using UDP, the load
balancer requires that you set up a health check with a port that
uses TCP, HTTP, or HTTPS to work properly.
target_port:
type: integer
example: 80
description: >-
An integer representing the port on the backend Droplets to which
the load balancer will send traffic.
certificate_id:
type: string
example: 892071a0-bb95-49bc-8021-3afd67a210bf
description: The ID of the TLS certificate used for SSL termination if enabled.
tls_passthrough:
type: boolean
example: false
description: >-
A boolean value indicating whether SSL encrypted traffic will be
passed through to the backend Droplets.
required:
- entry_protocol
- entry_port
- target_protocol
- target_port
health_check:
type: object
description: An object specifying health check settings for the load balancer.
properties:
protocol:
type: string
enum:
- http
- https
- tcp
default: http
example: http
description: >-
The protocol used for health checks sent to the backend Droplets.
The possible values are `http`, `https`, or `tcp`.
port:
type: integer
default: 80
example: 80
description: >-
An integer representing the port on the backend Droplets on which
the health check will attempt a connection.
path:
type: string
default: /
example: /
description: >-
The path on the backend Droplets to which the load balancer instance
will send a request.
check_interval_seconds:
type: integer
default: 10
example: 10
description: The number of seconds between between two consecutive health checks.
response_timeout_seconds:
type: integer
default: 5
example: 5
description: >-
The number of seconds the load balancer instance will wait for a
response until marking a health check as failed.
unhealthy_threshold:
type: integer
default: 5
example: 5
description: >-
The number of times a health check must fail for a backend Droplet
to be marked "unhealthy" and be removed from the pool.
healthy_threshold:
type: integer
default: 3
example: 3
description: >-
The number of times a health check must pass for a backend Droplet
to be marked "healthy" and be re-added to the pool.
sticky_sessions:
type: object
description: An object specifying sticky sessions settings for the load balancer.
properties:
type:
type: string
enum:
- cookies
- none
example: cookies
default: none
description: >-
An attribute indicating how and if requests from a client will be
persistently served by the same backend Droplet. The possible values
are `cookies` or `none`.
cookie_name:
type: string
example: DO-LB
description: >-
The name of the cookie sent to the client. This attribute is only
returned when using `cookies` for the sticky sessions type.
cookie_ttl_seconds:
type: integer
example: 300
description: >-
The number of seconds until the cookie set by the load balancer
expires. This attribute is only returned when using `cookies` for
the sticky sessions type.
lb_firewall:
type: object
description: >-
An object specifying allow and deny rules to control traffic to the load
balancer.
properties:
deny:
type: array
items:
type: string
example:
- ip:1.2.3.4
- cidr:2.3.0.0/16
default: []
description: >-
the rules for denying traffic to the load balancer (in the form
'ip:1.2.3.4' or 'cidr:1.2.0.0/16')
allow:
type: array
items:
type: string
example:
- ip:1.2.3.4
- cidr:2.3.0.0/16
default: []
description: >-
the rules for allowing traffic to the load balancer (in the form
'ip:1.2.3.4' or 'cidr:1.2.0.0/16')
load_balancer_base:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
example: 4de7ac8b-495b-4884-9a69-1050c6793cd6
description: >-
A unique ID that can be used to identify and reference a load
balancer.
name:
type: string
example: example-lb-01
description: A human-readable name for a load balancer instance.
project_id:
type: string
example: 4de7ac8b-495b-4884-9a69-1050c6793cd6
description: >-
The ID of the project that the load balancer is associated with. If
no ID is provided at creation, the load balancer associates with the
user's default project. If an invalid project ID is provided, the
load balancer will not be created.
ip:
type: string
pattern: >-
^$|^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
readOnly: true
example: 104.131.186.241
description: >-
An attribute containing the public-facing IP address of the load
balancer.
size_unit:
type: integer
default: 1
minimum: 1
maximum: 100
example: 3
description: >-
How many nodes the load balancer contains. Each additional node
increases the load balancer's ability to manage more connections.
Load balancers can be scaled up or down, and you can change the
number of nodes after creation up to once per hour. This field is
currently not available in the AMS2, NYC2, or SFO1 regions. Use the
`size` field to scale load balancers that reside in these regions.
size:
type: string
enum:
- lb-small
- lb-medium
- lb-large
deprecated: true
default: lb-small
example: lb-small
description: >-
This field has been replaced by the `size_unit` field for all
regions except in AMS2, NYC2, and SFO1. Each available load balancer
size now equates to the load balancer having a set number of nodes.
* `lb-small` = 1 node
* `lb-medium` = 3 nodes
* `lb-large` = 6 nodes
You can resize load balancers after creation up to once per hour.
You cannot resize a load balancer within the first hour of its
creation.
algorithm:
type: string
example: round_robin
enum:
- round_robin
- least_connections
deprecated: true
default: round_robin
description: >-
This field has been deprecated. You can no longer specify an
algorithm for load balancers.
status:
type: string
example: new
enum:
- new
- active
- errored
readOnly: true
description: >-
A status string indicating the current state of the load balancer.
This can be `new`, `active`, or `errored`.
created_at:
type: string
format: date-time
readOnly: true
example: '2017-02-01T22:22:58Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the load balancer was created.
forwarding_rules:
type: array
minItems: 1
items:
$ref: '#/components/schemas/forwarding_rule'
description: >-
An array of objects specifying the forwarding rules for a load
balancer.
health_check:
$ref: '#/components/schemas/health_check'
sticky_sessions:
$ref: '#/components/schemas/sticky_sessions'
redirect_http_to_https:
type: boolean
example: true
default: false
description: >-
A boolean value indicating whether HTTP requests to the load
balancer on port 80 will be redirected to HTTPS on port 443.
enable_proxy_protocol:
type: boolean
example: true
default: false
description: A boolean value indicating whether PROXY Protocol is in use.
enable_backend_keepalive:
type: boolean
example: true
default: false
description: >-
A boolean value indicating whether HTTP keepalive connections are
maintained to target Droplets.
http_idle_timeout_seconds:
type: integer
example: 90
default: 60
minimum: 30
maximum: 600
description: >-
An integer value which configures the idle timeout for HTTP requests
to the target droplets.
vpc_uuid:
type: string
format: uuid
example: c33931f2-a26a-4e61-b85c-4e95a2ec431b
description: >-
A string specifying the UUID of the VPC to which the load balancer
is assigned.
disable_lets_encrypt_dns_records:
type: boolean
example: true
default: false
description: >-
A boolean value indicating whether to disable automatic DNS record
creation for Let's Encrypt certificates that are added to the load
balancer.
firewall:
$ref: '#/components/schemas/lb_firewall'
network:
type: string
example: EXTERNAL
enum:
- EXTERNAL
- INTERNAL
default: EXTERNAL
description: >-
A string indicating whether the load balancer should be external or
internal. Internal load balancers have no public IPs and are only
accessible to resources on the same VPC network. This property
cannot be updated after creating the load balancer.
type:
type: string
example: REGIONAL
enum:
- REGIONAL
- REGIONAL_NETWORK
- GLOBAL
default: REGIONAL
description: >-
A string indicating whether the load balancer should be a standard
regional HTTP load balancer, a regional network load balancer that
routes traffic at the TCP/UDP transport layer, or a global load
balancer.
required:
- forwarding_rules
load_balancer:
allOf:
- $ref: '#/components/schemas/load_balancer_base'
- type: object
properties:
region:
type: object
allOf:
- description: >-
The region where the load balancer instance is located. When
setting a region, the value should be the slug identifier
for the region. When you query a load balancer, an entire
region object will be returned.
- $ref: '#/components/schemas/region'
- type: object
properties:
droplet_ids:
type: array
items:
type: integer
example:
- 3164444
- 3164445
description: >-
An array containing the IDs of the Droplets assigned to the load
balancer.
- type: object
properties:
tag:
type: string
example: prod:web
description: >-
The name of a Droplet tag corresponding to Droplets assigned to
the load balancer.
load_balancer_create:
oneOf:
- title: Assign Droplets by ID
allOf:
- type: object
properties:
droplet_ids:
type: array
items:
type: integer
example:
- 3164444
- 3164445
description: >-
An array containing the IDs of the Droplets assigned to the
load balancer.
- type: object
properties:
region:
$ref: '#/components/schemas/region_slug'
- $ref: '#/components/schemas/load_balancer_base'
required:
- droplet_ids
- region
- title: Assign Droplets by Tag
allOf:
- type: object
properties:
tag:
type: string
example: prod:web
description: >-
The name of a Droplet tag corresponding to Droplets assigned
to the load balancer.
- type: object
properties:
region:
$ref: '#/components/schemas/region_slug'
- $ref: '#/components/schemas/load_balancer_base'
required:
- tag
- region
slack_details:
type: object
required:
- url
- channel
properties:
channel:
type: string
example: Production Alerts
description: Slack channel to notify of an alert trigger.
url:
type: string
description: Slack Webhook URL.
example: https://hooks.slack.com/services/T1234567/AAAAAAAA/ZZZZZZ
alerts:
type: object
required:
- slack
- email
properties:
email:
description: An email to notify on an alert trigger.
example:
- bob@exmaple.com
type: array
items:
type: string
slack:
type: array
description: Slack integration details.
items:
$ref: '#/components/schemas/slack_details'
alert_policy:
type: object
required:
- uuid
- type
- description
- compare
- value
- window
- entities
- tags
- alerts
- enabled
properties:
alerts:
$ref: '#/components/schemas/alerts'
compare:
type: string
example: GreaterThan
enum:
- GreaterThan
- LessThan
description:
type: string
example: CPU Alert
enabled:
type: boolean
example: true
entities:
type: array
items:
type: string
example:
- '192018292'
tags:
type: array
items:
type: string
example:
- droplet_tag
type:
type: string
enum:
- v1/insights/droplet/load_1
- v1/insights/droplet/load_5
- v1/insights/droplet/load_15
- v1/insights/droplet/memory_utilization_percent
- v1/insights/droplet/disk_utilization_percent
- v1/insights/droplet/cpu
- v1/insights/droplet/disk_read
- v1/insights/droplet/disk_write
- v1/insights/droplet/public_outbound_bandwidth
- v1/insights/droplet/public_inbound_bandwidth
- v1/insights/droplet/private_outbound_bandwidth
- v1/insights/droplet/private_inbound_bandwidth
- v1/insights/lbaas/avg_cpu_utilization_percent
- v1/insights/lbaas/connection_utilization_percent
- v1/insights/lbaas/droplet_health
- v1/insights/lbaas/tls_connections_per_second_utilization_percent
- v1/insights/lbaas/increase_in_http_error_rate_percentage_5xx
- v1/insights/lbaas/increase_in_http_error_rate_percentage_4xx
- v1/insights/lbaas/increase_in_http_error_rate_count_5xx
- v1/insights/lbaas/increase_in_http_error_rate_count_4xx
- v1/insights/lbaas/high_http_request_response_time
- v1/insights/lbaas/high_http_request_response_time_50p
- v1/insights/lbaas/high_http_request_response_time_95p
- v1/insights/lbaas/high_http_request_response_time_99p
- v1/dbaas/alerts/load_15_alerts
- v1/dbaas/alerts/memory_utilization_alerts
- v1/dbaas/alerts/disk_utilization_alerts
- v1/dbaas/alerts/cpu_alerts
example: v1/insights/droplet/cpu
uuid:
type: string
example: 78b3da62-27e5-49ba-ac70-5db0b5935c64
value:
type: number
format: float
example: 80
window:
type: string
enum:
- 5m
- 10m
- 30m
- 1h
example: 5m
list_alert_policy:
type: object
required:
- policies
properties:
policies:
type: array
items:
$ref: '#/components/schemas/alert_policy'
alert_policy_request:
type: object
required:
- type
- description
- compare
- value
- window
- entities
- tags
- alerts
- enabled
properties:
alerts:
$ref: '#/components/schemas/alerts'
compare:
type: string
example: GreaterThan
enum:
- GreaterThan
- LessThan
description:
type: string
example: CPU Alert
enabled:
type: boolean
example: true
entities:
type: array
items:
type: string
example:
- '192018292'
tags:
type: array
items:
type: string
example:
- droplet_tag
type:
type: string
enum:
- v1/insights/droplet/load_1
- v1/insights/droplet/load_5
- v1/insights/droplet/load_15
- v1/insights/droplet/memory_utilization_percent
- v1/insights/droplet/disk_utilization_percent
- v1/insights/droplet/cpu
- v1/insights/droplet/disk_read
- v1/insights/droplet/disk_write
- v1/insights/droplet/public_outbound_bandwidth
- v1/insights/droplet/public_inbound_bandwidth
- v1/insights/droplet/private_outbound_bandwidth
- v1/insights/droplet/private_inbound_bandwidth
- v1/insights/lbaas/avg_cpu_utilization_percent
- v1/insights/lbaas/connection_utilization_percent
- v1/insights/lbaas/droplet_health
- v1/insights/lbaas/tls_connections_per_second_utilization_percent
- v1/insights/lbaas/increase_in_http_error_rate_percentage_5xx
- v1/insights/lbaas/increase_in_http_error_rate_percentage_4xx
- v1/insights/lbaas/increase_in_http_error_rate_count_5xx
- v1/insights/lbaas/increase_in_http_error_rate_count_4xx
- v1/insights/lbaas/high_http_request_response_time
- v1/insights/lbaas/high_http_request_response_time_50p
- v1/insights/lbaas/high_http_request_response_time_95p
- v1/insights/lbaas/high_http_request_response_time_99p
- v1/dbaas/alerts/load_15_alerts
- v1/dbaas/alerts/memory_utilization_alerts
- v1/dbaas/alerts/disk_utilization_alerts
- v1/dbaas/alerts/cpu_alerts
example: v1/insights/droplet/cpu
value:
type: number
format: float
example: 80
window:
type: string
example: 5m
enum:
- 5m
- 10m
- 30m
- 1h
metrics_result:
type: object
required:
- metric
- values
properties:
metric:
type: object
description: >-
An object containing the metric's labels. These labels are key/value
pairs that vary depending on the metric being queried. For example,
load balancer metrics contain a `lb_id` label, while Droplet metrics
contain a `host_id` label, and App Platform metrics contain a
`app_component` label.
additionalProperties:
type: string
example:
host_id: '19201920'
values:
type: array
description: An array of values for the metric.
example:
- - 1435781430
- '1'
- - 1435781445
- '1'
items:
type: array
items:
oneOf:
- type: integer
- type: string
metrics_data:
type: object
required:
- resultType
- result
properties:
result:
type: array
description: Result of query.
items:
$ref: '#/components/schemas/metrics_result'
resultType:
type: string
enum:
- matrix
example: matrix
metrics:
type: object
required:
- status
- data
properties:
data:
$ref: '#/components/schemas/metrics_data'
status:
type: string
example: success
enum:
- success
- error
opensearch_config_omit_credentials:
type: object
description: OpenSearch destination configuration with `credentials` omitted.
properties:
id:
type: string
description: A unique identifier for a configuration.
example: 41078d41-165c-4cff-9f0a-19536e3e3d49
endpoint:
type: string
example: example.com
description: host of the OpenSearch cluster
cluster_uuid:
type: string
example: 85148069-7e35-4999-80bd-6fa1637ca385
description: A unique identifier for a managed OpenSearch cluster.
cluster_name:
type: string
example: managed_dbaas_cluster
description: Name of a managed OpenSearch cluster.
index_name:
type: string
description: OpenSearch index to send logs to.
example: logs
retention_days:
type: integer
description: Number of days to retain logs in OpenSearch.
example: 14
default: 14
destination_omit_credentials:
type: object
properties:
id:
type: string
description: A unique identifier for a destination.
example: 01f30bfa-319a-4769-ba95-9d43971fb514
name:
type: string
description: destination name
example: managed_opensearch_cluster
type:
enum:
- opensearch_dbaas
- opensearch_ext
description: >
The destination type. `opensearch_dbaas` for a DigitalOcean managed
OpenSearch
cluster or `opensearch_ext` for an externally managed one.
example: opensearch_dbaas
config:
$ref: '#/components/schemas/opensearch_config_omit_credentials'
opensearch_config_request:
type: object
required:
- endpoint
properties:
credentials:
type: object
description: >-
Credentials for an OpenSearch cluster user. Optional if
`cluster_uuid` is passed.
properties:
username:
type: string
example: username
password:
type: string
example: password
endpoint:
type: string
example: example.com
description: host of the OpenSearch cluster
cluster_uuid:
type: string
example: 85148069-7e35-4999-80bd-6fa1637ca385
description: A unique identifier for a managed OpenSearch cluster.
cluster_name:
type: string
example: managed_dbaas_cluster
description: Name of a managed OpenSearch cluster.
index_name:
type: string
description: OpenSearch index to send logs to.
example: logs
retention_days:
type: integer
description: Number of days to retain logs in an OpenSearch cluster.
example: 14
default: 14
destination_request:
type: object
required:
- config
- type
properties:
name:
type: string
description: destination name
example: managed_opensearch_cluster
type:
enum:
- opensearch_dbaas
- opensearch_ext
description: >
The destination type. `opensearch_dbaas` for a DigitalOcean managed
OpenSearch
cluster or `opensearch_ext` for an externally managed one.
config:
$ref: '#/components/schemas/opensearch_config_request'
urn:
type: string
pattern: >-
^do:(dbaas|domain|droplet|floatingip|loadbalancer|space|volume|kubernetes|vpc):.*
example: do:droplet:13457723
description: >-
The uniform resource name (URN) for the resource in the format
do:resource_type:resource_id.
opensearch_config:
type: object
required:
- endpoint
properties:
id:
type: string
description: A unique identifier for a configuration.
example: 41078d41-165c-4cff-9f0a-19536e3e3d49
credentials:
type: object
description: >-
Credentials for an OpenSearch cluster user. Optional if
`cluster_uuid` is passed.
properties:
username:
type: string
example: username
password:
type: string
example: password
endpoint:
type: string
example: example.com
description: host of the OpenSearch cluster
cluster_uuid:
type: string
example: 85148069-7e35-4999-80bd-6fa1637ca385
description: A unique identifier for a managed OpenSearch cluster.
cluster_name:
type: string
example: managed_dbaas_cluster
description: Name of a managed OpenSearch cluster.
index_name:
type: string
description: OpenSearch index to send logs to.
example: logs
retention_days:
type: integer
description: 'Number of days to retain logs in OpenSearch (default: 14)'
example: 14
destination:
type: object
required:
- config
properties:
id:
type: string
description: A unique identifier for a destination.
example: 01f30bfa-319a-4769-ba95-9d43971fb514
name:
type: string
description: destination name
example: managed_opensearch_cluster
type:
enum:
- opensearch_dbaas
- opensearch_ext
description: >
The destination type. `opensearch_dbaas` for a DigitalOcean managed
OpenSearch
cluster or `opensearch_ext` for an externally managed one.
example: opensearch_dbaas
config:
$ref: '#/components/schemas/opensearch_config'
sink_resource:
type: object
required:
- urn
properties:
urn:
type: string
pattern: ^do:kubernetes:.*
example: do:kubernetes:f453aa14-646e-4cf8-8c62-75a19fb24ec2
description: >-
The uniform resource name (URN) for the resource in the format
do:resource_type:resource_id.
name:
type: string
description: resource name
example: managed_kubernetes_cluster
sinks_response:
type: object
required:
- urn
properties:
destination:
$ref: '#/components/schemas/destination'
resources:
type: array
description: List of resources identified by their URNs.
items:
$ref: '#/components/schemas/sink_resource'
project_base:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
example: 4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679
description: The unique universal identifier of this project.
owner_uuid:
type: string
readOnly: true
example: 99525febec065ca37b2ffe4f852fd2b2581895e7
description: The unique universal identifier of the project owner.
owner_id:
type: integer
readOnly: true
example: 258992
description: The integer id of the project owner.
name:
type: string
maxLength: 175
example: my-web-api
description: >-
The human-readable name for the project. The maximum length is 175
characters and the name must be unique.
description:
type: string
maxLength: 255
example: My website API
description: >-
The description of the project. The maximum length is 255
characters.
purpose:
type: string
maxLength: 255
example: Service or API
description: >
The purpose of the project. The maximum length is 255 characters. It
can
have one of the following values:
- Just trying out DigitalOcean
- Class project / Educational purposes
- Website or blog
- Web Application
- Service or API
- Mobile Application
- Machine learning / AI / Data processing
- IoT
- Operational / Developer tooling
If another value for purpose is specified, for example, "your custom
purpose",
your purpose will be stored as `Other: your custom purpose`.
environment:
type: string
enum:
- Development
- Staging
- Production
example: Production
description: The environment of the project's resources.
created_at:
type: string
format: date-time
readOnly: true
example: '2018-09-27T20:10:35Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the project was created.
updated_at:
type: string
format: date-time
readOnly: true
example: '2018-09-27T20:10:35Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the project was updated.
project:
allOf:
- $ref: '#/components/schemas/project_base'
- type: object
properties:
is_default:
type: boolean
example: false
description: >-
If true, all resources will be added to this project if no
project is specified.
resource:
type: object
properties:
urn:
$ref: '#/components/schemas/urn'
assigned_at:
type: string
format: date-time
example: '2018-09-28T19:26:37Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the project was created.
links:
type: object
description: >-
The links object contains the `self` object, which contains the
resource relationship.
properties:
self:
type: string
format: uri
example: https://api.digitalocean.com/v2/droplets/13457723
description: A URI that can be used to retrieve the resource.
status:
type: string
enum:
- ok
- not_found
- assigned
- already_assigned
- service_down
example: ok
description: The status of assigning and fetching the resources.
project_assignment:
type: object
properties:
resources:
type: array
items:
$ref: '#/components/schemas/urn'
example:
- do:droplet:13457723
description: A list of uniform resource names (URNs) to be added to a project.
subscription_tier_base:
type: object
properties:
name:
type: string
example: Basic
description: The name of the subscription tier.
slug:
type: string
example: basic
description: The slug identifier of the subscription tier.
included_repositories:
type: integer
example: 5
description: >-
The number of repositories included in the subscription tier. `0`
indicates that the subscription tier includes unlimited
repositories.
included_storage_bytes:
type: integer
example: 5368709120
description: The amount of storage included in the subscription tier in bytes.
allow_storage_overage:
type: boolean
example: true
description: >-
A boolean indicating whether the subscription tier supports
additional storage above what is included in the base plan at an
additional cost per GiB used.
included_bandwidth_bytes:
type: integer
example: 5368709120
description: >-
The amount of outbound data transfer included in the subscription
tier in bytes.
monthly_price_in_cents:
type: integer
example: 500
description: The monthly cost of the subscription tier in cents.
storage_overage_price_in_cents:
type: integer
example: 2
description: >-
The price paid in cents per GiB for additional storage beyond what
is included in the subscription plan.
subscription:
type: object
properties:
tier:
$ref: '#/components/schemas/subscription_tier_base'
created_at:
type: string
format: date-time
readOnly: true
example: '2020-01-23T21:19:12Z'
description: The time at which the subscription was created.
updated_at:
type: string
format: date-time
readOnly: true
example: '2020-11-05T15:53:24Z'
description: The time at which the subscription was last updated.
registry:
type: object
properties:
name:
type: string
maxLength: 63
pattern: ^[a-z0-9-]{1,63}$
example: example
description: >-
A globally unique name for the container registry. Must be lowercase
and be composed only of numbers, letters and `-`, up to a limit of
63 characters.
created_at:
type: string
format: date-time
readOnly: true
example: '2020-03-21T16:02:37Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the registry was created.
region:
type: string
example: fra1
description: Slug of the region where registry data is stored
storage_usage_bytes:
type: integer
readOnly: true
example: 29393920
description: The amount of storage used in the registry in bytes.
storage_usage_bytes_updated_at:
type: string
format: date-time
readOnly: true
example: '2020-11-04T21:39:49.530562231Z'
description: >-
The time at which the storage usage was updated. Storage usage is
calculated asynchronously, and may not immediately reflect pushes to
the registry.
subscription:
allOf:
- readOnly: true
- $ref: '#/components/schemas/subscription'
registry_create:
type: object
properties:
name:
type: string
maxLength: 63
pattern: ^[a-z0-9-]{1,63}$
example: example
description: >-
A globally unique name for the container registry. Must be lowercase
and be composed only of numbers, letters and `-`, up to a limit of
63 characters.
subscription_tier_slug:
type: string
enum:
- starter
- basic
- professional
example: basic
description: >-
The slug of the subscription tier to sign up for. Valid values can
be retrieved using the options endpoint.
region:
type: string
enum:
- nyc3
- sfo3
- ams3
- sgp1
- fra1
example: fra1
description: >-
Slug of the region where registry data is stored. When not provided,
a region will be selected.
required:
- name
- subscription_tier_slug
docker_credentials:
type: object
properties:
auths:
type: object
properties:
registry.digitalocean.com:
type: object
properties:
auth:
type: string
example: >-
YjdkMDNhNjk0N2IyMTdlZmI2ZjNlYzNiZDM1MDQ1ODI6YjdkMDNhNjk0N2IyMTdlZmI2ZjNlYzNiZDM1MDQ1ODIK
description: >-
A base64 encoded string containing credentials for the
container registry.
validate_registry:
type: object
properties:
name:
type: string
maxLength: 63
pattern: ^[a-z0-9-]{1,63}$
example: example
description: >-
A globally unique name for the container registry. Must be lowercase
and be composed only of numbers, letters and `-`, up to a limit of
63 characters.
required:
- name
repository_tag:
type: object
properties:
registry_name:
type: string
example: example
description: The name of the container registry.
repository:
type: string
example: repo-1
description: The name of the repository.
tag:
type: string
example: latest
description: The name of the tag.
manifest_digest:
type: string
example: >-
sha256:cb8a924afdf0229ef7515d9e5b3024e23b3eb03ddbba287f4a19c6ac90b8d221
description: The digest of the manifest associated with the tag.
compressed_size_bytes:
type: integer
example: 2803255
description: The compressed size of the tag in bytes.
size_bytes:
type: integer
example: 5861888
description: >-
The uncompressed size of the tag in bytes (this size is calculated
asynchronously so it may not be immediately available).
updated_at:
type: string
format: date-time
example: '2020-04-09T23:54:25Z'
description: The time the tag was last updated.
repository:
type: object
properties:
registry_name:
type: string
example: example
description: The name of the container registry.
name:
type: string
example: repo-1
description: The name of the repository.
latest_tag:
$ref: '#/components/schemas/repository_tag'
tag_count:
type: integer
example: 1
description: The number of tags in the repository.
repository_blob:
type: object
properties:
digest:
type: string
example: >-
sha256:cb8a924afdf0229ef7515d9e5b3024e23b3eb03ddbba287f4a19c6ac90b8d221
description: The digest of the blob
compressed_size_bytes:
type: integer
example: 2803255
description: The compressed size of the blob in bytes.
repository_manifest:
type: object
properties:
registry_name:
type: string
example: example
description: The name of the container registry.
repository:
type: string
example: repo-1
description: The name of the repository.
digest:
type: string
example: >-
sha256:cb8a924afdf0229ef7515d9e5b3024e23b3eb03ddbba287f4a19c6ac90b8d221
description: The manifest digest
compressed_size_bytes:
type: integer
example: 2803255
description: The compressed size of the manifest in bytes.
size_bytes:
type: integer
example: 5861888
description: >-
The uncompressed size of the manifest in bytes (this size is
calculated asynchronously so it may not be immediately available).
updated_at:
type: string
format: date-time
example: '2020-04-09T23:54:25Z'
description: The time the manifest was last updated.
tags:
type: array
items:
type: string
example:
- latest
- v1
- v2
description: All tags associated with this manifest
blobs:
type: array
items:
$ref: '#/components/schemas/repository_blob'
description: All blobs associated with this manifest
repository_v2:
type: object
properties:
registry_name:
type: string
example: example
description: The name of the container registry.
name:
type: string
example: repo-1
description: The name of the repository.
latest_manifest:
$ref: '#/components/schemas/repository_manifest'
tag_count:
type: integer
example: 1
description: The number of tags in the repository.
manifest_count:
type: integer
example: 1
description: The number of manifests in the repository.
garbage_collection:
type: object
properties:
uuid:
type: string
example: eff0feee-49c7-4e8f-ba5c-a320c109c8a8
description: A string specifying the UUID of the garbage collection.
registry_name:
type: string
example: example
description: The name of the container registry.
status:
type: string
enum:
- requested
- waiting for write JWTs to expire
- scanning manifests
- deleting unreferenced blobs
- cancelling
- failed
- succeeded
- cancelled
example: requested
description: The current status of this garbage collection.
created_at:
type: string
format: date-time
example: '2020-10-30T21:03:24Z'
description: The time the garbage collection was created.
updated_at:
type: string
format: date-time
example: '2020-10-30T21:03:44Z'
description: The time the garbage collection was last updated.
blobs_deleted:
type: integer
example: 42
description: The number of blobs deleted as a result of this garbage collection.
freed_bytes:
type: integer
example: 667
description: The number of bytes freed as a result of this garbage collection.
update_registry:
type: object
properties:
cancel:
type: boolean
example: true
description: >-
A boolean value indicating that the garbage collection should be
cancelled.
subscription_tier_extended:
type: object
properties:
eligible:
type: boolean
example: true
description: >-
A boolean indicating whether your account it eligible to use a
certain subscription tier.
eligibility_reasons:
type: array
items:
type: string
enum:
- OverRepositoryLimit
- OverStorageLimit
example:
- OverRepositoryLimit
description: >-
If your account is not eligible to use a certain subscription tier,
this will include a list of reasons that prevent you from using the
tier.
neighbor_ids:
type: object
properties:
neighbor_ids:
type: array
items:
type: array
items:
type: integer
description: >-
An array of arrays. Each array will contain a set of Droplet IDs for
Droplets that share a physical server.
example:
- - 168671828
- 168663509
- 168671815
- - 168671883
- 168671750
reserved_ip:
type: object
properties:
ip:
type: string
format: ipv4
example: 45.55.96.47
description: >-
The public IP address of the reserved IP. It also serves as its
identifier.
region:
allOf:
- $ref: '#/components/schemas/region'
- type: object
description: >-
The region that the reserved IP is reserved to. When you query a
reserved IP, the entire region object will be returned.
droplet:
description: >-
The Droplet that the reserved IP has been assigned to. When you
query a reserved IP, if it is assigned to a Droplet, the entire
Droplet object will be returned. If it is not assigned, the value
will be null.
anyOf:
- title: 'null'
type: object
nullable: true
description: >-
If the reserved IP is not assigned to a Droplet, the value will
be null.
- $ref: '#/components/schemas/droplet'
example: null
locked:
type: boolean
example: true
description: >-
A boolean value indicating whether or not the reserved IP has
pending actions preventing new ones from being submitted.
project_id:
type: string
format: uuid
example: 746c6152-2fa2-11ed-92d3-27aaa54e4988
description: The UUID of the project to which the reserved IP currently belongs.
reserved_ip_create:
oneOf:
- title: Assign to Droplet
type: object
properties:
droplet_id:
type: integer
example: 2457247
description: The ID of the Droplet that the reserved IP will be assigned to.
required:
- droplet_id
- title: Reserve to Region
type: object
properties:
region:
type: string
example: nyc3
description: >-
The slug identifier for the region the reserved IP will be
reserved to.
project_id:
type: string
format: uuid
example: 746c6152-2fa2-11ed-92d3-27aaa54e4988
description: >-
The UUID of the project to which the reserved IP will be
assigned.
required:
- region
reserved_ip_action_type:
type: object
required:
- type
properties:
type:
type: string
enum:
- assign
- unassign
description: The type of action to initiate for the reserved IP.
discriminator:
propertyName: type
mapping:
assign: '#/components/schemas/reserved_ip_action_assign'
unassign: '#/components/schemas/reserved_ip_action_unassign'
reserved_ip_action_assign:
allOf:
- $ref: '#/components/schemas/reserved_ip_action_type'
- type: object
required:
- type
- droplet_id
properties:
droplet_id:
type: integer
example: 758604968
description: The ID of the Droplet that the reserved IP will be assigned to.
reserved_ip_action_unassign:
allOf:
- $ref: '#/components/schemas/reserved_ip_action_type'
- type: object
required:
- type
snapshots:
allOf:
- type: object
properties:
id:
type: string
example: '6372321'
description: The unique identifier for the snapshot.
required:
- id
- $ref: '#/components/schemas/snapshots_base'
- type: object
properties:
resource_id:
type: string
example: '200776916'
description: >-
The unique identifier for the resource that the snapshot
originated from.
resource_type:
type: string
enum:
- droplet
- volume
example: droplet
description: The type of resource that the snapshot originated from.
tags:
description: An array of Tags the snapshot has been tagged with.
type: array
items:
type: string
nullable: true
example:
- web
- env:prod
required:
- resource_id
- resource_type
- tags
tags_metadata:
type: object
description: >-
Tagged Resource Statistics include metadata regarding the resource type
that has been tagged.
properties:
count:
type: integer
description: The number of tagged objects for this type of resource.
example: 5
minimum: 0
last_tagged_uri:
type: string
description: The URI for the last tagged object for this type of resource.
example: https://api.digitalocean.com/v2/images/7555620
tags:
type: object
description: >-
A tag is a label that can be applied to a resource (currently Droplets,
Images, Volumes, Volume Snapshots, and Database clusters) in order to
better organize or facilitate the lookups and actions on it.
Tags have two attributes: a user defined `name` attribute and an
embedded `resources` attribute with information about resources that
have been tagged.
properties:
name:
type: string
description: >
The name of the tag. Tags may contain letters, numbers, colons,
dashes, and underscores.
There is a limit of 255 characters per tag.
**Note:** Tag names are case stable, which means the capitalization
you use when you first create a tag is canonical.
When working with tags in the API, you must use the tag's canonical
capitalization. For example, if you create a tag named "PROD", the
URL to add that tag to a resource would be
`https://api.digitalocean.com/v2/tags/PROD/resources` (not
`/v2/tags/prod/resources`).
Tagged resources in the control panel will always display the
canonical capitalization. For example, if you create a tag named
"PROD", you can tag resources in the control panel by entering
"prod". The tag will still display with its canonical
capitalization, "PROD".
pattern: ^[a-zA-Z0-9_\-\:]+$
maxLength: 255
example: extra-awesome
resources:
type: object
description: >-
An embedded object containing key value pairs of resource type and
resource statistics. It also includes a count of the total number of
resources tagged with the current tag as well as a `last_tagged_uri`
attribute set to the last resource tagged with the current tag.
readOnly: true
allOf:
- $ref: '#/components/schemas/tags_metadata'
- properties:
droplets:
$ref: '#/components/schemas/tags_metadata'
imgages:
$ref: '#/components/schemas/tags_metadata'
volumes:
$ref: '#/components/schemas/tags_metadata'
volume_snapshots:
$ref: '#/components/schemas/tags_metadata'
databases:
$ref: '#/components/schemas/tags_metadata'
example:
count: 5
last_tagged_uri: https://api.digitalocean.com/v2/images/7555620
droplets:
count: 1
last_tagged_uri: https://api.digitalocean.com/v2/droplets/3164444
images:
count: 1
last_tagged_uri: https://api.digitalocean.com/v2/images/7555620
volumes:
count: 1
last_tagged_uri: >-
https://api.digitalocean.com/v2/volumes/3d80cb72-342b-4aaa-b92e-4e4abb24a933
volume_snapshots:
count: 1
last_tagged_uri: >-
https://api.digitalocean.com/v2/snapshots/1f6f46e8-6b60-11e9-be4e-0a58ac144519
databases:
count: 1
last_tagged_uri: >-
https://api.digitalocean.com/v2/databases/b92438f6-ba03-416c-b642-e9236db91976
error_with_root_causes:
type: object
properties:
error:
description: A message providing information about the error.
type: string
example: not_found
messages:
description: A list of error messages.
type: array
items:
type: string
nullable: true
example: null
root_causes:
description: >-
A list of underlying causes for the error, including details to
help resolve it when possible.
type: array
items:
type: string
example: []
required:
- error
- root_causes
tags_resource:
type: object
properties:
resources:
description: >-
An array of objects containing resource_id and resource_type
attributes.
type: array
items:
properties:
resource_id:
type: string
description: The identifier of a resource.
example: 3d80cb72-342b-4aaa-b92e-4e4abb24a933
resource_type:
type: string
description: The type of the resource.
example: volume
enum:
- droplet
- image
- volume
- volume_snapshot
example:
- resource_id: '9569411'
resource_type: droplet
- resource_id: '7555620'
resource_type: image
- resource_id: 3d80cb72-342b-4aaa-b92e-4e4abb24a933
resource_type: volume
required:
- resources
volume_base:
type: object
properties:
id:
type: string
description: The unique identifier for the block storage volume.
example: 506f78a4-e098-11e5-ad9f-000f53306ae1
readOnly: true
droplet_ids:
type: array
items:
type: integer
nullable: true
description: >-
An array containing the IDs of the Droplets the volume is attached
to. Note that at this time, a volume can only be attached to a
single Droplet.
example: []
readOnly: true
name:
type: string
description: >-
A human-readable name for the block storage volume. Must be
lowercase and be composed only of numbers, letters and "-", up to a
limit of 64 characters. The name must begin with a letter.
example: example
description:
type: string
description: An optional free-form text field to describe a block storage volume.
example: Block store for examples
size_gigabytes:
type: integer
description: >-
The size of the block storage volume in GiB (1024^3). This field
does not apply when creating a volume from a snapshot.
example: 10
created_at:
type: string
description: >-
A time value given in ISO8601 combined date and time format that
represents when the block storage volume was created.
example: '2020-03-02T17:00:49Z'
readOnly: true
tags:
$ref: '#/components/schemas/tags_array'
volume_full:
type: object
allOf:
- $ref: '#/components/schemas/volume_base'
- properties:
region:
allOf:
- description: >-
The region that the block storage volume is located in. When
setting a region, the value should be the slug identifier
for the region. When you query a block storage volume, the
entire region object will be returned.
- $ref: '#/components/schemas/region'
example:
name: New York 1
slug: nyc1
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
available: true
readOnly: true
filesystem_type:
type: string
description: The type of filesystem currently in-use on the volume.
example: ext4
filesystem_label:
type: string
description: The label currently applied to the filesystem.
example: example
volume_snapshot_id:
properties:
snapshot_id:
type: string
description: >-
The unique identifier for the volume snapshot from which to create
the volume.
example: b0798135-fb76-11eb-946a-0a58ac146f33
volume_write_file_system_type:
type: object
properties:
filesystem_type:
type: string
description: >-
The name of the filesystem type to be used on the volume. When
provided, the volume will automatically be formatted to the
specified filesystem type. Currently, the available options are
`ext4` and `xfs`. Pre-formatted volumes are automatically mounted
when attached to Ubuntu, Debian, Fedora, Fedora Atomic, and CentOS
Droplets created on or after April 26, 2018. Attaching pre-formatted
volumes to other Droplets is not recommended.
example: ext4
volume_write_file_system_label:
type: string
description: >-
The label applied to the filesystem. Labels for ext4 type filesystems
may contain 16 characters while labels for xfs type filesystems are
limited to 12 characters. May only be used in conjunction with
filesystem_type.
example: example
volumes_ext4:
type: object
allOf:
- $ref: '#/components/schemas/volume_base'
- $ref: '#/components/schemas/volume_snapshot_id'
- $ref: '#/components/schemas/volume_write_file_system_type'
- properties:
region:
$ref: '#/components/schemas/region_slug'
filesystem_label:
allOf:
- $ref: '#/components/schemas/volume_write_file_system_label'
- maxLength: 16
required:
- name
- size_gigabytes
- region
volumes_xfs:
type: object
allOf:
- $ref: '#/components/schemas/volume_base'
- $ref: '#/components/schemas/volume_snapshot_id'
- $ref: '#/components/schemas/volume_write_file_system_type'
- properties:
region:
$ref: '#/components/schemas/region_slug'
filesystem_label:
allOf:
- $ref: '#/components/schemas/volume_write_file_system_label'
- maxLength: 12
required:
- name
- size_gigabytes
- region
volume_action_post_base:
type: object
properties:
type:
type: string
description: The volume action to initiate.
enum:
- attach
- detach
- resize
example: attach
region:
$ref: '#/components/schemas/region_slug'
required:
- type
volume_action_droplet_id:
type: integer
description: >-
The unique identifier for the Droplet the volume will be attached or
detached from.
example: 11612190
volume_action_post_attach:
type: object
allOf:
- $ref: '#/components/schemas/volume_action_post_base'
- properties:
droplet_id:
$ref: '#/components/schemas/volume_action_droplet_id'
tags:
$ref: '#/components/schemas/tags_array'
required:
- droplet_id
volume_action_post_detach:
type: object
allOf:
- $ref: '#/components/schemas/volume_action_post_base'
- properties:
droplet_id:
$ref: '#/components/schemas/volume_action_droplet_id'
required:
- droplet_id
volumeAction:
type: object
allOf:
- properties:
type:
type: string
description: >-
This is the type of action that the object represents. For
example, this could be "attach_volume" to represent the state of
a volume attach action.
example: attach_volume
resource_id:
type: integer
nullable: true
example: null
- $ref: '#/components/schemas/action'
volume_action_post_resize:
type: object
allOf:
- $ref: '#/components/schemas/volume_action_post_base'
- properties:
size_gigabytes:
type: integer
description: The new size of the block storage volume in GiB (1024^3).
maximum: 16384
required:
- size_gigabytes
vpc_updatable:
type: object
properties:
name:
type: string
pattern: ^[a-zA-Z0-9\-\.]+$
example: env.prod-vpc
description: >-
The name of the VPC. Must be unique and may only contain
alphanumeric characters, dashes, and periods.
description:
type: string
maxLength: 255
example: VPC for production environment
description: >-
A free-form text field for describing the VPC's purpose. It may be a
maximum of 255 characters.
vpc_create:
type: object
properties:
region:
type: string
example: nyc1
description: The slug identifier for the region where the VPC will be created.
ip_range:
type: string
example: 10.10.10.0/24
description: >-
The range of IP addresses in the VPC in CIDR notation. Network
ranges cannot overlap with other networks in the same account and
must be in range of private addresses as defined in RFC1918. It may
not be smaller than `/28` nor larger than `/16`. If no IP range is
specified, a `/20` network range is generated that won't conflict
with other VPC networks in your account.
vpc_default:
type: object
properties:
default:
type: boolean
example: true
description: >-
A boolean value indicating whether or not the VPC is the default
network for the region. All applicable resources are placed into the
default VPC network unless otherwise specified during their
creation. The `default` field cannot be unset from `true`. If you
want to set a new default VPC network, update the `default` field of
another VPC network in the same region. The previous network's
`default` field will be set to `false` when a new default VPC has
been defined.
vpc_base:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
example: 5a4981aa-9653-4bd1-bef5-d6bff52042e4
description: A unique ID that can be used to identify and reference the VPC.
urn:
$ref: '#/components/schemas/urn'
created_at:
type: string
format: date-time
readOnly: true
example: '2020-03-13T19:20:47.442049222Z'
description: A time value given in ISO8601 combined date and time format.
vpc:
type: object
allOf:
- $ref: '#/components/schemas/vpc_updatable'
- $ref: '#/components/schemas/vpc_create'
- $ref: '#/components/schemas/vpc_default'
- $ref: '#/components/schemas/vpc_base'
vpc_member:
type: object
properties:
name:
type: string
example: nyc1-load-balancer-01
description: The name of the resource.
urn:
$ref: '#/components/schemas/urn'
created_at:
type: string
example: '2020-03-13T19:30:48Z'
description: >-
A time value given in ISO8601 combined date and time format that
represents when the resource was created.
vpc_peering_base:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
example: 5a4981aa-9653-4bd1-bef5-d6bff52042e4
description: >-
A unique ID that can be used to identify and reference the VPC
peering.
created_at:
type: string
format: date-time
readOnly: true
example: '2020-03-13T19:20:47.442049222Z'
description: A time value given in ISO8601 combined date and time format.
status:
type: string
enum:
- PROVISIONING
- ACTIVE
- DELETING
readOnly: true
example: ACTIVE
description: The current status of the VPC peering.
vpc_peering_create:
type: object
properties:
vpc_ids:
type: array
items:
type: string
format: uuid
minItems: 2
maxItems: 2
example:
- c140286f-e6ce-4131-8b7b-df4590ce8d6a
- 994a2735-dc84-11e8-80bc-3cfdfea9fba1
description: An array of the two peered VPCs IDs.
vpc_peering_updatable:
type: object
properties:
name:
type: string
pattern: ^[a-zA-Z0-9\-]+$
example: nyc1-blr1-peering
description: >-
The name of the VPC peering. Must be unique within the team and may
only contain alphanumeric characters and dashes.
vpc_peering:
type: object
allOf:
- $ref: '#/components/schemas/vpc_peering_base'
- $ref: '#/components/schemas/vpc_peering_create'
- $ref: '#/components/schemas/vpc_peering_updatable'
check_base:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
example: 5a4981aa-9653-4bd1-bef5-d6bff52042e4
description: A unique ID that can be used to identify and reference the check.
check_updatable:
type: object
properties:
name:
type: string
example: Landing page check
description: A human-friendly display name.
type:
type: string
example: https
enum:
- ping
- http
- https
description: The type of health check to perform.
target:
type: string
format: url
example: https://www.landingpage.com
description: The endpoint to perform healthchecks on.
regions:
type: array
items:
type: string
enum:
- us_east
- us_west
- eu_west
- se_asia
example:
- us_east
- eu_west
description: >-
An array containing the selected regions to perform healthchecks
from.
enabled:
type: boolean
example: true
default: true
description: A boolean value indicating whether the check is enabled/disabled.
check:
type: object
allOf:
- $ref: '#/components/schemas/check_base'
- $ref: '#/components/schemas/check_updatable'
region_state:
type: object
properties:
status:
type: string
example: UP
enum:
- DOWN
- UP
- CHECKING
status_changed_at:
type: string
example: '2022-03-17T22:28:51Z'
thirty_day_uptime_percentage:
type: number
example: 97.99
regional_state:
type: object
description: A map of region to regional state
properties:
us_east:
$ref: '#/components/schemas/region_state'
eu_west:
$ref: '#/components/schemas/region_state'
previous_outage:
type: object
properties:
region:
type: string
example: us_east
started_at:
type: string
example: '2022-03-17T18:04:55Z'
ended_at:
type: string
example: '2022-03-17T18:06:55Z'
duration_seconds:
type: integer
example: 120
state:
type: object
properties:
regions:
$ref: '#/components/schemas/regional_state'
previous_outage:
$ref: '#/components/schemas/previous_outage'
alert_base:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
example: 5a4981aa-9653-4bd1-bef5-d6bff52042e4
description: A unique ID that can be used to identify and reference the alert.
notification:
type: object
description: The notification settings for a trigger alert.
required:
- slack
- email
properties:
email:
description: >-
An email to notify on an alert trigger. The Email has to be one that
is verified on that DigitalOcean account.
example:
- bob@example.com
type: array
items:
type: string
slack:
type: array
description: Slack integration details.
items:
type: object
required:
- url
- channel
properties:
channel:
type: string
format: string
example: Production Alerts
description: Slack channel to notify of an alert trigger.
url:
type: string
format: string
description: Slack Webhook URL.
example: https://hooks.slack.com/services/T1234567/AAAAAAAA/ZZZZZZ
alert_updatable:
type: object
properties:
name:
type: string
example: Landing page degraded performance
description: A human-friendly display name.
type:
type: string
example: latency
enum:
- latency
- down
- down_global
- ssl_expiry
description: The type of alert.
threshold:
type: integer
example: 300
description: >-
The threshold at which the alert will enter a trigger state. The
specific threshold is dependent on the alert type.
comparison:
type: string
example: greater_than
description: The comparison operator used against the alert's threshold.
enum:
- greater_than
- less_than
notifications:
$ref: '#/components/schemas/notification'
period:
type: string
example: 2m
description: Period of time the threshold must be exceeded to trigger the alert.
enum:
- 2m
- 3m
- 5m
- 10m
- 15m
- 30m
- 1h
alert:
type: object
allOf:
- $ref: '#/components/schemas/alert_base'
- $ref: '#/components/schemas/alert_updatable'
responses:
unexpected_error:
description: Unexpected error
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: example_error
message: some error message
oneClicks_all:
description: A JSON object with a key of `1_clicks`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
1_clicks:
type: array
items:
$ref: '#/components/schemas/oneClicks'
examples:
All 1-Click Applications:
value:
1_clicks:
- slug: monitoring
type: kubernetes
- slug: wordpress-18-04
type: droplet
unauthorized:
description: Unauthorized
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: unauthorized
message: Unable to authenticate you.
too_many_requests:
description: API Rate limit exceeded
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: too_many_requests
message: API Rate limit exceeded.
server_error:
description: Server error.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: server_error
message: Unexpected server-side error
oneClicks_create:
description: >
The response will verify that a job has been successfully created to
install a 1-Click. The
post-installation lifecycle of a 1-Click application can not be managed
via the DigitalOcean
API. For additional details specific to the 1-Click, find and view its
[DigitalOcean Marketplace](https://marketplace.digitalocean.com) page.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: A message about the result of the request.
example: Successfully kicked off addon job.
examples:
Install a 1-Click Application:
value:
message: Successfully kicked off addon job.
account:
description: >-
A JSON object keyed on account with an excerpt of the current user
account data.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
account:
$ref: '#/components/schemas/account'
sshKeys_all:
description: >-
A JSON object with the key set to `ssh_keys`. The value is an array of
`ssh_key` objects, each of which contains the standard `ssh_key`
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- properties:
ssh_keys:
type: array
items:
$ref: '#/components/schemas/sshKeys'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
ssh_keys:
- id: 289794
fingerprint: 3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45
public_key: >-
ssh-rsa
ANOTHEREXAMPLEaC1yc2EAAAADAQABAAAAQQDDHr/jh2Jy4yALcK4JyWbVkPRaWmhck3IgCoeOO3z1e2dBowLh64QAM+Qb72pxekALga2oi4GvT+TlWNhzPH4V
anotherexample
name: Other Public Key
links: {}
meta:
total: 1
sshKeys_new:
description: The response body will be a JSON object with a key set to `ssh_key`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
ssh_key:
$ref: '#/components/schemas/sshKeys'
links:
sshKeys_get_by_id:
$ref: '#/components/links/sshKeys_get_by_id'
sshKeys_get_by_fingerprint:
$ref: '#/components/links/sshKeys_get_by_fingerprint'
sshKeys_delete_by_id:
$ref: '#/components/links/sshKeys_delete_by_id'
sshKeys_delete_by_fingerprint:
$ref: '#/components/links/sshKeys_delete_by_fingerprint'
sshKeys_existing:
description: >-
A JSON object with the key set to `ssh_key`. The value is an `ssh_key`
object containing the standard `ssh_key` attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
ssh_key:
$ref: '#/components/schemas/sshKeys'
links:
sshKeys_get_by_id:
$ref: '#/components/links/sshKeys_get_by_id'
sshKeys_get_by_fingerprint:
$ref: '#/components/links/sshKeys_get_by_fingerprint'
sshKeys_delete_by_id:
$ref: '#/components/links/sshKeys_delete_by_id'
sshKeys_delete_by_fingerprint:
$ref: '#/components/links/sshKeys_delete_by_fingerprint'
not_found:
description: The resource was not found.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: not_found
message: The resource you requested could not be found.
no_content:
description: The action was successful and the response body is empty.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
actions:
description: >-
The results will be returned as a JSON object with an actions key. This
will be set to an array filled with action objects containing the
standard action attributes
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
actions:
type: array
items:
$ref: '#/components/schemas/action'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
action:
description: >-
The result will be a JSON object with an action key. This will be set
to an action object containing the standard action attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
action:
$ref: '#/components/schemas/action'
list_apps:
description: A JSON object with a `apps` key. This is list of object `apps`.
content:
application/json:
schema:
$ref: '#/components/schemas/apps_response'
examples:
apps:
$ref: '#/components/examples/apps'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
new_app:
description: A JSON or YAML of a `spec` object.
content:
application/json:
schema:
$ref: '#/components/schemas/app_response'
examples:
app:
$ref: '#/components/examples/app'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
apps_get:
description: A JSON with key `app`
content:
application/json:
schema:
$ref: '#/components/schemas/app_response'
examples:
app:
$ref: '#/components/examples/app'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
update_app:
description: A JSON object of the updated `app`
content:
application/json:
schema:
$ref: '#/components/schemas/app_response'
examples:
app:
$ref: '#/components/examples/app'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
delete_app:
description: the ID of the app deleted.
content:
application/json:
schema:
$ref: '#/components/schemas/apps_delete_app_response'
example:
id: b7d64052-3706-4cb7-b21a-c5a2f44e63b3
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
new_app_deployment:
description: A JSON object with a `deployment` key.
content:
application/json:
schema:
$ref: '#/components/schemas/apps_deployment_response'
examples:
deployment:
$ref: '#/components/examples/deployment'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
list_logs:
description: A JSON object with urls that point to archived logs
content:
application/json:
schema:
$ref: '#/components/schemas/apps_get_logs_response'
examples:
logs:
$ref: '#/components/examples/logs'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
get_exec:
description: >-
A JSON object with a websocket URL that allows sending/receiving console
input and output.
content:
application/json:
schema:
$ref: '#/components/schemas/apps_get_exec_response'
examples:
exec:
$ref: '#/components/examples/exec'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
existing_deployments:
description: >-
A JSON object with a `deployments` key. This will be a list of all app
deployments
content:
application/json:
schema:
$ref: '#/components/schemas/apps_deployments_response'
examples:
deployments:
$ref: '#/components/examples/deployments'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
list_deployment:
description: A JSON of the requested deployment
content:
application/json:
schema:
$ref: '#/components/schemas/apps_deployment_response'
examples:
deployment:
$ref: '#/components/examples/deployment'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
cancel_deployment:
description: A JSON the `deployment` that was just cancelled.
content:
application/json:
schema:
$ref: '#/components/schemas/apps_deployment_response'
examples:
deployment:
$ref: '#/components/examples/deployment'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
list_instance:
description: A JSON with key `instance_sizes`
content:
application/json:
schema:
$ref: '#/components/schemas/apps_list_instance_sizes_response'
examples:
instance_sizes:
$ref: '#/components/examples/instance_sizes'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
get_instance:
description: A JSON with key `instance_size`
content:
application/json:
schema:
$ref: '#/components/schemas/apps_get_instance_size_response'
examples:
instance_size:
$ref: '#/components/examples/instance_size'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
list_regions:
description: A JSON object with key `regions`
content:
application/json:
schema:
$ref: '#/components/schemas/apps_list_regions_response'
examples:
regions:
$ref: '#/components/examples/regions'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
propose_app:
description: A JSON object.
content:
application/json:
schema:
$ref: '#/components/schemas/app_propose_response'
examples:
propose:
$ref: '#/components/examples/propose'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
list_alerts:
description: A JSON object with a `alerts` key. This is list of object `alerts`.
content:
application/json:
schema:
$ref: '#/components/schemas/apps_list_alerts_response'
examples:
apps:
$ref: '#/components/examples/alerts'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
assign_alert_destinations:
description: A JSON object with an `alert` key. This is an object of type `alert`.
content:
application/json:
schema:
$ref: '#/components/schemas/apps_alert_response'
examples:
apps:
$ref: '#/components/examples/alert'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
apps_validate_rollback:
description: A JSON object with the validation results.
content:
application/json:
schema:
type: object
properties:
valid:
type: boolean
description: >-
Indicates whether the app can be rolled back to the specified
deployment.
error:
allOf:
- description: >-
Contains the failing condition that is causing the
rollback to be invalid.
- $ref: '#/components/schemas/app_rollback_validation_condition'
warnings:
type: array
description: >-
Contains a list of warnings that may cause the rollback to run
under unideal circumstances.
items:
$ref: '#/components/schemas/app_rollback_validation_condition'
examples:
Valid rollback:
value:
valid: true
Valid rollback with warnings:
value:
valid: true
warnings:
- code: image_source_missing_digest
components:
- docker-worker
message: >-
one or more components are missing an image digest and are
not guaranteed rollback to the old version
Invalid rollback:
value:
valid: false
error:
code: incompatible_result
message: deployment result "failed" is unsuitable for rollback
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
get_metrics_bandwidth_usage:
description: A JSON object with a `app_bandwidth_usage` key
content:
application/json:
schema:
$ref: '#/components/schemas/app_metrics_bandwidth_usage'
examples:
app_bandwidth_usage:
$ref: '#/components/examples/app_bandwidth_usage'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
list_metrics_bandwidth_usage:
description: A JSON object with a `app_bandwidth_usage` key
content:
application/json:
schema:
$ref: '#/components/schemas/app_metrics_bandwidth_usage'
examples:
app_bandwidth_usage:
$ref: '#/components/examples/app_bandwidth_usage_multiple'
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
all_cdn_endpoints:
description: >-
The result will be a JSON object with an `endpoints` key. This will be
set to an array of endpoint objects, each of which will contain the
standard CDN endpoint attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
endpoints:
type: array
items:
$ref: '#/components/schemas/cdn_endpoint'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
endpoints:
- id: 19f06b6a-3ace-4315-b086-499a0e521b76
origin: static-images.nyc3.digitaloceanspaces.com
endpoint: static-images.nyc3.cdn.digitaloceanspaces.com
created_at: '2018-07-19T15:04:16Z'
certificate_id: 892071a0-bb95-49bc-8021-3afd67a210bf
custom_domain: static.example.com
ttl: 3600
links: {}
meta:
total: 1
existing_endpoint:
description: >-
The response will be a JSON object with an `endpoint` key. This will be
set to an object containing the standard CDN endpoint attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
endpoint:
$ref: '#/components/schemas/cdn_endpoint'
examples:
CDN Endpoint:
value:
endpoint:
id: 19f06b6a-3ace-4315-b086-499a0e521b76
origin: static-images.nyc3.digitaloceanspaces.com
endpoint: static-images.nyc3.cdn.digitaloceanspaces.com
created_at: '2018-07-19T15:04:16Z'
ttl: 3600
CDN Endpoint With Custom Domain:
value:
endpoint:
id: 19f06b6a-3ace-4315-b086-499a0e521b76
origin: static-images.nyc3.digitaloceanspaces.com
endpoint: static-images.nyc3.cdn.digitaloceanspaces.com
created_at: '2018-07-19T15:04:16Z'
certificate_id: 892071a0-bb95-49bc-8021-3afd67a210bf
custom_domain: static.example.com
ttl: 3600
all_certificates:
description: >-
The result will be a JSON object with a `certificates` key. This will be
set to an array of certificate objects, each of which will contain the
standard certificate attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
certificates:
type: array
items:
$ref: '#/components/schemas/certificate'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
examples:
AllCertificates:
$ref: '#/components/examples/certificates_all'
new_certificate:
description: >-
The response will be a JSON object with a key called `certificate`. The
value of this will be an object that contains the standard attributes
associated with a certificate.
When using Let's Encrypt, the initial value of the certificate's `state`
attribute will be `pending`. When the certificate has been successfully
issued by Let's Encrypt, this will transition to `verified` and be ready
for use.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
certificate:
$ref: '#/components/schemas/certificate'
examples:
Custom Certificate:
$ref: '#/components/examples/certificates_custom'
Let's Encrypt Certificate:
$ref: '#/components/examples/certificates_lets_encrypt_pending'
existing_certificate:
description: >-
The response will be a JSON object with a `certificate` key. This will
be set to an object containing the standard certificate attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
certificate:
$ref: '#/components/schemas/certificate'
examples:
Custom Certificate:
$ref: '#/components/examples/certificates_custom'
Let's Encrypt Certificate:
$ref: '#/components/examples/certificates_lets_encrypt'
balance:
description: >-
The response will be a JSON object that contains the following
attributes
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/balance'
example:
month_to_date_balance: '23.44'
account_balance: '12.23'
month_to_date_usage: '11.21'
generated_at: '2019-07-09T15:01:12Z'
billing_history:
description: >-
The response will be a JSON object that contains the following
attributes
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
billing_history:
type: array
items:
$ref: '#/components/schemas/billing_history'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta_optional_total'
example:
billing_history:
- description: Invoice for May 2018
amount: '12.34'
invoice_id: '123'
invoice_uuid: example-uuid
date: '2018-06-01T08:44:38Z'
type: Invoice
- description: Payment (MC 2018)
amount: '-12.34'
date: '2018-06-02T08:44:38Z'
type: Payment
links:
pages:
next: >-
https://api.digitalocean.com/v2/customers/my/billing_history?page=2&per_page=2
last: >-
https://api.digitalocean.com/v2/customers/my/billing_history?page=3&per_page=2
meta:
total: 5
invoices:
description: >-
The response will be a JSON object contains that contains a list of
invoices under the `invoices` key, and the invoice preview under the
`invoice_preview` key.
Each element contains the invoice summary attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
invoices:
type: array
items:
$ref: '#/components/schemas/invoice_preview'
invoice_preview:
$ref: '#/components/schemas/invoice_preview'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
invoices:
- invoice_uuid: 22737513-0ea7-4206-8ceb-98a575af7681
invoice_id: '12345678'
amount: '12.34'
invoice_period: 2019-12
- invoice_uuid: fdabb512-6faf-443c-ba2e-665452332a9e
invoice_id: '23456789'
amount: '23.45'
invoice_period: 2019-11
invoice_preview:
invoice_uuid: 1afe95e6-0958-4eb0-8d9a-9c5060d3ef03
invoice_id: '34567890'
amount: '34.56'
invoice_period: 2020-02
updated_at: '2020-02-23T06:31:50Z'
links:
pages:
next: >-
https://api.digitalocean.com/v2/customers/my/invoices?page=2&per_page=2
last: >-
https://api.digitalocean.com/v2/customers/my/invoices?page=35&per_page=2
meta:
total: 70
invoice:
description: >-
The response will be a JSON object with a key called `invoice_items`.
This will be set to an array of invoice item objects.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
invoice_items:
type: array
items:
$ref: '#/components/schemas/invoice_item'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
invoice_items:
- product: Kubernetes Clusters
resource_uuid: 711157cb-37c8-4817-b371-44fa3504a39c
group_description: my-doks-cluster
description: a56e086a317d8410c8b4cfd1f4dc9f82
amount: '12.34'
duration: '744'
duration_unit: Hours
start_time: '2020-01-01T00:00:00Z'
end_time: '2020-02-01T00:00:00Z'
- product: Spaces Subscription
description: Spaces ($5/mo 250GB storage & 1TB bandwidth)
amount: '34.45'
duration: '744'
duration_unit: Hours
start_time: '2020-01-01T00:00:00Z'
end_time: '2020-02-01T00:00:00Z'
links:
pages:
next: >-
https://api.digitalocean.com/v2/customers/my/invoices/22737513-0ea7-4206-8ceb-98a575af7681?page=2&per_page=2
last: >-
https://api.digitalocean.com/v2/customers/my/invoices/22737513-0ea7-4206-8ceb-98a575af7681?page=3&per_page=2
meta:
total: 6
invoice_csv:
description: The response will be a CSV file.
headers:
content-disposition:
$ref: '#/components/headers/content-disposition'
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
text/csv:
schema:
type: string
example: >
product,group_description,description,hours,start,end,USD,project_name,category
Floating IPs,,Unused Floating IP - 1.1.1.1,100,2020-07-01 00:00:00
+0000,2020-07-22 18:14:39 +0000,$3.11,,iaas
Taxes,,STATE SALES TAX (6.25%),,2020-07-01 00:00:00 +0000,2020-07-31
23:59:59 +0000,$0.16,,iaas
invoice_pdf:
description: The response will be a PDF file.
headers:
content-disposition:
$ref: '#/components/headers/content-disposition'
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/pdf:
schema:
type: string
format: binary
invoice_summary:
description: >-
To retrieve a summary for an invoice, send a GET request to
`/v2/customers/my/invoices/$INVOICE_UUID/summary`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/invoice_summary'
example:
invoice_uuid: 22737513-0ea7-4206-8ceb-98a575af7681
invoice_id: '123456789'
billing_period: 2020-01
amount: '27.13'
user_name: Sammy Shark
user_billing_address:
address_line1: 101 Shark Row
city: Atlantis
region: OC
postal_code: '12345'
country_iso2_code: US
created_at: '2019-09-03T16:34:46.000+00:00'
updated_at: '2019-09-03T16:34:46.000+00:00'
user_company: DigitalOcean
user_email: sammy@digitalocean.com
product_charges:
name: Product usage charges
amount: '12.34'
items:
- amount: '10.00'
name: Spaces Subscription
count: '1'
- amount: '2.34'
name: Database Clusters
count: '1'
overages:
name: Overages
amount: '3.45'
taxes:
name: Taxes
amount: '4.56'
credits_and_adjustments:
name: Credits & adjustments
amount: '6.78'
options:
description: A JSON string with a key of `options`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/options'
example:
options:
kafka:
regions:
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc3
- sfo2
- sfo3
- sgp1
- syd1
- tor1
versions:
- '3.6'
- '3.7'
layouts:
- num_nodes: 3
sizes:
- gd-2vcpu-8gb
- gd-4vcpu-16gb
- db-s-2vcpu-4gb
- db-s-2vcpu-2gb
- num_nodes: 6
sizes:
- gd-2vcpu-8gb
- gd-4vcpu-16gb
- num_nodes: 9
sizes:
- gd-2vcpu-8gb
- gd-4vcpu-16gb
- num_nodes: 15
sizes:
- gd-2vcpu-8gb
- gd-4vcpu-16gb
mongodb:
regions:
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc3
- sfo2
- sfo3
- sgp1
- syd1
- tor1
versions:
- '5.0'
- '6.0'
- '7.0'
layouts:
- num_nodes: 1
sizes:
- db-s-1vcpu-1gb
- db-s-1vcpu-2gb
- db-s-2vcpu-4gb
- db-s-4vcpu-8gb
- db-s-6vcpu-16gb
- db-s-8vcpu-32gb
- db-s-16vcpu-64gb
- gd-2vcpu-8gb
- gd-4vcpu-16gb
- gd-8vcpu-32gb
- gd-16vcpu-64gb
- gd-32vcpu-128gb
- gd-40vcpu-160gb
- so1_5-2vcpu-16gb
- so1_5-4vcpu-32gb
- so1_5-8vcpu-64gb
- so1_5-16vcpu-128gb
- so1_5-24vcpu-192gb
- so1_5-32vcpu-256gb
- num_nodes: 3
sizes:
- db-s-1vcpu-1gb
- db-s-1vcpu-2gb
- db-s-2vcpu-4gb
- db-s-4vcpu-8gb
- db-s-6vcpu-16gb
- db-s-8vcpu-32gb
- db-s-16vcpu-64gb
- gd-2vcpu-8gb
- gd-4vcpu-16gb
- gd-8vcpu-32gb
- gd-16vcpu-64gb
- gd-32vcpu-128gb
- gd-40vcpu-160gb
- so1_5-2vcpu-16gb
- so1_5-4vcpu-32gb
- so1_5-8vcpu-64gb
- so1_5-16vcpu-128gb
- so1_5-24vcpu-192gb
- so1_5-32vcpu-256gb
mysql:
regions:
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc3
- sfo2
- sfo3
- sgp1
- syd1
- tor1
versions:
- '8'
layouts:
- num_nodes: 1
sizes:
- db-s-1vcpu-1gb
- db-s-1vcpu-2gb
- db-s-2vcpu-4gb
- db-s-4vcpu-8gb
- db-s-6vcpu-16gb
- gd-2vcpu-8gb
- gd-4vcpu-16gb
- gd-8vcpu-32gb
- gd-16vcpu-64gb
- gd-32vcpu-128gb
- gd-40vcpu-160gb
- so1_5-2vcpu-16gb
- so1_5-4vcpu-32gb
- so1_5-8vcpu-64gb
- so1_5-16vcpu-128gb
- so1_5-24vcpu-192gb
- so1_5-32vcpu-256gb
- db-intel-1vcpu-1gb
- db-amd-1vcpu-1gb
- db-intel-1vcpu-2gb
- db-amd-1vcpu-2gb
- db-amd-2vcpu-4gb
- db-intel-2vcpu-4gb
- db-amd-2vcpu-8gb
- db-intel-2vcpu-8gb
- db-intel-4vcpu-8gb
- db-amd-4vcpu-8gb
- db-amd-4vcpu-16gb
- db-intel-4vcpu-16gb
- db-intel-8vcpu-32gb
- db-amd-8vcpu-32gb
- db-intel-16vcpu-64gb
- db-amd-16vcpu-64gb
- num_nodes: 2
sizes:
- db-s-1vcpu-2gb
- db-s-2vcpu-4gb
- db-s-4vcpu-8gb
- db-s-6vcpu-16gb
- gd-2vcpu-8gb
- gd-4vcpu-16gb
- gd-8vcpu-32gb
- gd-16vcpu-64gb
- gd-32vcpu-128gb
- gd-40vcpu-160gb
- so1_5-2vcpu-16gb
- so1_5-4vcpu-32gb
- so1_5-8vcpu-64gb
- so1_5-16vcpu-128gb
- so1_5-24vcpu-192gb
- so1_5-32vcpu-256gb
- db-intel-1vcpu-2gb
- db-amd-1vcpu-2gb
- db-amd-2vcpu-4gb
- db-intel-2vcpu-4gb
- db-intel-2vcpu-8gb
- db-amd-2vcpu-8gb
- db-intel-4vcpu-8gb
- db-amd-4vcpu-8gb
- db-intel-4vcpu-16gb
- db-amd-4vcpu-16gb
- db-amd-8vcpu-32gb
- db-intel-8vcpu-32gb
- db-amd-16vcpu-64gb
- db-intel-16vcpu-64gb
- num_nodes: 3
sizes:
- db-s-1vcpu-2gb
- db-s-2vcpu-4gb
- db-s-4vcpu-8gb
- db-s-6vcpu-16gb
- gd-2vcpu-8gb
- gd-4vcpu-16gb
- gd-8vcpu-32gb
- gd-16vcpu-64gb
- gd-32vcpu-128gb
- gd-40vcpu-160gb
- so1_5-2vcpu-16gb
- so1_5-4vcpu-32gb
- so1_5-8vcpu-64gb
- so1_5-16vcpu-128gb
- so1_5-24vcpu-192gb
- so1_5-32vcpu-256gb
- db-intel-1vcpu-2gb
- db-amd-1vcpu-2gb
- db-amd-2vcpu-4gb
- db-intel-2vcpu-4gb
- db-intel-2vcpu-8gb
- db-amd-2vcpu-8gb
- db-intel-4vcpu-8gb
- db-amd-4vcpu-8gb
- db-intel-4vcpu-16gb
- db-amd-4vcpu-16gb
- db-amd-8vcpu-32gb
- db-intel-8vcpu-32gb
- db-amd-16vcpu-64gb
- db-intel-16vcpu-64gb
opensearch:
regions:
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc3
- sfo2
- sfo3
- sgp1
- syd1
- tor1
versions:
- '1'
- '2'
layouts:
- num_nodes: 1
sizes:
- db-s-1vcpu-2gb
- db-s-2vcpu-4gb
- gd-2vcpu-8gb
- m3-2vcpu-16gb
- db-s-4vcpu-8gb
- gd-4vcpu-16gb
- m3-4vcpu-32gb
- m3-8vcpu-64gb
- num_nodes: 3
sizes:
- db-s-2vcpu-4gb
- gd-2vcpu-8gb
- m3-2vcpu-16gb
- db-s-4vcpu-8gb
- gd-4vcpu-16gb
- m3-4vcpu-32gb
- m3-8vcpu-64gb
- num_nodes: 6
sizes:
- gd-2vcpu-8gb
- m3-2vcpu-16gb
- gd-4vcpu-16gb
- m3-4vcpu-32gb
- m3-8vcpu-64gb
- num_nodes: 9
sizes:
- gd-2vcpu-8gb
- m3-2vcpu-16gb
- gd-4vcpu-16gb
- m3-4vcpu-32gb
- m3-8vcpu-64gb
- num_nodes: 15
sizes:
- gd-2vcpu-8gb
- m3-2vcpu-16gb
- gd-4vcpu-16gb
- m3-4vcpu-32gb
- m3-8vcpu-64gb
pg:
regions:
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc3
- sfo2
- sfo3
- sgp1
- syd1
- tor1
versions:
- '13'
- '14'
- '15'
- '16'
layouts:
- num_nodes: 1
sizes:
- db-s-1vcpu-1gb
- db-s-1vcpu-2gb
- db-s-2vcpu-4gb
- db-s-4vcpu-8gb
- db-s-6vcpu-16gb
- gd-2vcpu-8gb
- gd-4vcpu-16gb
- gd-8vcpu-32gb
- gd-16vcpu-64gb
- gd-32vcpu-128gb
- gd-40vcpu-160gb
- so1_5-2vcpu-16gb
- so1_5-4vcpu-32gb
- so1_5-8vcpu-64gb
- so1_5-16vcpu-128gb
- so1_5-24vcpu-192gb
- so1_5-32vcpu-256gb
- db-intel-1vcpu-1gb
- db-amd-1vcpu-1gb
- db-intel-1vcpu-2gb
- db-amd-1vcpu-2gb
- db-amd-2vcpu-4gb
- db-intel-2vcpu-4gb
- db-amd-2vcpu-8gb
- db-intel-2vcpu-8gb
- db-intel-4vcpu-8gb
- db-amd-4vcpu-8gb
- db-amd-4vcpu-16gb
- db-intel-4vcpu-16gb
- db-intel-8vcpu-32gb
- db-amd-8vcpu-32gb
- db-intel-16vcpu-64gb
- db-amd-16vcpu-64gb
- num_nodes: 2
sizes:
- db-s-1vcpu-2gb
- db-s-2vcpu-4gb
- db-s-4vcpu-8gb
- db-s-6vcpu-16gb
- gd-2vcpu-8gb
- gd-4vcpu-16gb
- gd-8vcpu-32gb
- gd-16vcpu-64gb
- gd-32vcpu-128gb
- gd-40vcpu-160gb
- so1_5-2vcpu-16gb
- so1_5-4vcpu-32gb
- so1_5-8vcpu-64gb
- so1_5-16vcpu-128gb
- so1_5-24vcpu-192gb
- so1_5-32vcpu-256gb
- db-intel-1vcpu-2gb
- db-amd-1vcpu-2gb
- db-amd-2vcpu-4gb
- db-intel-2vcpu-4gb
- db-intel-2vcpu-8gb
- db-amd-2vcpu-8gb
- db-intel-4vcpu-8gb
- db-amd-4vcpu-8gb
- db-intel-4vcpu-16gb
- db-amd-4vcpu-16gb
- db-amd-8vcpu-32gb
- db-intel-8vcpu-32gb
- db-amd-16vcpu-64gb
- db-intel-16vcpu-64gb
- num_nodes: 3
sizes:
- db-s-1vcpu-2gb
- db-s-2vcpu-4gb
- db-s-4vcpu-8gb
- db-s-6vcpu-16gb
- gd-2vcpu-8gb
- gd-4vcpu-16gb
- gd-8vcpu-32gb
- gd-16vcpu-64gb
- gd-32vcpu-128gb
- gd-40vcpu-160gb
- so1_5-2vcpu-16gb
- so1_5-4vcpu-32gb
- so1_5-8vcpu-64gb
- so1_5-16vcpu-128gb
- so1_5-24vcpu-192gb
- so1_5-32vcpu-256gb
- db-intel-1vcpu-2gb
- db-amd-1vcpu-2gb
- db-amd-2vcpu-4gb
- db-intel-2vcpu-4gb
- db-intel-2vcpu-8gb
- db-amd-2vcpu-8gb
- db-intel-4vcpu-8gb
- db-amd-4vcpu-8gb
- db-intel-4vcpu-16gb
- db-amd-4vcpu-16gb
- db-amd-8vcpu-32gb
- db-intel-8vcpu-32gb
- db-amd-16vcpu-64gb
- db-intel-16vcpu-64gb
redis:
regions:
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc3
- sfo2
- sfo3
- sgp1
- syd1
- tor1
versions:
- '7'
layouts:
- num_nodes: 1
sizes:
- db-s-1vcpu-1gb
- db-s-1vcpu-2gb
- db-s-2vcpu-4gb
- db-s-4vcpu-8gb
- db-s-6vcpu-16gb
- db-s-8vcpu-32gb
- db-s-16vcpu-64gb
- m-2vcpu-16gb
- m-4vcpu-32gb
- m-8vcpu-64gb
- m-16vcpu-128gb
- m-24vcpu-192gb
- m-32vcpu-256gb
- num_nodes: 2
sizes:
- db-s-1vcpu-2gb
- db-s-2vcpu-4gb
- db-s-4vcpu-8gb
- db-s-6vcpu-16gb
- db-s-8vcpu-32gb
- db-s-16vcpu-64gb
- m-2vcpu-16gb
- m-4vcpu-32gb
- m-8vcpu-64gb
- m-16vcpu-128gb
- m-24vcpu-192gb
- m-32vcpu-256gb
- num_nodes: 3
sizes:
- db-s-1vcpu-2gb
- db-s-2vcpu-4gb
- db-s-4vcpu-8gb
- db-s-6vcpu-16gb
- db-s-8vcpu-32gb
- db-s-16vcpu-64gb
- m-2vcpu-16gb
- m-4vcpu-32gb
- m-8vcpu-64gb
- m-16vcpu-128gb
- m-24vcpu-192gb
- m-32vcpu-256gb
version_availability:
kafka:
- end_of_life: null
end_of_availability: '2024-07-18T00:00:00Z'
version: '3.6'
- end_of_life: null
end_of_availability: '2025-01-17T00:00:00Z'
version: '3.7'
mongodb:
- end_of_life: '2024-10-01T07:00:00Z'
end_of_availability: null
version: '5.0'
- end_of_life: '2025-07-01T07:00:00Z'
end_of_availability: null
version: '6.0'
- end_of_life: '2026-08-01T07:00:00Z'
end_of_availability: null
version: '7.0'
mysql:
- end_of_life: null
end_of_availability: null
version: '8'
opensearch:
- end_of_life: null
end_of_availability: null
version: '1'
- end_of_life: null
end_of_availability: null
version: '2'
pg:
- end_of_life: '2025-11-13T00:00:00Z'
end_of_availability: '2025-05-13T00:00:00Z'
version: '13'
- end_of_life: '2026-11-12T00:00:00Z'
end_of_availability: '2026-05-12T00:00:00Z'
version: '14'
- end_of_life: '2027-11-11T00:00:00Z'
end_of_availability: '2027-05-12T00:00:00Z'
version: '15'
- end_of_life: '2028-11-09T00:00:00Z'
end_of_availability: '2028-05-09T00:00:00Z'
version: '16'
redis:
- end_of_life: null
end_of_availability: null
version: '7'
database_clusters:
description: A JSON object with a key of `databases`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
databases:
type: array
items:
$ref: '#/components/schemas/database_cluster'
example:
databases:
- id: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
name: backend
engine: pg
version: '10'
connection:
uri: >-
postgres://doadmin:wv78n3zpz42xezdk@backend-do-user-19081923-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require
database: ''
host: backend-do-user-19081923-0.db.ondigitalocean.com
port: 25060
user: doadmin
password: wv78n3zpz42xezdk
ssl: true
private_connection:
uri: >-
postgres://doadmin:wv78n3zpz42xezdk@private-backend-do-user-19081923-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require
database: ''
host: private-backend-do-user-19081923-0.db.ondigitalocean.com
port: 25060
user: doadmin
password: wv78n3zpz42xezdk
ssl: true
users:
- name: doadmin
role: primary
password: wv78n3zpz42xezdk
db_names:
- defaultdb
num_nodes: 1
region: nyc3
status: online
created_at: '2019-01-11T18:37:36Z'
maintenance_window:
day: saturday
hour: '08:45:12'
pending: true
description:
- Update TimescaleDB to version 1.2.1
- Upgrade to PostgreSQL 11.2 and 10.7 bugfix releases
size: db-s-2vcpu-4gb
tags:
- production
private_network_uuid: d455e75d-4858-4eec-8c95-da2f0a5f93a7
version_end_of_life: '2023-11-09T00:00:00Z'
version_end_of_availability: '2023-05-09T00:00:00Z'
storage_size_mib: 61440
database_cluster:
description: A JSON object with a key of `database`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
database:
$ref: '#/components/schemas/database_cluster'
required:
- database
example:
database:
id: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
name: backend
engine: pg
version: '14'
semantic_version: '14.5'
connection:
uri: >-
postgres://doadmin:wv78n3zpz42xezdk@backend-do-user-19081923-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require
database: ''
host: backend-do-user-19081923-0.db.ondigitalocean.com
port: 25060
user: doadmin
password: wv78n3zpz42xezdk
ssl: true
private_connection:
uri: >-
postgres://doadmin:wv78n3zpz42xezdk@private-backend-do-user-19081923-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require
database: ''
host: private-backend-do-user-19081923-0.db.ondigitalocean.com
port: 25060
user: doadmin
password: wv78n3zpz42xezdk
ssl: true
standby_connection:
uri: >-
postgres://doadmin:wv78n3zpz42xezdk@replica-backend-do-user-19081923-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require
database: ''
host: replica-backend-do-user-19081923-0.db.ondigitalocean.com
port: 25060
user: doadmin
password: wv78n3zpz42xezdk
ssl: true
standby_private_connection:
uri: >-
postgres://doadmin:wv78n3zpz42xezdk@private-replica-backend-do-user-19081923-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require
database: ''
host: >-
private-replica-backend-do-user-19081923-0.db.ondigitalocean.com
port: 25060
user: doadmin
password: wv78n3zpz42xezdk
ssl: true
users:
- name: doadmin
role: primary
password: wv78n3zpz42xezdk
db_names:
- defaultdb
num_nodes: 2
region: nyc3
status: creating
created_at: '2019-01-11T18:37:36Z'
maintenance_window:
day: saturday
hour: '08:45:12'
pending: true
description:
- Update TimescaleDB to version 1.2.1
- Upgrade to PostgreSQL 11.2 and 10.7 bugfix releases
size: db-s-2vcpu-4gb
tags:
- production
private_network_uuid: d455e75d-4858-4eec-8c95-da2f0a5f93a7
version_end_of_life: '2023-11-09T00:00:00Z'
version_end_of_availability: '2023-05-09T00:00:00Z'
storage_size_mib: 61440
database_config:
description: A JSON object with a key of `config`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
config:
anyOf:
- $ref: '#/components/schemas/mysql_advanced_config'
- $ref: '#/components/schemas/postgres_advanced_config'
- $ref: '#/components/schemas/redis_advanced_config'
- $ref: '#/components/schemas/kafka_advanced_config'
- $ref: '#/components/schemas/opensearch_advanced_config'
- $ref: '#/components/schemas/mongo_advanced_config'
required:
- config
example:
config:
sql_mode: >-
ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,STRICT_ALL_TABLES
sql_require_primary_key: true
ca:
description: A JSON object with a key of `ca`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
ca:
$ref: '#/components/schemas/ca'
required:
- ca
example:
ca:
certificate: >-
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVRVENDQXFtZ0F3SUJBZ0lVRUZZWTdBWFZQS0Raam9jb1lpMk00Y0dvcU0wd0RRWUpLb1pJaHZjTkFRRU0KQlFBd09qRTRNRFlHQTFVRUF3d3ZOek0zT1RaaE1XRXRaamhrTUMwME9HSmpMV0V4Wm1NdFpqbGhNVFZsWXprdwpORGhsSUZCeWIycGxZM1FnUTBFd0hoY05NakF3TnpFM01UVTFNREEyV2hjTk16QXdOekUxTVRVMU1EQTJXakE2Ck1UZ3dOZ1lEVlFRRERDODNNemM1Tm1FeFlTMW1PR1F3TFRRNFltTXRZVEZtWXkxbU9XRXhOV1ZqT1RBME9HVWcKVUhKdmFtVmpkQ0JEUVRDQ0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBTVdScXhycwpMZnpNdHZyUmxKVEw4MldYMVBLZkhKbitvYjNYcmVBY3FZd1dBUUp2Q3IycmhxSXZieVZzMGlaU0NzOHI4c3RGClljQ0R1bkxJNmUwTy9laERZYTBIT2RrMkFFRzE1ckVOVmNha2NSczcyQWlHVHNrdkNXS2VkUjFTUWswVWt0WCsKQUg4S1ExS3F5bzNtZ2Y2cVV1WUpzc3JNTXFselk3YTN1RVpEb2ZqTjN5Q3MvM21pTVJKcVcyNm1JV0IrUUlEbAo5YzdLRVF5MTZvdCtjeHVnd0lLMm9oZHMzaFY1bjBKMFVBM0I3QWRBdXY5aUl5L3JHaHlTNm5CNTdaWm9JZnAyCnFybXdOY0UrVjlIdXhQSGtRVjFOQjUwOFFudWZ4Z0E5VCtqU2VrdGVUbWFORkxqNjFXL3BtcndrTytOaWFXUTIKaGgzVXBKOEozY1BoNkErbHRnUmpSV2NEb2lsYVNwRVVpU09WemNNYVFvalZKYVJlNk9NbnZYc29NaSs3ZzdneApWcittQ0lUcGcvck9DaXpBWWQ2UFAxLzdYTjk1ZXNmU2tBQnM5c3hJakpjTUFqbDBYTEFzRmtGZVdyeHNIajlVCmJnaDNWYXdtcnpUeXhZT0RQcXV1cS9JcGlwc0RRT3Fpb2ZsUStkWEJJL3NUT0NNbVp6K0pNcG5HYXdJREFRQUIKb3o4d1BUQWRCZ05WSFE0RUZnUVVSekdDRlE3WEtUdHRDN3JzNS8ydFlQcExTZGN3RHdZRFZSMFRCQWd3QmdFQgovd0lCQURBTEJnTlZIUThFQkFNQ0FRWXdEUVlKS29aSWh2Y05BUUVNQlFBRGdnR0JBSWFKQ0dSVVNxUExtcmcvCmk3MW10b0NHUDdzeG1BVXVCek1oOEdrU25uaVdaZnZGMTRwSUtqTlkwbzVkWmpHKzZqK1VjalZtK0RIdGE1RjYKOWJPeEk5S0NFeEI1blBjRXpMWjNZYitNOTcrellxbm9zUm85S21DVFJBb2JrNTZ0WU1FS1h1aVJja2tkMm1yUQo4cGw2N2xxdThjM1V4c0dHZEZVT01wMkk3ZTNpdUdWVm5UR0ZWM3JQZUdaQ0J3WGVyUUQyY0F4UjkzS3BnWVZ2ClhUUzk5dnpSbm1HOHhhUm9EVy9FbEdXZ2xWd0Q5a1JrbXhUUkdoYTdDWVZCcjFQVWY2dVVFVjhmVFIxc1hFZnIKLytMR1JoSVVsSUhWT3l2Yzk3YnZYQURPbWF1MWZDVE5lWGtRdTNyZnZFSlBmaFlLeVIwT0V3eWVvdlhRNzl0LwpTV2ZGTjBreU1Pc1UrNVNIdHJKSEh1eWNWcU0yQlVVK083VjM1UnNwOU9MZGRZMFFVbTZldFpEVEhhSUhYYzRRCnl1Rm1OL1NhSFZtNE0wL3BTVlJQdVd6TmpxMnZyRllvSDRtbGhIZk95TUNJMjc2elE2aWhGNkdDSHlkOUJqajcKUm1UWGEyNHM3NWhmSi9YTDV2bnJSdEtpVHJlVHF6V21EOVhnUmNMQ0gyS1hJaVRtSWc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
online_migration:
description: A JSON object.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/online_migration'
example:
id: 77b28fc8-19ff-11eb-8c9c-c68e24557488
status: running
created_at: '2020-10-29T15:57:38Z'
accepted:
description: >-
The does not indicate the success or failure of any operation, just that
the request has been accepted for processing.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
firewall_rules:
description: A JSON object with a key of `rules`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
rules:
type: array
items:
$ref: '#/components/schemas/firewall_rule'
example:
rules:
- uuid: 79f26d28-ea8a-41f2-8ad8-8cfcdd020095
cluster_uuid: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
type: k8s
value: ff2a6c52-5a44-4b63-b99c-0e98e7a63d61
created_at: '2019-11-14T20:30:28Z'
- uuid: adfe81a8-0fa1-4e2d-973f-06aa5af19b44
cluster_uuid: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
type: ip_addr
value: 192.168.1.1
created_at: '2019-11-14T20:30:28Z'
- uuid: b9b42276-8295-4313-b40f-74173a7f46e6
cluster_uuid: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
type: droplet
value: '163973392'
created_at: '2019-11-14T20:30:28Z'
- uuid: 718d23e0-13d7-4129-8a00-47fb72ee0deb
cluster_uuid: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
type: tag
value: backend
created_at: '2019-11-14T20:30:28Z'
database_backups:
description: A JSON object with a key of `database_backups`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
backups:
type: array
items:
$ref: '#/components/schemas/backup'
required:
- backups
example:
backups:
- created_at: '2019-01-11T18:42:27Z'
size_gigabytes: 0.03357696
- created_at: '2019-01-12T18:42:29Z'
size_gigabytes: 0.03364864
database_replicas:
description: A JSON object with a key of `replicas`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
replicas:
type: array
items:
$ref: '#/components/schemas/database_replica'
example:
replicas:
- name: read-nyc3-01
connection:
uri: ''
database: defaultdb
host: read-nyc3-01-do-user-19081923-0.db.ondigitalocean.com
port: 25060
user: doadmin
password: wv78n3zpz42xezdk
ssl: true
private_connection:
uri: >-
postgres://doadmin:wv78n3zpz42xezdk@private-read-nyc3-01-do-user-19081923-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require
database: ''
host: >-
private-read-nyc3-01-do-user-19081923-0.db.ondigitalocean.com
port: 25060
user: doadmin
password: wv78n3zpz42xezdk
ssl: true
region: nyc3
status: online
created_at: '2019-01-11T18:37:36Z'
database_replica:
description: A JSON object with a key of `replica`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
replica:
$ref: '#/components/schemas/database_replica'
example:
replica:
name: read-nyc3-01
connection:
uri: ''
database: defaultdb
host: read-nyc3-01-do-user-19081923-0.db.ondigitalocean.com
port: 25060
user: doadmin
password: wv78n3zpz42xezdk
ssl: true
private_connection:
uri: >-
postgres://doadmin:wv78n3zpz42xezdk@private-read-nyc3-01-do-user-19081923-0.db.ondigitalocean.com:25060/defaultdb?sslmode=require
database: ''
host: private-read-nyc3-01-do-user-19081923-0.db.ondigitalocean.com
port: 25060
user: doadmin
password: wv78n3zpz42xezdk
ssl: true
region: nyc3
status: online
created_at: '2019-01-11T18:37:36Z'
events_logs:
description: A JSON object with a key of `events`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
events:
type: array
items:
$ref: '#/components/schemas/events_logs'
example:
events:
- id: pe8u2huh
cluster_name: customer-events
event_type: cluster_create
create_time: '2020-10-29T15:57:38Z'
- id: pe8ufefuh
cluster_name: customer-events
event_type: cluster_update
create_time: '2023-10-30T15:57:38Z'
users:
description: A JSON object with a key of `users`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
users:
type: array
items:
$ref: '#/components/schemas/database_user'
example:
users:
- name: app-01
role: normal
password: jge5lfxtzhx42iff
- name: doadmin
role: primary
password: wv78n3zpz42xezd
user:
description: A JSON object with a key of `user`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
user:
$ref: '#/components/schemas/database_user'
required:
- user
examples:
New User:
value:
user:
name: app-01
role: normal
password: jge5lfxtzhx42iff
New User with MySQL Auth Plugin:
value:
user:
name: app-02
role: normal
password: wv78n3zpz42xezdk
mysql_settings:
auth_plugin: mysql_native_password
New User for Postgres with replication rights:
value:
user:
name: app-02
role: normal
password: wv78n3zpz42xezdk
settings:
pg_allow_replication: true
Kafka User:
value:
user:
name: app-03
role: normal
password: qv78n3zes42xezdk
access_cert: >-
-----BEGIN CERTIFICATE-----
MIIFFjCCA/6gAwIBAgISA0AznUJmXhu08/89ZuSPC/kRMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNjExMjQwMDIzMDBaFw0x
NzAyMjIwMDIzMDBaMCQxIjAgBgNVBAMTGWNsb3VkLmFuZHJld3NvbWV0aGluZy5j
b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBIZMz8pnK6V52SVf+
CYssOfCQHAx5f0Ou5rYbq3xNh8VWHIYJCQ1QxQIxKSP6+uODSYrb2KWyurP1DwGb
8OYm0J3syEDtCUQik1cpCzpeNlAZ2f8FzXyYQAqPopxdRpsFz8DtZnVvu86XwrE4
oFPl9MReICmZfBNWylpV5qgFPoXyJ70ZAsTm3cEe3n+LBXEnY4YrVDRWxA3wZ2mz
Z03HZ1hHrxK9CMnS829U+8sK+UneZpCO7yLRPuxwhmps0wpK/YuZZfRAKF1FZRna
k/SIQ28rnWufmdg16YqqHgl5JOgnb3aslKRvL4dI2Gwnkd2IHtpZnTR0gxFXfqqb
QwuRAgMBAAGjggIaMIICFjAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLsAFcxAhFX1
MbCnzr9hEO5rL4jqMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMHAG
CCsGAQUFBwEBBGQwYjAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuaW50LXgzLmxl
dHNlbmNyeXB0Lm9yZy8wLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5s
ZXRzZW5jcnlwdC5vcmcvMCQGA1UdEQQdMBuCGWNsb3VkLmFuZHJld3NvbWV0aGlu
Zy5jb20wgf4GA1UdIASB9jCB8zAIBgZngQwBAgWrgeYGCysGAQQBgt8TAQEBMIHW
MCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCBqwYIKwYB
BQUHAgIwgZ4MgZtUaGlzIENlcnRpZmljYXRlIG1heSBvbmx5IGJlIHJlbGllZCB1
cG9uIGJ5IFJlbHlpbmcgUGFydGllcyBhbmQgb25seSQ2ziBhY2NvcmRhbmNlIHdp
dGggdGhlIENlcnRpZmljYXRlIFBvbGljeSBmb3VuZCBhdCBodHRwczovL2xldHNl
bmNyeXB0Lm9yZy9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAOZVQvrjM
PKXLARTjB5XsgfyDN3/qwLl7SmwGkPe+B+9FJpfScYG1JzVuCj/SoaPaK34G4x/e
iXwlwOXtMOtqjQYzNu2Pr2C+I+rVmaxIrCUXFmC205IMuUBEeWXG9Y/HvXQLPabD
D3Gdl5+Feink9SDRP7G0HaAwq13hI7ARxkL9p+UIY39X0dV3WOboW2Re8nrkFXJ7
q9Z6shK5QgpBfsLjtjNsQzaGV3ve1gOg25aTJGearBWOvEjJNA1wGMoKVXOtYwm/
WyWoVdCQ8HmconcbJB6xc0UZ1EjvzRr5ZIvSa5uHZD0L3m7/kpPWlAlFJ7hHASPu
UlF1zblDmg2Iaw==
-----END CERTIFICATE-----
access_key: >-
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBIZMz8pnK6V52
SVf+CYssOfCQHAx5f0Ou5rYbq3xNh8VHAIYJCQ1QxQIxKSP6+uODSYrb2KWyurP1
DwGb8OYm0J3syEDtCUQik1cpCzpeNlAZ2f8FzXyYQAqPopxdRpsFz8DtZnVvu86X
wrE4oFPl9MReICmZfBNWylpV5qgFPoXyJ70ZAsTm3cEe3n+LBXEnY4YrVDRWxA3w
Z2mzZ03HZ1hHrxK9CMnS829U+8sK+UneZpCO7yLRPuxwhmps0wpK/YuZZfRAKF1F
ZRnak/SIQ28rnWufmdg16YqqHgl5JOgnb3aslKRvL4dI2Gwnkd2IHtpZnTR0gxFX
fqqbQwuRAgMBAAECggEBAILLmkW0JzOkmLTDNzR0giyRkLoIROqDpfLtjKdwm95l
9NUBJcU4vCvXQITKt/NhtnNTexcowg8pInb0ksJpg3UGE+4oMNBXVi2UW5MQZ5cm
cVkQqgXkBF2YAY8FMaB6EML+0En2+dGR/3gIAr221xsFiXe1kHbB8Nb2c/d5HpFt
eRpLVJnK+TxSr78PcZA8DDGlSgwvgimdAaFUNO2OqB9/0E9UPyKk2ycdff/Z6ldF
0hkCLtdYTTl8Kf/OwjcuTgmA2O3Y8/CoQX/L+oP9Rvt9pWCEfuebiOmHJVPO6Y6x
gtQVEXwmF1pDHH4Qtz/e6UZTdYeMl9G4aNO2CawwcaYECgYEA57imgSOG4XsJLRh
GGncV9R/xhy4AbDWLtAMzQRX4ktvKCaHWyQV2XK2we/cu29NLv2Y89WmerTNPOU+
P8+pB31uty2ELySVn15QhKpQClVEAlxCnnNjXYrii5LOM80+lVmxvQwxVd8Yz8nj
IntyioXNBEnYS7V2RxxFGgFun1cCgYEA1V3W+Uyamhq8JS5EY0FhyGcXdHd70K49
W1ou7McIpncf9tM9acLS1hkI98rd2T69Zo8mKoV1V2hjFaKUYfNys6tTkYWeZCcJ
3rW44j9DTD+FmmjcX6b8DzfybGLehfNbCw6n67/r45DXIV/fk6XZfkx6IEGO4ODt
Nfnvx4TuI1cCgYBACDiKqwSUvmkUuweOo4IuCxyb5Ee8v98P5JIE/VRDxlCbKbpx
pxEam6aBBQVcDi+n8o0H3WjjlKc6UqbW/01YMoMrvzotxNBLz8Y0QtQHZvR6KoCG
RKCKstxTcWflzKuknbqN4RapAhNbKBDJ8PMSWfyDWNyaXzSmBdvaidbF1QKBgDI0
o4oD0Xkjg1QIYAUu9FBQmb9JAjRnW36saNBEQS/SZg4RRKknM683MtoDvVIKJk0E
sAlfX+4SXQZRPDMUMtA+Jyrd0xhj6zmhbwClvDMr20crF3fWdgcqtft1BEFmsuyW
JUMe5OWmRkjPI2+9ncDPRAllA7a8lnSV/Crph5N/AoGBAIK249temKrGe9pmsmAo
QbNuYSmwpnMoAqdHTrl70HEmK7ob6SIVmsR8QFAkH7xkYZc4Bxbx4h1bdpozGB+/
AangbiaYJcAOD1QyfiFbflvI1RFeHgrk7VIafeSeQv6qu0LLMi2zUbpgVzxt78Wg
eTuK2xNR0PIM8OI7pRpgyj1I
-----END PRIVATE KEY-----
settings:
acl:
- id: acl128aaaa99239
permission: produceconsume
topic: customer-events
- id: acl293098flskdf
permission: produce
topic: customer-events.*
- id: acl128ajei20123
permission: consume
topic: customer-events
databases:
description: A JSON object with a key of `databases`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
dbs:
type: array
items:
$ref: '#/components/schemas/database'
example:
dbs:
- name: alpha
- name: defaultdb
database:
description: A JSON object with a key of `db`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
db:
$ref: '#/components/schemas/database'
required:
- db
example:
db:
name: alpha
connection_pools:
description: A JSON object with a key of `pools`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/connection_pools'
example:
pools:
- user: doadmin
name: reporting-pool
size: 10
db: defaultdb
mode: session
connection:
uri: >-
postgres://doadmin:wv78n3zpz42xezdk@backend-do-user-19081923-0.db.ondigitalocean.com:25061/foo?sslmode=require
database: foo
host: backend-do-user-19081923-0.db.ondigitalocean.com
port: 25061
user: doadmin
password: wv78n3zpz42xezdk
ssl: true
- user: doadmin
name: backend-pool
size: 10
db: defaultdb
mode: transaction
connection:
uri: >-
postgres://doadmin:wv78n3zpz42xezdk@backend-do-user-19081923-0.db.ondigitalocean.com:25061/backend-pool?sslmode=require
database: backend-pool
host: backend-do-user-19081923-0.db.ondigitalocean.com
port: 25061
user: doadmin
password: wv78n3zpz42xezdk
ssl: true
connection_pool:
description: A JSON object with a key of `pool`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
pool:
$ref: '#/components/schemas/connection_pool'
required:
- pool
example:
pool:
user: doadmin
name: backend-pool
size: 10
db: defaultdb
mode: transaction
connection:
uri: >-
postgres://doadmin:wv78n3zpz42xezdk@backend-do-user-19081923-0.db.ondigitalocean.com:25061/backend-pool?sslmode=require
database: backend-pool
host: backend-do-user-19081923-0.db.ondigitalocean.com
port: 25061
user: doadmin
password: wv78n3zpz42xezdk
ssl: true
eviction_policy_response:
description: A JSON string with a key of `eviction_policy`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
required:
- eviction_policy
properties:
eviction_policy:
$ref: '#/components/schemas/eviction_policy_model'
sql_mode:
description: A JSON string with a key of `sql_mode`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/sql_mode'
example:
sql_mode: >-
ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,STRICT_ALL_TABLES
kafka_topics:
description: A JSON object with a key of `topics`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
topics:
type: array
items:
$ref: '#/components/schemas/kafka_topic'
example:
topics:
- name: customer-events
state: active
replication_factor: 2
partition_count: 3
- name: engineering-events
state: configuring
replication_factor: 2
partition_count: 10
kafka_topic:
description: A JSON object with a key of `topic`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
topic:
$ref: '#/components/schemas/kafka_topic_verbose'
example:
topic:
name: customer-events
partitions:
- size: 4096
id: 0
in_sync_replicas: 3
earliest_offset: 0
consumer_groups:
- name: consumer-group-1
offset: 0
- name: consumer-group-2
offset: 1
- size: 4096
id: 1
in_sync_replicas: 3
earliest_offset: 0
consumer_groups: null
replication_factor: 3
state: active
config:
cleanup_policy: delete
compression_type: producer
delete_retention_ms: 86400000
file_delete_delay_ms: 60000
flush_messages: 9223372036854776000
flush_ms: 9223372036854776000
index_interval_bytes: 4096
max_compaction_lag_ms: 9223372036854776000
max_message_bytes: 1048588
message_down_conversion_enable: true
message_format_version: 3.0-IV1
message_timestamp_difference_max_ms: 9223372036854776000
message_timestamp_type: create_time
min_cleanable_dirty_ratio: 0.5
min_compaction_lag_ms: 0
min_insync_replicas: 1
preallocate: false
retention_bytes: -1
retention_ms: 604800000
segment_bytes: 209715200
segment_index_bytes: 10485760
segment_jitter_ms: 0
segment_ms: 604800000
logsinks:
description: A JSON object with a key of `sinks`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
sinks:
type: array
items:
allOf:
- $ref: '#/components/schemas/logsink_verbose'
required:
- sink_id
- sink_name
- sink_type
- config
example:
sinks:
- sink_id: 799990b6-d551-454b-9ffe-b8618e9d6272
sink_name: logs-sink-1
sink_type: rsyslog
config:
server: 192.168.0.1
port: 514
tls: false
format: rfc5424
- sink_id: d6e95157-5f58-48d0-9023-8cfb409d102a
sink_name: logs-sink-2
sink_type: rsyslog
config:
server: 192.168.10.1
port: 514
tls: false
format: rfc3164
logsink:
description: A JSON object with a key of `sink`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
sink:
allOf:
- $ref: '#/components/schemas/logsink_verbose'
required:
- sink_id
- sink_name
- sink_type
- config
examples:
Create an opensearch logsink:
value:
sink:
sink_id: dfcc9f57d86bf58e321c2c6c31c7a971be244ac7
sink_name: logs-sink
sink_type: opensearch
config:
url: https://user:passwd@192.168.0.1:25060
index_prefix: opensearch-logs
index_days_max: 5
Create an elasticsearch logsink:
value:
sink:
sink_id: dfcc9f57d86bf58e321c2c6c31c7a971be244ac7
sink_name: logs-sink
sink_type: elasticsearch
config:
url: https://user:passwd@192.168.0.1:25060
index_prefix: elasticsearch-logs
index_days_max: 5
Create a rsyslog logsink:
value:
sink:
sink_id: dfcc9f57d86bf58e321c2c6c31c7a971be244ac7
sink_name: logs-sink
sink_type: rsyslog
config:
server: 192.168.0.1
port: 514
tls: false
format: rfc5424
database_metrics_auth:
description: A JSON object with a key of `credentials`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
credentials:
$ref: '#/components/schemas/database_metrics_credentials'
example:
credentials:
basic_auth_username: username
basic_auth_password: password
opensearch_indexes:
description: A JSON object with a key of `indexes`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
indexes:
type: array
items:
$ref: '#/components/schemas/opensearch_index'
example:
indexes:
- index_name: sample-data
number_of_shards: 2
number_of_replicas: 3
size: 208
created_time: '2021-01-01T00:00:00Z'
status: open
health: green
- index_name: logs-*
number_of_shards: 2
number_of_replicas: 3
size: 208
created_time: '2021-01-01T00:00:00Z'
status: open
health: green
all_domains_response:
description: >-
The response will be a JSON object with a key called `domains`. The
value of this will be an array of Domain objects, each of which contain
the standard domain attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
domains:
type: array
items:
$ref: '#/components/schemas/domain'
description: Array of volumes.
required:
- domains
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
domains:
- name: example.com
ttl: 1800
zone_file: >
$ORIGIN example.com.
$TTL 1800
example.com. IN SOA ns1.digitalocean.com.
hostmaster.example.com. 1415982609 10800 3600 604800 1800
example.com. 1800 IN NS ns1.digitalocean.com.
example.com. 1800 IN NS ns2.digitalocean.com.
example.com. 1800 IN NS ns3.digitalocean.com.
example.com. 1800 IN A 1.2.3.4
links: {}
meta:
total: 1
create_domain_response:
description: >-
The response will be a JSON object with a key called `domain`. The value
of this will be an object that contains the standard attributes
associated with a domain.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
domain:
$ref: '#/components/schemas/domain'
example:
domain:
name: example.com
ttl: 1800
zone_file: null
existing_domain:
description: >-
The response will be a JSON object with a key called `domain`. The value
of this will be an object that contains the standard attributes defined
for a domain.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
domain:
$ref: '#/components/schemas/domain'
example:
domain:
name: example.com
ttl: 1800
zone_file: >
$ORIGIN example.com.
$TTL 1800
example.com. IN SOA ns1.digitalocean.com.
hostmaster.example.com. 1415982611 10800 3600 604800 1800
example.com. 1800 IN NS ns1.digitalocean.com.
example.com. 1800 IN NS ns2.digitalocean.com.
example.com. 1800 IN NS ns3.digitalocean.com.
example.com. 1800 IN A 1.2.3.4
all_domain_records_response:
description: >-
The response will be a JSON object with a key called `domain_records`.
The value of this will be an array of domain record objects, each of
which contains the standard domain record attributes. For attributes
that are not used by a specific record type, a value of `null` will be
returned. For instance, all records other than SRV will have `null` for
the `weight` and `port` attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
domain_records:
type: array
items:
$ref: '#/components/schemas/domain_record'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
examples:
All Domain Records:
$ref: '#/components/examples/domain_records_all'
created_domain_record:
description: >-
The response body will be a JSON object with a key called
`domain_record`. The value of this will be an object representing the
new record. Attributes that are not applicable for the record type will
be set to `null`. An `id` attribute is generated for each record as part
of the object.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
domain_record:
$ref: '#/components/schemas/domain_record'
example:
domain_record:
id: 28448433
type: A
name: www
data: 162.10.66.0
priority: null
port: null
ttl: 1800
weight: null
flags: null
tag: null
domain_record:
description: >-
The response will be a JSON object with a key called `domain_record`.
The value of this will be a domain record object which contains the
standard domain record attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
domain_record:
$ref: '#/components/schemas/domain_record'
example:
domain_record:
id: 3352896
type: A
name: blog
data: 162.10.66.0
priority: null
port: null
ttl: 1800
weight: null
flags: null
tag: null
all_droplets:
description: A JSON object with a key of `droplets`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
droplets:
type: array
items:
$ref: '#/components/schemas/droplet'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
examples:
All Droplets:
$ref: '#/components/examples/droplets_all'
Droplets Filtered By Tag:
$ref: '#/components/examples/droplets_tagged'
GPU Droplets:
$ref: '#/components/examples/gpu_droplets'
droplet_create:
description: Accepted
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
oneOf:
- title: Single Droplet Response
properties:
droplet:
$ref: '#/components/schemas/droplet'
links:
type: object
properties:
actions:
type: array
items:
$ref: '#/components/schemas/action_link'
required:
- droplet
- links
- title: Multiple Droplet Response
properties:
droplets:
type: array
items:
$ref: '#/components/schemas/droplet'
links:
type: object
properties:
actions:
type: array
items:
$ref: '#/components/schemas/action_link'
required:
- droplets
- links
examples:
Single Droplet Create Response:
$ref: '#/components/examples/droplet_create_response'
Multiple Droplet Create Response:
$ref: '#/components/examples/droplet_multi_create_response'
no_content_with_content_type:
description: >-
The action was successful and the response body is empty. This response
has content-type set.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content-type:
$ref: '#/components/headers/content-type'
existing_droplet:
description: >
The response will be a JSON object with a key called `droplet`. This
will be
set to a JSON object that contains the standard Droplet attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
droplet:
$ref: '#/components/schemas/droplet'
examples:
Single Droplet:
$ref: '#/components/examples/droplet_single'
all_droplet_backups:
description: A JSON object with an `backups` key.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
backups:
type: array
items:
$ref: '#/components/schemas/droplet_snapshot'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
backups:
- id: 67539192
name: web-01- 2020-07-29
distribution: Ubuntu
slug: null
public: false
regions:
- nyc3
created_at: '2020-07-29T01:44:35Z'
min_disk_size: 50
size_gigabytes: 2.34
type: backup
links: {}
meta:
total: 1
droplet_backup_policy:
description: >
The response will be a JSON object with a key called `policy`. This will
be
set to a JSON object that contains the standard Droplet backup policy
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
policy:
$ref: '#/components/schemas/droplet_backup_policy_record'
example:
policy:
droplet_id: 444909706
backup_enabled: true
backup_policy:
plan: weekly
weekday: SUN
hour: 20
window_length_hours: 4
retention_period_days: 28
next_backup_window:
start: '2024-09-15T20:00:00Z'
end: '2024-09-16T00:00:00Z'
all_droplet_backup_policies:
description: >-
A JSON object with a `policies` key set to a map. The keys are Droplet
IDs and the values are objects containing the backup policy information
for each Droplet.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
policies:
description: >
A map where the keys are the Droplet IDs and the values
are
objects containing the backup policy information for each
Droplet.
additionalProperties:
$ref: '#/components/schemas/droplet_backup_policy_record'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
policies:
'436444618':
droplet_id: 436444618
backup_enabled: false
'444909314':
droplet_id: 444909314
backup_enabled: true
backup_policy:
plan: daily
hour: 20
window_length_hours: 4
retention_period_days: 7
next_backup_window:
start: '2024-09-13T20:00:00Z'
end: '2024-09-14T00:00:00Z'
'444909706':
droplet_id: 444909706
backup_enabled: true
backup_policy:
plan: weekly
weekday: SUN
hour: 20
window_length_hours: 4
retention_period_days: 28
next_backup_window:
start: '2024-09-15T20:00:00Z'
end: '2024-09-16T00:00:00Z'
links: {}
meta:
total: 3
droplets_supported_backup_policies:
description: >-
A JSON object with an `supported_policies` key set to an array of
objects describing each supported backup policy.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
supported_policies:
type: array
items:
$ref: '#/components/schemas/supported_droplet_backup_policy'
example:
supported_policies:
- name: weekly
possible_window_starts:
- 0
- 4
- 8
- 12
- 16
- 20
window_length_hours: 4
retention_period_days: 28
possible_days:
- SUN
- MON
- TUE
- WED
- THU
- FRI
- SAT
- name: daily
possible_window_starts:
- 0
- 4
- 8
- 12
- 16
- 20
window_length_hours: 4
retention_period_days: 7
possible_days: []
all_droplet_snapshots:
description: A JSON object with an `snapshots` key.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
snapshots:
type: array
items:
$ref: '#/components/schemas/droplet_snapshot'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
snapshots:
- id: 6372321
name: web-01-1595954862243
created_at: '2020-07-28T16:47:44Z'
regions:
- nyc3
- sfo3
min_disk_size: 25
size_gigabytes: 2.34
type: snapshot
links: {}
meta:
total: 1
all_droplet_actions:
description: A JSON object with an `actions` key.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
actions:
type: array
items:
$ref: '#/components/schemas/action'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
actions:
- id: 982864273
status: completed
type: create
started_at: '2020-07-20T19:37:30Z'
completed_at: '2020-07-20T19:37:45Z'
resource_id: 3164444
resource_type: droplet
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- m-1vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
region_slug: nyc3
links: {}
meta:
total: 1
droplet_action:
description: The response will be a JSON object with a key called `action`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
action:
$ref: '#/components/schemas/action'
droplet_actions_response:
description: The response will be a JSON object with a key called `actions`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
actions:
type: array
items:
$ref: '#/components/schemas/action'
all_kernels:
description: A JSON object that has a key called `kernels`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
kernels:
type: array
items:
$ref: '#/components/schemas/kernel'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
kernels:
- id: 7515
name: DigitalOcean GrubLoader v0.2 (20160714)
version: 2016.07.13-DigitalOcean_loader_Ubuntu
links:
pages:
next: >-
https://api.digitalocean.com/v2/droplets/3164444/kernels?page=2&per_page=1
last: >-
https://api.digitalocean.com/v2/droplets/3164444/kernels?page=171&per_page=1
meta:
total: 171
all_firewalls:
description: A JSON object that has a key called `firewalls`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
firewalls:
type: array
items:
$ref: '#/components/schemas/firewall'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
firewalls:
- id: bb4b2611-3d72-467b-8602-280330ecd65c
status: succeeded
created_at: '2020-05-23T21:24:00Z'
pending_changes:
- droplet_id: 8043964
removing: true
status: waiting
name: firewall
droplet_ids:
- 89989
- 33322
tags:
- base-image
- prod
inbound_rules:
- protocol: udp
ports: 8000-9000
sources:
addresses:
- 1.2.3.4
- 18.0.0.0/8
droplet_ids:
- 8282823
- 3930392
load_balancer_uids:
- 4de7ac8b-495b-4884-9a69-1050c6793cd6
tags:
- base-image
- dev
outbound_rules:
- protocol: tcp
ports: 7000-9000
destinations:
addresses:
- 1.2.3.4
- 18.0.0.0/8
droplet_ids:
- 3827493
- 213213
load_balancer_uids:
- 4de7ac8b-495b-4884-9a69-1050c6793cd6
tags:
- base-image
- prod
links:
pages: {}
meta:
total: 1
neighbor_droplets:
description: A JSON object with an `droplets` key.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
droplets:
type: array
items:
$ref: '#/components/schemas/droplet'
associated_resources_list:
description: >-
A JSON object containing `snapshots`, `volumes`, and `volume_snapshots`
keys.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
reserved_ips:
type: array
items:
$ref: '#/components/schemas/associated_resource'
floating_ips:
type: array
items:
$ref: '#/components/schemas/associated_resource'
snapshots:
type: array
items:
$ref: '#/components/schemas/associated_resource'
volumes:
type: array
items:
$ref: '#/components/schemas/associated_resource'
volume_snapshots:
type: array
items:
$ref: '#/components/schemas/associated_resource'
example:
reserved_ips:
- id: '6186916'
name: 45.55.96.47
cost: '4.00'
floating_ips:
- id: '6186916'
name: 45.55.96.47
cost: '4.00'
snapshots:
- id: '61486916'
name: ubuntu-s-1vcpu-1gb-nyc1-01-1585758823330
cost: '0.05'
volumes:
- id: ba49449a-7435-11ea-b89e-0a58ac14480f
name: volume-nyc1-01
cost: '10.00'
volume_snapshots:
- id: edb0478d-7436-11ea-86e6-0a58ac144b91
name: volume-nyc1-01-1585758983629
cost: '0.04'
associated_resources_status:
description: >-
A JSON object containing containing the status of a request to destroy a
Droplet and its associated resources.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/associated_resource_status'
example:
droplet:
id: '187000742'
name: ubuntu-s-1vcpu-1gb-nyc1-01
destroyed_at: '2020-04-01T18:11:49Z'
resources:
reserved_ips:
- id: '6186916'
name: 45.55.96.47
destroyed_at: '2020-04-01T18:11:44Z'
floating_ips:
- id: '6186916'
name: 45.55.96.47
destroyed_at: '2020-04-01T18:11:44Z'
snapshots:
- id: '61486916'
name: ubuntu-s-1vcpu-1gb-nyc1-01-1585758823330
destroyed_at: '2020-04-01T18:11:44Z'
volumes: []
volume_snapshots:
- id: edb0478d-7436-11ea-86e6-0a58ac144b91
name: volume-nyc1-01-1585758983629
destroyed_at: '2020-04-01T18:11:44Z'
completed_at: '2020-04-01T18:11:49Z'
failures: 0
conflict:
description: Conflict
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: conflict
message: The request could not be completed due to a conflict.
all_autoscale_pools:
description: A JSON object with a key of `autoscale_pools`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
autoscale_pools:
type: array
items:
$ref: '#/components/schemas/autoscale_pool'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
examples:
All Autoscale Pools:
$ref: '#/components/examples/autoscale_pools_all'
autoscale_pool_create:
description: Accepted
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
autoscale_pool:
$ref: '#/components/schemas/autoscale_pool'
examples:
Autoscale Create Response Dynamic Config:
$ref: '#/components/examples/autoscale_create_response_dynamic'
Autoscale Create Response Static Config:
$ref: '#/components/examples/autoscale_create_response_static'
existing_autoscale_pool:
description: >
The response will be a JSON object with a key called `autoscale_pool`.
This will be
set to a JSON object that contains the standard autoscale pool
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
autoscale_pool:
$ref: '#/components/schemas/autoscale_pool'
examples:
Single Autoscale Pool:
$ref: '#/components/examples/autoscale_pool_single'
all_members:
description: A JSON object with a key of `droplets`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
droplets:
type: array
items:
$ref: '#/components/schemas/member'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
examples:
All members:
$ref: '#/components/examples/members_all'
history_events:
description: A JSON object with a key of `history`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
history:
type: array
items:
$ref: '#/components/schemas/history'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
examples:
All History Events:
$ref: '#/components/examples/history_all'
list_firewalls_response:
description: >-
To list all of the firewalls available on your account, send a GET
request to `/v2/firewalls`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
firewalls:
type: array
items:
$ref: '#/components/schemas/firewall'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
firewalls:
- id: fb6045f1-cf1d-4ca3-bfac-18832663025b
name: firewall
status: succeeded
inbound_rules:
- protocol: tcp
ports: '80'
sources:
load_balancer_uids:
- 4de7ac8b-495b-4884-9a69-1050c6793cd6
- protocol: tcp
ports: '22'
sources:
tags:
- gateway
addresses:
- 18.0.0.0/8
outbound_rules:
- protocol: tcp
ports: '80'
destinations:
addresses:
- 0.0.0.0/0
- '::/0'
created_at: '2017-05-23T21:23:59Z'
droplet_ids:
- 8043964
tags: []
pending_changes: []
links: {}
meta:
total: 1
create_firewall_response:
description: >-
The response will be a JSON object with a firewall key. This will be set
to an object containing the standard firewall attributes
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
firewall:
$ref: '#/components/schemas/firewall'
example:
firewall:
id: bb4b2611-3d72-467b-8602-280330ecd65c
name: firewall
status: waiting
inbound_rules:
- protocol: tcp
ports: '80'
sources:
load_balancer_uids:
- 4de7ac8b-495b-4884-9a69-1050c6793cd6
- protocol: tcp
ports: '22'
sources:
tags:
- gateway
addresses:
- 18.0.0.0/8
outbound_rules:
- protocol: tcp
ports: '80'
destinations:
addresses:
- 0.0.0.0/0
- '::/0'
created_at: '2017-05-23T21:24:00Z'
droplet_ids:
- 8043964
tags: []
pending_changes:
- droplet_id: 8043964
removing: false
status: waiting
bad_request:
description: Bad Request
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: bad_request
message: error parsing request body
request_id: 4851a473-1621-42ea-b2f9-5071c0ea8414
get_firewall_response:
description: >-
The response will be a JSON object with a firewall key. This will be set
to an object containing the standard firewall attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
firewall:
$ref: '#/components/schemas/firewall'
example:
firewall:
id: bb4b2611-3d72-467b-8602-280330ecd65c
name: firewall
status: succeeded
inbound_rules:
- protocol: tcp
ports: '80'
sources:
load_balancer_uids:
- 4de7ac8b-495b-4884-9a69-1050c6793cd6
- protocol: tcp
ports: '22'
sources:
tags:
- gateway
addresses:
- 18.0.0.0/8
outbound_rules:
- protocol: tcp
ports: '80'
destinations:
addresses:
- 0.0.0.0/0
- '::/0'
created_at: '2017-05-23T21:24:00Z'
droplet_ids:
- 8043964
tags: []
pending_changes: []
put_firewall_response:
description: >-
The response will be a JSON object with a `firewall` key. This will be
set to an object containing the standard firewall attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
firewall:
$ref: '#/components/schemas/firewall'
example:
firewall:
id: bb4b2611-3d72-467b-8602-280330ecd65c
name: frontend-firewall
inbound_rules:
- protocol: tcp
ports: '80'
sources:
load_balancer_uids:
- 4de7ac8b-495b-4884-9a69-1050c6793cd6
- protocol: tcp
ports: '22'
sources:
tags:
- gateway
addresses:
- 18.0.0.0/8
outbound_rules:
- protocol: tcp
ports: '80'
destinations:
addresses:
- 0.0.0.0/0
- '::/0'
created_at: '2020-05-23T21:24:00Z'
droplet_ids:
- 8043964
tags:
- frontend
status: waiting
pending_changes:
- droplet_id: 8043964
removing: false
status: waiting
floating_ip_list:
description: >-
The response will be a JSON object with a key called `floating_ips`.
This will be set to an array of floating IP objects, each of which will
contain the standard floating IP attributes
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
floating_ips:
type: array
items:
$ref: '#/components/schemas/floating_ip'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
floating_ips:
- ip: 45.55.96.47
droplet: null
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
locked: false
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
links: {}
meta:
total: 1
floating_ip_created:
description: >-
The response will be a JSON object with a key called `floating_ip`. The
value of this will be an object that contains the standard attributes
associated with a floating IP.
When assigning a floating IP to a Droplet at same time as it created,
the response's `links` object will contain links to both the Droplet and
the assignment action. The latter can be used to check the status of the
action.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
floating_ip:
$ref: '#/components/schemas/floating_ip'
links:
type: object
properties:
droplets:
type: array
items:
$ref: '#/components/schemas/action_link'
actions:
type: array
items:
$ref: '#/components/schemas/action_link'
examples:
floating_ip_assigning:
$ref: '#/components/examples/floating_ip_assigning'
floating_ip_reserving:
$ref: '#/components/examples/floating_ip_reserving'
floating_ip:
description: >-
The response will be a JSON object with a key called `floating_ip`. The
value of this will be an object that contains the standard attributes
associated with a floating IP.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
floating_ip:
$ref: '#/components/schemas/floating_ip'
examples:
floating_ip_assigned:
$ref: '#/components/examples/floating_ip_assigned'
floating_ip_reserved:
$ref: '#/components/examples/floating_ip_reserved'
floating_ip_actions:
description: >-
The results will be returned as a JSON object with an `actions` key.
This will be set to an array filled with action objects containing the
standard floating IP action attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
actions:
type: array
items:
$ref: '#/components/schemas/action'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
actions:
- id: 72531856
status: completed
type: reserve_ip
started_at: '2015-11-21T21:51:09Z'
completed_at: '2015-11-21T21:51:09Z'
resource_id: 758604197
resource_type: floating_ip
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
available: true
region_slug: nyc3
links: {}
meta:
total: 1
floating_ip_action:
description: >-
The response will be an object with a key called `action`. The value of
this will be an object that contains the standard floating IP action
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
action:
allOf:
- $ref: '#/components/schemas/action'
- type: object
properties:
project_id:
type: string
format: uuid
example: 746c6152-2fa2-11ed-92d3-27aaa54e4988
description: >-
The UUID of the project to which the reserved IP
currently belongs.
example:
action:
id: 72531856
status: completed
type: assign_ip
started_at: '2015-11-12T17:51:03Z'
completed_at: '2015-11-12T17:51:14Z'
resource_id: 758604968
resource_type: floating_ip
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
available: true
region_slug: nyc3
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
list_namespaces:
description: >-
An array of JSON objects with a key called `namespaces`. Each object
represents a namespace and contains
the properties associated with it.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
namespaces:
type: array
items:
$ref: '#/components/schemas/namespace_info'
namespace_created:
description: >-
A JSON response object with a key called `namespace`. The object
contains the properties associated
with the namespace.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
namespace:
$ref: '#/components/schemas/namespace_info'
namespace_bad_request:
description: Bad Request.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: bad_request
message: 'Invalid request payload: missing label field'
request_id: 4851a473-1621-42ea-b2f9-5071c0ea8414
namespace_limit_reached:
description: Limit Reached
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: unprocessable_entity
message: namespace limit reached
request_id: a3275238-3d04-4405-a123-55c389b406c0
namespace_not_allowed:
description: Not Allowed.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: forbidden
message: not allowed to get namespace
request_id: b11e45a4-892c-48c9-9001-b6cffe9fe795
namespace_not_found:
description: Bad Request.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: not_found
message: namespace not found
request_id: 88d17b7a-630b-4083-99ce-5b91045efdb4
list_triggers:
description: >-
An array of JSON objects with a key called `namespaces`. Each object
represents a namespace and contains
the properties associated with it.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
triggers:
type: array
items:
$ref: '#/components/schemas/trigger_info'
trigger_response:
description: >-
A JSON response object with a key called `trigger`. The object contains
the properties associated
with the trigger.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
trigger:
$ref: '#/components/schemas/trigger_info'
trigger_bad_request:
description: Bad Request.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: bad_request
message: >-
validating create trigger: validation error: missing trigger name,
missing function name, missing source details
request_id: 4851a473-1621-42ea-b2f9-5071c0ea8414
trigger_limit_reached:
description: Limit Reached
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: unprocessable_entity
message: triggers limit reached
request_id: 7ba99a43-6618-4fe0-9af7-092752ad0d56
trigger_not_found:
description: Bad Request.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
examples:
namespace not found:
value:
id: not_found
message: namespace not found
request_id: 88d17b7a-630b-4083-99ce-5b91045efdb4
trigger not found:
value:
id: not_found
message: trigger not found
request_id: 88d17b7a-630b-4083-99ce-5b91045efdb4
all_images:
description: >-
The response will be a JSON object with a key called `images`. This
will be set to an array of image objects, each of which will contain the
standard image attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
images:
type: array
items:
$ref: '#/components/schemas/image'
required:
- images
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
examples:
All:
$ref: '#/components/examples/images_all'
Snapshots:
$ref: '#/components/examples/images_snapshots'
Distribution:
$ref: '#/components/examples/images_distribution'
Custom:
$ref: '#/components/examples/images_custom'
Application:
$ref: '#/components/examples/images_application'
Tagged:
$ref: '#/components/examples/images_tagged'
new_custom_image:
description: >-
The response will be a JSON object with a key set to `image`. The value
of this will be an image object containing a subset of the standard
image attributes as listed below, including the image's `id` and
`status`. After initial creation, the `status` will be `NEW`. Using the
image's id, you may query the image's status by sending a `GET` request
to the `/v2/images/$IMAGE_ID` endpoint. When the `status` changes to
`available`, the image will be ready for use.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
image:
$ref: '#/components/schemas/image'
example:
image:
created_at: '2018-09-20T19:28:00Z'
description: Cloud-optimized image w/ small footprint
distribution: Ubuntu
error_message: ''
id: 38413969
name: ubuntu-18.04-minimal
regions: []
type: custom
tags:
- base-image
- prod
status: NEW
existing_image:
description: >-
The response will be a JSON object with a key called `image`. The value
of this will be an image object containing the standard image
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
image:
$ref: '#/components/schemas/image'
required:
- image
example:
image:
id: 6918990
name: 14.04 x64
distribution: Ubuntu
slug: ubuntu-16-04-x64
public: true
regions:
- nyc1
- ams1
- sfo1
- nyc2
- ams2
- sgp1
- lon1
- nyc3
- ams3
- nyc3
created_at: '2014-10-17T20:24:33Z'
min_disk_size: 20
size_gigabytes: 2.34
description: ''
tags: []
status: available
error_message: ''
updated_image:
description: >-
The response will be a JSON object with a key set to `image`. The value
of this will be an image object containing the standard image
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
image:
$ref: '#/components/schemas/image'
required:
- image
example:
image:
id: 7938391
name: new-image-name
distribution: Ubuntu
slug: null
public: false
regions:
- nyc3
- nyc3
created_at: '2014-11-14T16:44:03Z'
min_disk_size: 20
size_gigabytes: 2.34
description: ''
tags: []
status: available
error_message: ''
get_image_actions_response:
description: >-
The results will be returned as a JSON object with an `actions` key.
This will be set to an array filled with action objects containing the
standard action attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
actions:
type: array
items:
$ref: '#/components/schemas/action'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
actions:
- id: 29410565
status: completed
type: transfer
started_at: '2014-07-25T15:04:21Z'
completed_at: '2014-07-25T15:10:20Z'
resource_id: 7555620
resource_type: image
region:
name: New York 2
slug: nyc2
sizes:
- s-1vcpu-3gb
- m-1vcpu-8gb
- s-3vcpu-1gb
- s-1vcpu-2gb
- s-2vcpu-2gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-1vcpu-1gb
- c-1vcpu-2gb
- s-24vcpu-128gb
features:
- private_networking
- backups
- ipv6
- metadata
- server_id
- install_agent
- storage
- image_transfer
available: true
region_slug: nyc2
links:
pages:
last: >-
https://api.digitalocean.com/v2/images/7555620/actions?page=5&per_page=1
next: >-
https://api.digitalocean.com/v2/images/7555620/actions?page=2&per_page=1
meta:
total: 5
post_image_action_response:
description: >-
The response will be a JSON object with a key called `action`. The value
of this will be an object containing the standard image action
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/action'
example:
action:
id: 36805527
status: in-progress
type: transfer
started_at: '2014-11-14T16:42:45Z'
completed_at: null
resource_id: 7938269
resource_type: image
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-3gb
- m-1vcpu-8gb
- s-3vcpu-1gb
- s-1vcpu-2gb
- s-2vcpu-2gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-1vcpu-1gb
- c-1vcpu-2gb
- s-24vcpu-128gb
features:
- private_networking
- backups
- ipv6
- metadata
- server_id
- install_agent
- storage
- image_transfer
available: true
region_slug: nyc3
get_image_action_response:
description: >-
The response will be an object with a key called `action`. The value of
this will be an object that contains the standard image action
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/action'
example:
action:
id: 36805527
status: in-progress
type: transfer
started_at: '2014-11-14T16:42:45Z'
completed_at: null
resource_id: 7938269
resource_type: image
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-3gb
- m-1vcpu-8gb
- s-3vcpu-1gb
- s-1vcpu-2gb
- s-2vcpu-2gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-1vcpu-1gb
- c-1vcpu-2gb
- s-24vcpu-128gb
features:
- private_networking
- backups
- ipv6
- metadata
- server_id
- install_agent
- storage
- image_transfer
available: true
region_slug: nyc3
all_clusters:
description: >
The response will be a JSON object with a key called
`kubernetes_clusters`.
This will be set to an array of objects, each of which will contain the
standard Kubernetes cluster attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
kubernetes_clusters:
type: array
items:
$ref: '#/components/schemas/cluster'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
examples:
All Kubernetes Clusters:
$ref: '#/components/examples/kubernetes_clusters_all'
cluster_create:
description: >
The response will be a JSON object with a key called
`kubernetes_cluster`. The
value of this will be an object containing the standard attributes of a
Kubernetes cluster.
The IP address and cluster API server endpoint will not be available
until the
cluster has finished provisioning. The initial value of the cluster's
`status.state` attribute will be `provisioning`. When the cluster is
ready,
this will transition to `running`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
kubernetes_cluster:
$ref: '#/components/schemas/cluster'
examples:
Kubernetes Cluster Response:
$ref: '#/components/examples/kubernetes_clusters_create_basic_response'
Kubernetes Cluster with Multiple Node Pools Response:
$ref: '#/components/examples/kubernetes_clusters_multi_pool_response'
existing_cluster:
description: >
The response will be a JSON object with a key called
`kubernetes_cluster`. The
value of this will be an object containing the standard attributes of a
Kubernetes cluster.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
kubernetes_cluster:
$ref: '#/components/schemas/cluster'
examples:
Single Kubernetes Cluster:
$ref: '#/components/examples/kubernetes_single'
updated_cluster:
description: >
The response will be a JSON object with a key called
`kubernetes_cluster`. The
value of this will be an object containing the standard attributes of a
Kubernetes cluster.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
kubernetes_cluster:
$ref: '#/components/schemas/cluster'
examples:
Updated Kubernetes Cluster:
$ref: '#/components/examples/kubernetes_updated'
associated_kubernetes_resources_list:
description: >-
The response will be a JSON object containing `load_balancers`,
`volumes`, and `volume_snapshots` keys. Each will be set to an array of
objects containing the standard attributes for associated resources.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/associated_kubernetes_resources'
kubeconfig:
description: A kubeconfig file for the cluster in YAML format.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/yaml:
example: |
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURUxCUUF3TXpFVk1CTUdBMVVFQ2ftTVJHbG4KYVhSaGJFOWpaV0Z1TVJvd0dUSREERXhGck9ITmhZWE1nUTJ4MWMzUmxjaUJEUVRBZUZ3MHhPREV4TVRVeApOakF3TWpCYUZ3MHpPREV4TVRVeE5qQXdNakJhTURNeEZUQVRCZ05WQkFvVERFUnBaMmwwWVd4UFkyVmhiakVhCk1CZ0dBMVVFQXhNUmF6aHpZV0Z6SUVOc2RYTjBaWElnUTBFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFDK2Z0L05Nd3pNaUxFZlFvTFU2bDgrY0hMbWttZFVKdjl4SmlhZUpIU0dZOGhPZFVEZQpGd1Zoc0pDTnVFWkpJUFh5Y0orcGpkU3pYc1lFSE03WVNKWk9xNkdaYThPMnZHUlJjN2ZQaUFJaFBRK0ZpUmYzCmRhMHNIUkZlM2hCTmU5ZE5SeTliQ2VCSTRSUlQrSEwzRFR3L2I5KytmRkdZQkRoVTEvTTZUWWRhUHR3WU0rdWgKb1pKcWJZVGJZZTFhb3R1ekdnYUpXaXRhdFdHdnNJYU8xYWthdkh0WEIOOHFxa2lPemdrSDdvd3RVY3JYM05iawozdmlVeFU4TW40MmlJaGFyeHNvTnlwdGhHOWZLMi9OdVdKTXJJS2R0Mzhwc0tkdDBFbng0MWg5K0dsMjUzMzhWCk1mdjBDVDF6SG1JanYwblIrakNkcFd0eFVLRyt0YjYzZFhNbkFnTUJBQUdqUlRCRE1BNEdBMVVkRHdFQi93UUUKQXdJQmhqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQjBHQTFVZERnUVdCQlNQMmJrOXJiUGJpQnZOd1Z1NQpUL0dwTFdvOTdEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFEVjFMSGZyc1JiYVdONHE5SnBFVDMxMlluRDZ6Cm5rM3BpU1ZSYVEvM09qWG8wdHJ6Z2N4KzlVTUQxeDRHODI1RnYxc0ROWUExZEhFc2dHUmNyRkVmdGZJQWUrUVYKTitOR3NMRnQrOGZrWHdnUlpoNEU4ZUJsSVlrdEprOWptMzFMT25vaDJYZno0aGs3VmZwYkdvVVlsbmVoak1JZApiL3ZMUk05Y2EwVTJlYTB5OTNveE5pdU9PcXdrZGFjU1orczJtb3JNdGZxc3VRSzRKZDA3SENIbUFIeWpXT2k4ClVOQVUyTnZnSnBKY2RiZ3VzN2I5S3ppR1ZERklFUk04cEo4U1Nob1ZvVFFJd3d5Y2xVTU9EUUJreFFHOHNVRk8KRDE3ZjRod1dNbW5qVHY2MEJBM0dxaTZRcjdsWVFSL3drSEtQcnZjMjhoNXB0NndPWEY1b1M4OUZkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: https://bd5f5959-5e1e-4205-a714-a914373942af.k8s.ondigitalocean.com
name: do-nyc1-prod-cluster-01
contexts:
- context:
cluster: do-nyc1-prod-cluster-01
user: do-nyc1-prod-cluster-01-admin
name: do-nyc1-prod-cluster-01
current-context: do-nyc1-prod-cluster-01
kind: Config
preferences: {}
users:
- name: do-nyc1-prod-cluster-01-admin
user:
token: 403d085aaa80102277d8da97ffd2db2b6a4f129d0e2146098fdfb0cec624babc
credentials:
description: A JSON object containing credentials for a cluster.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/credentials'
available_upgrades:
description: >
The response will be a JSON object with a key called
`available_upgrade_versions`. The value of this will be an array of
objects,
representing the upgrade versions currently available for this cluster.
If the cluster is up-to-date (i.e. there are no upgrades currently
available)
`available_upgrade_versions` will be `null`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
available_upgrade_versions:
type: array
nullable: true
items:
$ref: '#/components/schemas/kubernetes_version'
all_node_pools:
description: >
The response will be a JSON object with a key called `node_pools`. This
will
be set to an array of objects, each of which will contain the standard
node
pool attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
node_pools:
type: array
items:
$ref: '#/components/schemas/kubernetes_node_pool'
example:
node_pools:
- id: cdda885e-7663-40c8-bc74-3a036c66545d
name: frontend-pool
size: s-1vcpu-2gb
count: 3
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels: null
auto_scale: false
min_nodes: 0
max_nodes: 0
nodes:
- id: 478247f8-b1bb-4f7a-8db9-2a5f8d4b8f8f
name: adoring-newton-3niq
status:
state: running
droplet_id: '205545370'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: ad12e744-c2a9-473d-8aa9-be5680500eb1
name: adoring-newton-3nim
status:
state: running
droplet_id: '205545371'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: e46e8d07-f58f-4ff1-9737-97246364400e
name: adoring-newton-3ni7
status:
state: running
droplet_id: '205545372'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: f49f4379-7e7f-4af5-aeb6-0354bd840778
name: backend-pool
size: g-4vcpu-16gb
count: 2
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels:
service: backend
priority: high
auto_scale: true
min_nodes: 2
max_nodes: 5
nodes:
- id: 3385619f-8ec3-42ba-bb23-8d21b8ba7518
name: affectionate-nightingale-3nif
status:
state: running
droplet_id: '205545373'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: 4b8f60ff-ba06-4523-a6a4-b8148244c7e6
name: affectionate-nightingale-3niy
status:
state: running
droplet_id: '205545374'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
node_pool_create:
description: >
The response will be a JSON object with a key called `node_pool`. The
value of
this will be an object containing the standard attributes of a node
pool.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
node_pool:
$ref: '#/components/schemas/kubernetes_node_pool'
example:
node_pool:
id: cdda885e-7663-40c8-bc74-3a036c66545d
name: new-pool
size: s-1vcpu-2gb
count: 3
tags:
- production
- web-team
- front-end
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels: null
taints: []
auto_scale: true
min_nodes: 3
max_nodes: 6
nodes:
- id: 478247f8-b1bb-4f7a-8db9-2a5f8d4b8f8f
name: ' '
status:
state: provisioning
droplet_id: ' '
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: ad12e744-c2a9-473d-8aa9-be5680500eb1
name: ' '
status:
state: provisioning
droplet_id: ' '
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: e46e8d07-f58f-4ff1-9737-97246364400e
name: ' '
status:
state: provisioning
droplet_id: ' '
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
existing_node_pool:
description: >
The response will be a JSON object with a key called `node_pool`. The
value
of this will be an object containing the standard attributes of a node
pool.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
node_pool:
$ref: '#/components/schemas/kubernetes_node_pool'
example:
node_pool:
id: cdda885e-7663-40c8-bc74-3a036c66545d
name: frontend-pool
size: s-1vcpu-2gb
count: 3
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels:
service: backend
priority: high
taints:
- key: priority
value: high
effect: NoSchedule
auto_scale: false
min_nodes: 0
max_nodes: 0
nodes:
- id: 478247f8-b1bb-4f7a-8db9-2a5f8d4b8f8f
name: adoring-newton-3niq
status:
state: running
droplet_id: '205545370'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: ad12e744-c2a9-473d-8aa9-be5680500eb1
name: adoring-newton-3nim
status:
state: running
droplet_id: '205545371'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: e46e8d07-f58f-4ff1-9737-97246364400e
name: adoring-newton-3ni7
status:
state: running
droplet_id: '205545372'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
node_pool_update:
description: >
The response will be a JSON object with a key called `node_pool`. The
value of
this will be an object containing the standard attributes of a node
pool.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
node_pool:
$ref: '#/components/schemas/kubernetes_node_pool'
example:
node_pool:
id: cdda885e-7663-40c8-bc74-3a036c66545d
name: renamed-pool
size: s-1vcpu-2gb
count: 3
tags:
- production
- web-team
- front-end
- new-tag
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels: null
taints: []
auto_scale: true
min_nodes: 3
max_nodes: 6
nodes:
- id: 478247f8-b1bb-4f7a-8db9-2a5f8d4b8f8f
name: adoring-newton-3niq
status:
state: running
droplet_id: '205545370'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: ad12e744-c2a9-473d-8aa9-be5680500eb1
name: adoring-newton-3nim
status:
state: running
droplet_id: '205545371'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: e46e8d07-f58f-4ff1-9737-97246364400e
name: adoring-newton-3ni7
status:
state: running
droplet_id: '205545372'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
cluster_user:
description: >
The response will be a JSON object with a key called
`kubernetes_cluster_user`
containing the username and in-cluster groups that it belongs to.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/user'
all_options:
description: >
The response will be a JSON object with a key called `options` which
contains
`regions`, `versions`, and `sizes` objects listing the available options
and
the matching slugs for use when creating a new cluster.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/kubernetes_options'
examples:
All Kubernetes Options:
$ref: '#/components/examples/kubernetes_options'
clusterlint_results:
description: >
The response is a JSON object which contains the diagnostics on
Kubernetes
objects in the cluster. Each diagnostic will contain some metadata
information
about the object and feedback for users to act upon.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/clusterlint_results'
clusterlint_run:
description: >-
The response is a JSON object with a key called `run_id` that you can
later use to fetch the run results.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
run_id:
type: string
example: 50c2f44c-011d-493e-aee5-361a4a0d1844
description: >-
ID of the clusterlint run that can be used later to fetch the
diagnostics.
all_load_balancers:
description: >-
A JSON object with a key of `load_balancers`. This will be set to an
array of objects, each of which will contain the standard load balancer
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
load_balancers:
type: array
items:
$ref: '#/components/schemas/load_balancer'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
examples:
All Load Balancers:
$ref: '#/components/examples/load_balancers_all'
load_balancer_create:
description: Accepted
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
load_balancer:
$ref: '#/components/schemas/load_balancer'
examples:
Basic Create Response:
$ref: '#/components/examples/load_balancer_basic_response'
SSL Termination Create Response:
$ref: '#/components/examples/load_balancer_ssl_termination_response'
Create Response Using Droplet Tag:
$ref: '#/components/examples/load_balancer_using_tag_response'
Sticky Sessions and Custom Health Check:
$ref: >-
#/components/examples/load_balancer_sticky_sessions_and_health_check_response
existing_load_balancer:
description: >
The response will be a JSON object with a key called `load_balancer`.
The
value of this will be an object that contains the standard attributes
associated with a load balancer
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
load_balancer:
$ref: '#/components/schemas/load_balancer'
examples:
load_balancer_basic_response:
$ref: '#/components/examples/load_balancer_basic_response'
updated_load_balancer:
description: >
The response will be a JSON object with a key called `load_balancer`.
The
value of this will be an object containing the standard attributes of a
load balancer.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
load_balancer:
$ref: '#/components/schemas/load_balancer'
examples:
load_balancer_update_response:
$ref: '#/components/examples/load_balancer_update_response'
list_alert_policy_response:
description: A list of alert policies.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/list_alert_policy'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
policies:
- alerts:
email:
- bob@example.com
slack:
- channel: Production Alerts
url: >-
https://hooks.slack.com/services/T1234567/AAAAAAAA/ZZZZZZ"
compare: GreaterThan
description: CPU Alert
enabled: true
entities:
- 192018292
tags:
- production_droplets
type: v1/insights/droplet/cpu
uuid: 78b3da62-27e5-49ba-ac70-5db0b5935c64
value: 80
window: 5m
links:
first: >-
https//api.digitalocean.com/v2/monitoring/alerts?page=1&per_page=10
prev: >-
https//api.digitalocean.com/v2/monitoring/alerts?page=2&per_page=10
next: >-
https//api.digitalocean.com/v2/monitoring/alerts?page=4&per_page=10
last: >-
https//api.digitalocean.com/v2/monitoring/alerts?page=5&per_page=10
meta:
total: 50
alert_policy_response:
description: An alert policy.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
policy:
$ref: '#/components/schemas/alert_policy'
droplet_bandwidth_metric_response:
description: >-
The response will be a JSON object with a key called `data` and
`status`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/metrics'
examples:
Inbound Private Bandwidth:
$ref: '#/components/examples/inbound_private_droplet_bandwidth'
Inbound Public Bandwidth:
$ref: '#/components/examples/inbound_public_droplet_bandwidth'
Outbound Private Bandwidth:
$ref: '#/components/examples/outbound_private_droplet_bandwidth'
Outbound Public Bandwidth:
$ref: '#/components/examples/outbound_public_droplet_bandwidth'
droplet_cpu_metric_response:
description: >-
The response will be a JSON object with a key called `data` and
`status`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/metrics'
examples:
CPU:
$ref: '#/components/examples/droplet_cpu'
droplet_filesystem_metric_response:
description: >-
The response will be a JSON object with a key called `data` and
`status`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/metrics'
examples:
Filesystem:
$ref: '#/components/examples/droplet_filesystem'
metric_response:
description: >-
The response will be a JSON object with a key called `data` and
`status`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/metrics'
app_metric_response:
description: >-
The response will be a JSON object with a key called `data` and
`status`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/metrics'
examples:
Memory:
$ref: '#/components/examples/app_memory_percentage'
monitoring_list_destinations:
description: The response is a JSON object with a `destinations` key.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
destinations:
type: array
items:
$ref: '#/components/schemas/destination_omit_credentials'
destination:
description: The response is a JSON object with a `destination` key.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
destination:
$ref: '#/components/schemas/destination_omit_credentials'
list_sinks:
description: The response is a JSON object with a `sinks` key.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
sinks:
type: array
description: List of sinks identified by their URNs.
items:
$ref: '#/components/schemas/sinks_response'
sinks:
description: The response is a JSON object with a `sink` key.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
sink:
$ref: '#/components/schemas/sinks_response'
projects_list:
description: >-
The response will be a JSON object with a key called `projects`. The
value of this will be an object with the standard project attributes
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
projects:
type: array
items:
$ref: '#/components/schemas/project'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
projects:
- id: 4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679
owner_uuid: 99525febec065ca37b2ffe4f852fd2b2581895e7
owner_id: 258992
name: my-web-api
description: My website API
purpose: Service or API
environment: Production
is_default: false
created_at: '2018-09-27T20:10:35Z'
updated_at: '2018-09-27T20:10:35Z'
- id: addb4547-6bab-419a-8542-76263a033cf6
owner_uuid: 99525febec065ca37b2ffe4f852fd2b2581895e7
owner_id: 258992
name: Default
description: Default project
purpose: Just trying out DigitalOcean
environment: Development
is_default: true
created_at: '2017-10-19T21:44:20Z'
updated_at: '2019-11-05T18:50:03Z'
links:
pages:
first: https://api.digitalocean.com/v2/projects?page=1
last: https://api.digitalocean.com/v2/projects?page=1
meta:
total: 2
existing_project:
description: >-
The response will be a JSON object with a key called `project`. The
value of this will be an object with the standard project attributes
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
project:
$ref: '#/components/schemas/project'
default_project:
description: >-
The response will be a JSON object with a key called `project`. The
value of this will be an object with the standard project attributes
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
project:
$ref: '#/components/schemas/project'
example:
project:
id: addb4547-6bab-419a-8542-76263a033cf6
owner_uuid: 99525febec065ca37b2ffe4f852fd2b2581895e7
owner_id: 258992
name: Default
description: Default project
purpose: Just trying out DigitalOcean
environment: Development
is_default: true
created_at: '2017-10-19T21:44:20Z'
updated_at: '2019-11-05T18:50:03Z'
precondition_failed:
description: Only an empty project can be deleted.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: precondition_failed
message: >-
cannot delete a project with resources. move or remove the
resources first
resources_list:
description: >-
The response will be a JSON object with a key called `resources`. The
value of this will be an object with the standard resource attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
resources:
type: array
items:
$ref: '#/components/schemas/resource'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
resources:
- urn: do:droplet:13457723
assigned_at: '2018-09-28T19:26:37Z'
links:
self: https://api.digitalocean.com/v2/droplets/13457723
status: ok
- urn: do:domain:example.com
assigned_at: '2019-03-31T16:24:14Z'
links:
self: https://api.digitalocean.com/v2/domains/example.com
status: ok
links:
pages:
first: >-
https://api.digitalocean.com/v2/projects/4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679/resources?page=1
last: >-
https://api.digitalocean.com/v2/projects/4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679/resources?page=1
meta:
total: 2
assigned_resources_list:
description: >-
The response will be a JSON object with a key called `resources`. The
value of this will be an object with the standard resource attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
resources:
type: array
items:
$ref: '#/components/schemas/resource'
example:
resources:
- urn: do:droplet:13457723
assigned_at: '2018-09-28T19:26:37Z'
links:
self: https://api.digitalocean.com/v2/droplets/13457723
status: ok
- urn: do:domain:example.com
assigned_at: '2019-03-31T16:24:14Z'
links:
self: https://api.digitalocean.com/v2/domains/example.com
status: ok
all_regions:
description: >-
A JSON object with a key set to `regions`. The value is an array of
`region` objects, each of which contain the standard `region`
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
regions:
type: array
items:
$ref: '#/components/schemas/region'
required:
- regions
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
regions:
- name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
links:
pages:
last: https://api.digitalocean.com/v2/regions?page=13&per_page=1
next: https://api.digitalocean.com/v2/regions?page=2&per_page=1
meta:
total: 13
registry_info:
description: >-
The response will be a JSON object with the key `registry` containing
information about your registry.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
registry:
$ref: '#/components/schemas/registry'
subscription_response:
description: >-
The response will be a JSON object with a key called `subscription`
containing information about your subscription.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
subscription:
$ref: '#/components/schemas/subscription'
docker_credentials:
description: A Docker `config.json` file for the container registry.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/docker_credentials'
all_repositories:
description: >-
The response body will be a JSON object with a key of `repositories`.
This will be set to an array containing objects each representing a
repository.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
repositories:
type: array
items:
$ref: '#/components/schemas/repository'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
repositories:
- registry_name: example
name: repo-1
latest_tag:
registry_name: example
repository: repo-1
tag: latest
manifest_digest: >-
sha256:cb8a924afdf0229ef7515d9e5b3024e23b3eb03ddbba287f4a19c6ac90b8d221
compressed_size_bytes: 2803255
size_bytes: 5861888
updated_at: '2020-04-09T23:54:25Z'
tag_count: 1
meta:
total: 1
all_repositories_v2:
description: >-
The response body will be a JSON object with a key of `repositories`.
This will be set to an array containing objects each representing a
repository.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
repositories:
type: array
items:
$ref: '#/components/schemas/repository_v2'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
repositories:
- registry_name: example
name: repo-1
tag_count: 57
manifest_count: 82
latest_manifest:
digest: >-
sha256:cb8a924afdf0229ef7515d9e5b3024e23b3eb03ddbba287f4a19c6ac90b8d221
registry_name: example
repository: repo-1
compressed_size_bytes: 1972332
size_bytes: 2816445
updated_at: '2021-04-09T23:54:25Z'
tags:
- v1
- v2
blobs:
- digest: >-
sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab
compressed_size_bytes: 1471
- digest: >-
sha256:a0d0a0d46f8b52473982a3c466318f479767577551a53ffc9074c9fa7035982e
compressed_size_byte: 2814446
- digest: >-
sha256:69704ef328d05a9f806b6b8502915e6a0a4faa4d72018dc42343f511490daf8a
compressed_size_bytes: 528
meta:
total: 5
links:
pages:
next: >-
https://api.digitalocean.com/v2/registry/example/repositoriesV2?page=2&page_token=JPZmZzZXQiOjB9&per_page=1
last: >-
https://api.digitalocean.com/v2/registry/example/repositoriesV2?page=5&per_page=1
repository_tags:
description: >-
The response body will be a JSON object with a key of `tags`. This will
be set to an array containing objects each representing a tag.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
tags:
type: array
items:
$ref: '#/components/schemas/repository_tag'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
tags:
- registry_name: example
repository: repo-1
tag: latest
manifest_digest: >-
sha256:cb8a924afdf0229ef7515d9e5b3024e23b3eb03ddbba287f4a19c6ac90b8d221
compressed_size_bytes: 2803255
size_bytes: 5861888
updated_at: '2020-04-09T23:54:25Z'
meta:
total: 1
repository_manifests:
description: >-
The response body will be a JSON object with a key of `manifests`. This
will be set to an array containing objects each representing a manifest.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
manifests:
type: array
items:
$ref: '#/components/schemas/repository_manifest'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
manifests:
- digest: >-
sha256:cb8a924afdf0229ef7515d9e5b3024e23b3eb03ddbba287f4a19c6ac90b8d221
registry_name: example
repository: repo-1
compressed_size_bytes: 1972332
size_bytes: 2816445
updated_at: '2021-04-09T23:54:25Z'
tags:
- v1
- v2
blobs:
- digest: >-
sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab
compressed_size_bytes: 1471
- digest: >-
sha256:a0d0a0d46f8b52473982a3c466318f479767577551a53ffc9074c9fa7035982e
compressed_size_byte: 2814446
- digest: >-
sha256:69704ef328d05a9f806b6b8502915e6a0a4faa4d72018dc42343f511490daf8a
compressed_size_bytes: 528
meta:
total: 3
links:
pages:
first: >-
https://api.digitalocean.com/v2/registry/example/repositories/repo-1/digests?page=1&per_page=1
prev: >-
https://api.digitalocean.com/v2/registry/example/repositories/repo-1/digests?page=1&per_page=1
next: >-
https://api.digitalocean.com/v2/registry/example/repositories/repo-1/digests?page=3&per_page=1
last: >-
https://api.digitalocean.com/v2/registry/example/repositories/repo-1/digests?page=3&per_page=1
garbage_collection:
description: >-
The response will be a JSON object with a key of `garbage_collection`.
This will be a json object with attributes representing the
currently-active garbage collection.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
garbage_collection:
$ref: '#/components/schemas/garbage_collection'
garbage_collections:
description: >-
The response will be a JSON object with a key of `garbage_collections`.
This will be set to an array containing objects representing each past
garbage collection. Each will contain the standard Garbage Collection
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
garbage_collections:
type: array
items:
$ref: '#/components/schemas/garbage_collection'
example:
garbage_collections:
- uuid: eff0feee-49c7-4e8f-ba5c-a320c109c8a8
registry_name: example
status: requested
created_at: '2020-10-30T21:03:24.000Z'
updated_at: '2020-10-30T21:03:44.000Z'
blobs_deleted: 42
freed_bytes: 667
meta:
total: 1
registry_options_response:
description: >-
The response will be a JSON object with a key called `options` which
contains a key called `subscription_tiers` listing the available tiers.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
options:
type: object
properties:
available_regions:
type: array
items:
type: string
example:
- nyc3
subscription_tiers:
type: array
items:
allOf:
- $ref: '#/components/schemas/subscription_tier_base'
- $ref: '#/components/schemas/subscription_tier_extended'
example:
options:
available_regions:
- nyc3
- sfo3
- ams3
- sgp1
- fra1
subscription_tiers:
- name: Starter
slug: starter
included_repositories: 1
included_storage_bytes: 524288000
allow_storage_overage: false
included_bandwidth_bytes: 524288000
monthly_price_in_cents: 0
eligible: false
eligibility_reasons:
- OverRepositoryLimit
- name: Basic
slug: basic
included_repositories: 5
included_storage_bytes: 5368709120
allow_storage_overage: true
included_bandwidth_bytes: 5368709120
monthly_price_in_cents: 500
eligible: true
- name: Professional
slug: professional
included_repositories: 0
included_storage_bytes: 107374182400
allow_storage_overage: true
included_bandwidth_bytes: 107374182400
monthly_price_in_cents: 2000
eligible: true
droplet_neighbors_ids:
description: A JSON object with an `neighbor_ids` key.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/neighbor_ids'
reserved_ip_list:
description: >-
The response will be a JSON object with a key called `reserved_ips`.
This will be set to an array of reserved IP objects, each of which will
contain the standard reserved IP attributes
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
reserved_ips:
type: array
items:
$ref: '#/components/schemas/reserved_ip'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
reserved_ips:
- ip: 45.55.96.47
droplet: null
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
locked: false
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
links: {}
meta:
total: 1
reserved_ip_created:
description: >-
The response will be a JSON object with a key called `reserved_ip`. The
value of this will be an object that contains the standard attributes
associated with a reserved IP.
When assigning a reserved IP to a Droplet at same time as it created,
the response's `links` object will contain links to both the Droplet and
the assignment action. The latter can be used to check the status of the
action.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
reserved_ip:
$ref: '#/components/schemas/reserved_ip'
links:
type: object
properties:
droplets:
type: array
items:
$ref: '#/components/schemas/action_link'
actions:
type: array
items:
$ref: '#/components/schemas/action_link'
examples:
reserved_ip_assigning:
$ref: '#/components/examples/reserved_ip_assigning'
reserved_ip_reserving:
$ref: '#/components/examples/reserved_ip_reserving'
reserved_ip:
description: >-
The response will be a JSON object with a key called `reserved_ip`. The
value of this will be an object that contains the standard attributes
associated with a reserved IP.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
reserved_ip:
$ref: '#/components/schemas/reserved_ip'
examples:
reserved_ip_assigned:
$ref: '#/components/examples/reserved_ip_assigned'
reserved_ip_reserved:
$ref: '#/components/examples/reserved_ip_reserved'
reserved_ip_actions:
description: >-
The results will be returned as a JSON object with an `actions` key.
This will be set to an array filled with action objects containing the
standard reserved IP action attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
actions:
type: array
items:
$ref: '#/components/schemas/action'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
actions:
- id: 72531856
status: completed
type: reserve_ip
started_at: '2015-11-21T21:51:09Z'
completed_at: '2015-11-21T21:51:09Z'
resource_id: 758604197
resource_type: reserved_ip
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
available: true
region_slug: nyc3
links: {}
meta:
total: 1
reserved_ip_action:
description: >-
The response will be an object with a key called `action`. The value of
this will be an object that contains the standard reserved IP action
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
action:
allOf:
- $ref: '#/components/schemas/action'
- type: object
properties:
project_id:
type: string
format: uuid
example: 746c6152-2fa2-11ed-92d3-27aaa54e4988
description: >-
The UUID of the project to which the reserved IP
currently belongs.
example:
action:
id: 72531856
status: completed
type: assign_ip
started_at: '2015-11-12T17:51:03Z'
completed_at: '2015-11-12T17:51:14Z'
resource_id: 758604968
resource_type: reserved_ip
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
available: true
region_slug: nyc3
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
all_sizes:
description: >-
A JSON object with a key called `sizes`. The value of this will be an
array of `size` objects each of which contain the standard size
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
sizes:
type: array
items:
$ref: '#/components/schemas/size'
required:
- sizes
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
sizes:
- slug: s-1vcpu-1gb
memory: 1024
vcpus: 1
disk: 25
transfer: 1
price_monthly: 5
price_hourly: 0.00743999984115362
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
available: true
description: Basic
disk_info:
- type: local
size:
amount: 25
unit: gib
links:
pages:
last: https://api.digitalocean.com/v2/sizes?page=64&per_page=1
next: https://api.digitalocean.com/v2/sizes?page=2&per_page=1
meta:
total: 64
snapshots:
description: A JSON object with a key of `snapshots`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
snapshots:
type: array
items:
$ref: '#/components/schemas/snapshots'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
examples:
All Snapshots:
$ref: '#/components/examples/snapshots_all'
Droplets Snapshots:
$ref: '#/components/examples/snapshots_droplets_only'
Volume Snapshots:
$ref: '#/components/examples/snapshots_volumes_only'
snapshots_existing:
description: |
A JSON object with a key called `snapshot`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
snapshot:
$ref: '#/components/schemas/snapshots'
not_a_snapshot:
description: Bad Request
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
id: bad_request
message: the resource is not a snapshot
request_id: bbd8d7d4-2beb-4be1-a374-338e6165e32d
tags_all:
description: To list all of your tags, you can send a `GET` request to `/v2/tags`.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
tags:
type: array
items:
$ref: '#/components/schemas/tags'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
tags:
- name: extra-awesome
resources:
count: 5
last_tagged_uri: https://api.digitalocean.com/v2/images/7555620
droplets:
count: 1
last_tagged_uri: https://api.digitalocean.com/v2/droplets/3164444
images:
count: 1
last_tagged_uri: https://api.digitalocean.com/v2/images/7555620
volumes:
count: 1
last_tagged_uri: >-
https://api.digitalocean.com/v2/volumes/3d80cb72-342b-4aaa-b92e-4e4abb24a933
volume_snapshots:
count: 1
last_tagged_uri: >-
https://api.digitalocean.com/v2/snapshots/1f6f46e8-6b60-11e9-be4e-0a58ac144519
databases:
count: 1
last_tagged_uri: >-
https://api.digitalocean.com/v2/databases/b92438f6-ba03-416c-b642-e9236db91976
links: {}
meta:
total: 1
tags_new:
description: >-
The response will be a JSON object with a key called tag. The value of
this will be a tag object containing the standard tag attributes
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
tag:
$ref: '#/components/schemas/tags'
example:
tag:
name: extra-awesome
resources:
count: 0
droplets:
count: 0
images:
count: 0
volumes:
count: 0
volume_snapshots:
count: 0
databases:
count: 0
tags_bad_request:
description: Bad Request
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
x-request-id:
$ref: '#/components/headers/x-request-id'
content:
application/json:
schema:
$ref: '#/components/schemas/error_with_root_causes'
examples:
InvalidCharacters:
value:
error: >-
Error validating resource tag: \"tag-name \\\"74>@>2>\\\"
contains invalid characters\"
messages: null
root_causes:
- >-
rpc error: code = InvalidArgument desc = Error validating
resource tag: \"tag-name \\\"74>@>2>\\\" contains invalid
characters\"
tags_existing:
description: >-
The response will be a JSON object with a key called `tag`. The value
of this will be a tag object containing the standard tag attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
tag:
$ref: '#/components/schemas/tags'
example:
tag:
tag:
name: extra-awesome
resources:
count: 5
last_tagged_uri: https://api.digitalocean.com/v2/images/7555620
droplets:
count: 1
last_tagged_uri: https://api.digitalocean.com/v2/droplets/3164444
images:
count: 1
last_tagged_uri: https://api.digitalocean.com/v2/images/7555620
volumes:
count: 1
last_tagged_uri: >-
https://api.digitalocean.com/v2/volumes/3d80cb72-342b-4aaa-b92e-4e4abb24a933
volume_snapshots:
count: 1
last_tagged_uri: >-
https://api.digitalocean.com/v2/snapshots/1f6f46e8-6b60-11e9-be4e-0a58ac144519
databases:
count: 1
last_tagged_uri: >-
https://api.digitalocean.com/v2/databases/b92438f6-ba03-416c-b642-e9236db91976
volumes:
description: >-
The response will be a JSON object with a key called `volumes`. This
will be set to an array of volume objects, each of which will contain
the standard volume attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
volumes:
type: array
items:
$ref: '#/components/schemas/volume_full'
description: Array of volumes.
required:
- volumes
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
examples:
All Volumes:
$ref: '#/components/examples/volumes_all'
Filtered by Name:
$ref: '#/components/examples/volumes_filtered_by_name'
Filtered by Region:
$ref: '#/components/examples/volumes_filtered_by_region'
volume:
description: >-
The response will be a JSON object with a key called `volume`. The value
will be an object containing the standard attributes associated with a
volume.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
volume:
$ref: '#/components/schemas/volume_full'
example:
volume:
id: 506f78a4-e098-11e5-ad9f-000f53306ae1
region:
name: New York 1
slug: nyc1
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
available: true
droplet_ids: []
name: example
description: Block store for examples
size_gigabytes: 10
filesystem_type: ext4
filesystem_label: example
created_at: '2020-03-02T17:00:49Z'
volumeAction:
description: >-
The response will be an object with a key called `action`. The value of
this will be an object that contains the standard volume action
attributes
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
action:
$ref: '#/components/schemas/volumeAction'
examples:
volume_action_attach_response:
$ref: '#/components/examples/volume_action_attach_response'
VolumeActionDetachResponse:
$ref: '#/components/examples/volume_action_detach_response'
volumeSnapshot:
description: >-
You will get back a JSON object that has a `snapshot` key. This will
contain the standard snapshot attributes
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
properties:
snapshot:
$ref: '#/components/schemas/snapshots'
example:
snapshot:
id: 8fa70202-873f-11e6-8b68-000f533176b1
name: big-data-snapshot1475261774
regions:
- nyc1
created_at: '2020-09-30T18:56:14Z'
resource_id: 82a48a18-873f-11e6-96bf-000f53315a41
resource_type: volume
min_disk_size: 10
size_gigabytes: 10
tags:
- aninterestingtag
volumeActions:
description: >-
The response will be an object with a key called `action`. The value of
this will be an object that contains the standard volume action
attributes.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
actions:
type: array
items:
$ref: '#/components/schemas/volumeAction'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
actions:
- id: 72531856
status: completed
type: attach_volume
started_at: '2020-11-21T21:51:09Z'
completed_at: '2020-11-21T21:51:09Z'
resource_type: volume
region:
name: New York 1
slug: nyc1
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
available: true
region_slug: nyc1
links: {}
meta:
total: 1
volumeSnapshots:
description: >-
You will get back a JSON object that has a `snapshots` key. This will be
set to an array of snapshot objects, each of which contain the standard
snapshot attributes
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
snapshots:
type: array
items:
$ref: '#/components/schemas/snapshots'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
snapshots:
- id: 8eb4d51a-873f-11e6-96bf-000f53315a41
name: big-data-snapshot1475261752
regions:
- nyc1
created_at: '2020-09-30T18:56:12Z'
resource_id: 82a48a18-873f-11e6-96bf-000f53315a41
resource_type: volume
min_disk_size: 10
size_gigabytes: 0
tags: null
links: {}
meta:
total: 1
all_vpcs:
description: >-
The response will be a JSON object with a key called `vpcs`. This will
be set to an array of objects, each of which will contain the standard
attributes associated with a VPC
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
vpcs:
type: array
items:
$ref: '#/components/schemas/vpc'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
vpcs:
- name: env.prod-vpc
description: VPC for production environment
region: nyc1
ip_range: 10.10.10.0/24
id: 5a4981aa-9653-4bd1-bef5-d6bff52042e4
urn: do:vpc:5a4981aa-9653-4bd1-bef5-d6bff52042e4
default: false
created_at: '2020-03-13T19:20:47.442049222Z'
- id: e0fe0f4d-596a-465e-a902-571ce57b79fa
urn: do:vpc:e0fe0f4d-596a-465e-a902-571ce57b79fa
name: default-nyc1
description: ''
region: nyc1
ip_range: 10.102.0.0/20
created_at: '2020-03-13T19:29:20Z'
default: true
- id: d455e75d-4858-4eec-8c95-da2f0a5f93a7
urn: do:vpc:d455e75d-4858-4eec-8c95-da2f0a5f93a7
name: default-nyc3
description: ''
region: nyc3
ip_range: 10.100.0.0/20
created_at: '2019-11-19T22:19:35Z'
default: true
links: {}
meta:
total: 3
existing_vpc:
description: >-
The response will be a JSON object with a key called `vpc`. The value of
this will be an object that contains the standard attributes associated
with a VPC.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
vpc:
$ref: '#/components/schemas/vpc'
vpc_members:
description: >-
The response will be a JSON object with a key called members. This will
be set to an array of objects, each of which will contain the standard
attributes associated with a VPC member.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
members:
type: array
items:
$ref: '#/components/schemas/vpc_member'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
members:
- urn: do:loadbalancer:fb294d78-d193-4cb2-8737-ea620993591b
name: nyc1-load-balancer-01
created_at: '2020-03-13T19:30:48Z'
- urn: do:dbaas:13f7a2f6-43df-4c4a-8129-8733267ddeea
name: db-postgresql-nyc1-55986
created_at: '2020-03-13T19:30:18Z'
- urn: do:kubernetes:da39d893-96e1-4e4d-971d-1fdda33a46b1
name: k8s-nyc1-1584127772221
created_at: '2020-03-13T19:30:16Z'
- urn: do:droplet:86e29982-03a7-4946-8a07-a0114dff8754
name: ubuntu-s-1vcpu-1gb-nyc1-01
created_at: '2020-03-13T19:29:20Z'
links: {}
meta:
total: 4
vpc_peerings:
description: >-
The response will be a JSON object with a key called `peerings`. This
will be set to an array of objects, each of which will contain the
standard attributes associated with a VPC peering.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
peerings:
type: array
items:
$ref: '#/components/schemas/vpc_peering'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
peerings:
- id: 6b5c619c-359c-44ca-87e2-47e98170c01d
name: example-vpc-peering
vpc_ids:
- 997615ce-132d-4bae-9270-9ee21b395e5d
- e51aed59-3bb1-4a6a-8de0-9d1329e9c997
created_at: '2024-01-09T20:44:32Z'
status: ACTIVE
- id: c212b274-911c-44cc-a117-23b7da4a2922
name: another-vpc-peering
vpc_ids:
- 5a100736-b085-4f69-81fd-feee325784bb
- c140286f-e6ce-4131-8b7b-df4590ce8d6a
created_at: '2024-01-10T13:29:58Z'
status: ACTIVE
links: {}
meta:
total: 2
vpc_peering:
description: >-
The response will be a JSON object with a key called `peering`,
containing the standard attributes associated with a VPC peering.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
peering:
$ref: '#/components/schemas/vpc_peering'
example:
peering:
id: 6b5c619c-359c-44ca-87e2-47e98170c01d
name: example-vpc-peering
vpc_ids:
- 997615ce-132d-4bae-9270-9ee21b395e5d
- e51aed59-3bb1-4a6a-8de0-9d1329e9c997
created_at: '2024-01-09T20:44:32Z'
status: PROVISIONING
all_vpc_peerings:
description: >-
The response will be a JSON object with a key called `vpc_peerings`.
This will be set to an array of objects, each of which will contain the
standard attributes associated with a VPC peering.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
vpc_peerings:
type: array
items:
$ref: '#/components/schemas/vpc_peering'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
example:
vpc_peerings:
- id: 6b5c619c-359c-44ca-87e2-47e98170c01d
name: example-vpc-peering
vpc_ids:
- 997615ce-132d-4bae-9270-9ee21b395e5d
- e51aed59-3bb1-4a6a-8de0-9d1329e9c997
created_at: '2024-01-09T20:44:32Z'
status: ACTIVE
- id: c212b274-911c-44cc-a117-23b7da4a2922
name: another-vpc-peering
vpc_ids:
- 5a100736-b085-4f69-81fd-feee325784bb
- c140286f-e6ce-4131-8b7b-df4590ce8d6a
created_at: '2024-01-10T13:29:58Z'
status: ACTIVE
links: {}
meta:
total: 2
provisioning_vpc_peering:
description: >-
The response will be a JSON object with a key called `vpc_peering`. The
value of this will be an object that contains the standard attributes
associated with a VPC peering.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
vpc_peering:
$ref: '#/components/schemas/vpc_peering'
example:
vpc_peering:
id: 5a4981aa-9653-4bd1-bef5-d6bff52042e4
name: example-vpc-peering
vpc_ids:
- 997615ce-132d-4bae-9270-9ee21b395e5d
- e51aed59-3bb1-4a6a-8de0-9d1329e9c997
created_at: '2024-01-09T20:44:32Z'
status: PROVISIONING
active_vpc_peering:
description: >-
The response will be a JSON object with a key called `vpc_peering`. The
value of this will be an object that contains the standard attributes
associated with a VPC peering.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
vpc_peering:
$ref: '#/components/schemas/vpc_peering'
example:
vpc_peering:
id: 5a4981aa-9653-4bd1-bef5-d6bff52042e4
name: example-vpc-peering
vpc_ids:
- 997615ce-132d-4bae-9270-9ee21b395e5d
- e51aed59-3bb1-4a6a-8de0-9d1329e9c997
created_at: '2024-01-09T20:44:32Z'
status: ACTIVE
deleting_vpc_peering:
description: >-
The response will be a JSON object with a key called `vpc_peering`. The
value of this will be an object that contains the standard attributes
associated with a VPC peering.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
vpc_peering:
$ref: '#/components/schemas/vpc_peering'
example:
vpc_peering:
id: 5a4981aa-9653-4bd1-bef5-d6bff52042e4
name: example-vpc-peering
vpc_ids:
- 997615ce-132d-4bae-9270-9ee21b395e5d
- e51aed59-3bb1-4a6a-8de0-9d1329e9c997
created_at: '2024-01-09T20:44:32Z'
status: DELETING
all_checks:
description: >-
The response will be a JSON object with a key called `checks`. This will
be set to an array of objects, each of which will contain the standard
attributes associated with an uptime check
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
checks:
type: array
items:
$ref: '#/components/schemas/check'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
existing_check:
description: >-
The response will be a JSON object with a key called `check`. The value
of this will be an object that contains the standard attributes
associated with an uptime check.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
check:
$ref: '#/components/schemas/check'
existing_check_state:
description: >-
The response will be a JSON object with a key called `state`. The value
of this will be an object that contains the standard attributes
associated with an uptime check's state.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
state:
$ref: '#/components/schemas/state'
all_alerts:
description: >-
The response will be a JSON object with a key called `alerts`. This will
be set to an array of objects, each of which will contain the standard
attributes associated with an uptime alert.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
allOf:
- type: object
properties:
alerts:
type: array
items:
$ref: '#/components/schemas/alert'
- $ref: '#/components/schemas/pagination'
- $ref: '#/components/schemas/meta'
existing_alert:
description: >-
The response will be a JSON object with a key called `alert`. The value
of this will be an object that contains the standard attributes
associated with an uptime alert.
headers:
ratelimit-limit:
$ref: '#/components/headers/ratelimit-limit'
ratelimit-remaining:
$ref: '#/components/headers/ratelimit-remaining'
ratelimit-reset:
$ref: '#/components/headers/ratelimit-reset'
content:
application/json:
schema:
type: object
properties:
alert:
$ref: '#/components/schemas/alert'
links:
sshKeys_get_by_id:
operationId: sshKeys_get_by_id
parameters:
ssh_key_identifier: $response.body#/ssh_key/id
description: >-
The `id` value returned in the response can be used as the
`ssh_key_identifier` parameter in `GET
/v2/account/keys/{ssh_key_identifier}`.
sshKeys_get_by_fingerprint:
operationId: sshKeys_get_by_fingerprint
parameters:
ssh_key_identifier: $response.body#/ssh_key/fingerprint
description: >-
The `fingerprint` value returned in the response can be used as the
`ssh_key_identifier` parameter in `GET
/v2/account/keys/{ssh_key_identifier}`.
sshKeys_delete_by_id:
operationId: sshKeys_delete_by_id
parameters:
ssh_key_identifier: $response.body#/ssh_key/id
description: >-
The `id` value returned in the response can be used as the
`ssh_key_identifier` parameter in `DELETE
/v2/account/keys/{ssh_key_identifier}`.
sshKeys_delete_by_fingerprint:
operationId: ssh_keys_delete_by_fingerprint
parameters:
ssh_key_identifier: $response.body#/ssh_key/fingerprint
description: >-
The `fingerprint` value returned in the response can be used as the
`ssh_key_identifier` parameter in `DELETE
/v2/account/keys/{ssh_key_identifier}`.
examples:
apps:
value:
apps:
- id: 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
owner_uuid: ff36cbc6fd350fe12577f5123133bb5ba01a2419
spec:
name: sample-php
services:
- name: sample-php
git:
repo_clone_url: https://github.com/digitalocean/sample-php.git
branch: main
run_command: heroku-php-apache2
environment_slug: php
instance_size_slug: apps-s-1vcpu-0.5gb
instance_count: 1
http_port: 8080
routes:
- path: /
domains:
- domain: sample-php.example.com
type: PRIMARY
zone: example.com
minimum_tls_version: '1.3'
default_ingress: https://sample-php-iaj87.ondigitalocean.app
created_at: '2020-11-19T20:27:18Z'
updated_at: '2020-12-01T00:42:16Z'
active_deployment:
id: 3aa4d20e-5527-4c00-b496-601fbd22520a
spec:
name: sample-php
services:
- name: sample-php
git:
repo_clone_url: https://github.com/digitalocean/sample-php.git
branch: main
run_command: heroku-php-apache2
environment_slug: php
instance_size_slug: apps-s-1vcpu-0.5gb
instance_count: 1
http_port: 8080
routes:
- path: /
region: fra
domains:
- domain: sample-php.example.com
type: PRIMARY
zone: example.com
minimum_tls_version: '1.3'
services:
- name: sample-php
source_commit_hash: 54d4a727f457231062439895000d45437c7bb405
phase_last_updated_at: '2020-12-01T00:42:12Z'
created_at: '2020-12-01T00:40:05Z'
updated_at: '2020-12-01T00:42:12Z'
cause: app spec updated
pending_deployment:
id: 3aa4d20e-5527-4c00-b496-601fbd22520a
spec:
name: sample-php
services:
- name: sample-php
git:
repo_clone_url: https://github.com/digitalocean/sample-php.git
branch: main
run_command: heroku-php-apache2
environment_slug: php
instance_size_slug: apps-s-1vcpu-0.5gb
instance_count: 1
http_port: 8080
routes:
- path: /
region: fra
domains:
- domain: sample-php.example.com
type: PRIMARY
zone: example.com
minimum_tls_version: '1.3'
services:
- name: sample-php
source_commit_hash: 54d4a727f457231062439895000d45437c7bb405
phase_last_updated_at: '2020-12-01T00:42:12Z'
created_at: '2020-12-01T00:40:05Z'
updated_at: '2020-12-01T00:42:12Z'
progress:
success_steps: 6
total_steps: 6
steps:
- name: build
status: SUCCESS
steps:
- name: initialize
status: SUCCESS
started_at: '2020-12-01T00:40:11.979305214Z'
ended_at: '2020-12-01T00:40:12.470972033Z'
- name: components
status: SUCCESS
steps:
- name: sample-php
status: SUCCESS
started_at: '0001-01-01T00:00:00Z'
ended_at: '0001-01-01T00:00:00Z'
component_name: sample-php
message_base: Building service
started_at: '2020-12-01T00:40:12.470996857Z'
ended_at: '2020-12-01T00:41:26.180360487Z'
started_at: '2020-12-01T00:40:11.979257919Z'
ended_at: '2020-12-01T00:41:26.653989756Z'
phase: ACTIVE
tier_slug: basic
last_deployment_created_at: '2020-12-01T00:40:05Z'
live_url: https://sample-php.example.com
region:
slug: fra
label: Frankfurt
flag: germany
continent: Europe
data_centers:
- fra1
tier_slug: basic
live_url_base: https://sample-php.example.com
live_domain: sample-php.example.com
domains:
- id: 0831f444-a1a7-11ed-828c-ef59494480b5
phase: ACTIVE
spec:
domain: sample-php.example.com
type: PRIMARY
zone: example.com
minimum_tls_version: '1.3'
rotate_validation_records: false
certificate_expires_at: '2024-01-29T23:59:59Z'
progress:
steps:
- ended_at: '0001-01-01T00:00:00Z'
name: default-ingress-ready
started_at: '2023-01-30T22:15:45.021896292Z'
status: SUCCESS
- ended_at: '0001-01-01T00:00:00Z'
name: ensure-zone
started_at: '2023-01-30T22:15:45.022017004Z'
status: SUCCESS
- ended_at: '2023-01-30T15:42:28.50752065Z'
name: ensure-ns-records
started_at: '2023-01-30T22:15:45.025567874Z'
status: SUCCESS
- ended_at: '0001-01-01T00:00:00Z'
name: verify-nameservers
started_at: '2023-01-30T22:15:45.033591906Z'
status: SUCCESS
- ended_at: '0001-01-01T00:00:00Z'
name: ensure-record
started_at: '2023-01-30T22:15:45.156750604Z'
status: SUCCESS
- ended_at: '2023-01-30T15:43:30.258626422Z'
name: ensure-alias-record
started_at: '2023-01-30T22:15:45.165933869Z'
status: SUCCESS
- ended_at: '2023-01-30T15:43:30.258808279Z'
name: ensure-wildcard-record
started_at: '2023-01-30T22:15:45.166093422Z'
status: SUCCESS
- ended_at: '0001-01-01T00:00:00Z'
name: verify-cname
started_at: '2023-01-30T22:15:45.166205559Z'
status: SUCCESS
- ended_at: '2023-01-30T15:43:30.475903785Z'
name: ensure-ssl-txt-record-saved
started_at: '2023-01-30T22:15:45.295237186Z'
status: SUCCESS
- ended_at: '2023-01-30T15:43:30.476017236Z'
name: ensure-ssl-txt-record
started_at: '2023-01-30T22:15:45.295315291Z'
status: SUCCESS
- ended_at: '2023-01-30T15:43:30.476094058Z'
name: ensure-renewal-email
started_at: '2023-01-30T22:15:45.295374087Z'
status: SUCCESS
- ended_at: '0001-01-01T00:00:00Z'
name: ensure-CA-authorization
started_at: '2023-01-30T22:15:45.295428101Z'
status: SUCCESS
- ended_at: '0001-01-01T00:00:00Z'
name: ensure-certificate
started_at: '2023-01-30T22:15:45.978756406Z'
status: SUCCESS
- ended_at: '2023-01-30T15:43:52.570612857Z'
name: create-deployment
started_at: '0001-01-01T00:00:00Z'
status: SUCCESS
- ended_at: '2023-01-30T15:43:31.333582377Z'
name: configuration-alert
started_at: '2023-01-30T22:15:46.278987808Z'
status: SUCCESS
dedicated_ips:
- ip: 192.168.1.1
id: c24d8f48-3bc4-49f5-8ca0-58e8164427ac
status: ASSIGNED
- ip: 192.168.1.2
id: 4768fb15-2837-4dda-9be5-3951df4bc3d0
status: ASSIGNED
links:
pages: {}
meta:
total: 1
app:
value:
app:
id: c2a93513-8d9b-4223-9d61-5e7272c81cf5
owner_uuid: a4e16f25-cdd1-4483-b246-d77f283c9209
spec:
name: sample-golang
services:
- name: web
github:
repo: ChiefMateStarbuck/sample-golang
branch: main
run_command: bin/sample-golang
environment_slug: go
instance_size_slug: apps-s-1vcpu-0.5gb
instance_count: 1
http_port: 8080
routes:
- path: /
region: ams
domains:
- domain: sample-golang.example.com
zone: example.com
minimum_tls_version: '1.3'
default_ingress: https://sample-golang-zyhgn.ondigitalocean.app
created_at: '2021-02-10T16:45:14Z'
updated_at: '2021-02-10T17:06:56Z'
active_deployment:
id: 991dfa59-6a23-459f-86d6-67dfa2c6f1e3
spec:
name: sample-golang
services:
- name: web
github:
repo: ChiefMateStarbuck/sample-golang
branch: main
run_command: bin/sample-golang
environment_slug: go
instance_size_slug: apps-s-1vcpu-0.5gb
instance_count: 1
http_port: 8080
routes:
- path: /
region: ams
domains:
- domain: sample-golang.example.com
zone: example.com
minimum_tls_version: '1.3'
services:
- name: web
source_commit_hash: db6936cb46047c576962962eed81ad52c21f35d7
phase_last_updated_at: '2021-02-10T17:06:53Z'
created_at: '2021-02-10T17:05:30Z'
updated_at: '2021-02-10T17:06:53Z'
cause: manual
progress:
success_steps: 6
total_steps: 6
steps:
- name: build
status: SUCCESS
steps:
- name: initialize
status: SUCCESS
started_at: '2021-02-10T17:05:35.572347485Z'
ended_at: '2021-02-10T17:05:36.093995229Z'
- name: components
status: SUCCESS
steps:
- name: web
status: SUCCESS
component_name: web
message_base: Building service
started_at: '2021-02-10T17:05:36.094015928Z'
ended_at: '2021-02-10T17:06:19.461737040Z'
started_at: '2021-02-10T17:05:35.572287990Z'
ended_at: '2021-02-10T17:06:19.807834070Z'
- name: deploy
status: SUCCESS
steps:
- name: initialize
status: SUCCESS
started_at: '2021-02-10T17:06:25.143957508Z'
ended_at: '2021-02-10T17:06:26.120343872Z'
- name: components
status: SUCCESS
steps:
- name: web
status: SUCCESS
steps:
- name: deploy
status: SUCCESS
component_name: web
message_base: Deploying service
- name: wait
status: SUCCESS
component_name: web
message_base: Waiting for service
component_name: web
started_at: '2021-02-10T17:06:26.120385561Z'
ended_at: '2021-02-10T17:06:50.029695913Z'
- name: finalize
status: SUCCESS
started_at: '2021-02-10T17:06:50.348459495Z'
ended_at: '2021-02-10T17:06:53.404065961Z'
started_at: '2021-02-10T17:06:25.143932418Z'
ended_at: '2021-02-10T17:06:53.404104185Z'
phase: ACTIVE
tier_slug: basic
last_deployment_created_at: '2021-02-10T17:05:30Z'
live_url: https://sample-golang-zyhgn.ondigitalocean.app
pending_deployment:
id: 3aa4d20e-5527-4c00-b496-601fbd22520a
spec:
name: sample-php
services:
- name: sample-php
git:
repo_clone_url: https://github.com/digitalocean/sample-php.git
branch: main
run_command: heroku-php-apache2
environment_slug: php
instance_size_slug: apps-s-1vcpu-0.5gb
instance_count: 1
http_port: 8080
routes:
- path: /
region: fra
domains:
- domain: sample-php.example.com
type: PRIMARY
zone: example.com
minimum_tls_version: '1.3'
region:
slug: ams
label: Amsterdam
flag: netherlands
continent: Europe
data_centers:
- ams3
tier_slug: basic
live_url_base: https://sample-golang-zyhgn.ondigitalocean.app
live_domain: sample-golang-zyhgn.ondigitalocean.app
project_id: 88b72d1a-b78a-4d9f-9090-b53c4399073f
domains:
- id: e206c64e-a1a3-11ed-9e6e-9b7b6dc9a52b
phase: CONFIGURING
spec:
domain: sample-golang.example.com
type: PRIMARY
zone: example.com
minimum_tls_version: '1.3'
rotate_validation_records: false
certificate_expires_at: '2024-01-29T23:59:59Z'
progress:
steps:
- ended_at: '0001-01-01T00:00:00Z'
name: default-ingress-ready
started_at: '2023-01-30T22:15:45.021896292Z'
status: SUCCESS
- ended_at: '0001-01-01T00:00:00Z'
name: ensure-zone
started_at: '2023-01-30T22:15:45.022017004Z'
status: SUCCESS
- ended_at: '2023-01-30T15:42:28.50752065Z'
name: ensure-ns-records
started_at: '2023-01-30T22:15:45.025567874Z'
status: SUCCESS
- ended_at: '0001-01-01T00:00:00Z'
name: verify-nameservers
started_at: '2023-01-30T22:15:45.033591906Z'
status: SUCCESS
- ended_at: '0001-01-01T00:00:00Z'
name: ensure-record
started_at: '2023-01-30T22:15:45.156750604Z'
status: SUCCESS
- ended_at: '2023-01-30T15:43:30.258626422Z'
name: ensure-alias-record
started_at: '2023-01-30T22:15:45.165933869Z'
status: SUCCESS
- ended_at: '2023-01-30T15:43:30.258808279Z'
name: ensure-wildcard-record
started_at: '2023-01-30T22:15:45.166093422Z'
status: SUCCESS
- ended_at: '0001-01-01T00:00:00Z'
name: verify-cname
started_at: '2023-01-30T22:15:45.166205559Z'
status: SUCCESS
- ended_at: '2023-01-30T15:43:30.475903785Z'
name: ensure-ssl-txt-record-saved
started_at: '2023-01-30T22:15:45.295237186Z'
status: SUCCESS
- ended_at: '2023-01-30T15:43:30.476017236Z'
name: ensure-ssl-txt-record
started_at: '2023-01-30T22:15:45.295315291Z'
status: SUCCESS
- ended_at: '2023-01-30T15:43:30.476094058Z'
name: ensure-renewal-email
started_at: '2023-01-30T22:15:45.295374087Z'
status: SUCCESS
- ended_at: '0001-01-01T00:00:00Z'
name: ensure-CA-authorization
started_at: '2023-01-30T22:15:45.295428101Z'
status: SUCCESS
- ended_at: '0001-01-01T00:00:00Z'
name: ensure-certificate
started_at: '2023-01-30T22:15:45.978756406Z'
status: RUNNING
- ended_at: '0001-01-01T00:00:00'
name: create-deployment
started_at: '0001-01-01T00:00:00Z'
status: PENDING
- ended_at: '0001-01-01T00:00:00'
name: configuration-alert
started_at: '0001-01-01T00:00:00'
status: PENDING
dedicated_ips:
- ip: 192.168.1.1
id: c24d8f48-3bc4-49f5-8ca0-58e8164427ac
status: ASSIGNED
- ip: 192.168.1.2
id: 4768fb15-2837-4dda-9be5-3951df4bc3d0
status: ASSIGNED
deployment:
value:
deployment:
id: b6bdf840-2854-4f87-a36c-5f231c617c84
spec:
name: sample-golang
services:
- name: web
github:
repo: digitalocean/sample-golang
branch: branch
run_command: bin/sample-golang
environment_slug: go
instance_size_slug: apps-s-1vcpu-0.5gb
instance_count: 2
routes:
- path: /
region: ams
services:
- name: web
source_commit_hash: 9a4df0b8e161e323bc3cdf1dc71878080fe144fa
phase_last_updated_at: '0001-01-01T00:00:00Z'
created_at: '2020-07-28T18:00:00Z'
updated_at: '2020-07-28T18:00:00Z'
cause: commit 9a4df0b pushed to github/digitalocean/sample-golang
progress:
pending_steps: 6
total_steps: 6
steps:
- name: build
status: PENDING
steps:
- name: initialize
status: PENDING
- name: components
status: PENDING
steps:
- name: web
status: PENDING
component_name: web
message_base: Building service
- name: deploy
status: PENDING
steps:
- name: initialize
status: PENDING
- name: components
status: PENDING
steps:
- name: web
status: PENDING
steps:
- name: deploy
status: PENDING
component_name: web
message_base: Deploying service
- name: wait
status: PENDING
component_name: web
message_base: Waiting for service
component_name: web
- name: finalize
status: PENDING
phase: PENDING_BUILD
tier_slug: basic
logs:
value:
live_url: https://logs-example/build.log
url: https://logs/build.log
historic_logs:
- https://logs-example/archive/build.log
exec:
value:
url: wss://exec/?token=xxx
deployments:
value:
deployments:
- id: b6bdf840-2854-4f87-a36c-5f231c617c84
spec:
name: sample-golang
services:
- name: web
github:
repo: digitalocean/sample-golang
branch: branch
run_command: bin/sample-golang
environment_slug: go
instance_size_slug: apps-s-1vcpu-0.5gb
instance_count: 2
routes:
- path: /
region: ams
services:
- name: web
source_commit_hash: 9a4df0b8e161e323bc3cdf1dc71878080fe144fa
phase_last_updated_at: '0001-01-01T00:00:00Z'
created_at: '2020-07-28T18:00:00Z'
updated_at: '2020-07-28T18:00:00Z'
cause: commit 9a4df0b pushed to github/digitalocean/sample-golang
progress:
pending_steps: 6
total_steps: 6
steps:
- name: build
status: PENDING
steps:
- name: initialize
status: PENDING
- name: components
status: PENDING
steps:
- name: web
status: PENDING
component_name: web
message_base: Building service
- name: deploy
status: PENDING
steps:
- name: initialize
status: PENDING
- name: components
status: PENDING
steps:
- name: web
status: PENDING
steps:
- name: deploy
status: PENDING
component_name: web
message_base: Deploying service
- name: wait
status: PENDING
component_name: web
message_base: Waiting for service
component_name: web
- name: finalize
status: PENDING
phase: PENDING_BUILD
tier_slug: basic
links:
pages: {}
meta:
total: 1
instance_sizes:
value:
instance_sizes:
- name: Shared 1VCPU 0.5GB
slug: apps-s-1vcpu-0.5gb
cpu_type: SHARED
cpus: '1'
memory_bytes: '536870912'
usd_per_month: '5.00'
usd_per_second: '0.000002066799'
tier_slug: basic
single_instance_only: true
bandwidth_allowance_gib: '50'
- name: Shared 1VCPU 1GB Fixed
slug: apps-s-1vcpu-1gb-fixed
cpu_type: SHARED
cpus: '1'
memory_bytes: '1073741824'
usd_per_month: '10.00'
usd_per_second: '0.000004133598'
tier_slug: basic
single_instance_only: true
bandwidth_allowance_gib: '100'
- name: Shared 1VCPU 1GB
slug: apps-s-1vcpu-1gb
cpu_type: SHARED
cpus: '1'
memory_bytes: '1073741824'
usd_per_month: '12.00'
usd_per_second: '0.000004960317'
tier_slug: professional
bandwidth_allowance_gib: '150'
- name: Shared 1VCPU 2GB
slug: apps-s-1vcpu-2gb
cpu_type: SHARED
cpus: '1'
memory_bytes: '2147483648'
usd_per_month: '25.00'
usd_per_second: '0.000010333995'
tier_slug: professional
bandwidth_allowance_gib: '200'
- name: Shared 2VCPU 4GB
slug: apps-s-2vcpu-4gb
cpu_type: SHARED
cpus: '2'
memory_bytes: '4294967296'
usd_per_month: '50.00'
usd_per_second: '0.000020667989'
tier_slug: professional
bandwidth_allowance_gib: '250'
- name: Dedicated 1VCPU 0.5GB
slug: apps-d-1vcpu-0.5gb
cpu_type: DEDICATED
cpus: '1'
memory_bytes: '536870912'
usd_per_month: '29.00'
usd_per_second: '0.000011987434'
tier_slug: professional
scalable: true
bandwidth_allowance_gib: '100'
- name: Dedicated 1VCPU 1GB
slug: apps-d-1vcpu-1gb
cpu_type: DEDICATED
cpus: '1'
memory_bytes: '1073741824'
usd_per_month: '34.00'
usd_per_second: '0.000014054233'
tier_slug: professional
scalable: true
bandwidth_allowance_gib: '200'
- name: Dedicated 1VCPU 2GB
slug: apps-d-1vcpu-2gb
cpu_type: DEDICATED
cpus: '1'
memory_bytes: '2147483648'
usd_per_month: '39.00'
usd_per_second: '0.000016121032'
tier_slug: professional
scalable: true
bandwidth_allowance_gib: '300'
- name: Dedicated 1VCPU 4GB
slug: apps-d-1vcpu-4gb
cpu_type: DEDICATED
cpus: '1'
memory_bytes: '4294967296'
usd_per_month: '49.00'
usd_per_second: '0.000020254630'
tier_slug: professional
scalable: true
bandwidth_allowance_gib: '400'
- name: Dedicated 2VCPU 4GB
slug: apps-d-2vcpu-4gb
cpu_type: DEDICATED
cpus: '2'
memory_bytes: '4294967296'
usd_per_month: '78.00'
usd_per_second: '0.000032242063'
tier_slug: professional
scalable: true
bandwidth_allowance_gib: '500'
- name: Dedicated 2VCPU 8GB
slug: apps-d-2vcpu-8gb
cpu_type: DEDICATED
cpus: '2'
memory_bytes: '8589934592'
usd_per_month: '98.00'
usd_per_second: '0.000040509259'
tier_slug: professional
scalable: true
bandwidth_allowance_gib: '600'
- name: Dedicated 4VCPU 8GB
slug: apps-d-4vcpu-8gb
cpu_type: DEDICATED
cpus: '4'
memory_bytes: '8589934592'
usd_per_month: '156.00'
usd_per_second: '0.000064484127'
tier_slug: professional
scalable: true
bandwidth_allowance_gib: '700'
- name: Dedicated 4VCPU 16GB
slug: apps-d-4vcpu-16gb
cpu_type: DEDICATED
cpus: '4'
memory_bytes: '17179869184'
usd_per_month: '196.00'
usd_per_second: '0.000081018519'
tier_slug: professional
scalable: true
bandwidth_allowance_gib: '800'
- name: Dedicated 8VCPU 32GB
slug: apps-d-8vcpu-32gb
cpu_type: DEDICATED
cpus: '8'
memory_bytes: '34359738368'
usd_per_month: '392.00'
usd_per_second: '0.000162037037'
tier_slug: professional
scalable: true
bandwidth_allowance_gib: '900'
instance_size:
value:
instance_size:
name: Shared 1VCPU 0.5GB
slug: apps-s-1vcpu-0.5gb
cpu_type: SHARED
cpus: '1'
memory_bytes: '536870912'
usd_per_month: '5.00'
usd_per_second: '0.000002066799'
tier_slug: basic
single_instance_only: true
bandwidth_allowance_gib: '50'
regions:
value:
regions:
- slug: ams
label: Amsterdam
flag: netherlands
continent: Europe
data_centers:
- ams3
- slug: nyc
label: New York
flag: usa
continent: North America
data_centers:
- nyc1
- nyc3
default: true
- slug: fra
label: Frankfurt
flag: germany
continent: Europe
data_centers:
- fra1
- slug: sfo
label: San Francisco
flag: usa
continent: North America
data_centers:
- sfo3
- slug: sgp
label: Singapore
flag: singapore
continent: Asia
data_centers:
- sgp1
- slug: blr
label: Bangalore
flag: india
continent: Asia
data_centers:
- blr1
- slug: tor
label: Toronto
flag: canada
continent: North America
data_centers:
- tor1
- slug: lon
label: London
flag: uk
continent: Europe
data_centers:
- lon1
propose:
value:
app_name_available: true
existing_static_apps: '2'
max_free_static_apps: '3'
spec:
name: sample-golang
services:
- name: web
github:
repo: digitalocean/sample-golang
branch: branch
run_command: bin/sample-golang
environment_slug: go
instance_size_slug: apps-s-1vcpu-0.5gb
instance_count: 1
http_port: 8080
routes:
- path: /
region: ams
app_cost: 5
alerts:
value:
alerts:
- id: e552e1f9-c1b0-4e6d-8777-ad6f27767306
spec:
rule: DEPLOYMENT_FAILED
emails:
- sammy@digitalocean.com
phase: ACTIVE
progress:
steps:
- name: alert-configure-insight-alert
status: SUCCESS
started_at: '2020-07-28T18:00:00Z'
ended_at: '2020-07-28T18:00:00Z'
- id: b58cc9d4-0702-4ffd-ab45-4c2a8d979527
spec:
rule: CPU_UTILIZATION
operator: GREATER_THAN
value: 85
window: FIVE_MINUTES
emails:
- sammy@digitalocean.com
phase: ACTIVE
progress:
steps:
- name: alert-configure-insight-alert
status: SUCCESS
started_at: '2020-07-28T18:00:00Z'
ended_at: '2020-07-28T18:00:00Z'
alert:
value:
alert:
id: e552e1f9-c1b0-4e6d-8777-ad6f27767306
spec:
rule: DEPLOYMENT_FAILED
emails:
- sammy@digitalocean.com
phase: ACTIVE
progress:
steps:
- name: alert-configure-insight-alert
status: SUCCESS
started_at: '2020-07-28T18:00:00Z'
ended_at: '2020-07-28T18:00:00Z'
app_bandwidth_usage:
value:
app_bandwidth_usage:
- app_id: 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
bandwidth_bytes: '513668'
date: '2023-01-17T00:00:00Z'
app_bandwidth_usage_multiple:
value:
app_bandwidth_usage:
- app_id: 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
bandwidth_bytes: '513668'
- app_id: c2a93513-8d9b-4223-9d61-5e7272c81cf5
bandwidth_bytes: '254847'
date: '2023-01-17T00:00:00Z'
certificates_all:
value:
certificates:
- id: 892071a0-bb95-49bc-8021-3afd67a210bf
name: web-cert-01
not_after: '2017-02-22T00:23:00Z'
sha1_fingerprint: dfcc9f57d86bf58e321c2c6c31c7a971be244ac7
created_at: '2017-02-08T16:02:37Z'
dns_names:
- ''
state: verified
type: custom
- id: ba9b9c18-6c59-46c2-99df-70da170a42ba
name: web-cert-02
not_after: '2018-06-07T17:44:12Z'
sha1_fingerprint: 479c82b5c63cb6d3e6fac4624d58a33b267e166c
created_at: '2018-03-09T18:44:11Z'
dns_names:
- www.example.com
- example.com
state: verified
type: lets_encrypt
links: {}
meta:
total: 2
certificates_custom:
value:
certificate:
id: 892071a0-bb95-49bc-8021-3afd67a210bf
name: web-cert-01
not_after: '2017-02-22T00:23:00Z'
sha1_fingerprint: dfcc9f57d86bf58e321c2c6c31c7a971be244ac7
created_at: '2017-02-08T16:02:37Z'
dns_names:
- ''
state: verified
type: custom
certificates_lets_encrypt_pending:
value:
certificate:
id: ba9b9c18-6c59-46c2-99df-70da170a42ba
name: web-cert-02
not_after: '2018-06-07T17:44:12Z'
sha1_fingerprint: 479c82b5c63cb6d3e6fac4624d58a33b267e166c
created_at: '2018-03-09T18:44:11Z'
dns_names:
- www.example.com
- example.com
state: pending
type: lets_encrypt
certificates_lets_encrypt:
value:
certificate:
id: ba9b9c18-6c59-46c2-99df-70da170a42ba
name: web-cert-02
not_after: '2018-06-07T17:44:12Z'
sha1_fingerprint: 479c82b5c63cb6d3e6fac4624d58a33b267e166c
created_at: '2018-03-09T18:44:11Z'
dns_names:
- www.example.com
- example.com
state: verified
type: lets_encrypt
domain_records_all:
value:
domain_records:
- id: 28448429
type: NS
name: '@'
data: ns1.digitalocean.com
priority: null
port: null
ttl: 1800
weight: null
flags: null
tag: null
- id: 28448430
type: NS
name: '@'
data: ns2.digitalocean.com
priority: null
port: null
ttl: 1800
weight: null
flags: null
tag: null
- id: 28448431
type: NS
name: '@'
data: ns3.digitalocean.com
priority: null
port: null
ttl: 1800
weight: null
flags: null
tag: null
- id: 28448432
type: A
name: '@'
data: 1.2.3.4
priority: null
port: null
ttl: 1800
weight: null
flags: null
tag: null
links: {}
meta:
total: 4
droplets_all:
value:
droplets:
- id: 3164444
name: example.com
memory: 1024
vcpus: 1
disk: 25
disk_info:
- type: local
size:
amount: 25
unit: gib
locked: false
status: active
kernel: null
created_at: '2020-07-21T18:37:44Z'
features:
- backups
- private_networking
- ipv6
backup_ids:
- 53893572
next_backup_window:
start: '2020-07-30T00:00:00Z'
end: '2020-07-30T23:00:00Z'
snapshot_ids:
- 67512819
image:
id: 63663980
name: 20.04 (LTS) x64
distribution: Ubuntu
slug: ubuntu-20-04-x64
public: true
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
created_at: '2020-05-15T05:47:50Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.36
description: ''
tags: []
status: available
error_message: ''
volume_ids: []
size:
slug: s-1vcpu-1gb
memory: 1024
vcpus: 1
disk: 25
transfer: 1
price_monthly: 5
price_hourly: 0.00743999984115362
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
available: true
description: Basic
size_slug: s-1vcpu-1gb
networks:
v4:
- ip_address: 10.128.192.124
netmask: 255.255.0.0
gateway: nil
type: private
- ip_address: 192.241.165.154
netmask: 255.255.255.0
gateway: 192.241.165.1
type: public
v6:
- ip_address: 2604:a880:0:1010::18a:a001
netmask: 64
gateway: 2604:a880:0:1010::1
type: public
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
tags:
- web
- env:prod
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
- id: 3164459
name: assets.example.com
memory: 1024
vcpus: 1
disk: 25
disk_info:
- type: local
size:
amount: 25
unit: gib
locked: false
status: active
kernel: null
created_at: '2020-07-21T18:42:27Z'
features:
- private_networking
backup_ids: []
next_backup_window:
start: '2020-07-30T00:00:00Z'
end: '2020-07-30T23:00:00Z'
snapshot_ids: []
image:
id: 63663980
name: 20.04 (LTS) x64
distribution: Ubuntu
slug: ubuntu-20-04-x64
public: true
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
created_at: '2020-05-15T05:47:50Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.36
description: ''
tags: []
status: available
error_message: ''
volume_ids:
- 506f78a4-e098-11e5-ad9f-000f53306ae1
size:
slug: s-1vcpu-1gb
memory: 1024
vcpus: 1
disk: 25
transfer: 1
price_monthly: 5
price_hourly: 0.00743999984115362
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
available: true
description: Basic
size_slug: s-1vcpu-1gb
networks:
v4:
- ip_address: 10.128.192.138
netmask: 255.255.0.0
gateway: nil
type: private
- ip_address: 162.243.0.4
netmask: 255.255.255.0
gateway: 162.243.0.1
type: public
v6: []
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
tags:
- storage
- env:prod
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
- id: 3164412
name: stage.example.com
memory: 1024
vcpus: 1
disk: 25
disk_info:
- type: local
size:
amount: 25
unit: gib
locked: false
status: active
kernel: null
created_at: '2020-07-21T18:32:55Z'
features:
- private_networking
backup_ids: []
next_backup_window:
start: '2020-07-30T00:00:00Z'
end: '2020-07-30T23:00:00Z'
snapshot_ids: []
image:
id: 63663980
name: 20.04 (LTS) x64
distribution: Ubuntu
slug: ubuntu-20-04-x64
public: true
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
created_at: '2020-05-15T05:47:50Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.36
description: ''
tags: []
status: available
error_message: ''
volume_ids:
- 7724db7c-e098-11e5-b522-000f53304e51
size:
slug: s-1vcpu-1gb
memory: 1024
vcpus: 1
disk: 25
transfer: 1
price_monthly: 5
price_hourly: 0.00743999984115362
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
available: true
description: Basic
size_slug: s-1vcpu-1gb
networks:
v4:
- ip_address: 10.128.192.125
netmask: 255.255.0.0
gateway: nil
type: private
- ip_address: 192.241.247.248
netmask: 255.255.255.0
gateway: 192.241.247.1
type: public
v6: []
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
tags:
- env:stage
vpc_uuid: 5a4981aa-9653-4bd1-bef5-d6bff52042e4
links:
pages: {}
meta:
total: 3
droplets_tagged:
value:
droplets:
- id: 3164444
name: example.com
memory: 1024
vcpus: 1
disk: 25
disk_info:
- type: local
size:
amount: 25
unit: gib
locked: false
status: active
kernel: null
created_at: '2020-07-21T18:37:44Z'
features:
- backups
- private_networking
- ipv6
backup_ids:
- 53893572
next_backup_window:
start: '2020-07-30T00:00:00Z'
end: '2020-07-30T23:00:00Z'
snapshot_ids:
- 67512819
image:
id: 63663980
name: 20.04 (LTS) x64
distribution: Ubuntu
slug: ubuntu-20-04-x64
public: true
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
created_at: '2020-05-15T05:47:50Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.36
description: ''
tags: []
status: available
error_message: ''
volume_ids: []
size:
slug: s-1vcpu-1gb
memory: 1024
vcpus: 1
disk: 25
transfer: 1
price_monthly: 5
price_hourly: 0.00743999984115362
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
available: true
description: Basic
size_slug: s-1vcpu-1gb
networks:
v4:
- ip_address: 10.128.192.124
netmask: 255.255.0.0
gateway: nil
type: private
- ip_address: 192.241.165.154
netmask: 255.255.255.0
gateway: 192.241.165.1
type: public
v6:
- ip_address: 2604:a880:0:1010::18a:a001
netmask: 64
gateway: 2604:a880:0:1010::1
type: public
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
tags:
- web
- env:prod
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
- id: 3164459
name: assets.example.com
memory: 1024
vcpus: 1
disk: 25
disk_info:
- type: local
size:
amount: 25
unit: gib
locked: false
status: active
kernel: null
created_at: '2020-07-21T18:42:27Z'
features:
- private_networking
backup_ids: []
next_backup_window:
start: '2020-07-30T00:00:00Z'
end: '2020-07-30T23:00:00Z'
snapshot_ids: []
image:
id: 63663980
name: 20.04 (LTS) x64
distribution: Ubuntu
slug: ubuntu-20-04-x64
public: true
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
created_at: '2020-05-15T05:47:50Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.36
description: ''
tags: []
status: available
error_message: ''
volume_ids:
- 506f78a4-e098-11e5-ad9f-000f53306ae1
size:
slug: s-1vcpu-1gb
memory: 1024
vcpus: 1
disk: 25
transfer: 1
price_monthly: 5
price_hourly: 0.00743999984115362
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
available: true
description: Basic
size_slug: s-1vcpu-1gb
networks:
v4:
- ip_address: 10.128.192.138
netmask: 255.255.0.0
gateway: nil
type: private
- ip_address: 162.243.0.4
netmask: 255.255.255.0
gateway: 162.243.0.1
type: public
v6: []
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
tags:
- storage
- env:prod
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
links:
pages: {}
meta:
total: 2
gpu_droplets:
value:
droplets:
- id: 448543583
name: ml-ai-ubuntu-gpu-h100x1-80gb-tor1
memory: 245760
vcpus: 20
disk: 720
disk_info:
- type: local
size:
amount: 720
unit: gib
- type: scratch
size:
amount: 5120
unit: gib
locked: false
status: active
kernel: null
created_at: '2024-09-30T15:23:36Z'
features:
- droplet_agent
- private_networking
backup_ids: []
next_backup_window: null
snapshot_ids: []
image:
id: 166407044
name: AI/ML Ready H100x1
distribution: Ubuntu
slug: gpu-h100x1-base
public: true
regions:
- nyc3
- nyc1
- sfo1
- nyc2
- ams2
- sgp1
- lon1
- ams3
- fra1
- tor1
- sfo2
- blr1
- sfo3
- syd1
created_at: '2024-09-27T15:35:19Z'
min_disk_size: 25
type: base
size_gigabytes: 18.47
description: GPU H100 1x Base Image
tags: []
status: available
volume_ids: []
size:
slug: gpu-h100x1-80gb
memory: 245760
vcpus: 20
disk: 720
transfer: 15
price_monthly: 4529.3
price_hourly: 6.74
regions:
- tor1
available: true
description: H100 GPU - 1X
gpu_info:
count: 1
vram:
amount: 80
unit: gib
model: nvidia_h100
disk_info:
- type: local
size:
amount: 720
unit: gib
- type: scratch
size:
amount: 5120
unit: gib
size_slug: gpu-h100x1-80gb
networks:
v4:
- ip_address: 10.128.192.124
netmask: 255.255.0.0
gateway: nil
type: private
- ip_address: 192.241.165.154
netmask: 255.255.255.0
gateway: 192.241.165.1
type: public
v6: []
region:
name: Toronto 1
slug: tor1
features:
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
- server_id
- management_networking
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
- gpu-h100x1-80gb
- gpu-h100x8-640gb
tags: []
vpc_uuid: e2fdd15c-6ae6-4c11-8c5d-72dae2ba1ad1
gpu_info:
count: 1
vram:
amount: 80
unit: gib
model: nvidia_h100
links: {}
meta:
total: 1
droplet_create_request:
value:
name: example.com
region: nyc3
size: s-1vcpu-1gb
image: ubuntu-20-04-x64
ssh_keys:
- 289794
- 3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45
backups: true
ipv6: true
monitoring: true
tags:
- env:prod
- web
user_data: |
#cloud-config
runcmd:
- touch /test.txt
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
droplet_multi_create_request:
value:
names:
- sub-01.example.com
- sub-02.example.com
region: nyc3
size: s-1vcpu-1gb
image: ubuntu-20-04-x64
ssh_keys:
- 289794
- 3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45
backups: true
ipv6: true
monitoring: true
tags:
- env:prod
- web
user_data: |
#cloud-config
runcmd:
- touch /test.txt
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
droplet_create_response:
value:
droplet:
id: 3164444
name: example.com
memory: 1024
vcpus: 1
disk: 25
disk_info:
- type: local
size:
amount: 25
unit: gib
locked: false
status: new
kernel: null
created_at: '2020-07-21T18:37:44Z'
features:
- backups
- private_networking
- ipv6
- monitoring
backup_ids: []
next_backup_window: null
snapshot_ids: []
image:
id: 63663980
name: 20.04 (LTS) x64
distribution: Ubuntu
slug: ubuntu-20-04-x64
public: true
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
created_at: '2020-05-15T05:47:50Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.36
description: ''
tags: []
status: available
error_message: ''
volume_ids: []
size:
slug: s-1vcpu-1gb
memory: 1024
vcpus: 1
disk: 25
transfer: 1
price_monthly: 5
price_hourly: 0.00743999984115362
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
available: true
description: Basic
size_slug: s-1vcpu-1gb
networks:
v4: []
v6: []
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
tags:
- web
- env:prod
links:
actions:
- id: 7515
rel: create
href: https://api.digitalocean.com/v2/actions/7515
droplet_multi_create_response:
value:
droplets:
- id: 3164444
name: sub-01.example.com
memory: 1024
vcpus: 1
disk: 25
disk_info:
- type: local
size:
amount: 25
unit: gib
locked: false
status: new
kernel: null
created_at: '2020-07-21T18:37:44Z'
features:
- backups
- private_networking
- ipv6
- monitoring
backup_ids: []
next_backup_window: null
snapshot_ids: []
image:
id: 63663980
name: 20.04 (LTS) x64
distribution: Ubuntu
slug: ubuntu-20-04-x64
public: true
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
created_at: '2020-05-15T05:47:50Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.36
description: ''
tags: []
status: available
error_message: ''
volume_ids: []
size:
slug: s-1vcpu-1gb
memory: 1024
vcpus: 1
disk: 25
transfer: 1
price_monthly: 5
price_hourly: 0.00743999984115362
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
available: true
description: Basic
size_slug: s-1vcpu-1gb
networks:
v4: []
v6: []
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
tags:
- web
- env:prod
- id: 3164445
name: sub-02.example.com
memory: 1024
vcpus: 1
disk: 25
disk_info:
- type: local
size:
amount: 25
unit: gib
locked: false
status: new
kernel: null
created_at: '2020-07-21T18:37:44Z'
features:
- backups
- private_networking
- ipv6
- monitoring
backup_ids: []
next_backup_window: null
snapshot_ids: []
image:
id: 63663980
name: 20.04 (LTS) x64
distribution: Ubuntu
slug: ubuntu-20-04-x64
public: true
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
created_at: '2020-05-15T05:47:50Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.36
description: ''
tags: []
status: available
error_message: ''
volume_ids: []
size:
slug: s-1vcpu-1gb
memory: 1024
vcpus: 1
disk: 25
transfer: 1
price_monthly: 5
price_hourly: 0.00743999984115362
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
available: true
description: Basic
size_slug: s-1vcpu-1gb
networks:
v4: []
v6: []
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
tags:
- web
- env:prod
links:
actions:
- id: 7515
rel: create
href: https://api.digitalocean.com/v2/actions/7515
- id: 7516
rel: create
href: https://api.digitalocean.com/v2/actions/7516
droplet_single:
value:
droplet:
id: 3164444
name: example.com
memory: 1024
vcpus: 1
disk: 25
disk_info:
- type: local
size:
amount: 25
unit: gib
locked: false
status: active
kernel: null
created_at: '2020-07-21T18:37:44Z'
features:
- backups
- private_networking
- ipv6
backup_ids:
- 53893572
next_backup_window:
start: '2020-07-30T00:00:00Z'
end: '2020-07-30T23:00:00Z'
snapshot_ids:
- 67512819
image:
id: 63663980
name: 20.04 (LTS) x64
distribution: Ubuntu
slug: ubuntu-20-04-x64
public: true
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
created_at: '2020-05-15T05:47:50Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.36
description: ''
tags: []
status: available
error_message: ''
volume_ids: []
size:
slug: s-1vcpu-1gb
memory: 1024
vcpus: 1
disk: 25
transfer: 1
price_monthly: 5
price_hourly: 0.00743999984115362
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
available: true
description: Basic
size_slug: s-1vcpu-1gb
networks:
v4:
- ip_address: 10.128.192.124
netmask: 255.255.0.0
gateway: nil
type: private
- ip_address: 192.241.165.154
netmask: 255.255.255.0
gateway: 192.241.165.1
type: public
v6:
- ip_address: 2604:a880:0:1010::18a:a001
netmask: 64
gateway: 2604:a880:0:1010::1
type: public
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
tags:
- web
- env:prod
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
autoscale_pools_all:
value:
autoscale_pools:
- id: 0d3db13e-a604-4944-9827-7ec2642d32ac
name: test-autoscaler-group-01
config:
min_instances: 1
max_instances: 5
target_cpu_utilization: 0.5
cooldown_minutes: 10
droplet_template:
name: droplet-name
size: c-2
region: tor1
image: ubuntu-20-04-x64
tags:
- my-tag
ssh_keys:
- 3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
with_droplet_agent: true
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
ipv6: true
user_data: |
#cloud-config
runcmd:
- touch /test.txt
created_at: '2020-11-19T20:27:18Z'
updated_at: '2020-12-01T00:42:16Z'
current_utilization:
memory: 0.3588531587713522
cpu: 0.0007338008770232183
status: active
active_resources_count: 1
links:
pages: null
meta:
total: 1
autoscale_create_request_dynamic:
value:
name: my-autoscale-pool
config:
min_instances: 1
max_instances: 5
target_cpu_utilization: 0.5
cooldown_minutes: 10
droplet_template:
name: example.com
region: nyc3
size: c-2
image: ubuntu-20-04-x64
ssh_keys:
- 3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45
backups: true
ipv6: true
monitoring: true
tags:
- env:prod
- web
user_data: |
#cloud-config
runcmd:
- touch /test.txt
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
autoscale_create_request_static:
value:
name: my-autoscale-pool
config:
target_number_instances: 2
droplet_template:
name: example.com
region: nyc3
size: c-2
image: ubuntu-20-04-x64
ssh_keys:
- 3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45
backups: true
ipv6: true
monitoring: true
tags:
- env:prod
- web
user_data: |
#cloud-config
runcmd:
- touch /test.txt
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
autoscale_create_response_dynamic:
value:
autoscale_pool:
id: 0d3db13e-a604-4944-9827-7ec2642d32ac
name: test-autoscaler-group-01
config:
min_instances: 1
max_instances: 5
target_cpu_utilization: 0.5
cooldown_minutes: 10
droplet_template:
name: droplet-name
size: c-2
region: tor1
image: ubuntu-20-04-x64
tags:
- my-tag
ssh_keys:
- 3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
with_droplet_agent: true
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
ipv6: true
user_data: |
#cloud-config
runcmd:
- touch /test.txt
created_at: '2020-11-19T20:27:18Z'
updated_at: '2020-12-01T00:42:16Z'
status: active
active_resources_count: 1
autoscale_create_response_static:
value:
autoscale_pool:
id: 0d3db13e-a604-4944-9827-7ec2642d32ac
name: test-autoscaler-group-01
config:
target_number_instances: 1
droplet_template:
name: droplet-name
size: c-2
region: tor1
image: ubuntu-20-04-x64
tags:
- my-tag
ssh_keys:
- 3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
with_droplet_agent: true
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
ipv6: true
user_data: |
#cloud-config
runcmd:
- touch /test.txt
created_at: '2020-11-19T20:27:18Z'
updated_at: '2020-12-01T00:42:16Z'
status: active
active_resources_count: 1
autoscale_pool_single:
value:
autoscale_pool:
id: 0d3db13e-a604-4944-9827-7ec2642d32ac
name: test-autoscaler-group-01
config:
min_instances: 1
max_instances: 5
target_cpu_utilization: 0.5
cooldown_minutes: 10
droplet_template:
name: droplet-name
size: c-2
region: tor1
image: ubuntu-20-04-x64
tags:
- my-tag
ssh_keys:
- 3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
with_droplet_agent: true
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
ipv6: true
user_data: |
#cloud-config
runcmd:
- touch /test.txt
created_at: '2020-11-19T20:27:18Z'
updated_at: '2020-12-01T00:42:16Z'
current_utilization:
memory: 0.3588531587713522
cpu: 0.0007338008770232183
status: active
active_resources_count: 1
autoscale_update_request:
value:
name: my-autoscale-pool
config:
target_number_instances: 2
droplet_template:
name: example.com
region: nyc3
size: c-2
image: ubuntu-20-04-x64
ssh_keys:
- 3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45
backups: true
ipv6: true
monitoring: true
tags:
- env:prod
- web
user_data: |
#cloud-config
runcmd:
- touch /test.txt
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
members_all:
value:
droplets:
- droplet_id: 123456
created_at: '2020-11-19T20:27:18Z'
updated_at: '2020-12-01T00:42:16Z'
health_status: healthy
status: active
current_utilization:
memory: 0.3588531587713522
cpu: 0.0007338008770232183
links:
pages: null
meta:
total: 1
history_all:
value:
history:
- history_event_id: 01936530-4471-7b86-9634-32d8fcfecbc6
current_instance_count: 2
desired_instance_count: 2
reason: CONFIGURATION_CHANGE
status: success
created_at: '2020-11-19T20:27:18Z'
updated_at: '2020-12-01T00:42:16Z'
links:
pages: null
meta:
total: 1
floating_ip_assigning:
summary: Assigning to Droplet
value:
floating_ip:
ip: 45.55.96.47
droplet: null
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
locked: true
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
links:
droplets:
- id: 213939433
rel: droplet
href: https://api.digitalocean.com/v2/droplets/213939433
actions:
- id: 1088924622
rel: assign_ip
href: https://api.digitalocean.com/v2/actions/1088924622
floating_ip_reserving:
summary: Reserving to Region
value:
floating_ip:
ip: 45.55.96.47
droplet: null
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
locked: false
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
links: {}
floating_ip_assigned:
summary: Assigned to Droplet
value:
floating_ip:
ip: 45.55.96.47
droplet:
id: 3164444
name: example.com
memory: 1024
vcpus: 1
disk: 25
locked: false
status: active
kernel: null
created_at: '2020-07-21T18:37:44Z'
features:
- backups
- private_networking
- ipv6
backup_ids:
- 53893572
next_backup_window:
start: '2020-07-30T00:00:00Z'
end: '2020-07-30T23:00:00Z'
snapshot_ids:
- 67512819
image:
id: 63663980
name: 20.04 (LTS) x64
type: base
distribution: Ubuntu
slug: ubuntu-20-04-x64
public: true
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
created_at: '2020-05-15T05:47:50Z'
min_disk_size: 20
size_gigabytes: 2.36
description: ''
tags: []
status: available
error_message: ''
volume_ids: []
size:
slug: s-1vcpu-1gb
memory: 1024
vcpus: 1
disk: 25
transfer: 1
price_monthly: 5
price_hourly: 0.00743999984115362
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
available: true
description: Basic
size_slug: s-1vcpu-1gb
networks:
v4:
- ip_address: 10.128.192.124
netmask: 255.255.0.0
gateway: nil
type: private
- ip_address: 192.241.165.154
netmask: 255.255.255.0
gateway: 192.241.165.1
type: public
v6:
- ip_address: 2604:a880:0:1010::18a:a001
netmask: 64
gateway: 2604:a880:0:1010::1
type: public
region:
name: New York 3
slug: nyc3
features:
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
tags:
- web
- env:prod
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
region:
name: New York 3
slug: nyc3
features:
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
locked: false
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
floating_ip_reserved:
summary: Reserved to Region
value:
floating_ip:
ip: 45.55.96.47
droplet: null
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
locked: false
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
images_all:
value:
images:
- id: 7555620
name: Nifty New Snapshot
distribution: Ubuntu
slug: null
public: false
regions:
- nyc2
- nyc3
created_at: '2014-11-04T22:23:02Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.34
description: ''
tags: []
status: available
error_message: ''
- id: 7555621
name: Another Snapshot
distribution: Ubuntu
slug: null
public: false
regions:
- nyc2
created_at: '2014-11-04T22:23:02Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.34
description: ''
tags: []
status: available
error_message: ''
- id: 63663980
name: 20.04 (LTS) x64
distribution: Ubuntu
slug: ubuntu-20-04-x64
public: true
regions:
- nyc2
- nyc3
created_at: '2020-05-15T05:47:50Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.36
description: ''
tags: []
status: available
error_message: ''
- id: 7555621
name: A custom image
distribution: Arch Linux
slug: null
public: false
regions:
- nyc3
created_at: '2014-11-04T22:23:02Z'
type: custom
min_disk_size: 20
size_gigabytes: 2.34
description: ''
tags: []
status: available
error_message: ''
- id: 7555621
name: An APP image
distribution: Fedora
slug: null
public: false
regions:
- nyc2
- nyc3
created_at: '2014-11-04T22:23:02Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.34
description: ''
tags: []
status: available
error_message: ''
- id: 7555621
name: A simple tagged image
distribution: CentOS
slug: null
public: false
regions:
- nyc2
- nyc3
created_at: '2014-11-04T22:23:02Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.34
description: ''
tags:
- simple-image
status: available
error_message: ''
links:
pages: {}
meta:
total: 6
images_snapshots:
value:
images:
- id: 7555620
name: Nifty New Snapshot
distribution: Ubuntu
slug: null
public: false
regions:
- nyc2
- nyc3
created_at: '2014-11-04T22:23:02Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.34
description: ''
tags: []
status: available
error_message: ''
- id: 7555621
name: Another Snapshot
distribution: Ubuntu
slug: null
public: false
regions:
- nyc2
created_at: '2014-11-04T22:23:02Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.34
description: ''
tags: []
status: available
error_message: ''
links:
pages: {}
meta:
total: 2
images_distribution:
description: >
**Important:**
The `type` query parameter is not directly related to the `type`
attribute.
The main thing to remember here is that DigitalOcean-produced
distribution images will have `snapshot` as the type attribute.
value:
images:
- id: 63663980
name: 20.04 (LTS) x64
distribution: Ubuntu
slug: ubuntu-20-04-x64
public: true
regions:
- nyc2
- nyc3
created_at: '2020-05-15T05:47:50Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.36
description: ''
tags: []
status: available
error_message: ''
links:
pages: {}
meta:
total: 1
images_custom:
value:
images:
- id: 7555621
name: A custom image
distribution: Arch Linux
slug: null
public: false
regions:
- nyc3
created_at: '2014-11-04T22:23:02Z'
type: custom
min_disk_size: 20
size_gigabytes: 2.34
description: ''
tags: []
status: available
error_message: ''
links:
pages: {}
meta:
total: 1
images_application:
description: >
**Important:**
The `type` query parameter is not directly related to the `type`
attribute.
value:
images:
- id: 7555621
name: An APP image
distribution: Fedora
slug: null
public: false
regions:
- nyc2
- nyc3
created_at: '2014-11-04T22:23:02Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.34
description: ''
tags: []
status: available
error_message: ''
links:
pages: {}
meta:
total: 1
images_tagged:
value:
images:
- id: 7555621
name: A simple tagged image
distribution: CentOS
slug: null
public: false
regions:
- nyc2
- nyc3
created_at: '2014-11-04T22:23:02Z'
type: snapshot
min_disk_size: 20
size_gigabytes: 2.34
description: ''
tags:
- simple-image
status: available
error_message: ''
links:
pages: {}
meta:
total: 1
kubernetes_clusters_all:
value:
kubernetes_clusters:
- id: bd5f5959-5e1e-4205-a714-a914373942af
name: prod-cluster-01
region: nyc1
version: 1.18.6-do.0
cluster_subnet: 10.244.0.0/16
service_subnet: 10.245.0.0/16
vpc_uuid: c33931f2-a26a-4e61-b85c-4e95a2ec431b
ipv4: 68.183.121.157
endpoint: >-
https://bd5f5959-5e1e-4205-a714-a914373942af.k8s.ondigitalocean.com
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
node_pools:
- id: cdda885e-7663-40c8-bc74-3a036c66545d
name: frontend-pool
size: s-1vcpu-2gb
count: 3
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels: null
taints: []
auto_scale: false
min_nodes: 0
max_nodes: 0
nodes:
- id: 478247f8-b1bb-4f7a-8db9-2a5f8d4b8f8f
name: adoring-newton-3niq
status:
state: provisioning
droplet_id: '205545370'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: ad12e744-c2a9-473d-8aa9-be5680500eb1
name: adoring-newton-3nim
status:
state: provisioning
droplet_id: '205545371'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: e46e8d07-f58f-4ff1-9737-97246364400e
name: adoring-newton-3ni7
status:
state: provisioning
droplet_id: '205545372'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: f49f4379-7e7f-4af5-aeb6-0354bd840778
name: backend-pool
size: g-4vcpu-16gb
count: 2
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels:
service: backend
priority: high
taints: []
auto_scale: true
min_nodes: 2
max_nodes: 5
nodes:
- id: 3385619f-8ec3-42ba-bb23-8d21b8ba7518
name: affectionate-nightingale-3nif
status:
state: provisioning
droplet_id: '205545373'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: 4b8f60ff-ba06-4523-a6a4-b8148244c7e6
name: affectionate-nightingale-3niy
status:
state: provisioning
droplet_id: '205545374'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
maintenance_policy:
start_time: '00:00'
duration: 4h0m0s
day: any
auto_upgrade: false
status:
state: provisioning
message: provisioning
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
surge_upgrade: false
registry_enabled: false
ha: false
control_plane_firewall:
enabled: true
allowed_addresses:
- 1.2.3.4/32
- 1.1.0.0/16
meta:
total: 1
kubernetes_clusters_basic_request:
value:
name: prod-cluster-01
region: nyc1
version: 1.18.6-do.0
node_pools:
- size: s-1vcpu-2gb
count: 3
name: worker-pool
kubernetes_clusters_multi_pool_request:
description: >
This example request creates a Kubernetes cluster with two node pools.
It
also demonstrates setting tags, labels, auto scaling, and a maintenance
policy.
value:
name: prod-cluster-01
region: nyc1
version: 1.18.6-do.0
tags:
- production
- web-team
node_pools:
- size: s-1vcpu-2gb
count: 3
name: frontend-pool
tags:
- frontend
- size: g-4vcpu-16gb
count: 2
name: backend-pool
labels:
service: backend
priority: high
auto_scale: true
min_nodes: 2
max_nodes: 5
maintenance_policy:
start_time: '12:00'
day: any
kubernetes_clusters_create_basic_response:
value:
kubernetes_cluster:
id: bd5f5959-5e1e-4205-a714-a914373942af
name: prod-cluster-01
region: nyc1
version: 1.18.6-do.0
cluster_subnet: 10.244.0.0/16
service_subnet: 10.245.0.0/16
vpc_uuid: c33931f2-a26a-4e61-b85c-4e95a2ec431b
ipv4: ''
endpoint: ''
tags:
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
node_pools:
- id: cdda885e-7663-40c8-bc74-3a036c66545d
name: worker-pool
size: s-1vcpu-2gb
count: 3
tags:
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels: null
taints: []
auto_scale: false
min_nodes: 0
max_nodes: 0
nodes:
- id: 478247f8-b1bb-4f7a-8db9-2a5f8d4b8f8f
name: ''
status:
state: provisioning
droplet_id: ''
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: ad12e744-c2a9-473d-8aa9-be5680500eb1
name: ''
status:
state: provisioning
droplet_id: ''
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: e46e8d07-f58f-4ff1-9737-97246364400e
name: ''
status:
state: provisioning
droplet_id: ''
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
maintenance_policy:
start_time: '00:00'
duration: 4h0m0s
day: any
auto_upgrade: false
status:
state: provisioning
message: provisioning
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
surge_upgrade: false
registry_enabled: false
ha: false
control_plane_firewall:
enabled: true
allowed_addresses:
- 1.2.3.4/32
- 1.1.0.0/16
kubernetes_clusters_multi_pool_response:
value:
kubernetes_clusters:
id: bd5f5959-5e1e-4205-a714-a914373942af
name: prod-cluster-01
region: nyc1
version: 1.18.6-do.0
cluster_subnet: 10.244.0.0/16
service_subnet: 10.245.0.0/16
vpc_uuid: c33931f2-a26a-4e61-b85c-4e95a2ec431b
ipv4: ''
endpoint: ''
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
node_pools:
- id: cdda885e-7663-40c8-bc74-3a036c66545d
name: frontend-pool
size: s-1vcpu-2gb
count: 3
tags:
- production
- web-team
- frontend
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels: null
taints: []
auto_scale: false
min_nodes: 0
max_nodes: 0
nodes:
- id: 478247f8-b1bb-4f7a-8db9-2a5f8d4b8f8f
name: ''
status:
state: provisioning
droplet_id: ''
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: ad12e744-c2a9-473d-8aa9-be5680500eb1
name: ''
status:
state: provisioning
droplet_id: ''
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: e46e8d07-f58f-4ff1-9737-97246364400e
name: ''
status:
state: provisioning
droplet_id: ''
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: f49f4379-7e7f-4af5-aeb6-0354bd840778
name: backend-pool
size: g-4vcpu-16gb
count: 2
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels:
service: backend
priority: high
taints: []
auto_scale: true
min_nodes: 2
max_nodes: 5
nodes:
- id: 3385619f-8ec3-42ba-bb23-8d21b8ba7518
name: ''
status:
state: provisioning
droplet_id: ''
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: 4b8f60ff-ba06-4523-a6a4-b8148244c7e6
name: ''
status:
state: provisioning
droplet_id: ''
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
maintenance_policy:
start_time: '12:00'
duration: 4h0m0s
day: any
auto_upgrade: false
status:
state: provisioning
message: provisioning
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
surge_upgrade: false
registry_enabled: false
ha: false
control_plane_firewall:
enabled: true
allowed_addresses:
- 1.2.3.4/32
- 1.1.0.0/16
kubernetes_single:
value:
kubernetes_cluster:
id: bd5f5959-5e1e-4205-a714-a914373942af
name: prod-cluster-01
region: nyc1
version: 1.18.6-do.0
cluster_subnet: 10.244.0.0/16
service_subnet: 10.245.0.0/16
vpc_uuid: c33931f2-a26a-4e61-b85c-4e95a2ec431b
ipv4: 68.183.121.157
endpoint: https://bd5f5959-5e1e-4205-a714-a914373942af.k8s.ondigitalocean.com
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
node_pools:
- id: cdda885e-7663-40c8-bc74-3a036c66545d
name: frontend-pool
size: s-1vcpu-2gb
count: 3
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels: null
taints: []
auto_scale: false
min_nodes: 0
max_nodes: 0
nodes:
- id: 478247f8-b1bb-4f7a-8db9-2a5f8d4b8f8f
name: adoring-newton-3niq
status:
state: running
droplet_id: '205545370'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: ad12e744-c2a9-473d-8aa9-be5680500eb1
name: adoring-newton-3nim
status:
state: running
droplet_id: '205545371'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: e46e8d07-f58f-4ff1-9737-97246364400e
name: adoring-newton-3ni7
status:
state: running
droplet_id: '205545372'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: f49f4379-7e7f-4af5-aeb6-0354bd840778
name: backend-pool
size: g-4vcpu-16gb
count: 2
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels:
service: backend
priority: high
taints: []
auto_scale: true
min_nodes: 2
max_nodes: 5
nodes:
- id: 3385619f-8ec3-42ba-bb23-8d21b8ba7518
name: affectionate-nightingale-3nif
status:
state: running
droplet_id: '205545373'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: 4b8f60ff-ba06-4523-a6a4-b8148244c7e6
name: affectionate-nightingale-3niy
status:
state: running
droplet_id: '205545374'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
maintenance_policy:
start_time: '00:00'
duration: 4h0m0s
day: any
auto_upgrade: false
status:
state: running
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
surge_upgrade: false
registry_enabled: false
ha: false
control_plane_firewall:
enabled: true
allowed_addresses:
- 1.2.3.4/32
- 1.1.0.0/16
kubernetes_updated:
value:
kubernetes_cluster:
id: bd5f5959-5e1e-4205-a714-a914373942af
name: prod-cluster-01
region: nyc1
version: 1.18.6-do.0
cluster_subnet: 10.244.0.0/16
service_subnet: 10.245.0.0/16
vpc_uuid: c33931f2-a26a-4e61-b85c-4e95a2ec431b
ipv4: 68.183.121.157
endpoint: https://bd5f5959-5e1e-4205-a714-a914373942af.k8s.ondigitalocean.com
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
node_pools:
- id: cdda885e-7663-40c8-bc74-3a036c66545d
name: frontend-pool
size: s-1vcpu-2gb
count: 3
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels: null
taints: []
auto_scale: false
min_nodes: 0
max_nodes: 0
nodes:
- id: 478247f8-b1bb-4f7a-8db9-2a5f8d4b8f8f
name: adoring-newton-3niq
status:
state: running
droplet_id: '205545370'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: ad12e744-c2a9-473d-8aa9-be5680500eb1
name: adoring-newton-3nim
status:
state: running
droplet_id: '205545371'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: e46e8d07-f58f-4ff1-9737-97246364400e
name: adoring-newton-3ni7
status:
state: running
droplet_id: '205545372'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: f49f4379-7e7f-4af5-aeb6-0354bd840778
name: backend-pool
size: g-4vcpu-16gb
count: 2
tags:
- production
- web-team
- k8s
- k8s:bd5f5959-5e1e-4205-a714-a914373942af
- k8s:worker
labels:
service: backend
priority: high
taints: []
auto_scale: true
min_nodes: 2
max_nodes: 5
nodes:
- id: 3385619f-8ec3-42ba-bb23-8d21b8ba7518
name: affectionate-nightingale-3nif
status:
state: running
droplet_id: '205545373'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
- id: 4b8f60ff-ba06-4523-a6a4-b8148244c7e6
name: affectionate-nightingale-3niy
status:
state: running
droplet_id: '205545374'
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
maintenance_policy:
start_time: '00:00'
duration: 4h0m0s
day: any
auto_upgrade: true
status:
state: running
created_at: '2018-11-15T16:00:11Z'
updated_at: '2018-11-15T16:00:11Z'
surge_upgrade: true
registry_enabled: false
ha: false
control_plane_firewall:
enabled: true
allowed_addresses:
- 1.2.3.4/32
- 1.1.0.0/16
kubernetes_options:
value:
options:
regions:
- name: New York 1
slug: nyc1
- name: Singapore 1
slug: sgp1
- name: London 1
slug: lon1
- name: New York 3
slug: nyc3
- name: Amsterdam 3
slug: ams3
- name: Frankfurt 1
slug: fra1
- name: Toronto 1
slug: tor1
- name: San Francisco 2
slug: sfo2
- name: Bangalore 1
slug: blr1
- name: San Francisco 3
slug: sfo3
versions:
- slug: 1.18.8-do.0
kubernetes_version: 1.18.8
supported_features:
- cluster-autoscaler
- docr-integration
- token-authentication
- slug: 1.17.11-do.0
kubernetes_version: 1.17.11
supported_features:
- cluster-autoscaler
- docr-integration
- token-authentication
- slug: 1.16.14-do.0
kubernetes_version: 1.16.14
supported_features:
- cluster-autoscaler
- docr-integration
- token-authentication
sizes:
- name: s-1vcpu-2gb
slug: s-1vcpu-2gb
- name: s-2vcpu-2gb
slug: s-2vcpu-2gb
- name: s-1vcpu-3gb
slug: s-1vcpu-3gb
- name: s-2vcpu-4gb
slug: s-2vcpu-4gb
- name: s-4vcpu-8gb
slug: s-4vcpu-8gb
- name: c-2-4GiB
slug: c-2
- name: g-2vcpu-8gb
slug: g-2vcpu-8gb
- name: gd-2vcpu-8gb
slug: gd-2vcpu-8gb
- name: s-8vcpu-16gb
slug: s-8vcpu-16gb
- name: s-6vcpu-16gb
slug: s-6vcpu-16gb
- name: c-4-8GiB
slug: c-4
- name: m-2vcpu-16gb
slug: m-2vcpu-16gb
- name: m3-2vcpu-16gb
slug: m3-2vcpu-16gb
- name: g-4vcpu-16gb
slug: g-4vcpu-16gb
- name: gd-4vcpu-16gb
slug: gd-4vcpu-16gb
- name: m6-2vcpu-16gb
slug: m6-2vcpu-16gb
- name: s-8vcpu-32gb
slug: s-8vcpu-32gb
- name: c-8-16GiB
slug: c-8
- name: m-4vcpu-32gb
slug: m-4vcpu-32gb
- name: m3-4vcpu-32gb
slug: m3-4vcpu-32gb
- name: g-8vcpu-32gb
slug: g-8vcpu-32gb
- name: s-12vcpu-48gb
slug: s-12vcpu-48gb
- name: gd-8vcpu-32gb
slug: gd-8vcpu-32gb
- name: m6-4vcpu-32gb
slug: m6-4vcpu-32gb
- name: s-16vcpu-64gb
slug: s-16vcpu-64gb
- name: c-16
slug: c-16
- name: m-8vcpu-64gb
slug: m-8vcpu-64gb
- name: m3-8vcpu-64gb
slug: m3-8vcpu-64gb
- name: g-16vcpu-64gb
slug: g-16vcpu-64gb
- name: s-20vcpu-96gb
slug: s-20vcpu-96gb
- name: gd-16vcpu-64gb
slug: gd-16vcpu-64gb
- name: m6-8vcpu-64gb
slug: m6-8vcpu-64gb
- name: s-24vcpu-128gb
slug: s-24vcpu-128gb
- name: c-32-64GiB
slug: c-32
- name: m-16vcpu-128gb
slug: m-16vcpu-128gb
- name: m3-16vcpu-128gb
slug: m3-16vcpu-128gb
- name: g-32vcpu-128gb
slug: g-32vcpu-128gb
- name: s-32vcpu-192gb
slug: s-32vcpu-192gb
- name: gd-32vcpu-128gb
slug: gd-32vcpu-128gb
- name: m-24vcpu-192gb
slug: m-24vcpu-192gb
- name: m6-16vcpu-128gb
slug: m6-16vcpu-128gb
- name: g-40vcpu-160gb
slug: g-40vcpu-160gb
- name: gd-40vcpu-160gb
slug: gd-40vcpu-160gb
- name: m3-24vcpu-192gb
slug: m3-24vcpu-192gb
- name: m-32vcpu-256gb
slug: m-32vcpu-256gb
- name: m6-24vcpu-192gb
slug: m6-24vcpu-192gb
- name: m3-32vcpu-256gb
slug: m3-32vcpu-256gb
- name: m6-32vcpu-256gb
slug: m6-32vcpu-256gb
load_balancers_all:
value:
load_balancers:
- id: 4de7ac8b-495b-4884-9a69-1050c6793cd6
name: example-lb-01
ip: 104.131.186.241
size: lb-small
algorithm: round_robin
status: new
created_at: '2017-02-01T22:22:58Z'
forwarding_rules:
- entry_protocol: http
entry_port: 80
target_protocol: http
target_port: 80
certificate_id: ''
tls_passthrough: false
- entry_protocol: https
entry_port: 443
target_protocol: https
target_port: 443
certificate_id: ''
tls_passthrough: true
health_check:
protocol: http
port: 80
path: /
check_interval_seconds: 10
response_timeout_seconds: 5
healthy_threshold: 5
unhealthy_threshold: 3
sticky_sessions:
type: none
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
available: true
tag: ''
droplet_ids:
- 3164444
- 3164445
redirect_http_to_https: false
enable_proxy_protocol: false
enable_backend_keepalive: false
vpc_uuid: c33931f2-a26a-4e61-b85c-4e95a2ec431b
disable_lets_encrypt_dns_records: false
firewall:
deny:
- cidr:1.2.0.0/16
- ip:2.3.4.5
allow:
- ip:1.2.3.4
- cidr:2.3.4.0/24
- id: 56775c3f-04ab-4fb3-a7ed-40ef9bc8eece
name: prod-web-lb-01
ip: 45.55.125.24
size: lb-small
algorithm: round_robin
status: active
created_at: '2020-09-08T18:58:04Z'
forwarding_rules:
- entry_protocol: https
entry_port: 443
target_protocol: http
target_port: 8080
certificate_id: 892071a0-bb95-49bc-8021-3afd67a210bf
tls_passthrough: false
health_check:
protocol: https
port: 443
path: /
check_interval_seconds: 10
response_timeout_seconds: 5
healthy_threshold: 5
unhealthy_threshold: 3
sticky_sessions:
type: cookies
cookie_name: DO-LB
cookie_ttl_seconds: 300
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
available: true
tag: prod:web
droplet_ids:
- 55806512
- 55806515
- 55806524
redirect_http_to_https: true
enable_proxy_protocol: false
enable_backend_keepalive: false
vpc_uuid: 587d698c-de84-11e8-80bc-3cfdfea9fcd1
disable_lets_encrypt_dns_records: false
project_id: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
http_idle_timeout_seconds: 60
firewall:
deny:
- cidr:1.2.0.0/16
- ip:2.3.4.5
allow:
- ip:1.2.3.4
- cidr:2.3.4.0/24
links: {}
meta:
total: 2
load_balancer_basic_create_request:
description: Passing requests directly through to 80 and 443.
value:
name: example-lb-01
region: nyc3
forwarding_rules:
- entry_protocol: http
entry_port: 80
target_protocol: http
target_port: 80
- entry_protocol: https
entry_port: 443
target_protocol: https
target_port: 443
tls_passthrough: true
droplet_ids:
- 3164444
- 3164445
project_id: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
http_idle_timeout_seconds: 60
firewall:
deny:
- cidr:1.2.0.0/16
- ip:2.3.4.5
allow:
- ip:1.2.3.4
- cidr:2.3.4.0/24
load_balancer_ssl_termination_create_request:
description: >-
Terminating SSL at the load balancer using a managed SSL certificate
specifying Droplets using `droplet_ids`.
value:
name: example-lb-01
region: nyc3
forwarding_rules:
- entry_protocol: https
entry_port: 443
target_protocol: http
target_port: 8080
certificate_id: 892071a0-bb95-49bc-8021-3afd67a210bf
droplet_ids:
- 3164444
- 3164445
load_balancer_using_tag_create_request:
description: >-
Terminating SSL at the load balancer using a managed SSL certificate
specifying Droplets using `tag`.
value:
name: example-lb-01
region: nyc3
forwarding_rules:
- entry_protocol: https
entry_port: 443
target_protocol: http
target_port: 8080
certificate_id: 892071a0-bb95-49bc-8021-3afd67a210bf
tag: prod:web
load_balancer_sticky_sessions_and_health_check_create_request:
description: >-
Terminating SSL at the load balancer using a managed SSL certificate
specifying Droplets using `tag`.
value:
name: example-lb-01
region: nyc3
forwarding_rules:
- entry_protocol: https
entry_port: 443
target_protocol: http
target_port: 8080
certificate_id: 892071a0-bb95-49bc-8021-3afd67a210bf
health_check:
protocol: http
port: 8080
path: /health
check_interval_seconds: 10
response_timeout_seconds: 5
healthy_threshold: 5
unhealthy_threshold: 3
sticky_sessions:
type: cookies
cookie_name: LB_COOKIE
cookie_ttl_seconds: 300
tag: prod:web
load_balancer_basic_response:
value:
load_balancer:
id: 4de7ac8b-495b-4884-9a69-1050c6793cd6
name: example-lb-01
ip: 104.131.186.241
size: lb-small
algorithm: round_robin
status: new
created_at: '2017-02-01T22:22:58Z'
forwarding_rules:
- entry_protocol: http
entry_port: 80
target_protocol: http
target_port: 80
certificate_id: ''
tls_passthrough: false
- entry_protocol: https
entry_port: 443
target_protocol: https
target_port: 443
certificate_id: ''
tls_passthrough: true
health_check:
protocol: http
port: 80
path: /
check_interval_seconds: 10
response_timeout_seconds: 5
healthy_threshold: 5
unhealthy_threshold: 3
sticky_sessions:
type: none
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
available: true
tag: ''
droplet_ids:
- 3164444
- 3164445
redirect_http_to_https: false
enable_proxy_protocol: false
enable_backend_keepalive: false
vpc_uuid: c33931f2-a26a-4e61-b85c-4e95a2ec431b
disable_lets_encrypt_dns_records: false
project_id: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
http_idle_timeout_seconds: 60
firewall:
deny:
- cidr:1.2.0.0/16
- ip:2.3.4.5
allow:
- ip:1.2.3.4
- cidr:2.3.4.0/24
load_balancer_ssl_termination_response:
value:
load_balancer:
id: 4de7ac8b-495b-4884-9a69-1050c6793cd6
name: example-lb-01
ip: 104.131.186.241
size: lb-small
algorithm: round_robin
status: new
created_at: '2017-02-01T22:22:58Z'
forwarding_rules:
- entry_protocol: https
entry_port: 443
target_protocol: http
target_port: 8080
certificate_id: 892071a0-bb95-49bc-8021-3afd67a210bf
health_check:
protocol: http
port: 80
path: /
check_interval_seconds: 10
response_timeout_seconds: 5
healthy_threshold: 5
unhealthy_threshold: 3
sticky_sessions:
type: none
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
available: true
tag: ''
droplet_ids:
- 3164444
- 3164445
redirect_http_to_https: false
enable_proxy_protocol: false
enable_backend_keepalive: false
vpc_uuid: c33931f2-a26a-4e61-b85c-4e95a2ec431b
disable_lets_encrypt_dns_records: false
load_balancer_using_tag_response:
value:
load_balancer:
id: 4de7ac8b-495b-4884-9a69-1050c6793cd6
name: example-lb-01
ip: 104.131.186.241
size: lb-small
algorithm: round_robin
status: new
created_at: '2017-02-01T22:22:58Z'
forwarding_rules:
- entry_protocol: https
entry_port: 443
target_protocol: http
target_port: 8080
certificate_id: 892071a0-bb95-49bc-8021-3afd67a210bf
health_check:
protocol: http
port: 80
path: /
check_interval_seconds: 10
response_timeout_seconds: 5
healthy_threshold: 5
unhealthy_threshold: 3
sticky_sessions:
type: none
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
available: true
tag: prod:web
droplet_ids:
- 3164444
- 3164445
redirect_http_to_https: false
enable_proxy_protocol: false
enable_backend_keepalive: false
vpc_uuid: c33931f2-a26a-4e61-b85c-4e95a2ec431b
disable_lets_encrypt_dns_records: false
project_id: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
load_balancer_sticky_sessions_and_health_check_response:
value:
load_balancer:
id: 4de7ac8b-495b-4884-9a69-1050c6793cd6
name: example-lb-01
ip: 104.131.186.241
size: lb-small
algorithm: round_robin
status: new
created_at: '2017-02-01T22:22:58Z'
forwarding_rules:
- entry_protocol: https
entry_port: 443
target_protocol: http
target_port: 8080
certificate_id: 892071a0-bb95-49bc-8021-3afd67a210bf
health_check:
protocol: http
port: 8080
path: /health
check_interval_seconds: 10
response_timeout_seconds: 5
healthy_threshold: 5
unhealthy_threshold: 3
sticky_sessions:
type: cookies
cookie_name: LB_COOKIE
cookie_ttl_seconds: 300
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
available: true
tag: prod:web
droplet_ids:
- 3164444
- 3164445
redirect_http_to_https: false
enable_proxy_protocol: false
enable_backend_keepalive: false
vpc_uuid: c33931f2-a26a-4e61-b85c-4e95a2ec431b
disable_lets_encrypt_dns_records: false
project_id: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
load_balancer_update_request:
value:
name: updated-example-lb-01
region: nyc3
droplet_ids:
- 3164444
- 3164445
algorithm: round_robin
forwarding_rules:
- entry_protocol: http
entry_port: 80
target_protocol: http
target_port: 80
certificate_id: ''
tls_passthrough: false
- entry_protocol: https
entry_port: 443
target_protocol: https
target_port: 443
certificate_id: ''
tls_passthrough: true
health_check:
protocol: http
port: 80
path: /
check_interval_seconds: 10
response_timeout_seconds: 5
healthy_threshold: 5
unhealthy_threshold: 3
sticky_sessions:
type: none
redirect_http_to_https: false
enable_proxy_protocol: true
enable_backend_keepalive: true
vpc_uuid: c33931f2-a26a-4e61-b85c-4e95a2ec431b
project_id: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
http_idle_timeout_seconds: 60
firewall:
deny:
- cidr:1.2.0.0/16
- ip:2.3.4.5
allow:
- ip:1.2.3.4
- cidr:2.3.4.0/24
load_balancer_update_response:
value:
load_balancer:
id: 4de7ac8b-495b-4884-9a69-1050c6793cd6
name: updated-example-lb-01
ip: 104.131.186.241
size: lb-small
algorithm: round_robin
status: new
created_at: '2017-02-01T22:22:58Z'
forwarding_rules:
- entry_protocol: http
entry_port: 80
target_protocol: http
target_port: 80
certificate_id: ''
tls_passthrough: false
- entry_protocol: https
entry_port: 443
target_protocol: https
target_port: 443
certificate_id: ''
tls_passthrough: true
health_check:
protocol: http
port: 80
path: /
check_interval_seconds: 10
response_timeout_seconds: 5
healthy_threshold: 5
unhealthy_threshold: 3
sticky_sessions:
type: none
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
available: true
tag: ''
droplet_ids:
- 3164444
- 3164445
redirect_http_to_https: false
enable_proxy_protocol: true
enable_backend_keepalive: true
vpc_uuid: c33931f2-a26a-4e61-b85c-4e95a2ec431b
disable_lets_encrypt_dns_records: false
project_id: 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
http_idle_timeout_seconds: 60
firewall:
deny:
- cidr:1.2.0.0/16
- ip:2.3.4.5
allow:
- ip:1.2.3.4
- cidr:2.3.4.0/24
inbound_private_droplet_bandwidth:
value:
status: success
data:
resultType: matrix
result:
- metric:
direction: inbound
host_id: '222651441'
interface: private
values:
- - 1634052360
- '0.016600450090265357'
- - 1634052480
- '0.015085955677299055'
- - 1634052600
- '0.014941163855322308'
- - 1634052720
- '0.016214285714285712'
inbound_public_droplet_bandwidth:
value:
status: success
data:
resultType: matrix
result:
- metric:
direction: inbound
host_id: '222651441'
interface: public
values:
- - 1634052360
- '0.016600450090265357'
- - 1634052480
- '0.015085955677299055'
- - 1634052600
- '0.014941163855322308'
- - 1634052720
- '0.016214285714285712'
outbound_private_droplet_bandwidth:
value:
status: success
data:
resultType: matrix
result:
- metric:
direction: outbound
host_id: '222651441'
interface: private
values:
- - 1634052360
- '0.016600450090265357'
- - 1634052480
- '0.015085955677299055'
- - 1634052600
- '0.014941163855322308'
- - 1634052720
- '0.016214285714285712'
outbound_public_droplet_bandwidth:
value:
status: success
data:
resultType: matrix
result:
- metric:
direction: outbound
host_id: '222651441'
interface: public
values:
- - 1634052360
- '0.016600450090265357'
- - 1634052480
- '0.015085955677299055'
- - 1634052600
- '0.014941163855322308'
- - 1634052720
- '0.016214285714285712'
droplet_cpu:
value:
status: success
data:
resultType: matrix
result:
- metric:
host_id: '222651441'
mode: idle
values:
- - 1635386880
- '122901.18'
- - 1635387000
- '123020.92'
- - 1635387120
- '123140.8'
- metric:
host_id: '222651441'
mode: iowait
values:
- - 1635386880
- '14.99'
- - 1635387000
- '15.01'
- - 1635387120
- '15.01'
- metric:
host_id: '222651441'
mode: irq
values:
- - 1635386880
- '0'
- - 1635387000
- '0'
- - 1635387120
- '0'
- metric:
host_id: '222651441'
mode: nice
values:
- - 1635386880
- '66.35'
- - 1635387000
- '66.35'
- - 1635387120
- '66.35'
- metric:
host_id: '222651441'
mode: softirq
values:
- - 1635386880
- '2.13'
- - 1635387000
- '2.13'
- - 1635387120
- '2.13'
- metric:
host_id: '222651441'
mode: steal
values:
- - 1635386880
- '7.89'
- - 1635387000
- '7.9'
- - 1635387120
- '7.91'
- metric:
host_id: '222651441'
mode: system
values:
- - 1635386880
- '140.09'
- - 1635387000
- '140.2'
- - 1635387120
- '140.23'
- metric:
host_id: '222651441'
mode: user
values:
- - 1635386880
- '278.57'
- - 1635387000
- '278.65'
- - 1635387120
- '278.69'
droplet_filesystem:
value:
status: success
data:
resultType: matrix
result:
- metric:
device: /dev/vda1
fstype: ext4
host_id: '222651441'
mountpoint: /
values:
- - 1635386880
- '25832407040'
- - 1635387000
- '25832407040'
- - 1635387120
- '25832407040'
app_memory_percentage:
value:
status: success
data:
resultType: matrix
result:
- metric:
app_component: sample-application
app_component_instance: sample-application-0
app_uuid: db3c021-15ad-4088-bfe8-99dc972b9cf6
values:
- - 1634052360
- '5.016600450090265357'
- - 1634052480
- '12.015085955677299055'
- - 1634052600
- '8.014941163855322308'
- - 1634052720
- '32.016214285714285712'
reserved_ip_assigning:
summary: Assigning to Droplet
value:
reserved_ip:
ip: 45.55.96.47
droplet: null
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
locked: true
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
links:
droplets:
- id: 213939433
rel: droplet
href: https://api.digitalocean.com/v2/droplets/213939433
actions:
- id: 1088924622
rel: assign_ip
href: https://api.digitalocean.com/v2/actions/1088924622
reserved_ip_reserving:
summary: Reserving to Region
value:
reserved_ip:
ip: 45.55.96.47
droplet: null
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
locked: false
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
links: {}
reserved_ip_assigned:
summary: Assigned to Droplet
value:
reserved_ip:
ip: 45.55.96.47
droplet:
id: 3164444
name: example.com
memory: 1024
vcpus: 1
disk: 25
locked: false
status: active
kernel: null
created_at: '2020-07-21T18:37:44Z'
features:
- backups
- private_networking
- ipv6
backup_ids:
- 53893572
next_backup_window:
start: '2020-07-30T00:00:00Z'
end: '2020-07-30T23:00:00Z'
snapshot_ids:
- 67512819
image:
id: 63663980
name: 20.04 (LTS) x64
type: base
distribution: Ubuntu
slug: ubuntu-20-04-x64
public: true
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
created_at: '2020-05-15T05:47:50Z'
min_disk_size: 20
size_gigabytes: 2.36
description: ''
tags: []
status: available
error_message: ''
volume_ids: []
size:
slug: s-1vcpu-1gb
memory: 1024
vcpus: 1
disk: 25
transfer: 1
price_monthly: 5
price_hourly: 0.00743999984115362
regions:
- ams2
- ams3
- blr1
- fra1
- lon1
- nyc1
- nyc2
- nyc3
- sfo1
- sfo2
- sfo3
- sgp1
- tor1
available: true
description: Basic
size_slug: s-1vcpu-1gb
networks:
v4:
- ip_address: 10.128.192.124
netmask: 255.255.0.0
gateway: nil
type: private
- ip_address: 192.241.165.154
netmask: 255.255.255.0
gateway: 192.241.165.1
type: public
v6:
- ip_address: 2604:a880:0:1010::18a:a001
netmask: 64
gateway: 2604:a880:0:1010::1
type: public
region:
name: New York 3
slug: nyc3
features:
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
tags:
- web
- env:prod
vpc_uuid: 760e09ef-dc84-11e8-981e-3cfdfeaae000
region:
name: New York 3
slug: nyc3
features:
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
locked: false
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
reserved_ip_reserved:
summary: Reserved to Region
value:
reserved_ip:
ip: 45.55.96.47
droplet: null
region:
name: New York 3
slug: nyc3
features:
- private_networking
- backups
- ipv6
- metadata
- install_agent
- storage
- image_transfer
available: true
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192g
locked: false
project_id: 746c6152-2fa2-11ed-92d3-27aaa54e4988
snapshots_all:
value:
snapshots:
- id: '6372321'
name: web-01-1595954862243
created_at: '2020-07-28T16:47:44Z'
regions:
- nyc3
- sfo3
resource_id: '200776916'
resource_type: droplet
min_disk_size: 25
size_gigabytes: 2.34
tags:
- web
- env:prod
- id: fbe805e8-866b-11e6-96bf-000f53315a41
name: pvc-01-1595954862243
created_at: '2019-09-28T23:14:30Z'
regions:
- nyc1
resource_id: 89bcc42f-85cf-11e6-a004-000f53315871
resource_type: volume
min_disk_size: 2
size_gigabytes: 0.1008
tags:
- k8s
links: {}
meta:
total: 2
snapshots_droplets_only:
value:
snapshots:
- id: '6372321'
name: web-01-1595954862243
created_at: '2020-07-28T16:47:44Z'
regions:
- nyc3
- sfo3
resource_id: '200776916'
resource_type: droplet
min_disk_size: 25
size_gigabytes: 2.34
tags:
- web
- env:prod
links: {}
meta:
total: 1
snapshots_volumes_only:
value:
snapshots:
- id: fbe805e8-866b-11e6-96bf-000f53315a41
name: pvc-01-1595954862243
created_at: '2019-09-28T23:14:30Z'
regions:
- nyc1
resource_id: 89bcc42f-85cf-11e6-a004-000f53315871
resource_type: volume
min_disk_size: 2
size_gigabytes: 0.1008
tags:
- k8s
links: {}
meta:
total: 1
volumes_all:
value:
volumes:
- id: 506f78a4-e098-11e5-ad9f-000f53306ae1
region:
name: New York 1
slug: nyc1
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
available: true
droplet_ids: []
name: example
description: Block store for examples
size_gigabytes: 10
created_at: '2016-03-02T17:00:49Z'
filesystem_type: ext4
filesystem_label: example
tags:
- aninterestingtag
- id: 506f78a4-e098-11e5-ad9f-000f53305eb2
region:
name: New York 3
slug: nyc3
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
available: true
droplet_ids: []
name: example
description: Block store for examples
size_gigabytes: 10
created_at: '2016-03-02T17:01:49Z'
filesystem_type: ext4
filesystem_label: example
tags:
- aninterestingtag
links: {}
meta:
total: 2
volumes_filtered_by_name:
value:
volumes:
- id: 506f78a4-e098-11e5-ad9f-000f53306ae1
region:
name: New York 1
slug: nyc1
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
available: true
droplet_ids: []
name: example
description: Block store for examples
size_gigabytes: 10
created_at: '2016-03-02T17:00:49Z'
filesystem_type: ext4
filesystem_label: example
tags:
- aninterestingtag
links: {}
meta:
total: 1
volumes_filtered_by_region:
value:
volumes:
- id: 506f78a4-e098-11e5-ad9f-000f53306ae1
region:
name: New York 1
slug: nyc1
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
available: true
droplet_ids: []
name: example
description: Block store for examples
size_gigabytes: 10
created_at: '2016-03-02T17:00:49Z'
filesystem_type: ext4
filesystem_label: example
tags:
- aninterestingtag
links: {}
meta:
total: 1
volume_action_attach_response:
value:
action:
id: 72531856
status: completed
type: attach_volume
started_at: '2020-11-12T17:51:03Z'
completed_at: '2020-11-12T17:51:14Z'
resource_type: volume
region:
name: New York 1
slug: nyc1
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
available: true
region_slug: nyc1
volume_action_detach_response:
value:
action:
id: 68212773
status: in-progress
type: detach_volume
started_at: '2015-10-15T17:46:15Z'
completed_at: null
resource_id: null
resource_type: backend
region:
name: New York 1
slug: nyc1
sizes:
- s-1vcpu-1gb
- s-1vcpu-2gb
- s-1vcpu-3gb
- s-2vcpu-2gb
- s-3vcpu-1gb
- s-2vcpu-4gb
- s-4vcpu-8gb
- s-6vcpu-16gb
- s-8vcpu-32gb
- s-12vcpu-48gb
- s-16vcpu-64gb
- s-20vcpu-96gb
- s-24vcpu-128gb
- s-32vcpu-192gb
features:
- private_networking
- backups
- ipv6
- metadata
available: true
region_slug: nyc1
security:
- bearer_auth: []