//native
type Digitalocean = {
token: string;
};
/**
* Initiate a Droplet Action
* To initiate an action on a Droplet send a POST request to
`/v2/droplets/$DROPLET_ID/actions`.
*/
export async function main(
auth: Digitalocean,
droplet_id: string,
body:
| {
type:
| "enable_backups"
| "disable_backups"
| "reboot"
| "power_cycle"
| "shutdown"
| "power_off"
| "power_on"
| "restore"
| "password_reset"
| "resize"
| "rebuild"
| "rename"
| "change_kernel"
| "enable_ipv6"
| "snapshot";
}
| ({
type:
| "enable_backups"
| "disable_backups"
| "reboot"
| "power_cycle"
| "shutdown"
| "power_off"
| "power_on"
| "restore"
| "password_reset"
| "resize"
| "rebuild"
| "rename"
| "change_kernel"
| "enable_ipv6"
| "snapshot";
} & {
backup_policy?: {
plan?: "daily" | "weekly";
weekday?: "SUN" | "MON" | "TUE" | "WED" | "THU" | "FRI" | "SAT";
hour?: 0 | 4 | 8 | 12 | 16 | 20;
window_length_hours?: number;
retention_period_days?: number;
} & {};
})
| ({
type:
| "enable_backups"
| "disable_backups"
| "reboot"
| "power_cycle"
| "shutdown"
| "power_off"
| "power_on"
| "restore"
| "password_reset"
| "resize"
| "rebuild"
| "rename"
| "change_kernel"
| "enable_ipv6"
| "snapshot";
} & { image?: number })
| ({
type:
| "enable_backups"
| "disable_backups"
| "reboot"
| "power_cycle"
| "shutdown"
| "power_off"
| "power_on"
| "restore"
| "password_reset"
| "resize"
| "rebuild"
| "rename"
| "change_kernel"
| "enable_ipv6"
| "snapshot";
} & { disk?: false | true; size?: string })
| ({
type:
| "enable_backups"
| "disable_backups"
| "reboot"
| "power_cycle"
| "shutdown"
| "power_off"
| "power_on"
| "restore"
| "password_reset"
| "resize"
| "rebuild"
| "rename"
| "change_kernel"
| "enable_ipv6"
| "snapshot";
} & { image?: string | number })
| ({
type:
| "enable_backups"
| "disable_backups"
| "reboot"
| "power_cycle"
| "shutdown"
| "power_off"
| "power_on"
| "restore"
| "password_reset"
| "resize"
| "rebuild"
| "rename"
| "change_kernel"
| "enable_ipv6"
| "snapshot";
} & { name?: string })
| ({
type:
| "enable_backups"
| "disable_backups"
| "reboot"
| "power_cycle"
| "shutdown"
| "power_off"
| "power_on"
| "restore"
| "password_reset"
| "resize"
| "rebuild"
| "rename"
| "change_kernel"
| "enable_ipv6"
| "snapshot";
} & { kernel?: number })
| ({
type:
| "enable_backups"
| "disable_backups"
| "reboot"
| "power_cycle"
| "shutdown"
| "power_off"
| "power_on"
| "restore"
| "password_reset"
| "resize"
| "rebuild"
| "rename"
| "change_kernel"
| "enable_ipv6"
| "snapshot";
} & { name?: string }),
) {
const url = new URL(
`https://api.digitalocean.com/v2/droplets/${droplet_id}/actions`,
);
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + auth.token,
},
body: JSON.stringify(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
Submitted by hugo697 536 days ago