Integrations / DigitalOcean
DigitalOcean
Cloud infrastructure: Droplets, DNS domains and App Platform apps.
9 actions
OAuth 2
6 read2 write1 destructive
Calls api.digitalocean.com
Connect
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "digitalocean" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();Permissions requested
| Scope | Why it is requested |
|---|---|
account:read | Identify the connected DigitalOcean account |
actions:read | Check the status of actions on your resources |
droplet:read | See your Droplets |
droplet:update | Reboot, power on and power off your Droplets |
droplet:delete | Delete Droplets |
domain:read | See your domains and DNS records |
domain:create | Add DNS records to your domains |
app:read | See your App Platform apps |
Actions
Add DNS recordwritedigitalocean.create_domain_recordAdd a DNS record (A, AAAA, CNAME, TXT, MX...) to a domain. Changes live DNS for that name.
Needs scope: domain:create
| Input | Type | Description | |
|---|---|---|---|
domain_name | string | Required | Domain, e.g. example.com |
type | string | Required | Record type |
name | string | Required | Host name, e.g. www or @ for the domain itself |
data | string | Required | Record value, e.g. an IP address |
ttl | integer | Optional | Time to live in seconds |
priority | integer | Optional | Priority for MX and SRV records |
await setu.execute({
userId: "user_1",
action: "digitalocean.create_domain_record",
input: {
"domain_name": "<domain_name>",
"type": "<type>",
"name": "<name>",
"data": "<data>"
},
});Delete Dropletdestructivedigitalocean.delete_dropletPermanently destroy a Droplet and its data. This cannot be undone; snapshots and backups are kept separately.
Needs scope: droplet:delete
| Input | Type | Description | |
|---|---|---|---|
droplet_id | integer | Required | Droplet id |
await setu.execute({
userId: "user_1",
action: "digitalocean.delete_droplet",
input: {
"droplet_id": 1
},
confirm: true,
});Power or reboot Dropletwritedigitalocean.droplet_actionReboot, power cycle, shut down, power off or power on a Droplet. Powering off or rebooting interrupts anything running on it. Returns an action id you can check with get_action.
Needs scope: droplet:update
| Input | Type | Description | |
|---|---|---|---|
droplet_id | integer | Required | Droplet id |
type | string | Required | What to do |
await setu.execute({
userId: "user_1",
action: "digitalocean.droplet_action",
input: {
"droplet_id": 1,
"type": "<type>"
},
});Get action statusreaddigitalocean.get_actionCheck the status of an action (such as a reboot) by its id: in-progress, completed or errored.
Needs scope: actions:read
| Input | Type | Description | |
|---|---|---|---|
action_id | integer | Required | Action id returned by an earlier call |
await setu.execute({
userId: "user_1",
action: "digitalocean.get_action",
input: {
"action_id": 1
},
});Get Dropletreaddigitalocean.get_dropletGet one Droplet by id: name, status, size and creation time.
Needs scope: droplet:read
| Input | Type | Description | |
|---|---|---|---|
droplet_id | integer | Required | Droplet id |
await setu.execute({
userId: "user_1",
action: "digitalocean.get_droplet",
input: {
"droplet_id": 1
},
});List appsreaddigitalocean.list_appsList App Platform apps with their names and live URLs.
Needs scope: app:read
| Input | Type | Description | |
|---|---|---|---|
per_page | integer | Optional | Results per page, up to 200 |
await setu.execute({
userId: "user_1",
action: "digitalocean.list_apps",
input: {},
});List DNS recordsreaddigitalocean.list_domain_recordsList DNS records of a domain, optionally only one type (A, CNAME, TXT...) or name.
Needs scope: domain:read
| Input | Type | Description | |
|---|---|---|---|
domain_name | string | Required | Domain, e.g. example.com |
type | string | Optional | Only this record type |
name | string | Optional | Only records with this fully qualified name |
per_page | integer | Optional | Results per page, up to 200 |
await setu.execute({
userId: "user_1",
action: "digitalocean.list_domain_records",
input: {
"domain_name": "<domain_name>"
},
});List domainsreaddigitalocean.list_domainsList the domains whose DNS is managed in the account.
Needs scope: domain:read
| Input | Type | Description | |
|---|---|---|---|
per_page | integer | Optional | Results per page, up to 200 |
await setu.execute({
userId: "user_1",
action: "digitalocean.list_domains",
input: {},
});List Dropletsreaddigitalocean.list_dropletsList the Droplets (virtual machines) in the account, optionally filtered by tag or name. Returns ids, names and statuses.
Needs scope: droplet:read
| Input | Type | Description | |
|---|---|---|---|
tag_name | string | Optional | Only Droplets with this tag |
name | string | Optional | Only Droplets with this exact name |
per_page | integer | Optional | Results per page, up to 200 |
await setu.execute({
userId: "user_1",
action: "digitalocean.list_droplets",
input: {},
});