(
+ clientOptions: ClientOptions = {},
+) {
+ const {
+ fetch = globalThis.fetch,
+ querySerializer: globalQuerySerializer,
+ bodySerializer: globalBodySerializer,
+ ...options
+ } = clientOptions;
let baseUrl = options.baseUrl ?? "";
if (baseUrl.endsWith("/")) {
baseUrl = baseUrl.slice(0, -1); // remove trailing slash
}
- async function coreFetch(url: P, fetchOptions: FetchOptions): Promise> {
- const { headers, body: requestBody, params = {}, parseAs = "json", querySerializer = globalQuerySerializer ?? defaultQuerySerializer, bodySerializer = globalBodySerializer ?? defaultBodySerializer, ...init } = fetchOptions || {};
+ async function coreFetch(
+ url: P,
+ fetchOptions: FetchOptions,
+ ): Promise> {
+ const {
+ headers,
+ body: requestBody,
+ params = {},
+ parseAs = "json",
+ querySerializer = globalQuerySerializer ?? defaultQuerySerializer,
+ bodySerializer = globalBodySerializer ?? defaultBodySerializer,
+ ...init
+ } = fetchOptions || {};
// URL
- const finalURL = createFinalURL(url as string, { baseUrl, params, querySerializer });
- const finalHeaders = mergeHeaders(DEFAULT_HEADERS, clientOptions?.headers, headers, (params as any).header);
+ const finalURL = createFinalURL(url as string, {
+ baseUrl,
+ params,
+ querySerializer,
+ });
+ const finalHeaders = mergeHeaders(
+ DEFAULT_HEADERS,
+ clientOptions?.headers,
+ headers,
+ (params as any).header,
+ );
// fetch!
- const requestInit: RequestInit = { redirect: "follow", ...options, ...init, headers: finalHeaders };
- if (requestBody) requestInit.body = bodySerializer(requestBody as any);
+ const requestInit: RequestInit = {
+ redirect: "follow",
+ ...options,
+ ...init,
+ headers: finalHeaders,
+ };
+ if (requestBody) {
+ requestInit.body = bodySerializer(requestBody as any);
+ }
// remove `Content-Type` if serialized body is FormData; browser will correctly set Content-Type & boundary expression
- if (requestInit.body instanceof FormData) finalHeaders.delete("Content-Type");
+ if (requestInit.body instanceof FormData) {
+ finalHeaders.delete("Content-Type");
+ }
const response = await fetch(finalURL, requestInit);
// handle empty content
// note: we return `{}` because we want user truthy checks for `.data` or `.error` to succeed
- if (response.status === 204 || response.headers.get("Content-Length") === "0") {
- return response.ok ? { data: {} as any, response: response as any } : { error: {} as any, response: response as any };
+ if (
+ response.status === 204 ||
+ response.headers.get("Content-Length") === "0"
+ ) {
+ return response.ok
+ ? { data: {} as any, response: response as any }
+ : { error: {} as any, response: response as any };
}
// parse response (falling back to .text() when necessary)
@@ -75,7 +164,10 @@ export default function createClient(clientOptions: ClientOpti
let data: any; // we have to leave this empty here so that we don't consume the body
if (parseAs !== "stream") {
const cloned = response.clone();
- data = typeof cloned[parseAs] === "function" ? await cloned[parseAs]() : await cloned.text();
+ data =
+ typeof cloned[parseAs] === "function"
+ ? await cloned[parseAs]()
+ : await cloned.text();
} else {
// bun consumes the body when calling response.body, therefore we need to clone the response before accessing it
data = response.clone().body;
@@ -101,46 +193,108 @@ export default function createClient(clientOptions: ClientOpti
type HeadPaths = PathsWithMethod;
type PatchPaths = PathsWithMethod;
type TracePaths = PathsWithMethod;
- type GetFetchOptions = FetchOptions>;
- type PutFetchOptions = FetchOptions>;
- type PostFetchOptions = FetchOptions>;
- type DeleteFetchOptions = FetchOptions>;
- type OptionsFetchOptions = FetchOptions>;
- type HeadFetchOptions = FetchOptions>;
- type PatchFetchOptions = FetchOptions>;
- type TraceFetchOptions = FetchOptions>;
+ type GetFetchOptions = FetchOptions<
+ FilterKeys
+ >;
+ type PutFetchOptions = FetchOptions<
+ FilterKeys
+ >;
+ type PostFetchOptions = FetchOptions<
+ FilterKeys
+ >;
+ type DeleteFetchOptions = FetchOptions<
+ FilterKeys
+ >;
+ type OptionsFetchOptions = FetchOptions<
+ FilterKeys
+ >;
+ type HeadFetchOptions = FetchOptions<
+ FilterKeys
+ >;
+ type PatchFetchOptions = FetchOptions<
+ FilterKeys
+ >;
+ type TraceFetchOptions = FetchOptions<
+ FilterKeys
+ >;
return {
/** Call a GET endpoint */
- async GET(url: P, ...init: HasRequiredKeys> extends never ? [GetFetchOptions?] : [GetFetchOptions
]) {
+ async GET
(
+ url: P,
+ ...init: HasRequiredKeys> extends never
+ ? [GetFetchOptions?]
+ : [GetFetchOptions
]
+ ) {
return coreFetch
(url, { ...init[0], method: "GET" } as any);
},
/** Call a PUT endpoint */
- async PUT
(url: P, ...init: HasRequiredKeys> extends never ? [PutFetchOptions?] : [PutFetchOptions
]) {
+ async PUT
(
+ url: P,
+ ...init: HasRequiredKeys> extends never
+ ? [PutFetchOptions?]
+ : [PutFetchOptions
]
+ ) {
return coreFetch
(url, { ...init[0], method: "PUT" } as any);
},
/** Call a POST endpoint */
- async POST
(url: P, ...init: HasRequiredKeys> extends never ? [PostFetchOptions?] : [PostFetchOptions
]) {
+ async POST
(
+ url: P,
+ ...init: HasRequiredKeys> extends never
+ ? [PostFetchOptions?]
+ : [PostFetchOptions
]
+ ) {
return coreFetch
(url, { ...init[0], method: "POST" } as any);
},
/** Call a DELETE endpoint */
- async DELETE
(url: P, ...init: HasRequiredKeys> extends never ? [DeleteFetchOptions?] : [DeleteFetchOptions
]) {
- return coreFetch
(url, { ...init[0], method: "DELETE" } as any);
+ async DELETE
(
+ url: P,
+ ...init: HasRequiredKeys> extends never
+ ? [DeleteFetchOptions?]
+ : [DeleteFetchOptions
]
+ ) {
+ return coreFetch
(url, {
+ ...init[0],
+ method: "DELETE",
+ } as any);
},
/** Call a OPTIONS endpoint */
- async OPTIONS
(url: P, ...init: HasRequiredKeys> extends never ? [OptionsFetchOptions?] : [OptionsFetchOptions
]) {
- return coreFetch
(url, { ...init[0], method: "OPTIONS" } as any);
+ async OPTIONS
(
+ url: P,
+ ...init: HasRequiredKeys> extends never
+ ? [OptionsFetchOptions?]
+ : [OptionsFetchOptions
]
+ ) {
+ return coreFetch
(url, {
+ ...init[0],
+ method: "OPTIONS",
+ } as any);
},
/** Call a HEAD endpoint */
- async HEAD
(url: P, ...init: HasRequiredKeys> extends never ? [HeadFetchOptions?] : [HeadFetchOptions
]) {
+ async HEAD
(
+ url: P,
+ ...init: HasRequiredKeys> extends never
+ ? [HeadFetchOptions?]
+ : [HeadFetchOptions
]
+ ) {
return coreFetch
(url, { ...init[0], method: "HEAD" } as any);
},
/** Call a PATCH endpoint */
- async PATCH
(url: P, ...init: HasRequiredKeys> extends never ? [PatchFetchOptions?] : [PatchFetchOptions
]) {
+ async PATCH
(
+ url: P,
+ ...init: HasRequiredKeys> extends never
+ ? [PatchFetchOptions?]
+ : [PatchFetchOptions
]
+ ) {
return coreFetch
(url, { ...init[0], method: "PATCH" } as any);
},
/** Call a TRACE endpoint */
- async TRACE
(url: P, ...init: HasRequiredKeys> extends never ? [TraceFetchOptions?] : [TraceFetchOptions
]) {
+ async TRACE
(
+ url: P,
+ ...init: HasRequiredKeys> extends never
+ ? [TraceFetchOptions?]
+ : [TraceFetchOptions
]
+ ) {
return coreFetch
(url, { ...init[0], method: "TRACE" } as any);
},
};
@@ -153,7 +307,9 @@ export function defaultQuerySerializer(q: T): string {
const search = new URLSearchParams();
if (q && typeof q === "object") {
for (const [k, v] of Object.entries(q)) {
- if (v === undefined || v === null) continue;
+ if (v === undefined || v === null) {
+ continue;
+ }
search.set(k, v);
}
}
@@ -166,24 +322,41 @@ export function defaultBodySerializer(body: T): string {
}
/** Construct URL string from baseUrl and handle path and query params */
-export function createFinalURL(pathname: string, options: { baseUrl: string; params: { query?: Record; path?: Record }; querySerializer: QuerySerializer }): string {
+export function createFinalURL(
+ pathname: string,
+ options: {
+ baseUrl: string;
+ params: { query?: Record; path?: Record };
+ querySerializer: QuerySerializer;
+ },
+): string {
let finalURL = `${options.baseUrl}${pathname}`;
if (options.params.path) {
- for (const [k, v] of Object.entries(options.params.path)) finalURL = finalURL.replace(`{${k}}`, encodeURIComponent(String(v)));
+ for (const [k, v] of Object.entries(options.params.path)) {
+ finalURL = finalURL.replace(`{${k}}`, encodeURIComponent(String(v)));
+ }
}
- if (options.params.query) {
- const search = options.querySerializer(options.params.query as any);
- if (search) finalURL += `?${search}`;
+ const search = options.querySerializer((options.params.query as any) ?? {});
+ if (search) {
+ finalURL += `?${search}`;
}
return finalURL;
}
/** merge headers a and b, with b taking priority */
-export function mergeHeaders(...allHeaders: (HeadersOptions | undefined)[]): Headers {
+export function mergeHeaders(
+ ...allHeaders: (HeadersOptions | undefined)[]
+): Headers {
const headers = new Headers();
for (const headerSet of allHeaders) {
- if (!headerSet || typeof headerSet !== "object") continue;
- const iterator = headerSet instanceof Headers ? headerSet.entries() : Object.entries(headerSet);
+ if (!headerSet || typeof headerSet !== "object") {
+ continue;
+ }
+ const iterator =
+ headerSet instanceof Headers
+ ? // @ts-expect-error Headers definitely have entries()
+ headerSet.entries()
+ : Object.entries(headerSet);
for (const [k, v] of iterator) {
if (v === null) {
headers.delete(k);
diff --git a/packages/openapi-fetch/test/index.bench.js b/packages/openapi-fetch/test/index.bench.js
index 12ef412dc..730a9396e 100644
--- a/packages/openapi-fetch/test/index.bench.js
+++ b/packages/openapi-fetch/test/index.bench.js
@@ -68,18 +68,25 @@ describe("get (only URL)", () => {
});
describe("get (headers)", () => {
- let openapiFetch = createClient({ baseUrl: BASE_URL, headers: { "x-base-header": 123 } });
+ let openapiFetch = createClient({
+ baseUrl: BASE_URL,
+ headers: { "x-base-header": 123 },
+ });
let openapiTSFetch = Fetcher.for();
openapiTSFetch.configure({
init: { baseUrl: BASE_URL, headers: { "x-base-header": 123 } },
});
bench("openapi-fetch", async () => {
- await openapiFetch.GET("/url", { headers: { "x-header-1": 123, "x-header-2": 456 } });
+ await openapiFetch.GET("/url", {
+ headers: { "x-header-1": 123, "x-header-2": 456 },
+ });
});
bench("openapi-typescript-fetch", async () => {
- await openapiTSFetch.path("/url").method("get").create()(null, { headers: { "x-header-1": 123, "x-header-2": 456 } });
+ await openapiTSFetch.path("/url").method("get").create()(null, {
+ headers: { "x-header-1": 123, "x-header-2": 456 },
+ });
});
bench("openapi-typescript-codegen", async () => {
@@ -96,6 +103,10 @@ describe("get (headers)", () => {
});
bench("superagent", async () => {
- await superagent.get(`${BASE_URL}/url`).set("x-header-1", 123).set("x-header-2", 456).end();
+ await superagent
+ .get(`${BASE_URL}/url`)
+ .set("x-header-1", 123)
+ .set("x-header-2", 456)
+ .end();
});
});
diff --git a/packages/openapi-fetch/test/v1.d.ts b/packages/openapi-fetch/test/v1.d.ts
index 0f71500b6..41a44bd7e 100644
--- a/packages/openapi-fetch/test/v1.d.ts
+++ b/packages/openapi-fetch/test/v1.d.ts
@@ -3,446 +3,780 @@
* Do not make direct changes to the file.
*/
-
export interface paths {
- "/comment": {
- put: {
- requestBody: components["requestBodies"]["CreateReply"];
- responses: {
- 201: components["responses"]["CreateReply"];
- 500: components["responses"]["Error"];
- };
- };
- };
- "/blogposts": {
- get: {
- parameters: {
- query?: {
- tags?: string[];
- };
- };
- responses: {
- 200: components["responses"]["AllPostsGet"];
- 500: components["responses"]["Error"];
- };
- };
- put: {
- requestBody: components["requestBodies"]["CreatePost"];
- responses: {
- 201: components["responses"]["CreatePost"];
- 500: components["responses"]["Error"];
- };
- };
- patch: {
- requestBody: components["requestBodies"]["PatchPost"];
- responses: {
- 201: components["responses"]["PatchPost"];
- };
- };
- };
- "/blogposts/{post_id}": {
- get: {
- parameters: {
- query?: {
- version?: number;
- format?: string;
- };
- path: {
- post_id: string;
- };
- };
- responses: {
- 200: components["responses"]["PostGet"];
- 404: components["responses"]["Error"];
- 500: components["responses"]["Error"];
- };
- };
- delete: {
- parameters: {
- path: {
- post_id: string;
- };
- };
- responses: {
- 200: components["responses"]["PostDelete"];
- 500: components["responses"]["Error"];
- };
- };
- patch: {
- parameters: {
- path: {
- post_id: string;
- };
- };
- requestBody: components["requestBodies"]["PatchPost"];
- responses: {
- 200: components["responses"]["PatchPost"];
- 404: components["responses"]["Error"];
- 500: components["responses"]["Error"];
- };
- };
- parameters: {
- path: {
- post_id: string;
- };
- };
- };
- "/blogposts-optional": {
- put: {
- requestBody: components["requestBodies"]["CreatePostOptional"];
- responses: {
- 201: components["responses"]["CreatePost"];
- 500: components["responses"]["Error"];
- };
- };
- };
- "/blogposts-optional-inline": {
- put: {
- requestBody?: {
- content: {
- "application/json": components["schemas"]["Post"];
- };
- };
- responses: {
- 201: components["responses"]["CreatePost"];
- 500: components["responses"]["Error"];
- };
- };
- };
- "/header-params": {
- get: operations["getHeaderParams"];
- };
- "/media": {
- put: {
- requestBody: {
- content: {
- "application/json": {
- /** Format: blob */
- media: string;
- name: string;
- };
- };
- };
- responses: {
- "2XX": {
- content: {
- "application/json": {
- status: string;
- };
- };
- };
- "4XX": components["responses"]["Error"];
- };
- };
- };
- "/self": {
- get: {
- responses: {
- 200: components["responses"]["User"];
- 404: components["responses"]["Error"];
- 500: components["responses"]["Error"];
- };
- };
- };
- "/string-array": {
- get: {
- responses: {
- 200: components["responses"]["StringArray"];
- 500: components["responses"]["Error"];
- };
- };
- };
- "/tag/{name}": {
- get: {
- parameters: {
- path: {
- name: string;
- };
- };
- responses: {
- 200: components["responses"]["Tag"];
- 500: components["responses"]["Error"];
- };
- };
- put: {
- parameters: {
- path: {
- name: string;
- };
- };
- requestBody: components["requestBodies"]["CreateTag"];
- responses: {
- 201: components["responses"]["CreateTag"];
- 500: components["responses"]["Error"];
- };
- };
- delete: {
- parameters: {
- path: {
- name: string;
- };
- };
- responses: {
- /** @description No Content */
- 204: {
- content: never;
- };
- 500: components["responses"]["Error"];
- };
- };
- parameters: {
- path: {
- name: string;
- };
- };
- };
- "/default-as-error": {
- get: {
- responses: {
- default: components["responses"]["Error"];
- };
- };
- };
- "/anyMethod": {
- get: {
- responses: {
- 200: components["responses"]["User"];
- 404: components["responses"]["Error"];
- 500: components["responses"]["Error"];
- };
- };
- put: {
- responses: {
- 200: components["responses"]["User"];
- 404: components["responses"]["Error"];
- 500: components["responses"]["Error"];
- };
- };
- post: {
- responses: {
- 200: components["responses"]["User"];
- 404: components["responses"]["Error"];
- 500: components["responses"]["Error"];
- };
- };
- delete: {
- responses: {
- 200: components["responses"]["User"];
- 404: components["responses"]["Error"];
- 500: components["responses"]["Error"];
- };
- };
- options: {
- responses: {
- 200: components["responses"]["User"];
- 404: components["responses"]["Error"];
- 500: components["responses"]["Error"];
- };
- };
- head: {
- responses: {
- 200: components["responses"]["User"];
- 404: components["responses"]["Error"];
- 500: components["responses"]["Error"];
- };
- };
- patch: {
- responses: {
- 200: components["responses"]["User"];
- 404: components["responses"]["Error"];
- 500: components["responses"]["Error"];
- };
- };
- trace: {
- responses: {
- 200: components["responses"]["User"];
- 404: components["responses"]["Error"];
- 500: components["responses"]["Error"];
- };
+ "/comment": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: components["requestBodies"]["CreateReply"];
+ responses: {
+ 201: components["responses"]["CreateReply"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/blogposts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: {
+ parameters: {
+ query?: {
+ tags?: string[];
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["AllPostsGet"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ put: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: components["requestBodies"]["CreatePost"];
+ responses: {
+ 201: components["responses"]["CreatePost"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: components["requestBodies"]["PatchPost"];
+ responses: {
+ 201: components["responses"]["PatchPost"];
+ };
+ };
+ trace?: never;
+ };
+ "/blogposts/{post_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ post_id: string;
+ };
+ cookie?: never;
+ };
+ get: {
+ parameters: {
+ query?: {
+ version?: number;
+ format?: string;
+ };
+ header?: never;
+ path: {
+ post_id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["PostGet"];
+ 404: components["responses"]["Error"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ put?: never;
+ post?: never;
+ delete: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ post_id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["PostDelete"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ options?: never;
+ head?: never;
+ patch: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ post_id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: components["requestBodies"]["PatchPost"];
+ responses: {
+ 200: components["responses"]["PatchPost"];
+ 404: components["responses"]["Error"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ trace?: never;
+ };
+ "/blogposts-optional": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: components["requestBodies"]["CreatePostOptional"];
+ responses: {
+ 201: components["responses"]["CreatePost"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/blogposts-optional-inline": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: {
+ content: {
+ "application/json": components["schemas"]["Post"];
+ };
+ };
+ responses: {
+ 201: components["responses"]["CreatePost"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/header-params": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["getHeaderParams"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/media": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** Format: blob */
+ media: string;
+ name: string;
+ };
+ };
+ };
+ responses: {
+ "2XX": {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status: string;
+ };
+ };
+ };
+ "4XX": components["responses"]["Error"];
+ };
+ };
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/self": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["User"];
+ 404: components["responses"]["Error"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/string-array": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["StringArray"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/tag/{name}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ name: string;
+ };
+ cookie?: never;
+ };
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ name: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["Tag"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ put: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ name: string;
+ };
+ cookie?: never;
+ };
+ requestBody: components["requestBodies"]["CreateTag"];
+ responses: {
+ 201: components["responses"]["CreateTag"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ post?: never;
+ delete: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ name: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description No Content */
+ 204: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ 500: components["responses"]["Error"];
+ };
+ };
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/default-as-error": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ default: components["responses"]["Error"];
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/anyMethod": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["User"];
+ 404: components["responses"]["Error"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ put: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["User"];
+ 404: components["responses"]["Error"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["User"];
+ 404: components["responses"]["Error"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ delete: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["User"];
+ 404: components["responses"]["Error"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ options: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["User"];
+ 404: components["responses"]["Error"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ head: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["User"];
+ 404: components["responses"]["Error"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ patch: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["User"];
+ 404: components["responses"]["Error"];
+ 500: components["responses"]["Error"];
+ };
+ };
+ trace: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: components["responses"]["User"];
+ 404: components["responses"]["Error"];
+ 500: components["responses"]["Error"];
+ };
+ };
};
- };
- "/contact": {
- put: {
- requestBody: components["requestBodies"]["Contact"];
- responses: {
- 200: components["responses"]["Contact"];
- };
+ "/contact": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: components["requestBodies"]["Contact"];
+ responses: {
+ 200: components["responses"]["Contact"];
+ };
+ };
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
};
- };
}
-
export type webhooks = Record;
-
export interface components {
- schemas: {
- Post: {
- title: string;
- body: string;
- publish_date?: number;
- };
- StringArray: string[];
- User: {
- email: string;
- age?: number;
- avatar?: string;
- };
- };
- responses: {
- AllPostsGet: {
- content: {
- "application/json": components["schemas"]["Post"][];
- };
- };
- CreatePost: {
- content: {
- "application/json": {
- status: string;
+ schemas: {
+ Post: {
+ title: string;
+ body: string;
+ publish_date?: number;
};
- };
- };
- CreateTag: {
- content: {
- "application/json": {
- status: string;
+ StringArray: string[];
+ User: {
+ email: string;
+ age?: number;
+ avatar?: string;
};
- };
};
- CreateReply: {
- content: {
- "application/json;charset=utf-8": {
- message: string;
+ responses: {
+ AllPostsGet: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Post"][];
+ };
};
- };
- };
- Contact: {
- content: {
- "text/html": string;
- };
- };
- Error: {
- content: {
- "application/json": {
- code: number;
- message: string;
+ CreatePost: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status: string;
+ };
+ };
};
- };
- };
- PatchPost: {
- content: {
- "application/json": {
- status: string;
+ CreateTag: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status: string;
+ };
+ };
};
- };
- };
- PostDelete: {
- content: {
- "application/json": {
- status: string;
+ CreateReply: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json;charset=utf-8": {
+ message: string;
+ };
+ };
};
- };
- };
- PostGet: {
- content: {
- "application/json": components["schemas"]["Post"];
- };
- };
- StringArray: {
- content: {
- "application/json": components["schemas"]["StringArray"];
- };
- };
- Tag: {
- content: {
- "application/json": string;
- };
- };
- User: {
- content: {
- "application/json": components["schemas"]["User"];
- };
- };
- };
- parameters: never;
- requestBodies: {
- CreatePost: {
- content: {
- "application/json": {
- title: string;
- body: string;
- publish_date: number;
- };
- };
- };
- CreatePostOptional?: {
- content: {
- "application/json": {
- title: string;
- body: string;
- publish_date: number;
- };
- };
- };
- CreateTag: {
- content: {
- "application/json": {
- description?: string;
+ Contact: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "text/html": string;
+ };
};
- };
- };
- CreateReply: {
- content: {
- "application/json;charset=utf-8": {
- message: string;
- replied_at: number;
+ Error: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: number;
+ message: string;
+ };
+ };
+ };
+ PatchPost: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status: string;
+ };
+ };
+ };
+ PostDelete: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status: string;
+ };
+ };
+ };
+ PostGet: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Post"];
+ };
+ };
+ StringArray: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["StringArray"];
+ };
+ };
+ Tag: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": string;
+ };
+ };
+ User: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["User"];
+ };
};
- };
- };
- Contact: {
- content: {
- "multipart/form-data": {
- name: string;
- email: string;
- subject: string;
- message: string;
- };
- };
};
- PatchPost: {
- content: {
- "application/json": {
- properties?: null;
- title?: string;
- body?: string;
- publish_date?: number;
- };
- };
+ parameters: never;
+ requestBodies: {
+ CreatePost: {
+ content: {
+ "application/json": {
+ title: string;
+ body: string;
+ publish_date: number;
+ };
+ };
+ };
+ CreatePostOptional: {
+ content: {
+ "application/json": {
+ title: string;
+ body: string;
+ publish_date: number;
+ };
+ };
+ };
+ CreateTag: {
+ content: {
+ "application/json": {
+ description?: string;
+ };
+ };
+ };
+ CreateReply: {
+ content: {
+ "application/json;charset=utf-8": {
+ message: string;
+ replied_at: number;
+ };
+ };
+ };
+ Contact: {
+ content: {
+ "multipart/form-data": {
+ name: string;
+ email: string;
+ subject: string;
+ message: string;
+ };
+ };
+ };
+ PatchPost: {
+ content: {
+ "application/json": {
+ title?: string;
+ body?: string;
+ publish_date?: number;
+ };
+ };
+ };
};
- };
- headers: never;
- pathItems: never;
+ headers: never;
+ pathItems: never;
}
-
export type $defs = Record;
-
-export type external = Record;
-
export interface operations {
-
- getHeaderParams: {
- parameters: {
- header: {
- "x-required-header": string;
- };
- };
- responses: {
- 200: {
- content: {
- "application/json": {
- status: string;
- };
- };
- };
- 500: components["responses"]["Error"];
+ getHeaderParams: {
+ parameters: {
+ query?: never;
+ header: {
+ "x-required-header": string;
+ };
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ status: string;
+ };
+ };
+ };
+ 500: components["responses"]["Error"];
+ };
};
- };
}
diff --git a/packages/openapi-fetch/test/v1.yaml b/packages/openapi-fetch/test/v1.yaml
index e47167665..ea23a0db4 100644
--- a/packages/openapi-fetch/test/v1.yaml
+++ b/packages/openapi-fetch/test/v1.yaml
@@ -387,7 +387,6 @@ components:
schema:
type: object
properties:
- properties:
title:
type: string
body:
diff --git a/packages/openapi-fetch/tsconfig.json b/packages/openapi-fetch/tsconfig.json
index 737bfd93e..64635a004 100644
--- a/packages/openapi-fetch/tsconfig.json
+++ b/packages/openapi-fetch/tsconfig.json
@@ -4,6 +4,7 @@
"declaration": true,
"downlevelIteration": false,
"esModuleInterop": true,
+ "lib": ["ESNext", "DOM"],
"module": "NodeNext",
"moduleResolution": "NodeNext",
"outDir": "dist",
diff --git a/packages/openapi-typescript-helpers/index.d.ts b/packages/openapi-typescript-helpers/index.d.ts
index c74b80161..5e481d47c 100644
--- a/packages/openapi-typescript-helpers/index.d.ts
+++ b/packages/openapi-typescript-helpers/index.d.ts
@@ -2,7 +2,15 @@
// HTTP types
-export type HttpMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace";
+export type HttpMethod =
+ | "get"
+ | "put"
+ | "post"
+ | "delete"
+ | "options"
+ | "head"
+ | "patch"
+ | "trace";
/** 2XX statuses */
export type OkStatus = 200 | 201 | 202 | 203 | 204 | 206 | 207 | "2XX";
// prettier-ignore
@@ -12,41 +20,72 @@ export type ErrorStatus = 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 |
// OpenAPI type helpers
/** Given an OpenAPI **Paths Object**, find all paths that have the given method */
-export type PathsWithMethod, PathnameMethod extends HttpMethod> = {
- [Pathname in keyof Paths]: Paths[Pathname] extends { [K in PathnameMethod]: any } ? Pathname : never;
+export type PathsWithMethod<
+ Paths extends Record,
+ PathnameMethod extends HttpMethod,
+> = {
+ [Pathname in keyof Paths]: Paths[Pathname] extends {
+ [K in PathnameMethod]: any;
+ }
+ ? Pathname
+ : never;
}[keyof Paths];
/** DO NOT USE! Only used only for OperationObject type inference */
export interface OperationObject {
parameters: any;
- params?: { query?: Record };
requestBody: any; // note: "any" will get overridden in inference
responses: any;
}
/** Internal helper used in PathsWithMethod */
-export type PathItemObject = { [M in HttpMethod]: OperationObject } & { parameters?: any };
+export type PathItemObject = {
+ [M in HttpMethod]: OperationObject;
+} & { parameters?: any };
/** Return `responses` for an Operation Object */
-export type ResponseObjectMap = T extends { responses: any } ? T["responses"] : unknown;
+export type ResponseObjectMap = T extends { responses: any }
+ ? T["responses"]
+ : unknown;
/** Return `content` for a Response Object */
-export type ResponseContent = T extends { content: any } ? T["content"] : unknown;
+export type ResponseContent = T extends { content: any }
+ ? T["content"]
+ : unknown;
/** Return `requestBody` for an Operation Object */
-export type OperationRequestBody = T extends { requestBody?: any } ? T["requestBody"] : never;
+export type OperationRequestBody = T extends { requestBody?: any }
+ ? T["requestBody"]
+ : never;
/** Internal helper used in OperationRequestBodyContent */
-export type OperationRequestBodyMediaContent = undefined extends OperationRequestBody ? FilterKeys>, "content"> | undefined : FilterKeys, "content">;
+export type OperationRequestBodyMediaContent =
+ undefined extends OperationRequestBody
+ ? FilterKeys>, "content"> | undefined
+ : FilterKeys, "content">;
/** Return first `content` from a Request Object Mapping, allowing any media type */
-export type OperationRequestBodyContent = FilterKeys, MediaType> extends never
- ? FilterKeys>, MediaType> | undefined
+export type OperationRequestBodyContent = FilterKeys<
+ OperationRequestBodyMediaContent,
+ MediaType
+> extends never
+ ?
+ | FilterKeys>, MediaType>
+ | undefined
: FilterKeys, MediaType>;
/** Return first 2XX response from a Response Object Map */
export type SuccessResponse = FilterKeys, "content">;
/** Return first 5XX or 4XX response (in that order) from a Response Object Map */
-export type ErrorResponse = FilterKeys, "content">;
+export type ErrorResponse = FilterKeys<
+ FilterKeys,
+ "content"
+>;
// Generic TS utils
/** Find first match of multiple keys */
-export type FilterKeys = { [K in keyof Obj]: K extends Matchers ? Obj[K] : never }[keyof Obj];
+export type FilterKeys = {
+ [K in keyof Obj]: K extends Matchers ? Obj[K] : never;
+}[keyof Obj];
/** Return any `[string]/[string]` media type (important because openapi-fetch allows any content response, not just JSON-like) */
export type MediaType = `${string}/${string}`;
/** Filter objects that have required keys */
-export type FindRequiredKeys = K extends unknown ? (undefined extends T[K] ? never : K) : K;
+export type FindRequiredKeys = K extends unknown
+ ? undefined extends T[K]
+ ? never
+ : K
+ : K;
export type HasRequiredKeys = FindRequiredKeys;
diff --git a/packages/openapi-typescript/CHANGELOG.md b/packages/openapi-typescript/CHANGELOG.md
index 1b8963b3d..23bcacc97 100644
--- a/packages/openapi-typescript/CHANGELOG.md
+++ b/packages/openapi-typescript/CHANGELOG.md
@@ -1,5 +1,78 @@
# openapi-typescript
+## 7.0.0
+
+### Major Changes
+
+- [`6d1eb32`](https://github.com/drwpow/openapi-typescript/commit/6d1eb32e610cb62effbd1a817ae8fc93337126a6) Thanks [@drwpow](https://github.com/drwpow)! - ⚠️ **Breaking**: The Node.js API now returns the TypeScript AST for the main method as well as `transform()` and `postTransform()`. To migrate, you’ll have to use the `typescript` compiler API:
+
+ ```diff
+ + import ts from "typescript";
+
+ + const DATE = ts.factory.createIdentifier("Date");
+ + const NULL = ts.factory.createLiteralTypeNode(ts.factory.createNull());
+
+ const ast = await openapiTS(mySchema, {
+ transform(schemaObject, metadata) {
+ if (schemaObject.format === "date-time") {
+ - return schemaObject.nullable ? "Date | null" : "Date";
+ + return schemaObject.nullable
+ + ? ts.factory.createUnionTypeNode([DATE, NULL])
+ + : DATE;
+ }
+ },
+ };
+ ```
+
+ Though it’s more verbose, it’s also more powerful, as now you have access to additional properties of the generated code you didn’t before (such as injecting comments).
+
+ For example syntax, search this codebae to see how the TypeScript AST is used.
+
+ Also see [AST Explorer](https://astexplorer.net/)’s `typescript` parser to inspect how TypeScript is interpreted as an AST.
+
+- [`6d1eb32`](https://github.com/drwpow/openapi-typescript/commit/6d1eb32e610cb62effbd1a817ae8fc93337126a6) Thanks [@drwpow](https://github.com/drwpow)! - ⚠️ **Breaking**: Changing of several CLI flags and Node.js API options
+
+ - The `--auth`, `--httpHeaders`, `--httpMethod`, and `fetch` (Node.js-only) options were all removed from the CLI and Node.js API
+ - To migrate, you’ll need to create a [redocly.yaml config](https://redocly.com/docs/cli/configuration/) that specifies your auth options [in the http setting](https://redocly.com/docs/cli/configuration/#resolve-non-public-or-non-remote-urls)
+ - You can also set your fetch client in redocly.yaml as well.
+ - `--immutable-types` has been renamed to `--immutable`
+ - `--support-array-length` has been renamed to `--array-length`
+
+- [`fbaf96d`](https://github.com/drwpow/openapi-typescript/commit/fbaf96d33181a2fabd3d4748e54c0f111ed6756e) Thanks [@drwpow](https://github.com/drwpow)! - ⚠️ **Breaking**: Remove globbing schemas in favor of `redocly.yaml` config. Specify multiple schemas with outputs in there instead. See [Multiple schemas](https://openapi-ts.pages.dev/docs/cli/#multiple-schemas) for more info.
+
+- [`6d1eb32`](https://github.com/drwpow/openapi-typescript/commit/6d1eb32e610cb62effbd1a817ae8fc93337126a6) Thanks [@drwpow](https://github.com/drwpow)! - ⚠️ **Breaking**: Most optional objects are now always present in types, just typed as `:never`. This includes keys of the Components Object as well as HTTP methods.
+
+- [`6d1eb32`](https://github.com/drwpow/openapi-typescript/commit/6d1eb32e610cb62effbd1a817ae8fc93337126a6) Thanks [@drwpow](https://github.com/drwpow)! - ⚠️ **Breaking**: No more `external` export in schemas anymore. Everything gets flattened into the `components` object instead (if referencing a schema object from a remote partial, note it may have had a minor name change to avoid conflict).
+
+- [`6d1eb32`](https://github.com/drwpow/openapi-typescript/commit/6d1eb32e610cb62effbd1a817ae8fc93337126a6) Thanks [@drwpow](https://github.com/drwpow)! - ⚠️ **Breaking** `defaultNonNullable` option now defaults to `true`. You’ll now need to manually set `false` to return to old behavior.
+
+### Minor Changes
+
+- [`6d1eb32`](https://github.com/drwpow/openapi-typescript/commit/6d1eb32e610cb62effbd1a817ae8fc93337126a6) Thanks [@drwpow](https://github.com/drwpow)! - ✨ **Feature**: automatically validate schemas with Redocly CLI ([docs](https://redocly.com/docs/cli/)). No more need for external tools to report errors! 🎉
+
+ - By default, it will only throw on actual schema errors (uses Redocly’s default settings)
+ - For stricter linting or custom rules, you can create a [redocly.yaml config](https://redocly.com/docs/cli/configuration/)
+
+- [`312b7ba`](https://github.com/drwpow/openapi-typescript/commit/312b7ba03fc0334153d4eeb51d6159f3fc63934e) Thanks [@drwpow](https://github.com/drwpow)! - ✨ **Feature:** allow configuration of schemas via `apis` key in redocly.config.yaml. [See docs](https://openapi-ts.pages.dev/cli/) for more info.
+
+ - Any options passed into your [redocly.yaml config](https://redocly.com/docs/cli/configuration/) are respected
+
+- [`6d1eb32`](https://github.com/drwpow/openapi-typescript/commit/6d1eb32e610cb62effbd1a817ae8fc93337126a6) Thanks [@drwpow](https://github.com/drwpow)! - ✨ **Feature**: add `enum` option to export top-level enums from schemas
+
+- [`6d1eb32`](https://github.com/drwpow/openapi-typescript/commit/6d1eb32e610cb62effbd1a817ae8fc93337126a6) Thanks [@drwpow](https://github.com/drwpow)! - ✨ **Feature**: add `formatOptions` to allow formatting TS output
+
+- [`6d1eb32`](https://github.com/drwpow/openapi-typescript/commit/6d1eb32e610cb62effbd1a817ae8fc93337126a6) Thanks [@drwpow](https://github.com/drwpow)! - ✨ **Feature**: header responses add `[key: string]: unknown` index type to allow for additional untyped headers
+
+- [`6d1eb32`](https://github.com/drwpow/openapi-typescript/commit/6d1eb32e610cb62effbd1a817ae8fc93337126a6) Thanks [@drwpow](https://github.com/drwpow)! - ✨ **Feature**: bundle schemas with Redocly CLI
+
+- [`6d1eb32`](https://github.com/drwpow/openapi-typescript/commit/6d1eb32e610cb62effbd1a817ae8fc93337126a6) Thanks [@drwpow](https://github.com/drwpow)! - ✨ **Feature**: Added debugger that lets you profile performance and see more in-depth messages
+
+### Patch Changes
+
+- [`6d1eb32`](https://github.com/drwpow/openapi-typescript/commit/6d1eb32e610cb62effbd1a817ae8fc93337126a6) Thanks [@drwpow](https://github.com/drwpow)! - Refactor internals to use TypeScript AST rather than string mashing
+
+- [`6d1eb32`](https://github.com/drwpow/openapi-typescript/commit/6d1eb32e610cb62effbd1a817ae8fc93337126a6) Thanks [@drwpow](https://github.com/drwpow)! - 🧹 Cleaned up and reorganized all tests
+
## 6.7.0
### Minor Changes
diff --git a/packages/openapi-typescript/CONTRIBUTING.md b/packages/openapi-typescript/CONTRIBUTING.md
index e0bc6df1b..943e4a43f 100644
--- a/packages/openapi-typescript/CONTRIBUTING.md
+++ b/packages/openapi-typescript/CONTRIBUTING.md
@@ -38,11 +38,17 @@ pnpm run dev
This will compile the code as you change automatically.
-### Writing the PR
+#### Tip: use ASTExplorer.net!
-**Please fill out the template!** It’s a very lightweight template 🙂.
+Working with the TypeScript AST can be daunting. Luckly, there’s [astexplorer.net](https://astexplorer.net) which makes it much more accessible. Rather than trying to build an AST from scratch (which is near impossible), instead:
-### Use Test-driven Development!
+1. Switch to the **typescript** parser in the top menu
+2. Type out code in the left-hand panel
+3. Inspect the right-hand panel to see what the desired AST is.
+
+From there, you can refer to existing examples in the codebase. There may even be helper utilities in `src/lib/ts.ts` to make life easier.
+
+#### Tip: Use Test-driven Development!
Contributing to this library is hard-bordering-on-impossible without a [test-driven development (TDD)](https://en.wikipedia.org/wiki/Test-driven_development) strategy. If you’re new to this, the basic workflow is:
@@ -60,7 +66,7 @@ To add a schema as a snapshot test, modify the [/scripts/download-schemas.ts](/s
### Generating types
-It may be surprising to hear, but _generating TypeScript types from OpenAPI is opinionated!_ Even though TypeScript and OpenAPI are very close relatives, both being JavaScript/JSON-based, they are nonetheless 2 different languages and thus there is always some room for interpretation. Likewise, some parts of the OpenAPI specification can be ambiguous on how they’re used, and what the expected type outcomes may be (though this is generally for more advanced usecasees, such as specific implementations of `anyOf` as well as [discriminator](https://spec.openapis.org/oas/latest.html#discriminatorObject) and complex polymorphism).
+It may be surprising to hear, but generating TypeScript types from OpenAPI is opinionated. Even though TypeScript and OpenAPI are close relatives—both JavaScript/JSON-based—they are nonetheless 2 different languages and thus there is room for interpretation. Further, some parts of the OpenAPI specification can be ambiguous on how they’re used, and what the expected type outcomes may be (though this is generally for more advanced usecasees, such as specific implementations of `anyOf` as well as [discriminator](https://spec.openapis.org/oas/latest.html#discriminatorObject) and complex polymorphism).
All that said, this library should strive to generate _the most predictable_ TypeScript output for a given schema. And to achieve that, it always helps to open an [issue](https://github.com/drwpow/openapi-typescript/issues) or [discussion](https://github.com/drwpow/openapi-typescript/discussions) to gather feedback.
@@ -131,7 +137,6 @@ pnpm run update:examples
This library has both unit tests (tests that test a tiny part of a schema) and snapshot tests (tests that run over an entire, complete schema). When opening a PR, the former are more valuable than the latter, and are always required. However, updating snapshot tests can help with the following:
-- Fixing bugs that deal with multiple schemas with remote `$ref`s
- Fixing Node.js or OS-related bugs
- Adding a CLI option that changes the entire output
@@ -141,8 +146,4 @@ For most PRs, **snapshot tests can be avoided.** But for scenarios similar to th
### When I run tests, it’s not picking up my changes
-Be sure to run `pnpm run build` to build the project. Most tests actually test the **compiled JS**, not the source TypeScript. It’s recommended to run `pnpm run dev` as you work so changes are always up-to-date.
-
-### I get an obscure error when testing against my schema
-
-Be sure your schema passes [Redocly lint](https://redocly.com/docs/cli/commands/lint/). Remember this library requires already-validated OpenAPI schemas, so even subtle errors will throw.
+Some tests import the **built package** and not the source file. Be sure to run `pnpm run build` to build the project. You can also run `pnpm run dev` as you work so changes are always up-to-date.
diff --git a/packages/openapi-typescript/bin/cli.js b/packages/openapi-typescript/bin/cli.js
index 0e568e46e..73f54912d 100755
--- a/packages/openapi-typescript/bin/cli.js
+++ b/packages/openapi-typescript/bin/cli.js
@@ -1,141 +1,126 @@
#!/usr/bin/env node
+import { loadConfig, findConfig, createConfig } from "@redocly/openapi-core";
import fs from "node:fs";
import path from "node:path";
-import { URL } from "node:url";
-import glob from "fast-glob";
import parser from "yargs-parser";
-import openapiTS from "../dist/index.js";
-import { c, error } from "../dist/utils.js";
+import openapiTS, {
+ astToString,
+ c,
+ COMMENT_HEADER,
+ error,
+ formatTime,
+ warn,
+} from "../dist/index.js";
+
+/* eslint-disable no-console */
const HELP = `Usage
$ openapi-typescript [input] [options]
Options
- --help Display this
- --version Display the version
- --output, -o Specify output file (default: stdout)
- --auth (optional) Provide an authentication token for private URL
- --headersObject, -h (optional) Provide a JSON object as string of HTTP headers for remote schema request
- --header, -x (optional) Provide an array of or singular headers as an alternative to a JSON object. Each header must follow the key: value pattern
- --httpMethod, -m (optional) Provide the HTTP Verb/Method for fetching a schema from a remote URL
- --export-type, -t (optional) Export "type" instead of "interface"
- --immutable-types (optional) Generates immutable types (readonly properties and readonly array)
- --additional-properties (optional) Allow arbitrary properties for all schema objects without "additionalProperties: false"
- --empty-objects-unknown (optional) Allow arbitrary properties for schema objects with no specified properties, and no specified "additionalProperties"
- --default-non-nullable (optional) If a schema object has a default value set, don’t mark it as nullable
- --support-array-length (optional) Generate tuples using array minItems / maxItems
- --path-params-as-types (optional) Substitute path parameter names with their respective types
- --alphabetize (optional) Sort types alphabetically
- --exclude-deprecated (optional) Exclude deprecated fields from types
+ --help Display this
+ --version Display the version
+ --redoc [path], -c Specify path to Redocly config (default: redocly.yaml)
+ --output, -o Specify output file (if not specified in redocly.yaml)
+ --enum Export true TS enums instead of unions
+ --export-type, -t Export top-level \`type\` instead of \`interface\`
+ --immutable Generate readonly types
+ --additional-properties Treat schema objects as if \`additionalProperties: true\` is set
+ --empty-objects-unknown Generate \`unknown\` instead of \`Record\` for empty objects
+ --default-non-nullable Set to \`false\` to ignore default values when generating non-nullable types
+ --array-length Generate tuples using array minItems / maxItems
+ --path-params-as-types Convert paths to template literal types
+ --alphabetize Sort object keys alphabetically
+ --exclude-deprecated Exclude deprecated types
`;
const OUTPUT_FILE = "FILE";
const OUTPUT_STDOUT = "STDOUT";
const CWD = new URL(`file://${process.cwd()}/`);
-const EXT_RE = /\.[^.]+$/i;
-const HTTP_RE = /^https?:\/\//;
-const timeStart = process.hrtime();
+const timeStart = performance.now();
const [, , ...args] = process.argv;
-if (args.includes("-ap")) errorAndExit(`The -ap alias has been deprecated. Use "--additional-properties" instead.`);
-if (args.includes("-it")) errorAndExit(`The -it alias has been deprecated. Use "--immutable-types" instead.`);
+if (args.includes("-ap")) {
+ errorAndExit(
+ `The -ap alias has been deprecated. Use "--additional-properties" instead.`,
+ );
+}
+if (args.includes("--immutable-types")) {
+ errorAndExit(`The --immutable-types flag has been renamed to "--immutable".`);
+}
+if (args.includes("--support-array-length")) {
+ errorAndExit(
+ `The --support-array-length flag has been renamed to "--array-length".`,
+ );
+}
+if (args.includes("-it")) {
+ errorAndExit(
+ `The -it alias has been deprecated. Use "--immutable-types" instead.`,
+ );
+}
const flags = parser(args, {
- array: ["header"],
boolean: [
- "help",
- "version",
+ "additionalProperties",
+ "alphabetize",
+ "arrayLength",
+ "contentNever",
"defaultNonNullable",
"emptyObjectsUnknown",
- "immutableTypes",
- "contentNever",
+ "enum",
+ "excludeDeprecated",
"exportType",
- "supportArrayLength",
+ "help",
+ "immutable",
"pathParamsAsTypes",
- "alphabetize",
- "excludeDeprecated",
],
- string: ["auth", "header", "headersObject", "httpMethod"],
+ string: ["output", "redoc"],
alias: {
- header: ["x"],
+ redoc: ["c"],
exportType: ["t"],
- headersObject: ["h"],
- httpMethod: ["m"],
output: ["o"],
},
- default: {
- httpMethod: "GET",
- },
});
-async function generateSchema(pathToSpec) {
- const output = flags.output ? OUTPUT_FILE : OUTPUT_STDOUT; // FILE or STDOUT
-
- // Parse incoming headers from CLI flags
- let httpHeaders = {};
-
- // prefer --headersObject if specified
- if (flags.headersObject) {
- httpHeaders = JSON.parse(flags.headersObject); // note: this will generate a recognizable error for the user to act on
- }
- // otherwise, parse --header
- else if (Array.isArray(flags.header)) {
- flags.header.forEach((header) => {
- const firstColon = header.indexOf(":");
- const k = header.substring(0, firstColon).trim();
- const v = header.substring(firstColon + 1).trim();
- httpHeaders[k] = v;
- });
- }
-
- // generate schema
- const result = await openapiTS(pathToSpec, {
- additionalProperties: flags.additionalProperties,
- emptyObjectsUnknown: flags.emptyObjectsUnknown,
- auth: flags.auth,
- defaultNonNullable: flags.defaultNonNullable,
- immutableTypes: flags.immutableTypes,
- contentNever: flags.contentNever,
- silent: output === OUTPUT_STDOUT,
- version: flags.version,
- httpHeaders,
- httpMethod: flags.httpMethod,
- exportType: flags.exportType,
- supportArrayLength: flags.supportArrayLength,
- pathParamsAsTypes: flags.pathParamsAsTypes,
- alphabetize: flags.alphabetize,
- excludeDeprecated: flags.excludeDeprecated,
- });
-
- // output
- if (output === OUTPUT_FILE) {
- let outputFilePath = new URL(flags.output, CWD); // note: may be directory
- const isDir = fs.existsSync(outputFilePath) && fs.lstatSync(outputFilePath).isDirectory();
- if (isDir) {
- if (typeof flags.output === "string" && !flags.output.endsWith("/")) {
- outputFilePath = new URL(`${flags.output}/`, CWD);
- }
- const filename = pathToSpec.replace(EXT_RE, ".ts");
- const originalOutputFilePath = outputFilePath;
- outputFilePath = new URL(filename, originalOutputFilePath);
- if (outputFilePath.protocol !== "file:") {
- outputFilePath = new URL(outputFilePath.host.replace(EXT_RE, ".ts"), originalOutputFilePath);
- }
- }
-
- fs.writeFileSync(outputFilePath, result, "utf8");
+/**
+ * @param {string | URL} schema
+ * @param {@type import('@redocly/openapi-core').Config} redoc
+ */
+async function generateSchema(schema, { redoc, silent = false }) {
+ return `${COMMENT_HEADER}${astToString(
+ await openapiTS(schema, {
+ additionalProperties: flags.additionalProperties,
+ alphabetize: flags.alphabetize,
+ arrayLength: flags.arrayLength,
+ contentNever: flags.contentNever,
+ defaultNonNullable: flags.defaultNonNullable,
+ emptyObjectsUnknown: flags.emptyObjectsUnknown,
+ enum: flags.enum,
+ excludeDeprecated: flags.excludeDeprecated,
+ exportType: flags.exportType,
+ immutable: flags.immutable,
+ pathParamsAsTypes: flags.pathParamsAsTypes,
+ redoc,
+ silent,
+ }),
+ )}`;
+}
- const timeEnd = process.hrtime(timeStart);
- const time = timeEnd[0] + Math.round(timeEnd[1] / 1e6);
- console.log(`🚀 ${c.green(`${pathToSpec} → ${c.bold(outputFilePath)}`)} ${c.dim(`[${time}ms]`)}`);
- } else {
- process.stdout.write(result);
- // if stdout, (still) don’t log anything to console!
- }
+/** pretty-format error message but also throw */
+function errorAndExit(message) {
+ error(message);
+ throw new Error(message);
+}
- return result;
+function done(input, output, time) {
+ // final console output
+ console.log(
+ `🚀 ${c.green(`${input} → ${c.bold(output)}`)} ${c.dim(
+ `[${formatTime(time)}]`,
+ )}`,
+ );
}
async function main() {
@@ -143,65 +128,97 @@ async function main() {
console.info(HELP);
process.exit(0);
}
- const packageJSON = JSON.parse(fs.readFileSync(new URL("../package.json", import.meta.url), "utf8"));
+ const packageJSON = JSON.parse(
+ fs.readFileSync(new URL("../package.json", import.meta.url), "utf8"),
+ );
if ("version" in flags) {
console.info(`v${packageJSON.version}`);
process.exit(0);
}
- let output = flags.output ? OUTPUT_FILE : OUTPUT_STDOUT; // FILE or STDOUT
- let outputFile = new URL(flags.output, CWD);
- let outputDir = new URL(".", outputFile);
-
- if (output === OUTPUT_FILE) console.info(`✨ ${c.bold(`openapi-typescript ${packageJSON.version}`)}`); // only log if we’re NOT writing to stdout
-
- const pathToSpec = flags._[0];
-
- // handle stdin schema, exit
- if (!pathToSpec) {
- if (output !== "." && output === OUTPUT_FILE) fs.mkdirSync(outputDir, { recursive: true });
- await generateSchema(process.stdin);
- return;
- }
-
- // handle remote schema, exit
- if (HTTP_RE.test(pathToSpec)) {
- if (output !== "." && output === OUTPUT_FILE) fs.mkdirSync(outputDir, { recursive: true });
- await generateSchema(pathToSpec);
- return;
+ const outputType = flags.output ? OUTPUT_FILE : OUTPUT_STDOUT; // FILE or STDOU
+ if (outputType !== OUTPUT_STDOUT) {
+ console.info(`✨ ${c.bold(`openapi-typescript ${packageJSON.version}`)}`);
}
- // handle local schema(s)
- const inputSpecPaths = await glob(pathToSpec);
- const isGlob = inputSpecPaths.length > 1;
- const isDirUrl = outputDir.pathname === outputFile.pathname;
- const isFile = fs.existsSync(outputDir) && fs.lstatSync(outputDir).isFile();
+ const input = flags._[0];
- // error: no matches for glob
- if (inputSpecPaths.length === 0) {
- error(`Could not find any specs matching "${pathToSpec}". Please check that the path is correct.`);
- process.exit(1);
+ // load Redocly config
+ const maybeRedoc = findConfig(
+ flags.redoc ? path.dirname(flags.redoc) : undefined,
+ );
+ const redoc = maybeRedoc
+ ? await loadConfig({ configPath: maybeRedoc })
+ : createConfig({}, { extends: ["minimal"] });
+
+ // handle Redoc APIs
+ const hasRedoclyApis = Object.keys(redoc?.apis ?? {}).length > 0;
+ if (hasRedoclyApis) {
+ if (input) {
+ warn(
+ "APIs are specified both in Redocly Config and CLI argument. Only using Redocly config.",
+ );
+ }
+ await Promise.all(
+ Object.entries(redoc.apis).map(async ([name, api]) => {
+ const configRoot = redoc?.configFile
+ ? new URL(`file://${redoc.configFile}`)
+ : CWD;
+ if (!api["openapi-ts"]?.output) {
+ errorAndExit(
+ `API ${name} is missing an \`openapi-ts.output\` key. See https://openapi-ts.pages.dev/cli/#multiple-schemas.`,
+ );
+ }
+ const result = await generateSchema(new URL(api.root, configRoot), {
+ redoc, // TODO: merge API overrides better?
+ });
+ const outFile = new URL(api["openapi-ts"].output, configRoot);
+ fs.mkdirSync(new URL(".", outFile), { recursive: true });
+ fs.writeFileSync(outFile, result, "utf8");
+ done(name, api.root, performance.now() - timeStart);
+ }),
+ );
}
- // error: tried to glob output to single file
- if (isGlob && output === OUTPUT_FILE && (isFile || !isDirUrl)) {
- error(`Expected directory for --output if using glob patterns. Received "${flags.output}".`);
- process.exit(1);
+ // handle stdin
+ else if (!input) {
+ const result = await generateSchema(process.stdin, {
+ redoc,
+ silent: outputType === OUTPUT_STDOUT,
+ });
+ if (outputType === OUTPUT_STDOUT) {
+ // if stdout, (still) don’t log anything to console!
+ process.stdout.write(result);
+ } else {
+ const outFile = new URL(flags.output, CWD);
+ fs.mkdirSync(new URL(".", outFile), { recursive: true });
+ fs.writeFileSync(outFile, result, "utf8");
+ done("stdin", flags.output, performance.now() - timeStart);
+ }
}
- // generate schema(s) in parallel
- await Promise.all(
- inputSpecPaths.map(async (specPath) => {
- if (flags.output !== "." && output === OUTPUT_FILE) {
- if (isGlob || isDirUrl) {
- fs.mkdirSync(new URL(path.dirname(specPath), outputDir), { recursive: true }); // recursively make parent dirs
- } else {
- fs.mkdirSync(outputDir, { recursive: true }); // recursively make parent dirs
- }
- }
- await generateSchema(specPath);
- }),
- );
+ // handle single file
+ else {
+ // throw error on glob
+ if (input.includes("*")) {
+ errorAndExit(
+ `Globbing has been deprecated in favor of redocly.yaml’s \`apis\` keys. See https://openapi-ts.pages.dev/cli/#multiple-schemas`,
+ );
+ }
+ const result = await generateSchema(new URL(input, CWD), {
+ redoc,
+ silent: outputType === OUTPUT_STDOUT,
+ });
+ if (outputType === OUTPUT_STDOUT) {
+ // if stdout, (still) don’t log anything to console!
+ process.stdout.write(result);
+ } else {
+ const outFile = new URL(flags.output, CWD);
+ fs.mkdirSync(new URL(".", outFile), { recursive: true });
+ fs.writeFileSync(outFile, result, "utf8");
+ done(input, flags.output, performance.now() - timeStart);
+ }
+ }
}
main();
diff --git a/packages/openapi-typescript/examples/digital-ocean-api.ts b/packages/openapi-typescript/examples/digital-ocean-api.ts
index c67299321..580ebebc3 100644
--- a/packages/openapi-typescript/examples/digital-ocean-api.ts
+++ b/packages/openapi-typescript/examples/digital-ocean-api.ts
@@ -3,16443 +3,22713 @@
* Do not make direct changes to the file.
*/
-
-/** WithRequired type helpers */
-type WithRequired = T & { [P in K]-?: T[P] };
-
-/** OneOf type helpers */
-type Without = { [P in Exclude]?: never };
-type XOR = (T | U) extends object ? (Without & U) | (Without & T) : T | U;
-type OneOf = T extends [infer Only] ? Only : T extends [infer A, infer B, ...infer Rest] ? OneOf<[XOR, ...Rest]> : never;
-
export interface paths {
- "/v2/1-clicks": {
- get: external["resources/1-clicks/oneClicks_list.yml"]
- };
- "/v2/1-clicks/kubernetes": {
- post: external["resources/1-clicks/oneClicks_install_kubernetes.yml"]
- };
- "/v2/account": {
- get: external["resources/account/account_get.yml"]
- };
- "/v2/account/keys": {
- get: external["resources/ssh_keys/sshKeys_list.yml"]
- post: external["resources/ssh_keys/sshKeys_create.yml"]
- };
- "/v2/account/keys/{ssh_key_identifier}": {
- get: external["resources/ssh_keys/sshKeys_get.yml"]
- put: external["resources/ssh_keys/sshKeys_update.yml"]
- delete: external["resources/ssh_keys/sshKeys_delete.yml"]
- };
- "/v2/actions": {
- get: external["resources/actions/actions_list.yml"]
- };
- "/v2/actions/{action_id}": {
- get: external["resources/actions/actions_get.yml"]
- };
- "/v2/apps": {
- get: external["resources/apps/apps_list.yml"]
- post: external["resources/apps/apps_create.yml"]
- };
- "/v2/apps/{id}": {
- get: external["resources/apps/apps_get.yml"]
- put: external["resources/apps/apps_update.yml"]
- delete: external["resources/apps/apps_delete.yml"]
- };
- "/v2/apps/{app_id}/components/{component_name}/logs": {
- get: external["resources/apps/apps_get_logs_active_deployment.yml"]
- };
- "/v2/apps/{app_id}/deployments": {
- get: external["resources/apps/apps_list_deployments.yml"]
- post: external["resources/apps/apps_create_deployment.yml"]
- };
- "/v2/apps/{app_id}/deployments/{deployment_id}": {
- get: external["resources/apps/apps_get_deployment.yml"]
- };
- "/v2/apps/{app_id}/deployments/{deployment_id}/cancel": {
- post: external["resources/apps/apps_cancel_deployment.yml"]
- };
- "/v2/apps/{app_id}/deployments/{deployment_id}/components/{component_name}/logs": {
- get: external["resources/apps/apps_get_logs.yml"]
- };
- "/v2/apps/{app_id}/deployments/{deployment_id}/logs": {
- get: external["resources/apps/apps_get_logs_aggregate.yml"]
- };
- "/v2/apps/{app_id}/logs": {
- get: external["resources/apps/apps_get_logs_active_deployment_aggregate.yml"]
- };
- "/v2/apps/tiers": {
- get: external["resources/apps/apps_list_tiers.yml"]
- };
- "/v2/apps/tiers/{slug}": {
- get: external["resources/apps/apps_get_tier.yml"]
- };
- "/v2/apps/tiers/instance_sizes": {
- get: external["resources/apps/apps_list_instanceSizes.yml"]
- };
- "/v2/apps/tiers/instance_sizes/{slug}": {
- get: external["resources/apps/apps_get_instanceSize.yml"]
- };
- "/v2/apps/regions": {
- get: external["resources/apps/apps_list_regions.yml"]
- };
- "/v2/apps/propose": {
- post: external["resources/apps/apps_validate_appSpec.yml"]
- };
- "/v2/apps/{app_id}/alerts": {
- get: external["resources/apps/apps_list_alerts.yml"]
- };
- "/v2/apps/{app_id}/alerts/{alert_id}/destinations": {
- post: external["resources/apps/apps_assign_alertDestinations.yml"]
- };
- "/v2/apps/{app_id}/rollback": {
- post: external["resources/apps/apps_create_rollback.yml"]
- };
- "/v2/apps/{app_id}/rollback/validate": {
- post: external["resources/apps/apps_validate_rollback.yml"]
- };
- "/v2/apps/{app_id}/rollback/commit": {
- post: external["resources/apps/apps_commit_rollback.yml"]
- };
- "/v2/apps/{app_id}/rollback/revert": {
- post: external["resources/apps/apps_revert_rollback.yml"]
- };
- "/v2/apps/{app_id}/metrics/bandwidth_daily": {
- get: external["resources/apps/apps_get_metrics_bandwidth_usage.yml"]
- };
- "/v2/apps/metrics/bandwidth_daily": {
- post: external["resources/apps/apps_list_metrics_bandwidth_usage.yml"]
- };
- "/v2/cdn/endpoints": {
- get: external["resources/cdn/cdn_list_endpoints.yml"]
- post: external["resources/cdn/cdn_create_endpoint.yml"]
- };
- "/v2/cdn/endpoints/{cdn_id}": {
- get: external["resources/cdn/cdn_get_endpoint.yml"]
- put: external["resources/cdn/cdn_update_endpoint.yml"]
- delete: external["resources/cdn/cdn_delete_endpoint.yml"]
- };
- "/v2/cdn/endpoints/{cdn_id}/cache": {
- delete: external["resources/cdn/cdn_purge_cache.yml"]
- };
- "/v2/certificates": {
- get: external["resources/certificates/certificates_list.yml"]
- post: external["resources/certificates/certificates_create.yml"]
- };
- "/v2/certificates/{certificate_id}": {
- get: external["resources/certificates/certificates_get.yml"]
- delete: external["resources/certificates/certificates_delete.yml"]
- };
- "/v2/customers/my/balance": {
- get: external["resources/billing/balance_get.yml"]
- };
- "/v2/customers/my/billing_history": {
- get: external["resources/billing/billingHistory_list.yml"]
- };
- "/v2/customers/my/invoices": {
- get: external["resources/billing/invoices_list.yml"]
- };
- "/v2/customers/my/invoices/{invoice_uuid}": {
- get: external["resources/billing/invoices_get_byUUID.yml"]
- };
- "/v2/customers/my/invoices/{invoice_uuid}/csv": {
- get: external["resources/billing/invoices_get_csvByUUID.yml"]
- };
- "/v2/customers/my/invoices/{invoice_uuid}/pdf": {
- get: external["resources/billing/invoices_get_pdfByUUID.yml"]
- };
- "/v2/customers/my/invoices/{invoice_uuid}/summary": {
- get: external["resources/billing/invoices_get_summaryByUUID.yml"]
- };
- "/v2/databases/options": {
- get: external["resources/databases/databases_list_options.yml"]
- };
- "/v2/databases": {
- get: external["resources/databases/databases_list_clusters.yml"]
- post: external["resources/databases/databases_create_cluster.yml"]
- };
- "/v2/databases/{database_cluster_uuid}": {
- get: external["resources/databases/databases_get_cluster.yml"]
- delete: external["resources/databases/databases_destroy_cluster.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/config": {
- get: external["resources/databases/databases_get_config.yml"]
- patch: external["resources/databases/databases_patch_config.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/ca": {
- get: external["resources/databases/databases_get_ca.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/online-migration": {
- get: external["resources/databases/databases_get_migrationStatus.yml"]
- put: external["resources/databases/databases_update_onlineMigration.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/online-migration/{migration_id}": {
- delete: external["resources/databases/databases_delete_onlineMigration.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/migrate": {
- put: external["resources/databases/databases_update_region.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/resize": {
- put: external["resources/databases/databases_update_clusterSize.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/firewall": {
- get: external["resources/databases/databases_list_firewall_rules.yml"]
- put: external["resources/databases/databases_update_firewall_rules.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/maintenance": {
- put: external["resources/databases/databases_update_maintenanceWindow.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/backups": {
- get: external["resources/databases/databases_list_backups.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/replicas": {
- get: external["resources/databases/databases_list_replicas.yml"]
- post: external["resources/databases/databases_create_replica.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/replicas/{replica_name}": {
- get: external["resources/databases/databases_get_replica.yml"]
- delete: external["resources/databases/databases_destroy_replica.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/replicas/{replica_name}/promote": {
- put: external["resources/databases/databases_promote_replica.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/users": {
- get: external["resources/databases/databases_list_users.yml"]
- post: external["resources/databases/databases_add_user.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/users/{username}": {
- get: external["resources/databases/databases_get_user.yml"]
- delete: external["resources/databases/databases_delete_user.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/users/{username}/reset_auth": {
- post: external["resources/databases/databases_reset_auth.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/dbs": {
- get: external["resources/databases/databases_list.yml"]
- post: external["resources/databases/databases_add.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/dbs/{database_name}": {
- get: external["resources/databases/databases_get.yml"]
- delete: external["resources/databases/databases_delete.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/pools": {
- get: external["resources/databases/databases_list_connectionPools.yml"]
- post: external["resources/databases/databases_add_connectionPool.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/pools/{pool_name}": {
- get: external["resources/databases/databases_get_connectionPool.yml"]
- put: external["resources/databases/databases_update_connectionPool.yml"]
- delete: external["resources/databases/databases_delete_connectionPool.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/eviction_policy": {
- get: external["resources/databases/databases_get_evictionPolicy.yml"]
- put: external["resources/databases/databases_update_evictionPolicy.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/sql_mode": {
- get: external["resources/databases/databases_get_sql_mode.yml"]
- put: external["resources/databases/databases_update_sql_mode.yml"]
- };
- "/v2/databases/{database_cluster_uuid}/upgrade": {
- put: external["resources/databases/databases_upgrade_major_version.yml"]
- };
- "/v2/domains": {
- get: external["resources/domains/domains_list.yml"]
- post: external["resources/domains/domains_create.yml"]
- };
- "/v2/domains/{domain_name}": {
- get: external["resources/domains/domains_get.yml"]
- delete: external["resources/domains/domains_delete.yml"]
- };
- "/v2/domains/{domain_name}/records": {
- get: external["resources/domains/domains_list_records.yml"]
- post: external["resources/domains/domains_create_record.yml"]
- };
- "/v2/domains/{domain_name}/records/{domain_record_id}": {
- get: external["resources/domains/domains_get_record.yml"]
- put: external["resources/domains/domains_update_record.yml"]
- delete: external["resources/domains/domains_delete_record.yml"]
- patch: external["resources/domains/domains_patch_record.yml"]
- };
- "/v2/droplets": {
- get: external["resources/droplets/droplets_list.yml"]
- post: external["resources/droplets/droplets_create.yml"]
- delete: external["resources/droplets/droplets_destroy_byTag.yml"]
- };
- "/v2/droplets/{droplet_id}": {
- get: external["resources/droplets/droplets_get.yml"]
- delete: external["resources/droplets/droplets_destroy.yml"]
- };
- "/v2/droplets/{droplet_id}/backups": {
- get: external["resources/droplets/droplets_list_backups.yml"]
- };
- "/v2/droplets/{droplet_id}/snapshots": {
- get: external["resources/droplets/droplets_list_snapshots.yml"]
- };
- "/v2/droplets/{droplet_id}/actions": {
- get: external["resources/droplets/dropletActions_list.yml"]
- post: external["resources/droplets/dropletActions_post.yml"]
- };
- "/v2/droplets/actions": {
- post: external["resources/droplets/dropletActions_post_byTag.yml"]
- };
- "/v2/droplets/{droplet_id}/actions/{action_id}": {
- get: external["resources/droplets/dropletActions_get.yml"]
- };
- "/v2/droplets/{droplet_id}/kernels": {
- get: external["resources/droplets/droplets_list_kernels.yml"]
- };
- "/v2/droplets/{droplet_id}/firewalls": {
- get: external["resources/droplets/droplets_list_firewalls.yml"]
- };
- "/v2/droplets/{droplet_id}/neighbors": {
- get: external["resources/droplets/droplets_list_neighbors.yml"]
- };
- "/v2/droplets/{droplet_id}/destroy_with_associated_resources": {
- get: external["resources/droplets/droplets_list_associatedResources.yml"]
- };
- "/v2/droplets/{droplet_id}/destroy_with_associated_resources/selective": {
- delete: external["resources/droplets/droplets_destroy_withAssociatedResourcesSelective.yml"]
- };
- "/v2/droplets/{droplet_id}/destroy_with_associated_resources/dangerous": {
- delete: external["resources/droplets/droplets_destroy_withAssociatedResourcesDangerous.yml"]
- };
- "/v2/droplets/{droplet_id}/destroy_with_associated_resources/status": {
- get: external["resources/droplets/droplets_get_destroyAssociatedResourcesStatus.yml"]
- };
- "/v2/droplets/{droplet_id}/destroy_with_associated_resources/retry": {
- post: external["resources/droplets/droplets_destroy_retryWithAssociatedResources.yml"]
- };
- "/v2/firewalls": {
- get: external["resources/firewalls/firewalls_list.yml"]
- post: external["resources/firewalls/firewalls_create.yml"]
- };
- "/v2/firewalls/{firewall_id}": {
- get: external["resources/firewalls/firewalls_get.yml"]
- put: external["resources/firewalls/firewalls_update.yml"]
- delete: external["resources/firewalls/firewalls_delete.yml"]
- };
- "/v2/firewalls/{firewall_id}/droplets": {
- post: external["resources/firewalls/firewalls_assign_droplets.yml"]
- delete: external["resources/firewalls/firewalls_delete_droplets.yml"]
- };
- "/v2/firewalls/{firewall_id}/tags": {
- post: external["resources/firewalls/firewalls_add_tags.yml"]
- delete: external["resources/firewalls/firewalls_delete_tags.yml"]
- };
- "/v2/firewalls/{firewall_id}/rules": {
- post: external["resources/firewalls/firewalls_add_rules.yml"]
- delete: external["resources/firewalls/firewalls_delete_rules.yml"]
- };
- "/v2/floating_ips": {
- get: external["resources/floating_ips/floatingIPs_list.yml"]
- post: external["resources/floating_ips/floatingIPs_create.yml"]
- };
- "/v2/floating_ips/{floating_ip}": {
- get: external["resources/floating_ips/floatingIPs_get.yml"]
- delete: external["resources/floating_ips/floatingIPs_delete.yml"]
- };
- "/v2/floating_ips/{floating_ip}/actions": {
- get: external["resources/floating_ips/floatingIPsAction_list.yml"]
- post: external["resources/floating_ips/floatingIPsAction_post.yml"]
- };
- "/v2/floating_ips/{floating_ip}/actions/{action_id}": {
- get: external["resources/floating_ips/floatingIPsAction_get.yml"]
- };
- "/v2/functions/namespaces": {
- get: external["resources/functions/functions_list_namespaces.yml"]
- post: external["resources/functions/functions_create_namespace.yml"]
- };
- "/v2/functions/namespaces/{namespace_id}": {
- get: external["resources/functions/functions_get_namespace.yml"]
- delete: external["resources/functions/functions_delete_namespace.yml"]
- };
- "/v2/functions/namespaces/{namespace_id}/triggers": {
- get: external["resources/functions/functions_list_triggers.yml"]
- post: external["resources/functions/functions_create_trigger.yml"]
- };
- "/v2/functions/namespaces/{namespace_id}/triggers/{trigger_name}": {
- get: external["resources/functions/functions_get_trigger.yml"]
- put: external["resources/functions/functions_update_trigger.yml"]
- delete: external["resources/functions/functions_delete_trigger.yml"]
- };
- "/v2/images": {
- get: external["resources/images/images_list.yml"]
- post: external["resources/images/images_create_custom.yml"]
- };
- "/v2/images/{image_id}": {
- get: external["resources/images/images_get.yml"]
- put: external["resources/images/images_update.yml"]
- delete: external["resources/images/images_delete.yml"]
- };
- "/v2/images/{image_id}/actions": {
- get: external["resources/images/imageActions_list.yml"]
- post: external["resources/images/imageActions_post.yml"]
- };
- "/v2/images/{image_id}/actions/{action_id}": {
- get: external["resources/images/imageActions_get.yml"]
- };
- "/v2/kubernetes/clusters": {
- get: external["resources/kubernetes/kubernetes_list_clusters.yml"]
- post: external["resources/kubernetes/kubernetes_create_cluster.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}": {
- get: external["resources/kubernetes/kubernetes_get_cluster.yml"]
- put: external["resources/kubernetes/kubernetes_update_cluster.yml"]
- delete: external["resources/kubernetes/kubernetes_delete_cluster.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}/destroy_with_associated_resources": {
- get: external["resources/kubernetes/kubernetes_list_associatedResources.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}/destroy_with_associated_resources/selective": {
- delete: external["resources/kubernetes/kubernetes_destroy_associatedResourcesSelective.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}/destroy_with_associated_resources/dangerous": {
- delete: external["resources/kubernetes/kubernetes_destroy_associatedResourcesDangerous.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}/kubeconfig": {
- get: external["resources/kubernetes/kubernetes_get_kubeconfig.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}/credentials": {
- get: external["resources/kubernetes/kubernetes_get_credentials.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}/upgrades": {
- get: external["resources/kubernetes/kubernetes_get_availableUpgrades.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}/upgrade": {
- post: external["resources/kubernetes/kubernetes_upgrade_cluster.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}/node_pools": {
- get: external["resources/kubernetes/kubernetes_list_nodePools.yml"]
- post: external["resources/kubernetes/kubernetes_add_nodePool.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}/node_pools/{node_pool_id}": {
- get: external["resources/kubernetes/kubernetes_get_nodePool.yml"]
- put: external["resources/kubernetes/kubernetes_update_nodePool.yml"]
- delete: external["resources/kubernetes/kubernetes_delete_nodePool.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}/node_pools/{node_pool_id}/nodes/{node_id}": {
- delete: external["resources/kubernetes/kubernetes_delete_node.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}/node_pools/{node_pool_id}/recycle": {
- post: external["resources/kubernetes/kubernetes_recycle_nodePool.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}/user": {
- get: external["resources/kubernetes/kubernetes_get_clusterUser.yml"]
- };
- "/v2/kubernetes/options": {
- get: external["resources/kubernetes/kubernetes_list_options.yml"]
- };
- "/v2/kubernetes/clusters/{cluster_id}/clusterlint": {
- get: external["resources/kubernetes/kubernetes_get_clusterLintResults.yml"]
- post: external["resources/kubernetes/kubernetes_run_clusterLint.yml"]
- };
- "/v2/kubernetes/registry": {
- post: external["resources/kubernetes/kubernetes_add_registry.yml"]
- delete: external["resources/kubernetes/kubernetes_remove_registry.yml"]
- };
- "/v2/load_balancers": {
- get: external["resources/load_balancers/loadBalancers_list.yml"]
- post: external["resources/load_balancers/loadBalancers_create.yml"]
- };
- "/v2/load_balancers/{lb_id}": {
- get: external["resources/load_balancers/loadBalancers_get.yml"]
- put: external["resources/load_balancers/loadBalancers_update.yml"]
- delete: external["resources/load_balancers/loadBalancers_delete.yml"]
- };
- "/v2/load_balancers/{lb_id}/droplets": {
- post: external["resources/load_balancers/loadBalancers_add_droplets.yml"]
- delete: external["resources/load_balancers/loadBalancers_remove_droplets.yml"]
- };
- "/v2/load_balancers/{lb_id}/forwarding_rules": {
- post: external["resources/load_balancers/loadBalancers_add_forwardingRules.yml"]
- delete: external["resources/load_balancers/loadBalancers_remove_forwardingRules.yml"]
- };
- "/v2/monitoring/alerts": {
- get: external["resources/monitoring/monitoring_list_alertPolicy.yml"]
- post: external["resources/monitoring/monitoring_create_alertPolicy.yml"]
- };
- "/v2/monitoring/alerts/{alert_uuid}": {
- get: external["resources/monitoring/monitoring_get_alertPolicy.yml"]
- put: external["resources/monitoring/monitoring_update_alertPolicy.yml"]
- delete: external["resources/monitoring/monitoring_delete_alertPolicy.yml"]
- };
- "/v2/monitoring/metrics/droplet/bandwidth": {
- get: external["resources/monitoring/monitoring_get_dropletBandwidthMetrics.yml"]
- };
- "/v2/monitoring/metrics/droplet/cpu": {
- get: external["resources/monitoring/monitoring_get_DropletCpuMetrics.yml"]
- };
- "/v2/monitoring/metrics/droplet/filesystem_free": {
- get: external["resources/monitoring/monitoring_get_dropletFilesystemFreeMetrics.yml"]
- };
- "/v2/monitoring/metrics/droplet/filesystem_size": {
- get: external["resources/monitoring/monitoring_get_dropletFilesystemSizeMetrics.yml"]
- };
- "/v2/monitoring/metrics/droplet/load_1": {
- get: external["resources/monitoring/monitoring_get_dropletLoad1Metrics.yml"]
- };
- "/v2/monitoring/metrics/droplet/load_5": {
- get: external["resources/monitoring/monitoring_get_dropletLoad5Metrics.yml"]
- };
- "/v2/monitoring/metrics/droplet/load_15": {
- get: external["resources/monitoring/monitoring_get_dropletLoad15Metrics.yml"]
- };
- "/v2/monitoring/metrics/droplet/memory_cached": {
- get: external["resources/monitoring/monitoring_get_dropletMemoryCachedMetrics.yml"]
- };
- "/v2/monitoring/metrics/droplet/memory_free": {
- get: external["resources/monitoring/monitoring_get_dropletMemoryFreeMetrics.yml"]
- };
- "/v2/monitoring/metrics/droplet/memory_total": {
- get: external["resources/monitoring/monitoring_get_dropletMemoryTotalMetrics.yml"]
- };
- "/v2/monitoring/metrics/droplet/memory_available": {
- get: external["resources/monitoring/monitoring_get_dropletMemoryAvailableMetrics.yml"]
- };
- "/v2/projects": {
- get: external["resources/projects/projects_list.yml"]
- post: external["resources/projects/projects_create.yml"]
- };
- "/v2/projects/default": {
- get: external["resources/projects/projects_get_default.yml"]
- put: external["resources/projects/projects_update_default.yml"]
- patch: external["resources/projects/projects_patch_default.yml"]
- };
- "/v2/projects/{project_id}": {
- get: external["resources/projects/projects_get.yml"]
- put: external["resources/projects/projects_update.yml"]
- delete: external["resources/projects/projects_delete.yml"]
- patch: external["resources/projects/projects_patch.yml"]
- };
- "/v2/projects/{project_id}/resources": {
- get: external["resources/projects/projects_list_resources.yml"]
- post: external["resources/projects/projects_assign_resources.yml"]
- };
- "/v2/projects/default/resources": {
- get: external["resources/projects/projects_list_resources_default.yml"]
- post: external["resources/projects/projects_assign_resources_default.yml"]
- };
- "/v2/regions": {
- get: external["resources/regions/regions_list.yml"]
- };
- "/v2/registry": {
- get: external["resources/registry/registry_get.yml"]
- post: external["resources/registry/registry_create.yml"]
- delete: external["resources/registry/registry_delete.yml"]
- };
- "/v2/registry/subscription": {
- get: external["resources/registry/registry_get_subscription.yml"]
- post: external["resources/registry/registry_update_subscription.yml"]
- };
- "/v2/registry/docker-credentials": {
- get: external["resources/registry/registry_get_dockerCredentials.yml"]
- };
- "/v2/registry/validate-name": {
- post: external["resources/registry/registry_validate_name.yml"]
- };
- "/v2/registry/{registry_name}/repositories": {
- get: external["resources/registry/registry_list_repositories.yml"]
- };
- "/v2/registry/{registry_name}/repositoriesV2": {
- get: external["resources/registry/registry_list_repositoriesV2.yml"]
- };
- "/v2/registry/{registry_name}/repositories/{repository_name}/tags": {
- get: external["resources/registry/registry_list_repositoryTags.yml"]
- };
- "/v2/registry/{registry_name}/repositories/{repository_name}/tags/{repository_tag}": {
- delete: external["resources/registry/registry_delete_repositoryTag.yml"]
- };
- "/v2/registry/{registry_name}/repositories/{repository_name}/digests": {
- get: external["resources/registry/registry_list_repositoryManifests.yml"]
- };
- "/v2/registry/{registry_name}/repositories/{repository_name}/digests/{manifest_digest}": {
- delete: external["resources/registry/registry_delete_repositoryManifest.yml"]
- };
- "/v2/registry/{registry_name}/garbage-collection": {
- get: external["resources/registry/registry_get_garbageCollection.yml"]
- post: external["resources/registry/registry_run_garbageCollection.yml"]
- };
- "/v2/registry/{registry_name}/garbage-collections": {
- get: external["resources/registry/registry_list_garbageCollections.yml"]
- };
- "/v2/registry/{registry_name}/garbage-collection/{garbage_collection_uuid}": {
- put: external["resources/registry/registry_update_garbageCollection.yml"]
- };
- "/v2/registry/options": {
- get: external["resources/registry/registry_get_options.yml"]
- };
- "/v2/reports/droplet_neighbors_ids": {
- get: external["resources/droplets/droplets_list_neighborsIds.yml"]
- };
- "/v2/reserved_ips": {
- get: external["resources/reserved_ips/reservedIPs_list.yml"]
- post: external["resources/reserved_ips/reservedIPs_create.yml"]
- };
- "/v2/reserved_ips/{reserved_ip}": {
- get: external["resources/reserved_ips/reservedIPs_get.yml"]
- delete: external["resources/reserved_ips/reservedIPs_delete.yml"]
- };
- "/v2/reserved_ips/{reserved_ip}/actions": {
- get: external["resources/reserved_ips/reservedIPsActions_list.yml"]
- post: external["resources/reserved_ips/reservedIPsActions_post.yml"]
- };
- "/v2/reserved_ips/{reserved_ip}/actions/{action_id}": {
- get: external["resources/reserved_ips/reservedIPsActions_get.yml"]
- };
- "/v2/sizes": {
- get: external["resources/sizes/sizes_list.yml"]
- };
- "/v2/snapshots": {
- get: external["resources/snapshots/snapshots_list.yml"]
- };
- "/v2/snapshots/{snapshot_id}": {
- get: external["resources/snapshots/snapshots_get.yml"]
- delete: external["resources/snapshots/snapshots_delete.yml"]
- };
- "/v2/tags": {
- get: external["resources/tags/tags_list.yml"]
- post: external["resources/tags/tags_create.yml"]
- };
- "/v2/tags/{tag_id}": {
- get: external["resources/tags/tags_get.yml"]
- delete: external["resources/tags/tags_delete.yml"]
- };
- "/v2/tags/{tag_id}/resources": {
- post: external["resources/tags/tags_assign_resources.yml"]
- delete: external["resources/tags/tags_unassign_resources.yml"]
- };
- "/v2/volumes": {
- get: external["resources/volumes/volumes_list.yml"]
- post: external["resources/volumes/volumes_create.yml"]
- delete: external["resources/volumes/volumes_delete_byName.yml"]
- };
- "/v2/volumes/actions": {
- post: external["resources/volumes/volumeActions_post.yml"]
- };
- "/v2/volumes/snapshots/{snapshot_id}": {
- get: external["resources/volumes/volumeSnapshots_get_byId.yml"]
- delete: external["resources/volumes/volumeSnapshots_delete_byId.yml"]
- };
- "/v2/volumes/{volume_id}": {
- get: external["resources/volumes/volumes_get.yml"]
- delete: external["resources/volumes/volumes_delete.yml"]
- };
- "/v2/volumes/{volume_id}/actions": {
- get: external["resources/volumes/volumeActions_list.yml"]
- post: external["resources/volumes/volumeActions_post_byId.yml"]
- };
- "/v2/volumes/{volume_id}/actions/{action_id}": {
- get: external["resources/volumes/volumeActions_get.yml"]
- };
- "/v2/volumes/{volume_id}/snapshots": {
- get: external["resources/volumes/volumeSnapshots_list.yml"]
- post: external["resources/volumes/volumeSnapshots_create.yml"]
- };
- "/v2/vpcs": {
- get: external["resources/vpcs/vpcs_list.yml"]
- post: external["resources/vpcs/vpcs_create.yml"]
- };
- "/v2/vpcs/{vpc_id}": {
- get: external["resources/vpcs/vpcs_get.yml"]
- put: external["resources/vpcs/vpcs_update.yml"]
- delete: external["resources/vpcs/vpcs_delete.yml"]
- patch: external["resources/vpcs/vpcs_patch.yml"]
- };
- "/v2/vpcs/{vpc_id}/members": {
- get: external["resources/vpcs/vpcs_list_members.yml"]
- };
- "/v2/uptime/checks": {
- get: external["resources/uptime/list_checks.yml"]
- post: external["resources/uptime/create_check.yml"]
- };
- "/v2/uptime/checks/{check_id}": {
- get: external["resources/uptime/get_check.yml"]
- put: external["resources/uptime/update_check.yml"]
- delete: external["resources/uptime/delete_check.yml"]
- };
- "/v2/uptime/checks/{check_id}/state": {
- get: external["resources/uptime/get_check_state.yml"]
- };
- "/v2/uptime/checks/{check_id}/alerts": {
- get: external["resources/uptime/list_alerts.yml"]
- post: external["resources/uptime/create_alert.yml"]
- };
- "/v2/uptime/checks/{check_id}/alerts/{alert_id}": {
- get: external["resources/uptime/get_alert.yml"]
- put: external["resources/uptime/update_alert.yml"]
- delete: external["resources/uptime/delete_alert.yml"]
- };
-}
-
-export type webhooks = Record;
-
-export interface components {
- schemas: never;
- responses: never;
- parameters: never;
- requestBodies: never;
- headers: never;
- pathItems: never;
-}
-
-export type $defs = Record;
-
-export interface external {
- "description.yml": {
- paths: Record;
- webhooks: Record;
- components: Record;
- $defs: Record;
- };
- "resources/1-clicks/models/oneClicks_create.yml": {
- /**
- * addon_slugs
- * @description An array of 1-Click Application slugs to be installed to the Kubernetes cluster.
- * @default []
- * @example [
- * "kube-state-metrics",
- * "loki"
- * ]
- */
- addon_slugs: string[];
- /**
- * cluster_uuid
- * @description A unique ID for the Kubernetes cluster to which the 1-Click Applications will be installed.
- * @example 50a994b6-c303-438f-9495-7e896cfe6b08
- */
- cluster_uuid: string;
- };
- "resources/1-clicks/models/oneClicks.yml": {
- /**
- * slug
- * @description The slug identifier for the 1-Click application.
- * @example monitoring
- */
- slug: string;
- /**
- * type
- * @description The type of the 1-Click application.
- * @example kubernetes
- */
- type: string;
- };
- /**
- * 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`.
- */
- "resources/1-clicks/oneClicks_install_kubernetes.yml": {
- requestBody: {
- content: {
- "application/json": external["resources/1-clicks/models/oneClicks_create.yml"];
- };
- };
- responses: {
- 200: external["resources/1-clicks/responses/oneClicks_create.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/1-clicks/oneClicks_list.yml": {
- parameters: {
- query?: {
- type?: external["resources/1-clicks/parameters.yml"]["oneClicks_type"];
- };
- };
- responses: {
- 200: external["resources/1-clicks/responses/oneClicks_all.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- "resources/1-clicks/parameters.yml": {
- oneClicks_type?: "droplet" | "kubernetes";
- };
- "resources/1-clicks/responses/oneClicks_all.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- "1_clicks"?: external["resources/1-clicks/models/oneClicks.yml"][];
- };
- };
- };
- "resources/1-clicks/responses/oneClicks_create.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
+ "/v2/1-clicks": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
/**
- * @description A message about the result of the request.
- * @example Successfully kicked off addon job.
+ * 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.
+ *
*/
- message?: string;
- };
- };
- };
- /**
- * Get User Information
- * @description To show information about the current user account, send a GET request to `/v2/account`.
- */
- "resources/account/account_get.yml": {
- responses: {
- 200: external["resources/account/responses/account.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- "resources/account/models/account.yml": {
- /**
- * @description The total number of Droplets current user or team may have active at one time.
- * @example 25
- */
- droplet_limit: number;
- /**
- * @description The total number of Floating IPs the current user or team may have.
- * @example 5
- */
- floating_ip_limit: number;
- /**
- * @description The email address used by the current user to register for DigitalOcean.
- * @example sammy@digitalocean.com
- */
- email: string;
- /**
- * @description The display name for the current user.
- * @example Sammy the Shark
- */
- name?: string;
- /**
- * @description The unique universal identifier for the current user.
- * @example b6fr89dbf6d9156cace5f3c78dc9851d957381ef
- */
- uuid: string;
- /**
- * @description If true, the user has verified their account via email. False otherwise.
- * @default false
- * @example true
- */
- email_verified: boolean;
- /**
- * @description This value is one of "active", "warning" or "locked".
- * @default active
- * @example active
- * @enum {string}
- */
- status: "active" | "warning" | "locked";
- /**
- * @description A human-readable message giving more details about the status of the account.
- * @example
- */
- status_message: string;
- /** @description When authorized in a team context, includes information about the current team. */
- team?: {
- /**
- * @description The unique universal identifier for the current team.
- * @example 5df3e3004a17e242b7c20ca6c9fc25b701a47ece
- */
- uuid?: string;
- /**
- * @description The name for the current team.
- * @example My Team
- */
- name?: string;
- };
- };
- "resources/account/responses/account.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- account?: external["resources/account/models/account.yml"];
- };
- };
- };
- /**
- * Retrieve an Existing Action
- * @description To retrieve a specific action object, send a GET request to `/v2/actions/$ACTION_ID`.
- */
- "resources/actions/actions_get.yml": {
- parameters: {
- path: {
- action_id: external["resources/actions/parameters.yml"]["action_id"];
- };
- };
- responses: {
- 200: external["resources/actions/responses/action.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/actions/actions_list.yml": {
- parameters: {
- query?: {
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- };
- };
- responses: {
- 200: external["resources/actions/responses/actions.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- "resources/actions/models/action.yml": {
- /**
- * @description A unique numeric ID that can be used to identify and reference an action.
- * @example 36804636
- */
- id?: number;
- /**
- * @description The current status of the action. This can be "in-progress", "completed", or "errored".
- * @default in-progress
- * @example completed
- * @enum {string}
- */
- status?: "in-progress" | "completed" | "errored";
- /**
- * @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
- */
- 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:21.000Z"
- */
- started_at?: string;
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format that represents when the action was completed.
- * @example "2020-11-14T16:30:06.000Z"
- */
- completed_at?: string | null;
- /**
- * @description A unique identifier for the resource that the action is associated with.
- * @example 3164444
- */
- resource_id?: number | null;
- /**
- * @description The type of resource that the action is associated with.
- * @example droplet
- */
- resource_type?: string;
- region?: external["resources/regions/models/region.yml"];
- region_slug?: external["resources/regions/models/region.yml"]["slug"] & (string | null);
- };
- "resources/actions/parameters.yml": {
- action_id: number;
- };
- "resources/actions/responses/action.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- action?: external["resources/actions/models/action.yml"];
- };
- };
- };
- "resources/actions/responses/actions.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- actions?: external["resources/actions/models/action.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- /**
- * 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.
- */
- "resources/apps/apps_assign_alertDestinations.yml": {
- parameters: {
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- alert_id: external["resources/apps/parameters.yml"]["alert_id"];
- };
- };
- requestBody: {
- content: {
- "application/json": external["resources/apps/models/apps_assign_app_alert_destinations_request.yml"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/assign_alert_destinations.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Cancel a Deployment
- * @description Immediately cancel an in-progress deployment.
- */
- "resources/apps/apps_cancel_deployment.yml": {
- parameters: {
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- deployment_id: external["resources/apps/parameters.yml"]["deployment_id"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/cancel_deployment.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Commit App Rollback
- * @description Commit an app rollback. This action permanently applies the rollback and unpins the app to resume new deployments.
- */
- "resources/apps/apps_commit_rollback.yml": {
- parameters: {
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- };
- };
- responses: {
- 200: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/apps/apps_create_deployment.yml": {
- parameters: {
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- };
- };
- requestBody: {
- content: {
- "application/json": external["resources/apps/models/apps_create_deployment_request.yml"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/new_app_deployment.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/apps/apps_create_rollback.yml": {
- parameters: {
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- };
- };
- requestBody: {
- content: {
- "application/json": external["resources/apps/models/apps_rollback_app_request.yml"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/new_app_deployment.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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/).
- */
- "resources/apps/apps_create.yml": {
- parameters: {
- header?: {
- Accept?: external["resources/apps/parameters.yml"]["accept"];
- "Content-Type"?: external["resources/apps/parameters.yml"]["content-type"];
- };
- };
- requestBody: {
- content: {
- /**
- * @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": "basic-xxs",
- * "routes": [
- * {
- * "path": "/api"
- * }
- * ]
- * }
- * ]
- * }
- * }
+ get: operations["oneClicks_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/1-clicks/kubernetes": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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`.
+ *
*/
- "application/json": external["resources/apps/models/apps_create_app_request.yml"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/new_app.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/apps/apps_delete.yml": {
- parameters: {
- path: {
- id: external["resources/apps/parameters.yml"]["id_app"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/delete_app.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Retrieve an App Deployment
- * @description Retrieve information about an app deployment.
- */
- "resources/apps/apps_get_deployment.yml": {
- parameters: {
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- deployment_id: external["resources/apps/parameters.yml"]["deployment_id"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/list_deployment.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Retrieve an Instance Size
- * @description Retrieve information about a specific instance size for `service`, `worker`, and `job` components.
- */
- "resources/apps/apps_get_instanceSize.yml": {
- parameters: {
- path: {
- slug: external["resources/apps/parameters.yml"]["slug_size"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/get_instance.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/apps/apps_get_logs_active_deployment_aggregate.yml": {
- parameters: {
- query: {
- follow?: external["resources/apps/parameters.yml"]["live_updates"];
- type: external["resources/apps/parameters.yml"]["log_type"];
- pod_connection_timeout?: external["resources/apps/parameters.yml"]["time_wait"];
- };
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/list_logs.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/apps/apps_get_logs_active_deployment.yml": {
- parameters: {
- query: {
- follow?: external["resources/apps/parameters.yml"]["live_updates"];
- type: external["resources/apps/parameters.yml"]["log_type"];
- pod_connection_timeout?: external["resources/apps/parameters.yml"]["time_wait"];
- };
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- component_name: external["resources/apps/parameters.yml"]["component"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/list_logs.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/apps/apps_get_logs_aggregate.yml": {
- parameters: {
- query: {
- follow?: external["resources/apps/parameters.yml"]["live_updates"];
- type: external["resources/apps/parameters.yml"]["log_type"];
- pod_connection_timeout?: external["resources/apps/parameters.yml"]["time_wait"];
- };
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- deployment_id: external["resources/apps/parameters.yml"]["deployment_id"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/list_logs.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/apps/apps_get_logs.yml": {
- parameters: {
- query: {
- follow?: external["resources/apps/parameters.yml"]["live_updates"];
- type: external["resources/apps/parameters.yml"]["log_type"];
- pod_connection_timeout?: external["resources/apps/parameters.yml"]["time_wait"];
- };
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- deployment_id: external["resources/apps/parameters.yml"]["deployment_id"];
- component_name: external["resources/apps/parameters.yml"]["component"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/list_logs.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Retrieve App Daily Bandwidth Metrics
- * @description Retrieve daily bandwidth usage metrics for a single app.
- */
- "resources/apps/apps_get_metrics_bandwidth_usage.yml": {
- parameters: {
- query?: {
+ post: operations["oneClicks_install_kubernetes"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/account": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
/**
- * @description Optional day to query. Only the date component of the timestamp will be considered. Default: yesterday.
- * @example "2023-01-17T00:00:00.000Z"
+ * Get User Information
+ * @description To show information about the current user account, send a GET request to `/v2/account`.
*/
- date?: string;
- };
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/get_metrics_bandwidth_usage.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Retrieve an App Tier
- * @description Retrieve information about a specific app tier.
- */
- "resources/apps/apps_get_tier.yml": {
- parameters: {
- path: {
- slug: external["resources/apps/parameters.yml"]["slug_tier"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/get_tier.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/apps/apps_get.yml": {
- parameters: {
- query?: {
- name?: external["resources/apps/parameters.yml"]["app_name"];
- };
- path: {
- id: external["resources/apps/parameters.yml"]["id_app"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/apps_get.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/apps/apps_list_alerts.yml": {
- parameters: {
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/list_alerts.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * List App Deployments
- * @description List all deployments of an app.
- */
- "resources/apps/apps_list_deployments.yml": {
- parameters: {
- query?: {
- page?: external["shared/parameters.yml"]["page"];
- per_page?: external["shared/parameters.yml"]["per_page"];
- };
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/existing_deployments.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * List Instance Sizes
- * @description List all instance sizes for `service`, `worker`, and `job` components.
- */
- "resources/apps/apps_list_instanceSizes.yml": {
- responses: {
- 200: external["resources/apps/responses/list_instance.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Retrieve Multiple Apps' Daily Bandwidth Metrics
- * @description Retrieve daily bandwidth usage metrics for multiple apps.
- */
- "resources/apps/apps_list_metrics_bandwidth_usage.yml": {
- requestBody: {
- content: {
- /**
- * @example {
- * "app_ids": [
- * "4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf",
- * "c2a93513-8d9b-4223-9d61-5e7272c81cf5"
- * ],
- * "date": "2023-01-17T00:00:00.000Z"
- * }
- */
- "application/json": external["resources/apps/models/app_metrics_bandwidth_usage_request.yml"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/list_metrics_bandwidth_usage.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * List App Regions
- * @description List all regions supported by App Platform.
- */
- "resources/apps/apps_list_regions.yml": {
- responses: {
- 200: external["resources/apps/responses/list_regions.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * List App Tiers
- * @description List all app tiers.
- */
- "resources/apps/apps_list_tiers.yml": {
- responses: {
- 200: external["resources/apps/responses/all_tiers.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/apps/apps_list.yml": {
- parameters: {
- query?: {
- page?: external["shared/parameters.yml"]["page"];
- per_page?: external["shared/parameters.yml"]["per_page"];
- with_projects?: external["resources/apps/parameters.yml"]["with_projects"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/list_apps.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/apps/apps_revert_rollback.yml": {
- parameters: {
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/new_app_deployment.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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/).
- */
- "resources/apps/apps_update.yml": {
- parameters: {
- path: {
- id: external["resources/apps/parameters.yml"]["id_app"];
- };
- };
- requestBody: {
- content: {
- "application/json": external["resources/apps/models/apps_update_app_request.yml"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/update_app.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/apps/apps_validate_appSpec.yml": {
- requestBody: {
- content: {
- /**
- * @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": "basic-xxs",
- * "routes": [
- * {
- * "path": "/api"
- * }
- * ]
- * }
- * ]
- * },
- * "app_id": "b6bdf840-2854-4f87-a36c-5f231c617c84"
- * }
+ get: operations["account_get"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/account/keys": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
*/
- "application/json": external["resources/apps/models/app_propose.yml"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/propose_app.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/apps/apps_validate_rollback.yml": {
- parameters: {
- path: {
- app_id: external["resources/apps/parameters.yml"]["app_id"];
- };
- };
- requestBody: {
- content: {
- "application/json": external["resources/apps/models/apps_rollback_app_request.yml"];
- };
- };
- responses: {
- 200: external["resources/apps/responses/apps_validate_rollback.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- "resources/apps/models/app_alert_email.yml": string;
- "resources/apps/models/app_alert_phase.yml": "UNKNOWN" | "PENDING" | "CONFIGURING" | "ACTIVE" | "ERROR";
- "resources/apps/models/app_alert_progress_step_reason.yml": {
- /**
- * The error code
- * @example Title of Error
- */
- code?: string;
- /**
- * The error message
- * @example This is an error
- */
- message?: string;
- };
- "resources/apps/models/app_alert_progress_step_status.yml": "UNKNOWN" | "PENDING" | "RUNNING" | "ERROR" | "SUCCESS";
- "resources/apps/models/app_alert_progress_step.yml": {
- /**
- * The name of this step
- * @example example_step
- */
- name?: string;
- status?: external["resources/apps/models/app_alert_progress_step_status.yml"];
- /**
- * The start time of this step
- * Format: date-time
- * @example "2020-11-19T20:27:18.000Z"
- */
- started_at?: string;
- /**
- * The start time of this step
- * Format: date-time
- * @example "2020-11-19T20:27:18.000Z"
- */
- ended_at?: string;
- reason?: external["resources/apps/models/app_alert_progress_step_reason.yml"];
- };
- "resources/apps/models/app_alert_progress.yml": {
- /** Steps of an alert's progress. */
- steps?: external["resources/apps/models/app_alert_progress_step.yml"][];
- };
- "resources/apps/models/app_alert_slack_webhook.yml": {
- /**
- * URL of the Slack webhook
- * @example https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
- */
- url?: string;
- /**
- * Name of the Slack Webhook Channel
- * @example Channel Name
- */
- channel?: string;
- };
- "resources/apps/models/app_alert_spec_operator.yml": "UNSPECIFIED_OPERATOR" | "GREATER_THAN" | "LESS_THAN";
- "resources/apps/models/app_alert_spec_rule.yml": "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";
- "resources/apps/models/app_alert_spec_window.yml": "UNSPECIFIED_WINDOW" | "FIVE_MINUTES" | "TEN_MINUTES" | "THIRTY_MINUTES" | "ONE_HOUR";
- "resources/apps/models/app_alert_spec.yml": {
- rule?: external["resources/apps/models/app_alert_spec_rule.yml"];
- /**
- * @description Is the alert disabled?
- * @example false
- */
- disabled?: boolean;
- operator?: external["resources/apps/models/app_alert_spec_operator.yml"];
- /**
- * Format: float
- * @description Threshold value for alert
- * @example 2.32
- */
- value?: number;
- window?: external["resources/apps/models/app_alert_spec_window.yml"];
- };
- "resources/apps/models/app_alert.yml": {
- /**
- * The ID of the alert
- * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
- */
- id?: string;
- /**
- * Name of component the alert belongs to
- * @example backend
- */
- component_name?: string;
- spec?: external["resources/apps/models/app_alert_spec.yml"];
- /**
- * Emails for alerts to go to
- * @example [
- * "sammy@digitalocean.com"
- * ]
- */
- emails?: external["resources/apps/models/app_alert_email.yml"][];
- /** Slack Webhooks to send alerts to */
- slack_webhooks?: external["resources/apps/models/app_alert_slack_webhook.yml"][];
- phase?: external["resources/apps/models/app_alert_phase.yml"];
- progress?: external["resources/apps/models/app_alert_progress.yml"];
- };
- "resources/apps/models/app_component_base.yml": {
- /**
- * @description The name. Must be unique across all components within the same app.
- * @example api
- */
- name?: string;
- git?: external["resources/apps/models/apps_git_source_spec.yml"];
- github?: external["resources/apps/models/apps_github_source_spec.yml"];
- gitlab?: external["resources/apps/models/apps_gitlab_source_spec.yml"];
- image?: external["resources/apps/models/apps_image_source_spec.yml"];
- /**
- * @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
- */
- dockerfile_path?: string;
- /**
- * @description An optional build command to run while building this component from source.
- * @example npm run build
- */
- build_command?: string;
- /**
- * @description An optional run command to override the component's default.
- * @example bin/api
- */
- run_command?: 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
- */
- source_dir?: string;
- /** @description A list of environment variables made available to the component. */
- envs?: external["resources/apps/models/app_variable_definition.yml"][];
- /**
- * @description An environment slug describing the type of this app. For a full list, please refer to [the product documentation](https://www.digitalocean.com/docs/app-platform/).
- * @example node-js
- */
- environment_slug?: string;
- log_destinations?: external["resources/apps/models/app_log_destination_definition.yml"];
- };
- "resources/apps/models/app_component_instance_base.yml": {
- /**
- * Format: int64
- * @description The amount of instances that this component should be scaled to. Default: 1
- * @default 1
- * @example 2
- */
- instance_count?: number;
- /**
- * @description The instance size to use for this component. Default: `basic-xxs`
- * @default basic-xxs
- * @example basic-xxs
- * @enum {string}
- */
- instance_size_slug?: "basic-xxs" | "basic-xs" | "basic-s" | "basic-m" | "professional-xs" | "professional-s" | "professional-m" | "professional-1l" | "professional-l" | "professional-xl";
- };
- "resources/apps/models/app_database_spec.yml": {
- /**
- * @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.
- * @example cluster_name
- */
- cluster_name?: string;
- /**
- * @description The name of the MySQL or PostgreSQL database to configure.
- * @example my_db
- */
- db_name?: string;
- /**
- * @description The name of the MySQL or PostgreSQL user to configure.
- * @example superuser
- */
- db_user?: string;
- /**
- * @description - MYSQL: MySQL
- * - PG: PostgreSQL
- * - REDIS: Redis
- * @default UNSET
- * @example PG
- * @enum {string}
- */
- engine?: "UNSET" | "MYSQL" | "PG" | "REDIS";
- /**
- * @description The name. Must be unique across all components within the same app.
- * @example prod-db
- */
- name: string;
- /**
- * @description Whether this is a production or dev database.
- * @example true
- */
- production?: boolean;
- /**
- * @description The version of the database engine
- * @example 12
- */
- version?: string;
- };
- "resources/apps/models/app_domain_spec.yml": {
- /**
- * @description The hostname for the domain
- * @example app.example.com
- */
- domain: string;
- /**
- * @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
- * @default UNSPECIFIED
- * @example DEFAULT
- * @enum {string}
- */
- type?: "UNSPECIFIED" | "DEFAULT" | "PRIMARY" | "ALIAS";
- /**
- * @description Indicates whether the domain includes all sub-domains, in addition to the given domain
- * @example true
- */
- wildcard?: boolean;
- /**
- * Format: hostname
- * @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`.
- * @example example.com
- */
- zone?: string;
- /**
- * @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
- * @enum {string}
- */
- minimum_tls_version?: "1.2" | "1.3";
- };
- "resources/apps/models/app_domain_validation.yml": {
- /**
- * TXT record name
- * @example _acme-challenge.app.example.com
- */
- txt_name?: string;
- /**
- * TXT record value
- * @example lXLOcN6cPv0nproViNcUHcahD9TrIPlNgdwesj0pYpk
- */
- txt_value?: string;
- };
- "resources/apps/models/app_functions_spec.yml": {
- cors?: external["resources/apps/models/apps_cors_policy.yml"];
- /** @description A list of HTTP routes that should be routed to this component. */
- routes?: external["resources/apps/models/app_route_spec.yml"][];
- /**
- * @description The name. Must be unique across all components within the same app.
- * @example api
- */
- name: 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
- */
- source_dir?: string;
- alerts?: external["resources/apps/models/app_alert_spec.yml"][];
- /** @description A list of environment variables made available to the component. */
- envs?: external["resources/apps/models/app_variable_definition.yml"][];
- git?: external["resources/apps/models/apps_git_source_spec.yml"];
- github?: external["resources/apps/models/apps_github_source_spec.yml"];
- gitlab?: external["resources/apps/models/apps_gitlab_source_spec.yml"];
- log_destinations?: external["resources/apps/models/app_log_destination_definition.yml"];
- };
- "resources/apps/models/app_ingress_spec_rule_match.yml": {
- path: external["resources/apps/models/app_ingress_spec_rule_string_match.yml"];
- };
- "resources/apps/models/app_ingress_spec_rule_routing_component.yml": {
- /**
- * @description The name of the component to route to.
- * @example web
- */
- name: string;
- /**
- * @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`.
- * @example true
- */
- preserve_path_prefix?: string;
- /**
- * @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`.
- * @example /api/v1/
- */
- rewrite?: string;
- };
- "resources/apps/models/app_ingress_spec_rule_routing_redirect.yml": {
- /**
- * @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.
- * @example /about
- */
- uri?: string;
- /**
- * @description The authority/host to redirect to. This can be a hostname or IP address. Note: use `port` to set the port.
- * @example example.com
- */
- authority?: string;
- /**
- * Format: int64
- * @description The port to redirect to.
- * @example 443
- */
- port?: number;
- /**
- * @description The scheme to redirect to. Supported values are `http` or `https`. Default: `https`.
- * @example https
- */
- scheme?: string;
- /**
- * Format: int64
- * @description The redirect code to use. Defaults to `302`. Supported values are 300, 301, 302, 303, 304, 307, 308.
- * @example 302
- */
- redirect_code?: number;
- };
- "resources/apps/models/app_ingress_spec_rule_string_match.yml": {
- /**
- * @description Prefix-based match. For example, `/api` will match `/api`, `/api/`, and any nested paths such as `/api/v1/endpoint`.
- * @example /api
- */
- prefix: string;
- };
- "resources/apps/models/app_ingress_spec_rule.yml": {
- match?: external["resources/apps/models/app_ingress_spec_rule_match.yml"];
- cors?: external["resources/apps/models/apps_cors_policy.yml"];
- component?: external["resources/apps/models/app_ingress_spec_rule_routing_component.yml"];
- redirect?: external["resources/apps/models/app_ingress_spec_rule_routing_redirect.yml"];
- };
- "resources/apps/models/app_ingress_spec.yml": {
- /** @description Rules for configuring HTTP ingress for component routes, CORS, rewrites, and redirects. */
- rules?: external["resources/apps/models/app_ingress_spec_rule.yml"][];
- };
- "resources/apps/models/app_job_spec.yml": external["resources/apps/models/app_component_base.yml"] & external["resources/apps/models/app_component_instance_base.yml"] & ({
- /**
- * @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
- * @enum {string}
- */
- kind?: "UNSPECIFIED" | "PRE_DEPLOY" | "POST_DEPLOY" | "FAILED_DEPLOY";
- });
- "resources/apps/models/app_log_destination_datadog_spec.yml": {
- /**
- * @description Datadog HTTP log intake endpoint.
- * @example https://mydatadogendpoint.com
- */
- endpoint?: string;
- /**
- * @description Datadog API key.
- * @example abcdefghijklmnopqrstuvwxyz0123456789
- */
- api_key: string;
- };
- "resources/apps/models/app_log_destination_definition.yml": {
- /** @example my_log_destination */
- name: string;
- papertrail?: external["resources/apps/models/app_log_destination_papertrail_spec.yml"];
- datadog?: external["resources/apps/models/app_log_destination_datadog_spec.yml"];
- logtail?: external["resources/apps/models/app_log_destination_logtail_spec.yml"];
- };
- "resources/apps/models/app_log_destination_logtail_spec.yml": {
- /**
- * @description Logtail token.
- * @example abcdefghijklmnopqrstuvwxyz0123456789
- */
- token?: string;
- };
- "resources/apps/models/app_log_destination_papertrail_spec.yml": {
- /**
- * @description Papertrail syslog endpoint.
- * @example https://mypapertrailendpoint.com
- */
- endpoint: string;
- };
- "resources/apps/models/app_metrics_bandwidth_usage_details.yml": {
- /**
- * @description The ID of the app.
- * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
- */
- app_id?: string;
- /**
- * Format: uint64
- * @description The used bandwidth amount in bytes.
- * @example 513668
- */
- bandwidth_bytes?: string;
- };
- "resources/apps/models/app_metrics_bandwidth_usage_request.yml": {
- /**
- * @description A list of app IDs to query bandwidth metrics for.
- * @example [
- * "4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf",
- * "c2a93513-8d9b-4223-9d61-5e7272c81cf5"
- * ]
- */
- app_ids: 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:00.000Z"
- */
- date?: string;
- };
- "resources/apps/models/app_metrics_bandwidth_usage.yml": {
- /** @description A list of bandwidth usage details by app. */
- app_bandwidth_usage?: external["resources/apps/models/app_metrics_bandwidth_usage_details.yml"][];
- /**
- * Format: date-time
- * @description The date for the metrics data.
- * @example "2023-01-17T00:00:00.000Z"
- */
- date?: string;
- };
- "resources/apps/models/app_propose_response.yml": {
- /**
- * @description Indicates whether the app is a static app.
- * @example true
- */
- app_is_static?: boolean;
- /**
- * @description Indicates whether the app name is available.
- * @example true
- */
- app_name_available?: boolean;
- /**
- * @description The suggested name if the proposed app name is unavailable.
- * @example newName
- */
- app_name_suggestion?: string;
- /**
- * @description The maximum number of free static apps the account can have. We will charge you for any additional static apps.
- * @example 2
- */
- existing_static_apps?: string;
- spec?: external["resources/apps/models/app_spec.yml"];
- /**
- * Format: int32
- * @description The monthly cost of the proposed app in USD using the next pricing plan tier. For example, if you propose an app that uses the Basic tier, the `app_tier_upgrade_cost` field displays the monthly cost of the app if it were to use the Professional tier. If the proposed app already uses the most expensive tier, the field is empty.
- * @example 5
- */
- app_cost?: number;
- /**
- * 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
- */
- app_tier_downgrade_cost?: number;
- };
- "resources/apps/models/app_propose.yml": {
- spec: external["resources/apps/models/app_spec.yml"];
- /**
- * @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
- */
- app_id?: string;
- };
- "resources/apps/models/app_response.yml": {
- app?: external["resources/apps/models/app.yml"];
- };
- "resources/apps/models/app_rollback_validation_condition.yml": {
- /**
- * @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.
- *
- * @example exceeded_revision_limit
- * @enum {string}
- */
- code?: "incompatible_phase" | "incompatible_result" | "exceeded_revision_limit" | "app_pinned" | "database_config_conflict" | "region_conflict" | "static_site_requires_rebuild" | "image_source_missing_digest";
- /**
- * @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
- */
- message?: string;
- /**
- * @example [
- * "www"
- * ]
- */
- components?: string[];
- };
- "resources/apps/models/app_route_spec.yml": {
- /**
- * @description An HTTP path prefix. Paths must start with / and must be unique across all components within an app.
- * @example /api
- */
- path?: string;
- /**
- * @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`.
- * @example true
- */
- preserve_path_prefix?: boolean;
- };
- "resources/apps/models/app_service_spec_health_check.yml": {
- /**
- * Format: int32
- * @description The number of failed health checks before considered unhealthy.
- * @example 2
- */
- failure_threshold?: number;
- /**
- * 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
- */
- port?: number;
- /**
- * @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
- */
- http_path?: string;
- /**
- * Format: int32
- * @description The number of seconds to wait before beginning health checks.
- * @example 30
- */
- initial_delay_seconds?: number;
- /**
- * Format: int32
- * @description The number of seconds to wait between health checks.
- * @example 60
- */
- period_seconds?: number;
- /**
- * Format: int32
- * @description The number of successful health checks before considered healthy.
- * @example 3
- */
- success_threshold?: number;
- /**
- * Format: int32
- * @description The number of seconds after which the check times out.
- * @example 45
- */
- timeout_seconds?: number;
- };
- "resources/apps/models/app_service_spec.yml": external["resources/apps/models/app_component_base.yml"] & external["resources/apps/models/app_component_instance_base.yml"] & {
- cors?: external["resources/apps/models/apps_cors_policy.yml"];
- health_check?: external["resources/apps/models/app_service_spec_health_check.yml"];
- /**
- * Format: int64
- * @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.
- * @example 3000
- */
- http_port?: number;
- /**
- * @description The ports on which this service will listen for internal traffic.
- * @example [
- * 80,
- * 443
- * ]
- */
- internal_ports?: number[];
- /** @description A list of HTTP routes that should be routed to this component. */
- routes?: external["resources/apps/models/app_route_spec.yml"][];
- };
- "resources/apps/models/app_spec.yml": {
- /**
- * @description The name of the app. Must be unique across all apps in the same account.
- * @example web-app-01
- */
- name: string;
- /**
- * @description The slug form of the geographical origin of the app. Default: `nearest available`
- * @example nyc
- * @enum {string}
- */
- region?: "ams" | "nyc" | "fra" | "sfo" | "sgp" | "blr" | "tor" | "lon" | "syd";
- /** @description A set of hostnames where the application will be available. */
- domains?: external["resources/apps/models/app_domain_spec.yml"][];
- /** @description Workloads which expose publicly-accessible HTTP services. */
- services?: external["resources/apps/models/app_service_spec.yml"][];
- /** @description Content which can be rendered to static web assets. */
- static_sites?: external["resources/apps/models/app_static_site_spec.yml"][];
- /** @description Pre and post deployment workloads which do not expose publicly-accessible HTTP routes. */
- jobs?: external["resources/apps/models/app_job_spec.yml"][];
- /** @description Workloads which do not expose publicly-accessible HTTP services. */
- workers?: external["resources/apps/models/app_worker_spec.yml"][];
- /** @description Workloads which expose publicly-accessible HTTP services via Functions Components. */
- functions?: external["resources/apps/models/app_functions_spec.yml"][];
- /**
- * @description Database instances which can provide persistence to workloads within the
- * application.
- */
- databases?: external["resources/apps/models/app_database_spec.yml"][];
- ingress?: external["resources/apps/models/app_ingress_spec.yml"];
- };
- "resources/apps/models/app_static_site_spec.yml": WithRequired;
- "resources/apps/models/app_variable_definition.yml": {
- /**
- * @description The variable name
- * @example BASE_URL
- */
- key: string;
- /**
- * @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
- * @enum {string}
- */
- scope?: "UNSET" | "RUN_TIME" | "BUILD_TIME" | "RUN_AND_BUILD_TIME";
- /**
- * @description - GENERAL: A plain-text environment variable
- * - SECRET: A secret encrypted environment variable
- * @default GENERAL
- * @example GENERAL
- * @enum {string}
- */
- type?: "GENERAL" | "SECRET";
- /**
- * @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.
- * @example http://example.com
- */
- value?: string;
- };
- "resources/apps/models/app_worker_spec.yml": WithRequired;
- "resources/apps/models/app.yml": {
- active_deployment?: external["resources/apps/models/apps_deployment.yml"];
- /**
- * The creation time of the app
- * Format: date-time
- * @example "2020-11-19T20:27:18.000Z"
- */
- created_at?: string;
- /**
- * The default hostname on which the app is accessible
- * @example digitalocean.com
- */
- default_ingress?: string;
- /** Contains all domains for the app */
- domains?: readonly external["resources/apps/models/apps_domain.yml"][];
- /**
- * The ID of the application
- * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
- */
- id?: string;
- in_progress_deployment?: external["resources/apps/models/apps_deployment.yml"];
- /**
- * The creation time of the last deployment
- * Format: date-time
- * @example "2020-11-19T20:27:18.000Z"
- */
- last_deployment_created_at?: string;
- /**
- * The live domain of the app
- * @example live_domain
- */
- live_domain?: string;
- /**
- * The live URL of the app
- * @example google.com
- */
- live_url?: string;
- /**
- * The live URL base of the app, the URL excluding the path
- * @example digitalocean.com
- */
- live_url_base?: string;
- /**
- * The ID of the account to which the application belongs
- * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
- */
- owner_uuid?: string;
- pending_deployment?: external["resources/apps/models/apps_deployment.yml"];
- /**
- * The ID of the project the app is assigned to. This will be empty if there is a lookup failure.
- * @example 88b72d1a-b78a-4d9f-9090-b53c4399073f
- */
- project_id?: string;
- region?: external["resources/apps/models/apps_region.yml"];
- spec: external["resources/apps/models/app_spec.yml"];
- /**
- * The current pricing tier slug of the app
- * @example basic
- */
- tier_slug?: string;
- /**
- * Time of the app's last configuration update
- * Format: date-time
- * @example "2020-12-01T00:42:16.000Z"
- */
- updated_at?: string;
- pinned_deployment?: external["resources/apps/models/apps_deployment.yml"];
- };
- "resources/apps/models/apps_alert_response.yml": {
- alert?: external["resources/apps/models/app_alert.yml"];
- };
- "resources/apps/models/apps_assign_app_alert_destinations_request.yml": {
- /**
- * @example [
- * "sammy@digitalocean.com"
- * ]
- */
- emails?: external["resources/apps/models/app_alert_email.yml"][];
- slack_webhooks?: external["resources/apps/models/app_alert_slack_webhook.yml"][];
- };
- "resources/apps/models/apps_cors_policy.yml": {
- /**
- * @description The set of allowed CORS origins.
- * @example [
- * {
- * "exact": "https://www.example.com"
- * },
- * {
- * "regex": "^.*example.com"
- * }
- * ]
- */
- allow_origins?: external["resources/apps/models/apps_string_match.yml"][];
- /**
- * @description The set of allowed HTTP methods. This configures the `Access-Control-Allow-Methods` header.
- * @example [
- * "GET",
- * "OPTIONS",
- * "POST",
- * "PUT",
- * "PATCH",
- * "DELETE"
- * ]
- */
- allow_methods?: string[];
- /**
- * @description The set of allowed HTTP request headers. This configures the `Access-Control-Allow-Headers` header.
- * @example [
- * "Content-Type",
- * "X-Custom-Header"
- * ]
- */
- allow_headers?: 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"
- * ]
- */
- expose_headers?: 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
- */
- max_age?: string;
- /**
- * @description Whether browsers should expose the response to the client-side JavaScript code when the request’s credentials mode is include. This configures the `Access-Control-Allow-Credentials` header.
- * @example false
- */
- allow_credentials?: boolean;
- };
- "resources/apps/models/apps_create_app_request.yml": {
- spec: external["resources/apps/models/app_spec.yml"];
- /** @description The ID of the project the app should be assigned to. If omitted, it will be assigned to your default project. */
- project_id?: string;
- };
- "resources/apps/models/apps_create_deployment_request.yml": {
- /**
- * Indicates whether to force a build of app from source even if an existing cached build is suitable for re-use
- * @example true
- */
- force_build?: boolean;
- };
- "resources/apps/models/apps_delete_app_response.yml": {
- /**
- * The ID of the app that was deleted
- * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
- */
- id?: string;
- };
- "resources/apps/models/apps_deployment_functions.yml": {
- /**
- * The name of this functions component
- * @example my-functions-component
- */
- name?: string;
- /**
- * @description The commit hash of the repository that was used to build this functions component.
- * @example 54d4a727f457231062439895000d45437c7bb405
- */
- source_commit_hash?: string;
- /**
- * @description The namespace where the functions are deployed.
- * @example ap-b2a93513-8d9b-4223-9d61-5e7272c81c32
- */
- namespace?: string;
- };
- "resources/apps/models/apps_deployment_job.yml": {
- /**
- * The name of this job
- * @example migrate-db
- */
- name?: string;
- /**
- * The commit hash of the repository that was used to build this job
- * @example 54d4a727f457231062439895000d45437c7bb405
- */
- source_commit_hash?: string;
- };
- "resources/apps/models/apps_deployment_phase.yml": "UNKNOWN" | "PENDING_BUILD" | "BUILDING" | "PENDING_DEPLOY" | "DEPLOYING" | "ACTIVE" | "SUPERSEDED" | "ERROR" | "CANCELED";
- "resources/apps/models/apps_deployment_progress_step_reason.yml": {
- /**
- * The error code
- * @example Title of Error
- */
- code?: string;
- /**
- * The error message
- * @example This is an error
- */
- message?: string;
- };
- "resources/apps/models/apps_deployment_progress_step_status.yml": "UNKNOWN" | "PENDING" | "RUNNING" | "ERROR" | "SUCCESS";
- "resources/apps/models/apps_deployment_progress_step.yml": {
- /**
- * The component name that this step is associated with
- * @example component
- */
- component_name?: string;
- /**
- * The end time of this step
- * Format: date-time
- * @example "2020-11-19T20:27:18.000Z"
- */
- ended_at?: string;
- /**
- * @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"
- * @example Building service
- */
- message_base?: string;
- /**
- * The name of this step
- * @example example_step
- */
- name?: string;
- reason?: external["resources/apps/models/apps_deployment_progress_step_reason.yml"];
- /**
- * The start time of this step
- * Format: date-time
- * @example "2020-11-19T20:27:18.000Z"
- */
- started_at?: string;
- status?: external["resources/apps/models/apps_deployment_progress_step_status.yml"];
- /** Child steps of this step */
- steps?: Record[];
- };
- "resources/apps/models/apps_deployment_progress.yml": {
- /**
- * Number of unsuccessful steps
- * Format: int32
- * @example 3
- */
- error_steps?: number;
- /**
- * Number of pending steps
- * Format: int32
- * @example 2
- */
- pending_steps?: number;
- /**
- * Number of currently running steps
- * Format: int32
- * @example 2
- */
- running_steps?: number;
- /** The deployment's steps */
- steps?: external["resources/apps/models/apps_deployment_progress_step.yml"][];
- /**
- * Number of successful steps
- * Format: int32
- * @example 4
- */
- success_steps?: number;
- /** A flattened summary of the steps */
- summary_steps?: external["resources/apps/models/apps_deployment_progress_step.yml"][];
- /**
- * Total number of steps
- * Format: int32
- * @example 5
- */
- total_steps?: number;
- };
- "resources/apps/models/apps_deployment_response.yml": {
- deployment?: external["resources/apps/models/apps_deployment.yml"];
- };
- "resources/apps/models/apps_deployment_service.yml": {
- /**
- * The name of this service
- * @example web
- */
- name?: string;
- /**
- * The commit hash of the repository that was used to build this service
- * @example 54d4a727f457231062439895000d45437c7bb405
- */
- source_commit_hash?: string;
- };
- "resources/apps/models/apps_deployment_static_site.yml": {
- /**
- * The name of this static site
- * @example web
- */
- name?: string;
- /**
- * The commit hash of the repository that was used to build this static site
- * @example 54d4a727f457231062439895000d45437c7bb405
- */
- source_commit_hash?: string;
- };
- "resources/apps/models/apps_deployment_worker.yml": {
- /**
- * The name of this worker
- * @example queue-runner
- */
- name?: string;
- /**
- * The commit hash of the repository that was used to build this worker
- * @example 54d4a727f457231062439895000d45437c7bb405
- */
- source_commit_hash?: string;
- };
- "resources/apps/models/apps_deployment.yml": {
- /**
- * What caused this deployment to be created
- * @example commit 9a4df0b pushed to github/digitalocean/sample-golang
- */
- cause?: string;
- /**
- * The ID of a previous deployment that this deployment was cloned from
- * @example 3aa4d20e-5527-4c00-b496-601fbd22520a
- */
- cloned_from?: string;
- /**
- * The creation time of the deployment
- * Format: date-time
- * @example "2020-07-28T18:00:00.000Z"
- */
- created_at?: string;
- /**
- * The ID of the deployment
- * @example b6bdf840-2854-4f87-a36c-5f231c617c84
- */
- id?: string;
- /** Job components that are part of this deployment */
- jobs?: external["resources/apps/models/apps_deployment_job.yml"][];
- /** Functions components that are part of this deployment */
- functions?: external["resources/apps/models/apps_deployment_functions.yml"][];
- phase?: external["resources/apps/models/apps_deployment_phase.yml"];
- /**
- * When the deployment phase was last updated
- * Format: date-time
- * @example "1901-01-01T00:00:00.000Z"
- */
- phase_last_updated_at?: string;
- progress?: external["resources/apps/models/apps_deployment_progress.yml"];
- /** Service components that are part of this deployment */
- services?: external["resources/apps/models/apps_deployment_service.yml"][];
- spec?: external["resources/apps/models/app_spec.yml"];
- /** Static Site components that are part of this deployment */
- static_sites?: external["resources/apps/models/apps_deployment_static_site.yml"][];
- /**
- * The current pricing tier slug of the deployment
- * @example basic
- */
- tier_slug?: string;
- /**
- * When the deployment was last updated
- * Format: date-time
- * @example "2020-07-28T18:00:00.000Z"
- */
- updated_at?: string;
- /** Worker components that are part of this deployment */
- workers?: external["resources/apps/models/apps_deployment_worker.yml"][];
- };
- "resources/apps/models/apps_deployments_response.yml": {
- /** A list of deployments */
- deployments?: external["resources/apps/models/apps_deployment.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- "resources/apps/models/apps_domain_phase.yml": "UNKNOWN" | "PENDING" | "CONFIGURING" | "ACTIVE" | "ERROR";
- "resources/apps/models/apps_domain_progress.yml": {
- /** The steps of the domain's progress */
- steps?: Record[];
- };
- "resources/apps/models/apps_domain.yml": {
- /**
- * The ID of the domain
- * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
- */
- id?: string;
- phase?: external["resources/apps/models/apps_domain_phase.yml"];
- progress?: external["resources/apps/models/apps_domain_progress.yml"];
- spec?: external["resources/apps/models/app_domain_spec.yml"];
- /** List of TXT validation records */
- validations?: external["resources/apps/models/app_domain_validation.yml"][];
- /** Validation values have changed and require manual intervention */
- rotate_validation_records?: boolean;
- /**
- * Current SSL certificate expiration time
- * Format: date-time
- * @example 2024-01-29T23:59:59Z
- */
- certificate_expires_at?: string;
- };
- "resources/apps/models/apps_get_instance_size_response.yml": {
- instance_size?: external["resources/apps/models/apps_instance_size.yml"];
- };
- "resources/apps/models/apps_get_logs_response.yml": {
- /** A list of URLs to archived log files */
- historic_urls?: string[];
- /**
- * @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.
- * @example ws://logs/build
- */
- live_url?: string;
- };
- "resources/apps/models/apps_get_tier_response.yml": {
- tier?: external["resources/apps/models/apps_tier.yml"];
- };
- "resources/apps/models/apps_git_source_spec.yml": {
- /**
- * @description The name of the branch to use
- * @example main
- */
- branch?: string;
- /**
- * @description The clone URL of the repo. Example: `https://github.com/digitalocean/sample-golang.git`
- * @example https://github.com/digitalocean/sample-golang.git
- */
- repo_clone_url?: string;
- };
- "resources/apps/models/apps_github_source_spec.yml": {
- /**
- * @description The name of the branch to use
- * @example main
- */
- branch?: string;
- /**
- * @description Whether to automatically deploy new commits made to the repo
- * @example true
- */
- deploy_on_push?: boolean;
- /**
- * @description The name of the repo in the format owner/repo. Example: `digitalocean/sample-golang`
- * @example digitalocean/sample-golang
- */
- repo?: string;
- };
- "resources/apps/models/apps_gitlab_source_spec.yml": {
- /**
- * @description The name of the branch to use
- * @example main
- */
- branch?: string;
- /**
- * @description Whether to automatically deploy new commits made to the repo
- * @example true
- */
- deploy_on_push?: boolean;
- /**
- * @description The name of the repo in the format owner/repo. Example: `digitalocean/sample-golang`
- * @example digitalocean/sample-golang
- */
- repo?: string;
- };
- "resources/apps/models/apps_image_source_spec.yml": {
- /**
- * @description The registry name. Must be left empty for the `DOCR` registry type.
- * @example registry.hub.docker.com
- */
- registry?: string;
- /**
- * @description - DOCKER_HUB: The DockerHub container registry type.
- * - DOCR: The DigitalOcean container registry type.
- * @example DOCR
- * @enum {string}
- */
- registry_type?: "DOCKER_HUB" | "DOCR";
- /**
- * @description The repository name.
- * @example origin/master
- */
- repository?: string;
- /**
- * @description The repository tag. Defaults to `latest` if not provided.
- * @default latest
- * @example latest
- */
- tag?: string;
- };
- "resources/apps/models/apps_instance_size.yml": {
- cpu_type?: external["resources/apps/models/instance_size_cpu_type.yml"];
- /**
- * The number of allotted vCPU cores
- * Format: int64
- * @example 3
- */
- cpus?: string;
- /**
- * The allotted memory in bytes
- * Format: int64
- * @example 1048
- */
- memory_bytes?: string;
- /**
- * A human-readable name of the instance size
- * @example name
- */
- name?: string;
- /**
- * The slug of the instance size
- * @example basic
- */
- slug?: string;
- /**
- * The slug of the corresponding downgradable instance size on the lower tier
- * @example basic
- */
- tier_downgrade_to?: string;
- /**
- * The slug of the tier to which this instance size belongs
- * @example basic
- */
- tier_slug?: string;
- /**
- * The slug of the corresponding upgradable instance size on the higher tier
- * @example basic
- */
- tier_upgrade_to?: string;
- /**
- * The cost of this instance size in USD per month
- * @example 23
- */
- usd_per_month?: string;
- /**
- * The cost of this instance size in USD per second
- * @example 0.00000001232
- */
- usd_per_second?: string;
- };
- "resources/apps/models/apps_list_alerts_response.yml": {
- alerts?: external["resources/apps/models/app_alert.yml"][];
- };
- "resources/apps/models/apps_list_instance_sizes_response.yml": {
- /**
- * Format: float
- * @example 2.32
- */
- discount_percent?: number;
- instance_sizes?: external["resources/apps/models/apps_instance_size.yml"][];
- };
- "resources/apps/models/apps_list_regions_response.yml": {
- regions?: external["resources/apps/models/apps_region.yml"][];
- };
- "resources/apps/models/apps_list_tiers_response.yml": {
- tiers?: external["resources/apps/models/apps_tier.yml"][];
- };
- "resources/apps/models/apps_region.yml": {
- /**
- * The continent that this region is in
- * @example europe
- */
- continent?: string;
- /**
- * Data centers that are in this region
- * @example [
- * "ams"
- * ]
- */
- data_centers?: readonly string[];
- /**
- * @description Whether or not the region is presented as the default.
- * @example true
- */
- default?: boolean;
- /**
- * Whether or not the region is open for new apps
- * @example true
- */
- disabled?: boolean;
- /**
- * The flag of this region
- * @example ams
- */
- flag?: string;
- /**
- * A human-readable name of the region
- * @example ams
- */
- label?: string;
- /**
- * Reason that this region is not available
- * @example to crowded
- */
- reason?: string;
- /**
- * The slug form of the region name
- * @example basic
- */
- slug?: string;
- };
- "resources/apps/models/apps_response.yml": {
- /** A list of apps */
- apps?: external["resources/apps/models/app.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- "resources/apps/models/apps_rollback_app_request.yml": {
- /**
- * @description The ID of the deployment to rollback to.
- * @example 3aa4d20e-5527-4c00-b496-601fbd22520a
- */
- deployment_id?: string;
- /**
- * @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
- */
- skip_pin?: boolean;
- };
- "resources/apps/models/apps_string_match.yml": {
- /**
- * @description Exact string match. Only 1 of `exact`, `prefix`, or `regex` must be set.
- * @example https://www.example.com
- */
- exact?: string;
- /**
- * @description Prefix-based match. Only 1 of `exact`, `prefix`, or `regex` must be set.
- * @example https://www.example.com
- */
- prefix?: string;
- /**
- * @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
- */
- regex?: string;
- };
- "resources/apps/models/apps_tier.yml": {
- /**
- * The amount of included build time in seconds
- * Format: int64
- * @example 233
- */
- build_seconds?: string;
- /**
- * The amount of included outbound bandwidth in bytes
- * Format: int64
- * @example 123
- */
- egress_bandwidth_bytes?: string;
- /**
- * A human-readable name of the tier
- * @example test
- */
- name?: string;
- /**
- * The slug of the tier
- * @example test
- */
- slug?: string;
- /**
- * The allotted disk space in bytes
- * Format: int64
- * @example 10000000
- */
- storage_bytes?: string;
- };
- "resources/apps/models/apps_update_app_request.yml": {
- spec: external["resources/apps/models/app_spec.yml"];
- };
- "resources/apps/models/instance_size_cpu_type.yml": "UNSPECIFIED" | "SHARED" | "DEDICATED";
- "resources/apps/parameters.yml": {
- accept?: "application/json" | "application/yaml";
- "content-type"?: "application/json" | "application/yaml";
- app_id: string;
- deployment_id: string;
- app_name?: string;
- id_app: string;
- slug_size: string;
- component: string;
- live_updates?: boolean;
- with_projects?: boolean;
- log_type: "UNSPECIFIED" | "BUILD" | "DEPLOY" | "RUN";
- time_wait?: string;
- slug_tier: string;
- alert_id: string;
- };
- "resources/apps/responses/all_tiers.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_list_tiers_response.yml"];
- };
- };
- "resources/apps/responses/apps_get.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/app_response.yml"];
- };
- };
- "resources/apps/responses/apps_validate_rollback.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- /** @description Indicates whether the app can be rolled back to the specified deployment. */
- valid?: boolean;
- error?: external["resources/apps/models/app_rollback_validation_condition.yml"];
- /** @description Contains a list of warnings that may cause the rollback to run under unideal circumstances. */
- warnings?: external["resources/apps/models/app_rollback_validation_condition.yml"][];
- };
- };
- };
- "resources/apps/responses/assign_alert_destinations.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_alert_response.yml"];
- };
- };
- "resources/apps/responses/cancel_deployment.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_deployment_response.yml"];
- };
- };
- "resources/apps/responses/delete_app.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_delete_app_response.yml"];
- };
- };
- "resources/apps/responses/examples.yml": unknown
- "resources/apps/responses/existing_deployments.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_deployments_response.yml"];
- };
- };
- "resources/apps/responses/get_instance.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_get_instance_size_response.yml"];
- };
- };
- "resources/apps/responses/get_metrics_bandwidth_usage.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/app_metrics_bandwidth_usage.yml"];
- };
- };
- "resources/apps/responses/get_tier.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_get_tier_response.yml"];
- };
- };
- "resources/apps/responses/list_alerts.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_list_alerts_response.yml"];
- };
- };
- "resources/apps/responses/list_apps.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_response.yml"];
- };
- };
- "resources/apps/responses/list_deployment.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_deployment_response.yml"];
- };
- };
- "resources/apps/responses/list_instance.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_list_instance_sizes_response.yml"];
- };
- };
- "resources/apps/responses/list_logs.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_get_logs_response.yml"];
- };
- };
- "resources/apps/responses/list_metrics_bandwidth_usage.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/app_metrics_bandwidth_usage.yml"];
- };
- };
- "resources/apps/responses/list_regions.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_list_regions_response.yml"];
- };
- };
- "resources/apps/responses/new_app_deployment.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/apps_deployment_response.yml"];
- };
- };
- "resources/apps/responses/new_app.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/app_response.yml"];
- };
- };
- "resources/apps/responses/propose_app.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/app_propose_response.yml"];
- };
- };
- "resources/apps/responses/update_app.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/apps/models/app_response.yml"];
- };
- };
- /**
- * Get Customer Balance
- * @description To retrieve the balances on a customer's account, send a GET request to `/v2/customers/my/balance`.
- */
- "resources/billing/balance_get.yml": {
- responses: {
- 200: external["resources/billing/responses/balance.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * List Billing History
- * @description To retrieve a list of all billing history entries, send a GET request to `/v2/customers/my/billing_history`.
- */
- "resources/billing/billingHistory_list.yml": {
- responses: {
- 200: external["resources/billing/responses/billing_history.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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`.
- */
- "resources/billing/invoices_get_byUUID.yml": {
- parameters: {
- path: {
- invoice_uuid: external["resources/billing/parameters.yml"]["invoice_uuid"];
- };
- };
- responses: {
- 200: external["resources/billing/responses/invoice.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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`.
- */
- "resources/billing/invoices_get_csvByUUID.yml": {
- parameters: {
- path: {
- invoice_uuid: external["resources/billing/parameters.yml"]["invoice_uuid"];
- };
- };
- responses: {
- 200: external["resources/billing/responses/invoice_csv.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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`.
- */
- "resources/billing/invoices_get_pdfByUUID.yml": {
- parameters: {
- path: {
- invoice_uuid: external["resources/billing/parameters.yml"]["invoice_uuid"];
- };
- };
- responses: {
- 200: external["resources/billing/responses/invoice_pdf.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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`.
- */
- "resources/billing/invoices_get_summaryByUUID.yml": {
- parameters: {
- path: {
- invoice_uuid: external["resources/billing/parameters.yml"]["invoice_uuid"];
- };
- };
- responses: {
- 200: external["resources/billing/responses/invoice_summary.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * List All Invoices
- * @description To retrieve a list of all invoices, send a GET request to `/v2/customers/my/invoices`.
- */
- "resources/billing/invoices_list.yml": {
- parameters: {
- query?: {
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- };
- };
- responses: {
- 200: external["resources/billing/responses/invoices.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- "resources/billing/models/balance.yml": {
- /**
- * @description Balance as of the `generated_at` time. This value includes the `account_balance` and `month_to_date_usage`.
- * @example 23.44
- */
- month_to_date_balance?: string;
- /**
- * @description Current balance of the customer's most recent billing activity. Does not reflect `month_to_date_usage`.
- * @example 12.23
- */
- account_balance?: string;
- /**
- * @description Amount used in the current billing period as of the `generated_at` time.
- * @example 11.21
- */
- month_to_date_usage?: string;
- /**
- * Format: date-time
- * @description The time at which balances were most recently generated.
- * @example "2019-07-09T15:01:12.000Z"
- */
- generated_at?: string;
- };
- "resources/billing/models/billing_address.yml": {
- /**
- * @description Street address line 1
- * @example 101 Shark Row
- */
- address_line1?: string;
- /**
- * @description Street address line 2
- * @example
- */
- address_line2?: string;
- /**
- * @description City
- * @example Atlantis
- */
- city?: string;
- /**
- * @description Region
- * @example OC
- */
- region?: string;
- /**
- * @description Postal code
- * @example 12345
- */
- postal_code?: string;
- /**
- * @description Country (ISO2) code
- * @example US
- */
- country_iso2_code?: string;
- /**
- * @description Timestamp billing address was created
- * @example "2019-09-03T16:34:46.000Z"
- */
- created_at?: string;
- /**
- * @description Timestamp billing address was updated
- * @example "2019-09-03T16:34:46.000Z"
- */
- updated_at?: string;
- };
- "resources/billing/models/billing_history.yml": {
- /**
- * @description Description of the billing history entry.
- * @example Invoice for May 2018
- */
- description?: string;
- /**
- * @description Amount of the billing history entry.
- * @example 12.34
- */
- amount?: string;
- /**
- * @description ID of the invoice associated with the billing history entry, if applicable.
- * @example 123
- */
- invoice_id?: string;
- /**
- * @description UUID of the invoice associated with the billing history entry, if applicable.
- * @example example-uuid
- */
- invoice_uuid?: string;
- /**
- * Format: date-time
- * @description Time the billing history entry occurred.
- * @example "2018-06-01T08:44:38.000Z"
- */
- date?: string;
- /**
- * @description Type of billing history entry.
- * @example Invoice
- * @enum {string}
- */
- type?: "ACHFailure" | "Adjustment" | "AttemptFailed" | "Chargeback" | "Credit" | "CreditExpiration" | "Invoice" | "Payment" | "Refund" | "Reversal";
- };
- "resources/billing/models/invoice_item.yml": {
- /**
- * @description Name of the product being billed in the invoice item.
- * @example Kubernetes Clusters
- */
- product?: string;
- /**
- * @description UUID of the resource billing in the invoice item if available.
- * @example 711157cb-37c8-4817-b371-44fa3504a39c
- */
- resource_uuid?: string;
- /**
- * @description ID of the resource billing in the invoice item if available.
- * @example 2353624
- */
- resource_id?: string;
- /**
- * @description Description of the invoice item when it is a grouped set of usage, such as DOKS or databases.
- * @example my-doks-cluster
- */
- group_description?: string;
- /**
- * @description Description of the invoice item.
- * @example a56e086a317d8410c8b4cfd1f4dc9f82
- */
- description?: string;
- /**
- * @description Billed amount of this invoice item. Billed in USD.
- * @example 12.34
- */
- amount?: string;
- /**
- * @description Duration of time this invoice item was used and subsequently billed.
- * @example 744
- */
- duration?: string;
- /**
- * @description Unit of time for duration.
- * @example Hours
- */
- duration_unit?: string;
- /**
- * @description Time the invoice item began to be billed for usage.
- * @example "2020-01-01T00:00:00.000Z"
- */
- start_time?: string;
- /**
- * @description Time the invoice item stopped being billed for usage.
- * @example "2020-02-01T00:00:00.000Z"
- */
- end_time?: string;
- /**
- * @description Name of the DigitalOcean Project this resource belongs to.
- * @example web
- */
- project_name?: string;
- };
- "resources/billing/models/invoice_preview.yml": {
- /**
- * @description The UUID of the invoice. The canonical reference for the invoice.
- * @example fdabb512-6faf-443c-ba2e-665452332a9e
- */
- invoice_uuid?: string;
- /**
- * @description Total amount of the invoice, in USD. This will reflect month-to-date usage in the invoice preview.
- * @example 23.45
- */
- amount?: string;
- /**
- * @description Billing period of usage for which the invoice is issued, in `YYYY-MM` format.
- * @example 2020-01
- */
- invoice_period?: string;
- /**
- * @description Time the invoice was last updated. This is only included with the invoice preview.
- * @example "2020-01-23T06:31:50.000Z"
- */
- updated_at?: string;
- };
- "resources/billing/models/invoice_summary.yml": {
- /**
- * @description UUID of the invoice
- * @example 22737513-0ea7-4206-8ceb-98a575af7681
- */
- invoice_uuid?: string;
- /**
- * @description Billing period of usage for which the invoice is issued, in `YYYY-MM` format.
- * @example 2020-01
- */
- billing_period?: string;
- /**
- * @description Total amount of the invoice, in USD. This will reflect month-to-date usage in the invoice preview.
- * @example 27.13
- */
- amount?: string;
- /**
- * @description Name of the DigitalOcean customer being invoiced.
- * @example Sammy Shark
- */
- user_name?: string;
- user_billing_address?: external["resources/billing/models/billing_address.yml"];
- /**
- * @description Company of the DigitalOcean customer being invoiced, if set.
- * @example DigitalOcean
- */
- user_company?: string;
- /**
- * @description Email of the DigitalOcean customer being invoiced.
- * @example sammy@digitalocean.com
- */
- user_email?: string;
- product_charges?: external["resources/billing/models/product_usage_charges.yml"];
- overages?: external["resources/billing/models/simple_charge.yml"];
- taxes?: external["resources/billing/models/simple_charge.yml"];
- credits_and_adjustments?: external["resources/billing/models/simple_charge.yml"];
- };
- "resources/billing/models/product_charge_item.yml": {
- /**
- * @description Amount of the charge
- * @example 10.00
- */
- amount?: string;
- /**
- * @description Description of the charge
- * @example Spaces Subscription
- */
- name?: string;
- /**
- * @description Number of times the charge was applied
- * @example 1
- */
- count?: string;
- };
- "resources/billing/models/product_usage_charges.yml": {
- /**
- * @description Description of usage charges
- * @example Product usage charges
- */
- name?: string;
- /**
- * @description Total amount charged
- * @example 12.34
- */
- amount?: string;
- /**
- * @description List of amount, and grouped aggregates by resource type.
- * @example [
- * {
- * "amount": "10.00",
- * "name": "Spaces Subscription",
- * "count": "1"
- * },
- * {
- * "amount": "2.34",
- * "name": "Database Clusters",
- * "count": "1"
- * }
- * ]
- */
- items?: external["resources/billing/models/product_charge_item.yml"][];
- };
- "resources/billing/models/simple_charge.yml": {
- /**
- * @description Name of the charge
- * @example Overages
- */
- name?: string;
- /**
- * @description Total amount charged in USD
- * @example 3.45
- */
- amount?: string;
- };
- "resources/billing/parameters.yml": {
- invoice_uuid: string;
- };
- "resources/billing/responses/balance.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/billing/models/balance.yml"];
- };
- };
- "resources/billing/responses/billing_history.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- billing_history?: external["resources/billing/models/billing_history.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta_optional_total.yml"];
- };
- };
- "resources/billing/responses/invoice_csv.yml": {
- headers: {
- "content-disposition": external["shared/headers.yml"]["content-disposition"];
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "text/csv": string;
- };
- };
- "resources/billing/responses/invoice_pdf.yml": {
- headers: {
- "content-disposition": external["shared/headers.yml"]["content-disposition"];
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/pdf": string;
- };
- };
- "resources/billing/responses/invoice_summary.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/billing/models/invoice_summary.yml"];
- };
- };
- "resources/billing/responses/invoice.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- invoice_items?: external["resources/billing/models/invoice_item.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- "resources/billing/responses/invoices.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- invoices?: external["resources/billing/models/invoice_preview.yml"][];
- invoice_preview?: external["resources/billing/models/invoice_preview.yml"];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- /**
- * 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.
- */
- "resources/cdn/cdn_create_endpoint.yml": {
- requestBody: {
- content: {
- "application/json": external["resources/cdn/models/cdn_endpoint.yml"];
- };
- };
- responses: {
- 201: external["resources/cdn/responses/existing_endpoint.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/cdn/cdn_delete_endpoint.yml": {
- parameters: {
- path: {
- cdn_id: external["resources/cdn/parameters.yml"]["cdn_endpoint_id"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Retrieve an Existing CDN Endpoint
- * @description To show information about an existing CDN endpoint, send a GET request to `/v2/cdn/endpoints/$ENDPOINT_ID`.
- */
- "resources/cdn/cdn_get_endpoint.yml": {
- parameters: {
- path: {
- cdn_id: external["resources/cdn/parameters.yml"]["cdn_endpoint_id"];
- };
- };
- responses: {
- 200: external["resources/cdn/responses/existing_endpoint.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * List All CDN Endpoints
- * @description To list all of the CDN endpoints available on your account, send a GET request to `/v2/cdn/endpoints`.
- */
- "resources/cdn/cdn_list_endpoints.yml": {
- parameters: {
- query?: {
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- };
- };
- responses: {
- 200: external["resources/cdn/responses/all_cdn_endpoints.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/cdn/cdn_purge_cache.yml": {
- parameters: {
- path: {
- cdn_id: external["resources/cdn/parameters.yml"]["cdn_endpoint_id"];
- };
- };
- requestBody: {
- content: {
- "application/json": external["resources/cdn/models/purge_cache.yml"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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`.
- */
- "resources/cdn/cdn_update_endpoint.yml": {
- parameters: {
- path: {
- cdn_id: external["resources/cdn/parameters.yml"]["cdn_endpoint_id"];
- };
- };
- requestBody: {
- content: {
- "application/json": external["resources/cdn/models/update_endpoint.yml"];
- };
- };
- responses: {
- 200: external["resources/cdn/responses/existing_endpoint.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- "resources/cdn/models/cdn_endpoint.yml": {
- /**
- * Format: uuid
- * @description A unique ID that can be used to identify and reference a CDN endpoint.
- * @example 892071a0-bb95-49bc-8021-3afd67a210bf
- */
- id?: string;
- /**
- * Format: hostname
- * @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.
- * @example static-images.nyc3.digitaloceanspaces.com
- */
- origin: string;
- /**
- * Format: hostname
- * @description The fully qualified domain name (FQDN) from which the CDN-backed content is served.
- * @example static-images.nyc3.cdn.digitaloceanspaces.com
- */
- endpoint?: string;
- /**
- * @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.
- * @default 3600
- * @example 3600
- * @enum {integer}
- */
- ttl?: 60 | 600 | 3600 | 86400 | 604800;
- /**
- * Format: uuid
- * @description The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.
- * @example 892071a0-bb95-49bc-8021-3afd67a210bf
- */
- certificate_id?: string;
- /**
- * Format: hostname
- * @description The fully qualified domain name (FQDN) of the custom subdomain used with the CDN endpoint.
- * @example static.example.com
- */
- custom_domain?: string;
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format that represents when the CDN endpoint was created.
- * @example 2018-03-21T16:02:37Z
- */
- created_at?: string;
- };
- "resources/cdn/models/purge_cache.yml": {
- /**
- * @description An array of strings containing the path to the content to be purged from the CDN cache.
- * @example [
- * "path/to/image.png",
- * "path/to/css/*"
- * ]
- */
- files: string[];
- };
- "resources/cdn/models/update_endpoint.yml": {
- /**
- * @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.
- * @default 3600
- * @example 3600
- * @enum {integer}
- */
- ttl?: 60 | 600 | 3600 | 86400 | 604800;
- /**
- * Format: uuid
- * @description The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.
- * @example 892071a0-bb95-49bc-8021-3afd67a210bf
- */
- certificate_id?: string;
- /**
- * Format: hostname
- * @description The fully qualified domain name (FQDN) of the custom subdomain used with the CDN endpoint.
- * @example static.example.com
- */
- custom_domain?: string;
- };
- "resources/cdn/parameters.yml": {
- cdn_endpoint_id: string;
- };
- "resources/cdn/responses/all_cdn_endpoints.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- endpoints?: external["resources/cdn/models/cdn_endpoint.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- "resources/cdn/responses/existing_endpoint.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- endpoint?: external["resources/cdn/models/cdn_endpoint.yml"];
- };
- };
- };
- /**
- * 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`.
- */
- "resources/certificates/certificates_create.yml": {
- requestBody: {
- content: {
- "application/json": external["resources/certificates/models/certificate_create.yml"]["certificate_request_lets_encrypt"] | external["resources/certificates/models/certificate_create.yml"]["certificate_request_custom"];
- };
- };
- responses: {
- 201: external["resources/certificates/responses/new_certificate.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Delete a Certificate
- * @description To delete a specific certificate, send a DELETE request to
- * `/v2/certificates/$CERTIFICATE_ID`.
- */
- "resources/certificates/certificates_delete.yml": {
- parameters: {
- path: {
- certificate_id: external["resources/certificates/parameters.yml"]["certificate_id"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Retrieve an Existing Certificate
- * @description To show information about an existing certificate, send a GET request to `/v2/certificates/$CERTIFICATE_ID`.
- */
- "resources/certificates/certificates_get.yml": {
- parameters: {
- path: {
- certificate_id: external["resources/certificates/parameters.yml"]["certificate_id"];
- };
- };
- responses: {
- 200: external["resources/certificates/responses/existing_certificate.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * List All Certificates
- * @description To list all of the certificates available on your account, send a GET request to `/v2/certificates`.
- */
- "resources/certificates/certificates_list.yml": {
- parameters: {
- query?: {
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- };
- };
- responses: {
- 200: external["resources/certificates/responses/all_certificates.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- "resources/certificates/models/certificate_create.yml": {
- certificate_create_base: {
- /**
- * @description A unique human-readable name referring to a certificate.
- * @example web-cert-01
- */
- name: string;
- /**
- * @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.
- * @example lets_encrypt
- * @enum {string}
- */
- type?: "custom" | "lets_encrypt";
- };
- /** Custom Certificate Request */
- certificate_request_custom: external["resources/certificates/models/certificate_create.yml"]["certificate_create_base"] & {
- /**
- * @description The contents of a PEM-formatted private-key corresponding to the SSL certificate.
- * @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-----
- */
- private_key: string;
- /**
- * @description The contents of a PEM-formatted public SSL certificate.
- * @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-----
- */
- leaf_certificate: string;
- /**
- * @description The full PEM-formatted trust chain between the certificate authority's certificate and your domain's SSL certificate.
- * @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-----
- */
- certificate_chain?: string;
- };
- /** Let's Encrypt Certificate Request */
- certificate_request_lets_encrypt: external["resources/certificates/models/certificate_create.yml"]["certificate_create_base"] & {
- /**
- * @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`).
- * @example [
- * "www.example.com",
- * "example.com"
- * ]
- */
- dns_names: string[];
- };
- };
- "resources/certificates/models/certificate.yml": {
- /**
- * Format: uuid
- * @description A unique ID that can be used to identify and reference a certificate.
- * @example 892071a0-bb95-49bc-8021-3afd67a210bf
- */
- id?: string;
- /**
- * @description A unique human-readable name referring to a certificate.
- * @example web-cert-01
- */
- name?: string;
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format that represents the certificate's expiration date.
- * @example "2017-02-22T00:23:00.000Z"
- */
- not_after?: string;
- /**
- * @description A unique identifier generated from the SHA-1 fingerprint of the certificate.
- * @example dfcc9f57d86bf58e321c2c6c31c7a971be244ac7
- */
- sha1_fingerprint?: string;
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format that represents when the certificate was created.
- * @example "2017-02-08T16:02:37.000Z"
- */
- created_at?: string;
- /**
- * @description An array of fully qualified domain names (FQDNs) for which the certificate was issued.
- * @example [
- * "www.example.com",
- * "example.com"
- * ]
- */
- dns_names?: string[];
- /**
- * @description A string representing the current state of the certificate. It may be `pending`, `verified`, or `error`.
- * @example verified
- * @enum {string}
- */
- state?: "pending" | "verified" | "error";
- /**
- * @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.
- * @example lets_encrypt
- * @enum {string}
- */
- type?: "custom" | "lets_encrypt";
- };
- "resources/certificates/parameters.yml": {
- certificate_id: string;
- };
- "resources/certificates/responses/all_certificates.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- certificates?: external["resources/certificates/models/certificate.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- "resources/certificates/responses/examples.yml": unknown
- "resources/certificates/responses/existing_certificate.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- certificate?: external["resources/certificates/models/certificate.yml"];
- };
+ get: operations["sshKeys_list"];
+ put?: never;
+ /**
+ * 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.
+ */
+ post: operations["sshKeys_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/account/keys/{ssh_key_identifier}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["sshKeys_get"];
+ /**
+ * 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.
+ */
+ put: operations["sshKeys_update"];
+ post?: never;
+ /**
+ * 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.
+ */
+ delete: operations["sshKeys_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/actions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["actions_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/actions/{action_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing Action
+ * @description To retrieve a specific action object, send a GET request to `/v2/actions/$ACTION_ID`.
+ */
+ get: operations["actions_get"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["apps_list"];
+ put?: never;
+ /**
+ * 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/).
+ */
+ post: operations["apps_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["apps_get"];
+ /**
+ * 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/).
+ */
+ put: operations["apps_update"];
+ post?: never;
+ /**
+ * 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.
+ */
+ delete: operations["apps_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/components/{component_name}/logs": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["apps_get_logs_active_deployment"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/deployments": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List App Deployments
+ * @description List all deployments of an app.
+ */
+ get: operations["apps_list_deployments"];
+ put?: never;
+ /**
+ * 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.
+ */
+ post: operations["apps_create_deployment"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/deployments/{deployment_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an App Deployment
+ * @description Retrieve information about an app deployment.
+ */
+ get: operations["apps_get_deployment"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/deployments/{deployment_id}/cancel": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Cancel a Deployment
+ * @description Immediately cancel an in-progress deployment.
+ */
+ post: operations["apps_cancel_deployment"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/deployments/{deployment_id}/components/{component_name}/logs": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["apps_get_logs"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/deployments/{deployment_id}/logs": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["apps_get_logs_aggregate"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/logs": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["apps_get_logs_active_deployment_aggregate"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/tiers": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List App Tiers
+ * @description List all app tiers.
+ */
+ get: operations["apps_list_tiers"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/tiers/{slug}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an App Tier
+ * @description Retrieve information about a specific app tier.
+ */
+ get: operations["apps_get_tier"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/tiers/instance_sizes": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List Instance Sizes
+ * @description List all instance sizes for `service`, `worker`, and `job` components.
+ */
+ get: operations["apps_list_instanceSizes"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/tiers/instance_sizes/{slug}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Instance Size
+ * @description Retrieve information about a specific instance size for `service`, `worker`, and `job` components.
+ */
+ get: operations["apps_get_instanceSize"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/regions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List App Regions
+ * @description List all regions supported by App Platform.
+ */
+ get: operations["apps_list_regions"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/propose": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ */
+ post: operations["apps_validate_appSpec"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/alerts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["apps_list_alerts"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/alerts/{alert_id}/destinations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ */
+ post: operations["apps_assign_alertDestinations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/rollback": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["apps_create_rollback"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/rollback/validate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["apps_validate_rollback"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/rollback/commit": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Commit App Rollback
+ * @description Commit an app rollback. This action permanently applies the rollback and unpins the app to resume new deployments.
+ *
+ */
+ post: operations["apps_commit_rollback"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/rollback/revert": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["apps_revert_rollback"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/{app_id}/metrics/bandwidth_daily": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve App Daily Bandwidth Metrics
+ * @description Retrieve daily bandwidth usage metrics for a single app.
+ */
+ get: operations["apps_get_metrics_bandwidth_daily"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/apps/metrics/bandwidth_daily": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Retrieve Multiple Apps' Daily Bandwidth Metrics
+ * @description Retrieve daily bandwidth usage metrics for multiple apps.
+ */
+ post: operations["apps_list_metrics_bandwidth_daily"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/cdn/endpoints": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All CDN Endpoints
+ * @description To list all of the CDN endpoints available on your account, send a GET request to `/v2/cdn/endpoints`.
+ */
+ get: operations["cdn_list_endpoints"];
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["cdn_create_endpoint"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/cdn/endpoints/{cdn_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing CDN Endpoint
+ * @description To show information about an existing CDN endpoint, send a GET request to `/v2/cdn/endpoints/$ENDPOINT_ID`.
+ */
+ get: operations["cdn_get_endpoint"];
+ /**
+ * 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`.
+ *
+ */
+ put: operations["cdn_update_endpoints"];
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["cdn_delete_endpoint"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/cdn/endpoints/{cdn_id}/cache": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["cdn_purge_cache"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/certificates": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All Certificates
+ * @description To list all of the certificates available on your account, send a GET request to `/v2/certificates`.
+ */
+ get: operations["certificates_list"];
+ put?: never;
+ /**
+ * 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`.
+ *
+ */
+ post: operations["certificates_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/certificates/{certificate_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing Certificate
+ * @description To show information about an existing certificate, send a GET request to `/v2/certificates/$CERTIFICATE_ID`.
+ */
+ get: operations["certificates_get"];
+ put?: never;
+ post?: never;
+ /**
+ * Delete a Certificate
+ * @description To delete a specific certificate, send a DELETE request to
+ * `/v2/certificates/$CERTIFICATE_ID`.
+ *
+ */
+ delete: operations["certificates_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/customers/my/balance": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get Customer Balance
+ * @description To retrieve the balances on a customer's account, send a GET request to `/v2/customers/my/balance`.
+ */
+ get: operations["balance_get"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/customers/my/billing_history": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List Billing History
+ * @description To retrieve a list of all billing history entries, send a GET request to `/v2/customers/my/billing_history`.
+ */
+ get: operations["billingHistory_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/customers/my/invoices": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All Invoices
+ * @description To retrieve a list of all invoices, send a GET request to `/v2/customers/my/invoices`.
+ */
+ get: operations["invoices_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/customers/my/invoices/{invoice_uuid}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["invoices_get_byUUID"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/customers/my/invoices/{invoice_uuid}/csv": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["invoices_get_csvByUUID"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/customers/my/invoices/{invoice_uuid}/pdf": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["invoices_get_pdfByUUID"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/customers/my/invoices/{invoice_uuid}/summary": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["invoices_get_summaryByUUID"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/options": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["databases_list_options"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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:
+ * The embedded `maintenance_window` object will contain information about any scheduled maintenance for the database cluster.
+ */
+ get: operations["databases_list_clusters"];
+ put?: never;
+ /**
+ * 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.
+ * 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.
+ */
+ post: operations["databases_create_cluster"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ * The embedded maintenance_window object will contain information about any scheduled maintenance for the database cluster.
+ */
+ get: operations["databases_get_cluster"];
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ */
+ delete: operations["databases_destroy_cluster"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/config": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["databases_get_config"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /**
+ * 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`.
+ *
+ */
+ patch: operations["databases_patch_config"];
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/ca": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["databases_get_ca"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/online-migration": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["databases_get_migrationStatus"];
+ /**
+ * 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.
+ */
+ put: operations["databases_update_onlineMigration"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/online-migration/{migration_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["databases_delete_onlineMigration"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/migrate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /**
+ * 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.
+ *
+ */
+ put: operations["databases_update_region"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/resize": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /**
+ * 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.
+ */
+ put: operations["databases_update_clusterSize"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/firewall": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["databases_list_firewall_rules"];
+ /**
+ * 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://www.digitalocean.com/docs/networking/vpc/) to limit access to them instead of using a firewall.
+ * A successful
+ */
+ put: operations["databases_update_firewall_rules"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/maintenance": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /**
+ * 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.
+ */
+ put: operations["databases_update_maintenanceWindow"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/backups": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["databases_list_backups"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/replicas": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["databases_list_replicas"];
+ put?: never;
+ /**
+ * 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`.
+ */
+ post: operations["databases_create_replica"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/replicas/{replica_name}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["databases_get_replica"];
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ */
+ delete: operations["databases_destroy_replica"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/replicas/{replica_name}/promote": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /**
+ * 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.
+ */
+ put: operations["databases_promote_replica"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/users": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["databases_list_users"];
+ put?: never;
+ /**
+ * 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.
+ *
+ * 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.
+ *
+ */
+ post: operations["databases_add_user"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/users/{username}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["databases_get_user"];
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["databases_delete_user"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/users/{username}/reset_auth": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["databases_reset_auth"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/dbs": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["databases_list"];
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["databases_add"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/dbs/{database_name}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["databases_get"];
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["databases_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/pools": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["databases_list_connectionPools"];
+ put?: never;
+ /**
+ * 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://www.digitalocean.com/docs/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.
+ *
+ */
+ post: operations["databases_add_connectionPool"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/pools/{pool_name}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["databases_get_connectionPool"];
+ /**
+ * 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`.
+ */
+ put: operations["databases_update_connectionPool"];
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["databases_delete_connectionPool"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/eviction_policy": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["databases_get_evictionPolicy"];
+ /**
+ * 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.
+ */
+ put: operations["databases_update_evictionPolicy"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/sql_mode": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["databases_get_sql_mode"];
+ /**
+ * 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.
+ */
+ put: operations["databases_update_sql_mode"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/databases/{database_cluster_uuid}/upgrade": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /**
+ * 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.
+ */
+ put: operations["databases_update_major_version"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/domains": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All Domains
+ * @description To retrieve a list of all of the domains in your account, send a GET request to `/v2/domains`.
+ */
+ get: operations["domains_list"];
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["domains_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/domains/{domain_name}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing Domain
+ * @description To get details about a specific domain, send a GET request to `/v2/domains/$DOMAIN_NAME`.
+ */
+ get: operations["domains_get"];
+ put?: never;
+ post?: never;
+ /**
+ * Delete a Domain
+ * @description To delete a domain, send a DELETE request to `/v2/domains/$DOMAIN_NAME`.
+ *
+ */
+ delete: operations["domains_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/domains/{domain_name}/records": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ *
+ */
+ get: operations["domains_list_records"];
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["domains_create_record"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/domains/{domain_name}/records/{domain_record_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing Domain Record
+ * @description To retrieve a specific domain record, send a GET request to `/v2/domains/$DOMAIN_NAME/records/$RECORD_ID`.
+ */
+ get: operations["domains_get_record"];
+ /**
+ * 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.
+ *
+ */
+ put: operations["domains_update_record"];
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["domains_delete_record"];
+ options?: never;
+ head?: never;
+ /**
+ * 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.
+ *
+ */
+ patch: operations["domains_patch_record"];
+ trace?: never;
+ };
+ "/v2/droplets": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ */
+ get: operations["droplets_list"];
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["droplets_create"];
+ /**
+ * 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.
+ *
+ */
+ delete: operations["droplets_destroy_byTag"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/{droplet_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing Droplet
+ * @description To show information about an individual Droplet, send a GET request to
+ * `/v2/droplets/$DROPLET_ID`.
+ *
+ */
+ get: operations["droplets_get"];
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["droplets_destroy"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/{droplet_id}/backups": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["droplets_list_backups"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/{droplet_id}/snapshots": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["droplets_list_snapshots"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/{droplet_id}/actions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["dropletActions_list"];
+ put?: never;
+ /**
+ * 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 |
+ * | `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. |
+ * | `snapshot` | Takes a snapshot of a Droplet. |
+ *
+ */
+ post: operations["dropletActions_post"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/actions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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`
+ *
+ */
+ post: operations["dropletActions_post_byTag"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/{droplet_id}/actions/{action_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["dropletActions_get"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/{droplet_id}/kernels": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["droplets_list_kernels"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/{droplet_id}/firewalls": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["droplets_list_firewalls"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/{droplet_id}/neighbors": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["droplets_list_neighbors"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/{droplet_id}/destroy_with_associated_resources": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["droplets_list_associatedResources"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/{droplet_id}/destroy_with_associated_resources/selective": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["droplets_destroy_withAssociatedResourcesSelective"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/{droplet_id}/destroy_with_associated_resources/dangerous": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["droplets_destroy_withAssociatedResourcesDangerous"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/{droplet_id}/destroy_with_associated_resources/status": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["droplets_get_DestroyAssociatedResourcesStatus"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/droplets/{droplet_id}/destroy_with_associated_resources/retry": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["droplets_destroy_retryWithAssociatedResources"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/firewalls": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All Firewalls
+ * @description To list all of the firewalls available on your account, send a GET request to `/v2/firewalls`.
+ */
+ get: operations["firewalls_list"];
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["firewalls_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/firewalls/{firewall_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing Firewall
+ * @description To show information about an existing firewall, send a GET request to `/v2/firewalls/$FIREWALL_ID`.
+ */
+ get: operations["firewalls_get"];
+ /**
+ * 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.**
+ *
+ */
+ put: operations["firewalls_update"];
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["firewalls_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/firewalls/{firewall_id}/droplets": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["firewalls_assign_droplets"];
+ /**
+ * 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.
+ *
+ */
+ delete: operations["firewalls_delete_droplets"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/firewalls/{firewall_id}/tags": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["firewalls_add_tags"];
+ /**
+ * 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.
+ *
+ */
+ delete: operations["firewalls_delete_tags"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/firewalls/{firewall_id}/rules": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["firewalls_add_rules"];
+ /**
+ * 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.
+ *
+ */
+ delete: operations["firewalls_delete_rules"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/floating_ips": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All Floating IPs
+ * @description To list all of the floating IPs available on your account, send a GET request to `/v2/floating_ips`.
+ */
+ get: operations["floatingIPs_list"];
+ put?: never;
+ /**
+ * 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.
+ */
+ post: operations["floatingIPs_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/floating_ips/{floating_ip}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing Floating IP
+ * @description To show information about a floating IP, send a GET request to `/v2/floating_ips/$FLOATING_IP_ADDR`.
+ */
+ get: operations["floatingIPs_get"];
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["floatingIPs_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/floating_ips/{floating_ip}/actions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["floatingIPsAction_list"];
+ put?: never;
+ /**
+ * 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
+ *
+ */
+ post: operations["floatingIPsAction_post"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/floating_ips/{floating_ip}/actions/{action_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["floatingIPsAction_get"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/functions/namespaces": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["functions_list_namespaces"];
+ put?: never;
+ /**
+ * 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.
+ */
+ post: operations["functions_create_namespace"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/functions/namespaces/{namespace_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["functions_get_namespace"];
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ */
+ delete: operations["functions_delete_namespace"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/functions/namespaces/{namespace_id}/triggers": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["functions_list_triggers"];
+ put?: never;
+ /**
+ * 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.
+ */
+ post: operations["functions_create_trigger"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/functions/namespaces/{namespace_id}/triggers/{trigger_name}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["functions_get_trigger"];
+ /**
+ * 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.
+ */
+ put: operations["functions_update_trigger"];
+ post?: never;
+ /**
+ * 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.
+ */
+ delete: operations["functions_delete_trigger"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/images": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ */
+ get: operations["images_list"];
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["images_create_custom"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/images/{image_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing Image
+ * @description To retrieve information about an image, send a `GET` request to
+ * `/v2/images/$IDENTIFIER`.
+ *
+ */
+ get: operations["images_get"];
+ /**
+ * 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.
+ *
+ */
+ put: operations["images_update"];
+ post?: never;
+ /**
+ * Delete an Image
+ * @description To delete a snapshot or custom image, send a `DELETE` request to `/v2/images/$IMAGE_ID`.
+ *
+ */
+ delete: operations["images_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/images/{image_id}/actions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["imageActions_list"];
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["imageActions_post"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/images/{image_id}/actions/{action_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["imageActions_get"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All Kubernetes Clusters
+ * @description To list all of the Kubernetes clusters on your account, send a GET request
+ * to `/v2/kubernetes/clusters`.
+ *
+ */
+ get: operations["kubernetes_list_clusters"];
+ put?: never;
+ /**
+ * 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://www.digitalocean.com/docs/kubernetes/how-to/upgrade-cluster/)
+ * for details.
+ *
+ */
+ post: operations["kubernetes_create_cluster"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ */
+ get: operations["kubernetes_get_cluster"];
+ /**
+ * 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.
+ *
+ */
+ put: operations["kubernetes_update_cluster"];
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["kubernetes_delete_cluster"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}/destroy_with_associated_resources": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["kubernetes_list_associatedResources"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}/destroy_with_associated_resources/selective": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["kubernetes_destroy_associatedResourcesSelective"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}/destroy_with_associated_resources/dangerous": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["kubernetes_destroy_associatedResourcesDangerous"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}/kubeconfig": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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 with kubectl](https://www.digitalocean.com/docs/kubernetes/how-to/connect-with-kubectl/)".
+ *
+ * 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.
+ *
+ */
+ get: operations["kubernetes_get_kubeconfig"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}/credentials": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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 with kubectl](https://www.digitalocean.com/docs/kubernetes/how-to/connect-with-kubectl/)".
+ *
+ * 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.
+ *
+ */
+ get: operations["kubernetes_get_credentials"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}/upgrades": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ */
+ get: operations["kubernetes_get_availableUpgrades"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}/upgrade": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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`.
+ *
+ */
+ post: operations["kubernetes_upgrade_cluster"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}/node_pools": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ */
+ get: operations["kubernetes_list_nodePools"];
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["kubernetes_add_nodePool"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}/node_pools/{node_pool_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ */
+ get: operations["kubernetes_get_nodePool"];
+ /**
+ * 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.
+ *
+ */
+ put: operations["kubernetes_update_nodePool"];
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["kubernetes_delete_nodePool"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}/node_pools/{node_pool_id}/nodes/{node_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["kubernetes_delete_node"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}/node_pools/{node_pool_id}/recycle": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Recycle a Kubernetes Node Pool
+ * @deprecated
+ * @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.
+ *
+ */
+ post: operations["kubernetes_recycle_node_pool"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}/user": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ */
+ get: operations["kubernetes_get_clusterUser"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/options": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["kubernetes_list_options"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/clusters/{cluster_id}/clusterlint": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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).
+ *
+ */
+ get: operations["kubernetes_get_clusterLintResults"];
+ put?: never;
+ /**
+ * 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).
+ *
+ */
+ post: operations["kubernetes_run_clusterLint"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/kubernetes/registry": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Add Container Registry to Kubernetes Clusters
+ * @description To integrate the container registry with Kubernetes clusters, send a POST request to `/v2/kubernetes/registry`.
+ */
+ post: operations["kubernetes_add_registry"];
+ /**
+ * Remove Container Registry from Kubernetes Clusters
+ * @description To remove the container registry from Kubernetes clusters, send a DELETE request to `/v2/kubernetes/registry`.
+ */
+ delete: operations["kubernetes_remove_registry"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/load_balancers": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All Load Balancers
+ * @description To list all of the load balancer instances on your account, send a GET request
+ * to `/v2/load_balancers`.
+ *
+ */
+ get: operations["loadBalancers_list"];
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["loadBalancers_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/load_balancers/{lb_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ */
+ get: operations["loadBalancers_get"];
+ /**
+ * 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.**
+ *
+ */
+ put: operations["loadBalancers_update"];
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["loadBalancers_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/load_balancers/{lb_id}/droplets": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["loadBalancers_add_droplets"];
+ /**
+ * 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.
+ *
+ */
+ delete: operations["loadBalancers_remove_droplets"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/load_balancers/{lb_id}/forwarding_rules": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["loadBalancers_add_forwardingRules"];
+ /**
+ * 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.
+ *
+ */
+ delete: operations["loadBalancers_remove_forwardingRules"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/monitoring/alerts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["monitoring_list_alertPolicy"];
+ put?: never;
+ /**
+ * Create Alert Policy
+ * @description To create a new alert, send a POST request to `/v2/monitoring/alerts`.
+ */
+ post: operations["monitoring_create_alertPolicy"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/monitoring/alerts/{alert_uuid}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing Alert Policy
+ * @description To retrieve a given alert policy, send a GET request to `/v2/monitoring/alerts/{alert_uuid}`
+ */
+ get: operations["monitoring_get_alertPolicy"];
+ /**
+ * Update an Alert Policy
+ * @description To update en existing policy, send a PUT request to `v2/monitoring/alerts/{alert_uuid}`.
+ */
+ put: operations["monitoring_update_alertPolicy"];
+ post?: never;
+ /**
+ * Delete an Alert Policy
+ * @description To delete an alert policy, send a DELETE request to `/v2/monitoring/alerts/{alert_uuid}`
+ */
+ delete: operations["monitoring_delete_alertPolicy"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/monitoring/metrics/droplet/bandwidth": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["monitoring_get_dropletBandwidthMetrics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/monitoring/metrics/droplet/cpu": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get Droplet CPU Metrics
+ * @description To retrieve CPU metrics for a given droplet, send a GET request to `/v2/monitoring/metrics/droplet/cpu`.
+ */
+ get: operations["monitoring_get_DropletCpuMetrics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/monitoring/metrics/droplet/filesystem_free": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["monitoring_get_dropletFilesystemFreeMetrics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/monitoring/metrics/droplet/filesystem_size": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["monitoring_get_dropletFilesystemSizeMetrics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/monitoring/metrics/droplet/load_1": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["monitoring_get_dropletLoad1Metrics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/monitoring/metrics/droplet/load_5": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["monitoring_get_dropletLoad5Metrics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/monitoring/metrics/droplet/load_15": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["monitoring_get_dropletLoad15Metrics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/monitoring/metrics/droplet/memory_cached": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["monitoring_get_dropletMemoryCachedMetrics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/monitoring/metrics/droplet/memory_free": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["monitoring_get_dropletMemoryFreeMetrics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/monitoring/metrics/droplet/memory_total": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["monitoring_get_dropletMemoryTotalMetrics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/monitoring/metrics/droplet/memory_available": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["monitoring_get_dropletMemoryAvailableMetrics"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/projects": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All Projects
+ * @description To list all your projects, send a GET request to `/v2/projects`.
+ */
+ get: operations["projects_list"];
+ put?: never;
+ /**
+ * Create a Project
+ * @description To create a project, send a POST request to `/v2/projects`.
+ */
+ post: operations["projects_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/projects/default": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve the Default Project
+ * @description To get your default project, send a GET request to `/v2/projects/default`.
+ */
+ get: operations["projects_get_default"];
+ /**
+ * 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.
+ */
+ put: operations["projects_update_default"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ /**
+ * 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.
+ */
+ patch: operations["projects_patch_default"];
+ trace?: never;
+ };
+ "/v2/projects/{project_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing Project
+ * @description To get a project, send a GET request to `/v2/projects/$PROJECT_ID`.
+ */
+ get: operations["projects_get"];
+ /**
+ * 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.
+ */
+ put: operations["projects_update"];
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["projects_delete"];
+ options?: never;
+ head?: never;
+ /**
+ * 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.
+ */
+ patch: operations["projects_patch"];
+ trace?: never;
+ };
+ "/v2/projects/{project_id}/resources": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List Project Resources
+ * @description To list all your resources in a project, send a GET request to `/v2/projects/$PROJECT_ID/resources`.
+ */
+ get: operations["projects_list_resources"];
+ put?: never;
+ /**
+ * Assign Resources to a Project
+ * @description To assign resources to a project, send a POST request to `/v2/projects/$PROJECT_ID/resources`.
+ */
+ post: operations["projects_assign_resources"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/projects/default/resources": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List Default Project Resources
+ * @description To list all your resources in your default project, send a GET request to `/v2/projects/default/resources`.
+ */
+ get: operations["projects_list_resources_default"];
+ put?: never;
+ /**
+ * Assign Resources to Default Project
+ * @description To assign resources to your default project, send a POST request to `/v2/projects/default/resources`.
+ */
+ post: operations["projects_assign_resources_default"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/regions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["regions_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Get Container Registry Information
+ * @description To get information about your container registry, send a GET request to `/v2/registry`.
+ */
+ get: operations["registry_get"];
+ put?: never;
+ /**
+ * 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`.
+ *
+ */
+ post: operations["registry_create"];
+ /**
+ * Delete Container Registry
+ * @description To delete your container registry, destroying all container image data stored in it, send a DELETE request to `/v2/registry`.
+ */
+ delete: operations["registry_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry/subscription": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["registry_get_subscription"];
+ put?: never;
+ /**
+ * 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`.
+ */
+ post: operations["registry_update_subscription"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry/docker-credentials": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["registry_get_dockerCredentials"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry/validate-name": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["registry_validate_name"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry/{registry_name}/repositories": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All Container Registry Repositories
+ * @deprecated
+ * @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`.
+ *
+ */
+ get: operations["registry_list_repositories"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry/{registry_name}/repositoriesV2": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["registry_list_repositoriesV2"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry/{registry_name}/repositories/{repository_name}/tags": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ */
+ get: operations["registry_list_repositoryTags"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry/{registry_name}/repositories/{repository_name}/tags/{repository_tag}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["registry_delete_repositoryTag"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry/{registry_name}/repositories/{repository_name}/digests": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ */
+ get: operations["registry_list_repositoryManifests"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry/{registry_name}/repositories/{repository_name}/digests/{manifest_digest}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["registry_delete_repositoryManifest"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry/{registry_name}/garbage-collection": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["registry_get_garbageCollection"];
+ put?: never;
+ /**
+ * 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://www.digitalocean.com/docs/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.
+ *
+ */
+ post: operations["registry_run_garbageCollection"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry/{registry_name}/garbage-collections": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["registry_list_garbageCollections"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry/{registry_name}/garbage-collection/{garbage_collection_uuid}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /**
+ * 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.
+ */
+ put: operations["registry_update_garbageCollection"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/registry/options": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["registry_get_options"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/reports/droplet_neighbors_ids": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["droplets_list_neighborsIds"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/reserved_ips": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All Reserved IPs
+ * @description To list all of the reserved IPs available on your account, send a GET request to `/v2/reserved_ips`.
+ */
+ get: operations["reservedIPs_list"];
+ put?: never;
+ /**
+ * 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.
+ */
+ post: operations["reservedIPs_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/reserved_ips/{reserved_ip}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing Reserved IP
+ * @description To show information about a reserved IP, send a GET request to `/v2/reserved_ips/$RESERVED_IP_ADDR`.
+ */
+ get: operations["reservedIPs_get"];
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["reservedIPs_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/reserved_ips/{reserved_ip}/actions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["reservedIPsActions_list"];
+ put?: never;
+ /**
+ * 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
+ *
+ */
+ post: operations["reservedIPsActions_post"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/reserved_ips/{reserved_ip}/actions/{action_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["reservedIPsActions_get"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/sizes": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ */
+ get: operations["sizes_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/snapshots": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ */
+ get: operations["snapshots_list"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/snapshots/{snapshot_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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.
+ *
+ */
+ get: operations["snapshots_get"];
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["snapshots_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/tags": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All Tags
+ * @description To list all of your tags, you can send a GET request to `/v2/tags`.
+ */
+ get: operations["tags_list"];
+ put?: never;
+ /**
+ * Create a New Tag
+ * @description To create a tag you can send a POST request to `/v2/tags` with a `name` attribute.
+ */
+ post: operations["tags_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/tags/{tag_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve a Tag
+ * @description To retrieve an individual tag, you can send a `GET` request to `/v2/tags/$TAG_NAME`.
+ */
+ get: operations["tags_get"];
+ put?: never;
+ post?: never;
+ /**
+ * 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
+ */
+ delete: operations["tags_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/tags/{tag_id}/resources": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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.
+ */
+ post: operations["tags_assign_resources"];
+ /**
+ * 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.
+ */
+ delete: operations["tags_unassign_resources"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/volumes": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ *
+ *
+ */
+ get: operations["volumes_list"];
+ put?: never;
+ /**
+ * 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.
+ */
+ post: operations["volumes_create"];
+ /**
+ * 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.
+ *
+ *
+ */
+ delete: operations["volumes_delete_byName"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/volumes/actions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 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 five
+ * 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://www.digitalocean.com/community/tutorials/how-to-partition-and-format-digitalocean-block-storage-volumes-in-linux#mounting-the-filesystems)
+ * 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 |
+ *
+ */
+ post: operations["volumeActions_post"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/volumes/snapshots/{snapshot_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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/$SNAPSHOT_ID`.
+ *
+ *
+ */
+ get: operations["volumeSnapshots_get_byId"];
+ put?: never;
+ post?: never;
+ /**
+ * Delete a Volume Snapshot
+ * @description To delete a volume 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.
+ *
+ */
+ delete: operations["volumeSnapshots_delete_byId"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/volumes/{volume_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing Block Storage Volume
+ * @description To show information about a block storage volume, send a GET request to `/v2/volumes/$VOLUME_ID`.
+ *
+ *
+ */
+ get: operations["volumes_get"];
+ put?: never;
+ post?: never;
+ /**
+ * 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.
+ *
+ *
+ */
+ delete: operations["volumes_delete"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/volumes/{volume_id}/actions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ *
+ */
+ get: operations["volumeActions_list"];
+ put?: never;
+ /**
+ * 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 seven
+ * 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://www.digitalocean.com/community/tutorials/how-to-partition-and-format-digitalocean-block-storage-volumes-in-linux#mounting-the-filesystems)
+ * 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.
+ *
+ */
+ post: operations["volumeActions_post_byId"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/volumes/{volume_id}/actions/{action_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ *
+ */
+ get: operations["volumeActions_get"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/volumes/{volume_id}/snapshots": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ *
+ */
+ get: operations["volumeSnapshots_list"];
+ put?: never;
+ /**
+ * Create Snapshot from a Volume
+ * @description To create a snapshot from a volume, sent a POST request to `/v2/volumes/$VOLUME_ID/snapshots`.
+ */
+ post: operations["volumeSnapshots_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/vpcs": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All VPCs
+ * @description To list all of the VPCs on your account, send a GET request to `/v2/vpcs`.
+ */
+ get: operations["vpcs_list"];
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["vpcs_create"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/vpcs/{vpc_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing VPC
+ * @description To show information about an existing VPC, send a GET request to `/v2/vpcs/$VPC_ID`.
+ */
+ get: operations["vpcs_get"];
+ /**
+ * Update a VPC
+ * @description To update information about a VPC, send a PUT request to `/v2/vpcs/$VPC_ID`.
+ *
+ */
+ put: operations["vpcs_update"];
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["vpcs_delete"];
+ options?: never;
+ head?: never;
+ /**
+ * Partially Update a VPC
+ * @description To update a subset of information about a VPC, send a PATCH request to
+ * `/v2/vpcs/$VPC_ID`.
+ *
+ */
+ patch: operations["vpcs_patch"];
+ trace?: never;
+ };
+ "/v2/vpcs/{vpc_id}/members": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ *
+ */
+ get: operations["vpcs_list_members"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/uptime/checks": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * List All Checks
+ * @description To list all of the Uptime checks on your account, send a GET request to `/v2/uptime/checks`.
+ */
+ get: operations["uptime_list_checks"];
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["uptime_create_check"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/uptime/checks/{check_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve an Existing Check
+ * @description To show information about an existing check, send a GET request to `/v2/uptime/checks/$CHECK_ID`.
+ */
+ get: operations["uptime_get_check"];
+ /**
+ * Update a Check
+ * @description To update the settings of an Uptime check, send a PUT request to `/v2/uptime/checks/$CHECK_ID`.
+ *
+ */
+ put: operations["uptime_update_check"];
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["uptime_delete_check"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/uptime/checks/{check_id}/state": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Retrieve Check State
+ * @description To show information about an existing check's state, send a GET request to `/v2/uptime/checks/$CHECK_ID/state`.
+ */
+ get: operations["uptime_get_checkState"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/uptime/checks/{check_id}/alerts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["uptime_list_alerts"];
+ put?: never;
+ /**
+ * 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.
+ *
+ */
+ post: operations["uptime_create_alert"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v2/uptime/checks/{check_id}/alerts/{alert_id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 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`.
+ */
+ get: operations["uptime_get_alert"];
+ /**
+ * 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`.
+ *
+ */
+ put: operations["uptime_update_alert"];
+ post?: never;
+ /**
+ * 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.
+ *
+ */
+ delete: operations["uptime_delete_alert"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+}
+export type webhooks = Record;
+export interface components {
+ schemas: {
+ error: {
+ /**
+ * @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."
+ * @example not_found
+ */
+ id: string;
+ /**
+ * @description A message providing additional information about the error, including details to help resolve it when possible.
+ * @example The resource you were accessing could not be found.
+ */
+ message: string;
+ /**
+ * @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.
+ * @example 4d9d8375-3c56-4925-a3e7-eb137fed17e9
+ */
+ request_id?: string;
+ };
+ oneClicks: {
+ /**
+ * slug
+ * @description The slug identifier for the 1-Click application.
+ * @example monitoring
+ */
+ slug: string;
+ /**
+ * type
+ * @description The type of the 1-Click application.
+ * @example kubernetes
+ */
+ type: string;
+ };
+ oneClicks_create: {
+ /**
+ * addon_slugs
+ * @description An array of 1-Click Application slugs to be installed to the Kubernetes cluster.
+ * @default []
+ * @example [
+ * "kube-state-metrics",
+ * "loki"
+ * ]
+ */
+ addon_slugs: string[];
+ /**
+ * cluster_uuid
+ * @description A unique ID for the Kubernetes cluster to which the 1-Click Applications will be installed.
+ * @example 50a994b6-c303-438f-9495-7e896cfe6b08
+ */
+ cluster_uuid: string;
+ };
+ account: {
+ /**
+ * @description The total number of Droplets current user or team may have active at one time.
+ * @example 25
+ */
+ droplet_limit: number;
+ /**
+ * @description The total number of Floating IPs the current user or team may have.
+ * @example 5
+ */
+ floating_ip_limit: number;
+ /**
+ * @description The email address used by the current user to register for DigitalOcean.
+ * @example sammy@digitalocean.com
+ */
+ email: string;
+ /**
+ * @description The display name for the current user.
+ * @example Sammy the Shark
+ */
+ name?: string;
+ /**
+ * @description The unique universal identifier for the current user.
+ * @example b6fr89dbf6d9156cace5f3c78dc9851d957381ef
+ */
+ uuid: string;
+ /**
+ * @description If true, the user has verified their account via email. False otherwise.
+ * @default false
+ * @example true
+ */
+ email_verified: boolean;
+ /**
+ * @description This value is one of "active", "warning" or "locked".
+ * @default active
+ * @example active
+ * @enum {string}
+ */
+ status: "active" | "warning" | "locked";
+ /**
+ * @description A human-readable message giving more details about the status of the account.
+ * @example
+ */
+ status_message: string;
+ /** @description When authorized in a team context, includes information about the current team. */
+ team?: {
+ /**
+ * @description The unique universal identifier for the current team.
+ * @example 5df3e3004a17e242b7c20ca6c9fc25b701a47ece
+ */
+ uuid?: string;
+ /**
+ * @description The name for the current team.
+ * @example My Team
+ */
+ name?: string;
+ };
+ };
+ /**
+ * @description A unique identification number for this key. Can be used to embed a specific SSH key into a Droplet.
+ * @example 512189
+ */
+ ssh_key_id: number;
+ /**
+ * @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.
+ * @example 3b:16:bf:e4:8b:00:8b:b8:59:8c:a9:d3:f0:19:45:fa
+ */
+ ssh_key_fingerprint: 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
+ */
+ ssh_key_name: string;
+ sshKeys: {
+ id?: components["schemas"]["ssh_key_id"];
+ fingerprint?: components["schemas"]["ssh_key_fingerprint"];
+ /**
+ * @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.
+ * @example ssh-rsa AEXAMPLEaC1yc2EAAAADAQABAAAAQQDDHr/jh2Jy4yALcK4JyWbVkPRaWmhck3IgCoeOO3z1e2dBowLh64QAM+Qb72pxekALga2oi4GvT+TlWNhzPH4V example
+ */
+ public_key: string;
+ name: components["schemas"]["ssh_key_name"];
+ };
+ link_to_last_page: {
+ /**
+ * @description URI of the last page of the results.
+ * @example https://api.digitalocean.com/v2/images?page=2
+ */
+ last?: string;
+ };
+ link_to_next_page: {
+ /**
+ * @description URI of the next page of the results.
+ * @example https://api.digitalocean.com/v2/images?page=2
+ */
+ next?: string;
+ };
+ forward_links: components["schemas"]["link_to_last_page"] & components["schemas"]["link_to_next_page"];
+ link_to_first_page: {
+ /**
+ * @description URI of the first page of the results.
+ * @example https://api.digitalocean.com/v2/images?page=1
+ */
+ first?: string;
+ };
+ link_to_prev_page: {
+ /**
+ * @description URI of the previous page of the results.
+ * @example https://api.digitalocean.com/v2/images?page=1
+ */
+ prev?: string;
+ };
+ backward_links: components["schemas"]["link_to_first_page"] & components["schemas"]["link_to_prev_page"];
+ page_links: {
+ /** @example {
+ * "pages": {
+ * "first": "https://api.digitalocean.com/v2/account/keys?page=1",
+ * "prev": "https://api.digitalocean.com/v2/account/keys?page=2"
+ * }
+ * } */
+ pages?: components["schemas"]["forward_links"] | components["schemas"]["backward_links"] | unknown;
+ };
+ pagination: {
+ links?: components["schemas"]["page_links"];
+ };
+ /** @description Information about the response itself. */
+ meta_properties: {
+ /**
+ * @description Number of objects returned by the request.
+ * @example 1
+ */
+ total?: number;
+ };
+ meta: {
+ meta: components["schemas"]["meta_properties"] & unknown;
+ };
+ region: {
+ /**
+ * @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
+ */
+ name: string;
+ /**
+ * @description A human-readable string that is used as a unique identifier for each region.
+ * @example nyc3
+ */
+ slug: 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"
+ * ]
+ */
+ features: unknown;
+ /**
+ * @description This is a boolean value that represents whether new Droplets can be created in this region.
+ * @example true
+ */
+ available: boolean;
+ /**
+ * @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"
+ * ]
+ */
+ sizes: unknown;
+ };
+ /**
+ * @description A human-readable string that is used as a unique identifier for each region.
+ * @example nyc3
+ */
+ slug: string;
+ action: {
+ /**
+ * @description A unique numeric ID that can be used to identify and reference an action.
+ * @example 36804636
+ */
+ id?: number;
+ /**
+ * @description The current status of the action. This can be "in-progress", "completed", or "errored".
+ * @default in-progress
+ * @example completed
+ * @enum {string}
+ */
+ status: "in-progress" | "completed" | "errored";
+ /**
+ * @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
+ */
+ 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
+ */
+ started_at?: string;
+ /**
+ * Format: date-time
+ * @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
+ */
+ completed_at?: string | null;
+ /**
+ * @description A unique identifier for the resource that the action is associated with.
+ * @example 3164444
+ */
+ resource_id?: number | null;
+ /**
+ * @description The type of resource that the action is associated with.
+ * @example droplet
+ */
+ resource_type?: string;
+ region?: components["schemas"]["region"];
+ region_slug?: components["schemas"]["slug"] & (string | null);
+ };
+ apps_deployment_job: {
+ /**
+ * The name of this job
+ * @example migrate-db
+ */
+ name?: string;
+ /**
+ * The commit hash of the repository that was used to build this job
+ * @example 54d4a727f457231062439895000d45437c7bb405
+ */
+ source_commit_hash?: string;
+ };
+ apps_deployment_functions: {
+ /**
+ * The name of this functions component
+ * @example my-functions-component
+ */
+ name?: string;
+ /**
+ * @description The commit hash of the repository that was used to build this functions component.
+ * @example 54d4a727f457231062439895000d45437c7bb405
+ */
+ source_commit_hash?: string;
+ /**
+ * @description The namespace where the functions are deployed.
+ * @example ap-b2a93513-8d9b-4223-9d61-5e7272c81c32
+ */
+ namespace?: string;
+ };
+ /**
+ * @default UNKNOWN
+ * @example ACTIVE
+ * @enum {string}
+ */
+ apps_deployment_phase: "UNKNOWN" | "PENDING_BUILD" | "BUILDING" | "PENDING_DEPLOY" | "DEPLOYING" | "ACTIVE" | "SUPERSEDED" | "ERROR" | "CANCELED";
+ apps_deployment_progress_step_reason: {
+ /**
+ * The error code
+ * @example Title of Error
+ */
+ code?: string;
+ /**
+ * The error message
+ * @example This is an error
+ */
+ message?: string;
+ };
+ /**
+ * @default UNKNOWN
+ * @example SUCCESS
+ * @enum {string}
+ */
+ apps_deployment_progress_step_status: "UNKNOWN" | "PENDING" | "RUNNING" | "ERROR" | "SUCCESS";
+ /** A step that is run as part of the deployment's lifecycle */
+ apps_deployment_progress_step: {
+ /**
+ * The component name that this step is associated with
+ * @example component
+ */
+ component_name?: string;
+ /**
+ * The end time of this step
+ * Format: date-time
+ * @example 2020-11-19T20:27:18Z
+ */
+ ended_at?: string;
+ /**
+ * @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"
+ * @example Building service
+ */
+ message_base?: string;
+ /**
+ * The name of this step
+ * @example example_step
+ */
+ name?: string;
+ reason?: components["schemas"]["apps_deployment_progress_step_reason"];
+ /**
+ * The start time of this step
+ * Format: date-time
+ * @example 2020-11-19T20:27:18Z
+ */
+ started_at?: string;
+ status?: components["schemas"]["apps_deployment_progress_step_status"];
+ /** Child steps of this step */
+ steps?: Record[];
+ };
+ apps_deployment_progress: {
+ /**
+ * Number of unsuccessful steps
+ * Format: int32
+ * @example 3
+ */
+ error_steps?: number;
+ /**
+ * Number of pending steps
+ * Format: int32
+ * @example 2
+ */
+ pending_steps?: number;
+ /**
+ * Number of currently running steps
+ * Format: int32
+ * @example 2
+ */
+ running_steps?: number;
+ /** The deployment's steps */
+ steps?: components["schemas"]["apps_deployment_progress_step"][];
+ /**
+ * Number of successful steps
+ * Format: int32
+ * @example 4
+ */
+ success_steps?: number;
+ /** A flattened summary of the steps */
+ summary_steps?: components["schemas"]["apps_deployment_progress_step"][];
+ /**
+ * Total number of steps
+ * Format: int32
+ * @example 5
+ */
+ total_steps?: number;
+ };
+ apps_deployment_service: {
+ /**
+ * The name of this service
+ * @example web
+ */
+ name?: string;
+ /**
+ * The commit hash of the repository that was used to build this service
+ * @example 54d4a727f457231062439895000d45437c7bb405
+ */
+ source_commit_hash?: string;
+ };
+ app_domain_spec: {
+ /**
+ * @description The hostname for the domain
+ * @example app.example.com
+ */
+ domain: string;
+ /**
+ * @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
+ * @default UNSPECIFIED
+ * @example DEFAULT
+ * @enum {string}
+ */
+ type: "UNSPECIFIED" | "DEFAULT" | "PRIMARY" | "ALIAS";
+ /**
+ * @description Indicates whether the domain includes all sub-domains, in addition to the given domain
+ * @example true
+ */
+ wildcard?: boolean;
+ /**
+ * Format: hostname
+ * @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`.
+ * @example example.com
+ */
+ zone?: string;
+ /**
+ * @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
+ * @enum {string}
+ */
+ minimum_tls_version?: "1.2" | "1.3";
+ };
+ apps_git_source_spec: {
+ /**
+ * @description The name of the branch to use
+ * @example main
+ */
+ branch?: string;
+ /**
+ * @description The clone URL of the repo. Example: `https://github.com/digitalocean/sample-golang.git`
+ * @example https://github.com/digitalocean/sample-golang.git
+ */
+ repo_clone_url?: string;
+ };
+ apps_github_source_spec: {
+ /**
+ * @description The name of the branch to use
+ * @example main
+ */
+ branch?: string;
+ /**
+ * @description Whether to automatically deploy new commits made to the repo
+ * @example true
+ */
+ deploy_on_push?: boolean;
+ /**
+ * @description The name of the repo in the format owner/repo. Example: `digitalocean/sample-golang`
+ * @example digitalocean/sample-golang
+ */
+ repo?: string;
+ };
+ apps_gitlab_source_spec: {
+ /**
+ * @description The name of the branch to use
+ * @example main
+ */
+ branch?: string;
+ /**
+ * @description Whether to automatically deploy new commits made to the repo
+ * @example true
+ */
+ deploy_on_push?: boolean;
+ /**
+ * @description The name of the repo in the format owner/repo. Example: `digitalocean/sample-golang`
+ * @example digitalocean/sample-golang
+ */
+ repo?: string;
+ };
+ apps_image_source_spec: {
+ /**
+ * @description The registry name. Must be left empty for the `DOCR` registry type.
+ * @example registry.hub.docker.com
+ */
+ registry?: string;
+ /**
+ * @description - DOCKER_HUB: The DockerHub container registry type.
+ * - DOCR: The DigitalOcean container registry type.
+ * @example DOCR
+ * @enum {string}
+ */
+ registry_type?: "DOCKER_HUB" | "DOCR";
+ /**
+ * @description The repository name.
+ * @example origin/master
+ */
+ repository?: string;
+ /**
+ * @description The repository tag. Defaults to `latest` if not provided.
+ * @default latest
+ * @example latest
+ */
+ tag: string;
+ };
+ app_variable_definition: {
+ /**
+ * @description The variable name
+ * @example BASE_URL
+ */
+ key: string;
+ /**
+ * @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
+ * @enum {string}
+ */
+ scope: "UNSET" | "RUN_TIME" | "BUILD_TIME" | "RUN_AND_BUILD_TIME";
+ /**
+ * @description - GENERAL: A plain-text environment variable
+ * - SECRET: A secret encrypted environment variable
+ * @default GENERAL
+ * @example GENERAL
+ * @enum {string}
+ */
+ type: "GENERAL" | "SECRET";
+ /**
+ * @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.
+ * @example http://example.com
+ */
+ value?: string;
+ };
+ /** @description Papertrail configuration. */
+ app_log_destination_papertrail_spec: {
+ /**
+ * @description Papertrail syslog endpoint.
+ * @example https://mypapertrailendpoint.com
+ */
+ endpoint: string;
+ };
+ /** @description DataDog configuration. */
+ app_log_destination_datadog_spec: {
+ /**
+ * @description Datadog HTTP log intake endpoint.
+ * @example https://mydatadogendpoint.com
+ */
+ endpoint?: string;
+ /**
+ * @description Datadog API key.
+ * @example abcdefghijklmnopqrstuvwxyz0123456789
+ */
+ api_key: string;
+ };
+ /** @description Logtail configuration. */
+ app_log_destination_logtail_spec: {
+ /**
+ * @description Logtail token.
+ * @example abcdefghijklmnopqrstuvwxyz0123456789
+ */
+ token?: string;
+ };
+ /** Configurations for external logging. */
+ app_log_destination_definition: {
+ /** @example my_log_destination */
+ name: string;
+ papertrail?: components["schemas"]["app_log_destination_papertrail_spec"];
+ datadog?: components["schemas"]["app_log_destination_datadog_spec"];
+ logtail?: components["schemas"]["app_log_destination_logtail_spec"];
+ };
+ app_component_base: {
+ /**
+ * @description The name. Must be unique across all components within the same app.
+ * @example api
+ */
+ name?: string;
+ git?: components["schemas"]["apps_git_source_spec"];
+ github?: components["schemas"]["apps_github_source_spec"];
+ gitlab?: components["schemas"]["apps_gitlab_source_spec"];
+ image?: components["schemas"]["apps_image_source_spec"];
+ /**
+ * @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
+ */
+ dockerfile_path?: string;
+ /**
+ * @description An optional build command to run while building this component from source.
+ * @example npm run build
+ */
+ build_command?: string;
+ /**
+ * @description An optional run command to override the component's default.
+ * @example bin/api
+ */
+ run_command?: 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
+ */
+ source_dir?: string;
+ /** @description A list of environment variables made available to the component. */
+ envs?: components["schemas"]["app_variable_definition"][];
+ /**
+ * @description An environment slug describing the type of this app. For a full list, please refer to [the product documentation](https://www.digitalocean.com/docs/app-platform/).
+ * @example node-js
+ */
+ environment_slug?: string;
+ log_destinations?: components["schemas"]["app_log_destination_definition"];
+ };
+ app_component_instance_base: {
+ /**
+ * Format: int64
+ * @description The amount of instances that this component should be scaled to. Default: 1
+ * @default 1
+ * @example 2
+ */
+ instance_count: number;
+ /**
+ * @description The instance size to use for this component. Default: `basic-xxs`
+ * @default basic-xxs
+ * @example basic-xxs
+ * @enum {string}
+ */
+ instance_size_slug: "basic-xxs" | "basic-xs" | "basic-s" | "basic-m" | "professional-xs" | "professional-s" | "professional-m" | "professional-1l" | "professional-l" | "professional-xl";
+ };
+ apps_string_match: {
+ /**
+ * @description Exact string match. Only 1 of `exact`, `prefix`, or `regex` must be set.
+ * @example https://www.example.com
+ */
+ exact?: string;
+ /**
+ * @description Prefix-based match. Only 1 of `exact`, `prefix`, or `regex` must be set.
+ * @example https://www.example.com
+ */
+ prefix?: string;
+ /**
+ * @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
+ */
+ regex?: string;
+ };
+ apps_cors_policy: {
+ /**
+ * @description The set of allowed CORS origins.
+ * @example [
+ * {
+ * "exact": "https://www.example.com"
+ * },
+ * {
+ * "regex": "^.*example.com"
+ * }
+ * ]
+ */
+ allow_origins?: components["schemas"]["apps_string_match"][];
+ /**
+ * @description The set of allowed HTTP methods. This configures the `Access-Control-Allow-Methods` header.
+ * @example [
+ * "GET",
+ * "OPTIONS",
+ * "POST",
+ * "PUT",
+ * "PATCH",
+ * "DELETE"
+ * ]
+ */
+ allow_methods?: string[];
+ /**
+ * @description The set of allowed HTTP request headers. This configures the `Access-Control-Allow-Headers` header.
+ * @example [
+ * "Content-Type",
+ * "X-Custom-Header"
+ * ]
+ */
+ allow_headers?: 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"
+ * ]
+ */
+ expose_headers?: 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
+ */
+ max_age?: string;
+ /**
+ * @description Whether browsers should expose the response to the client-side JavaScript code when the request’s credentials mode is include. This configures the `Access-Control-Allow-Credentials` header.
+ * @example false
+ */
+ allow_credentials?: boolean;
+ };
+ app_service_spec_health_check: {
+ /**
+ * Format: int32
+ * @description The number of failed health checks before considered unhealthy.
+ * @example 2
+ */
+ failure_threshold?: number;
+ /**
+ * 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
+ */
+ port?: number;
+ /**
+ * @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
+ */
+ http_path?: string;
+ /**
+ * Format: int32
+ * @description The number of seconds to wait before beginning health checks.
+ * @example 30
+ */
+ initial_delay_seconds?: number;
+ /**
+ * Format: int32
+ * @description The number of seconds to wait between health checks.
+ * @example 60
+ */
+ period_seconds?: number;
+ /**
+ * Format: int32
+ * @description The number of successful health checks before considered healthy.
+ * @example 3
+ */
+ success_threshold?: number;
+ /**
+ * Format: int32
+ * @description The number of seconds after which the check times out.
+ * @example 45
+ */
+ timeout_seconds?: number;
+ };
+ /** A criterion for routing HTTP traffic to a component. */
+ app_route_spec: {
+ /**
+ * @description An HTTP path prefix. Paths must start with / and must be unique across all components within an app.
+ * @example /api
+ */
+ path?: string;
+ /**
+ * @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`.
+ * @example true
+ */
+ preserve_path_prefix?: boolean;
+ };
+ app_service_spec: components["schemas"]["app_component_base"] & components["schemas"]["app_component_instance_base"] & {
+ cors?: components["schemas"]["apps_cors_policy"];
+ health_check?: components["schemas"]["app_service_spec_health_check"];
+ /**
+ * Format: int64
+ * @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.
+ * @example 3000
+ */
+ http_port?: number;
+ /**
+ * @description The ports on which this service will listen for internal traffic.
+ * @example [
+ * 80,
+ * 443
+ * ]
+ */
+ internal_ports?: number[];
+ /** @description A list of HTTP routes that should be routed to this component. */
+ routes?: components["schemas"]["app_route_spec"][];
+ };
+ app_static_site_spec: WithRequired;
+ app_job_spec: components["schemas"]["app_component_base"] & components["schemas"]["app_component_instance_base"] & {
+ /**
+ * @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
+ * @enum {string}
+ */
+ kind: "UNSPECIFIED" | "PRE_DEPLOY" | "POST_DEPLOY" | "FAILED_DEPLOY";
+ };
+ app_worker_spec: WithRequired;
+ /**
+ * @default UNSPECIFIED_RULE
+ * @example CPU_UTILIZATION
+ * @enum {string}
+ */
+ app_alert_spec_rule: "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";
+ /**
+ * @default UNSPECIFIED_OPERATOR
+ * @example GREATER_THAN
+ * @enum {string}
+ */
+ app_alert_spec_operator: "UNSPECIFIED_OPERATOR" | "GREATER_THAN" | "LESS_THAN";
+ /**
+ * @default UNSPECIFIED_WINDOW
+ * @example FIVE_MINUTES
+ * @enum {string}
+ */
+ app_alert_spec_window: "UNSPECIFIED_WINDOW" | "FIVE_MINUTES" | "TEN_MINUTES" | "THIRTY_MINUTES" | "ONE_HOUR";
+ app_alert_spec: {
+ rule?: components["schemas"]["app_alert_spec_rule"];
+ /**
+ * @description Is the alert disabled?
+ * @example false
+ */
+ disabled?: boolean;
+ operator?: components["schemas"]["app_alert_spec_operator"];
+ /**
+ * Format: float
+ * @description Threshold value for alert
+ * @example 2.32
+ */
+ value?: number;
+ window?: components["schemas"]["app_alert_spec_window"];
+ };
+ app_functions_spec: {
+ cors?: components["schemas"]["apps_cors_policy"];
+ /** @description A list of HTTP routes that should be routed to this component. */
+ routes?: components["schemas"]["app_route_spec"][];
+ /**
+ * @description The name. Must be unique across all components within the same app.
+ * @example api
+ */
+ name: 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
+ */
+ source_dir?: string;
+ alerts?: components["schemas"]["app_alert_spec"][];
+ /** @description A list of environment variables made available to the component. */
+ envs?: components["schemas"]["app_variable_definition"][];
+ git?: components["schemas"]["apps_git_source_spec"];
+ github?: components["schemas"]["apps_github_source_spec"];
+ gitlab?: components["schemas"]["apps_gitlab_source_spec"];
+ log_destinations?: components["schemas"]["app_log_destination_definition"];
+ };
+ app_database_spec: {
+ /**
+ * @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.
+ * @example cluster_name
+ */
+ cluster_name?: string;
+ /**
+ * @description The name of the MySQL or PostgreSQL database to configure.
+ * @example my_db
+ */
+ db_name?: string;
+ /**
+ * @description The name of the MySQL or PostgreSQL user to configure.
+ * @example superuser
+ */
+ db_user?: string;
+ /**
+ * @description - MYSQL: MySQL
+ * - PG: PostgreSQL
+ * - REDIS: Redis
+ * @default UNSET
+ * @example PG
+ * @enum {string}
+ */
+ engine: "UNSET" | "MYSQL" | "PG" | "REDIS";
+ /**
+ * @description The name. Must be unique across all components within the same app.
+ * @example prod-db
+ */
+ name: string;
+ /**
+ * @description Whether this is a production or dev database.
+ * @example true
+ */
+ production?: boolean;
+ /**
+ * @description The version of the database engine
+ * @example 12
+ */
+ version?: string;
+ };
+ /** @description The path to match on. */
+ app_ingress_spec_rule_string_match: {
+ /**
+ * @description Prefix-based match. For example, `/api` will match `/api`, `/api/`, and any nested paths such as `/api/v1/endpoint`.
+ * @example /api
+ */
+ prefix: string;
+ };
+ /** @description The match configuration for the rule. */
+ app_ingress_spec_rule_match: {
+ path: components["schemas"]["app_ingress_spec_rule_string_match"];
+ };
+ /** @description The component to route to. Only one of `component` or `redirect` may be set. */
+ app_ingress_spec_rule_routing_component: {
+ /**
+ * @description The name of the component to route to.
+ * @example web
+ */
+ name: string;
+ /**
+ * @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`.
+ * @example true
+ */
+ preserve_path_prefix?: string;
+ /**
+ * @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`.
+ * @example /api/v1/
+ */
+ rewrite?: string;
+ };
+ /** @description The redirect configuration for the rule. Only one of `component` or `redirect` may be set. */
+ app_ingress_spec_rule_routing_redirect: {
+ /**
+ * @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.
+ * @example /about
+ */
+ uri?: string;
+ /**
+ * @description The authority/host to redirect to. This can be a hostname or IP address. Note: use `port` to set the port.
+ * @example example.com
+ */
+ authority?: string;
+ /**
+ * Format: int64
+ * @description The port to redirect to.
+ * @example 443
+ */
+ port?: number;
+ /**
+ * @description The scheme to redirect to. Supported values are `http` or `https`. Default: `https`.
+ * @example https
+ */
+ scheme?: string;
+ /**
+ * Format: int64
+ * @description The redirect code to use. Defaults to `302`. Supported values are 300, 301, 302, 303, 304, 307, 308.
+ * @example 302
+ */
+ redirect_code?: number;
+ };
+ app_ingress_spec_rule: {
+ match?: components["schemas"]["app_ingress_spec_rule_match"];
+ cors?: components["schemas"]["apps_cors_policy"];
+ component?: components["schemas"]["app_ingress_spec_rule_routing_component"];
+ redirect?: components["schemas"]["app_ingress_spec_rule_routing_redirect"];
+ };
+ /** @description Specification for app ingress configurations. */
+ app_ingress_spec: {
+ /** @description Rules for configuring HTTP ingress for component routes, CORS, rewrites, and redirects. */
+ rules?: components["schemas"]["app_ingress_spec_rule"][];
+ };
+ /**
+ * AppSpec
+ * @description The desired configuration of an application.
+ */
+ app_spec: {
+ /**
+ * @description The name of the app. Must be unique across all apps in the same account.
+ * @example web-app-01
+ */
+ name: string;
+ /**
+ * @description The slug form of the geographical origin of the app. Default: `nearest available`
+ * @example nyc
+ * @enum {string}
+ */
+ region?: "ams" | "nyc" | "fra" | "sfo" | "sgp" | "blr" | "tor" | "lon" | "syd";
+ /** @description A set of hostnames where the application will be available. */
+ domains?: components["schemas"]["app_domain_spec"][];
+ /** @description Workloads which expose publicly-accessible HTTP services. */
+ services?: components["schemas"]["app_service_spec"][];
+ /** @description Content which can be rendered to static web assets. */
+ static_sites?: components["schemas"]["app_static_site_spec"][];
+ /** @description Pre and post deployment workloads which do not expose publicly-accessible HTTP routes. */
+ jobs?: components["schemas"]["app_job_spec"][];
+ /** @description Workloads which do not expose publicly-accessible HTTP services. */
+ workers?: components["schemas"]["app_worker_spec"][];
+ /** @description Workloads which expose publicly-accessible HTTP services via Functions Components. */
+ functions?: components["schemas"]["app_functions_spec"][];
+ /** @description Database instances which can provide persistence to workloads within the
+ * application. */
+ databases?: components["schemas"]["app_database_spec"][];
+ ingress?: components["schemas"]["app_ingress_spec"];
+ };
+ apps_deployment_static_site: {
+ /**
+ * The name of this static site
+ * @example web
+ */
+ name?: string;
+ /**
+ * The commit hash of the repository that was used to build this static site
+ * @example 54d4a727f457231062439895000d45437c7bb405
+ */
+ source_commit_hash?: string;
+ };
+ apps_deployment_worker: {
+ /**
+ * The name of this worker
+ * @example queue-runner
+ */
+ name?: string;
+ /**
+ * The commit hash of the repository that was used to build this worker
+ * @example 54d4a727f457231062439895000d45437c7bb405
+ */
+ source_commit_hash?: string;
+ };
+ /** An app deployment */
+ apps_deployment: {
+ /**
+ * What caused this deployment to be created
+ * @example commit 9a4df0b pushed to github/digitalocean/sample-golang
+ */
+ cause?: string;
+ /**
+ * The ID of a previous deployment that this deployment was cloned from
+ * @example 3aa4d20e-5527-4c00-b496-601fbd22520a
+ */
+ cloned_from?: string;
+ /**
+ * The creation time of the deployment
+ * Format: date-time
+ * @example 2020-07-28T18:00:00Z
+ */
+ created_at?: string;
+ /**
+ * The ID of the deployment
+ * @example b6bdf840-2854-4f87-a36c-5f231c617c84
+ */
+ id?: string;
+ /** Job components that are part of this deployment */
+ jobs?: components["schemas"]["apps_deployment_job"][];
+ /** Functions components that are part of this deployment */
+ functions?: components["schemas"]["apps_deployment_functions"][];
+ phase?: components["schemas"]["apps_deployment_phase"];
+ /**
+ * When the deployment phase was last updated
+ * Format: date-time
+ * @example 0001-01-01T00:00:00Z
+ */
+ phase_last_updated_at?: string;
+ progress?: components["schemas"]["apps_deployment_progress"];
+ /** Service components that are part of this deployment */
+ services?: components["schemas"]["apps_deployment_service"][];
+ spec?: components["schemas"]["app_spec"];
+ /** Static Site components that are part of this deployment */
+ static_sites?: components["schemas"]["apps_deployment_static_site"][];
+ /**
+ * The current pricing tier slug of the deployment
+ * @example basic
+ */
+ readonly tier_slug?: string;
+ /**
+ * When the deployment was last updated
+ * Format: date-time
+ * @example 2020-07-28T18:00:00Z
+ */
+ updated_at?: string;
+ /** Worker components that are part of this deployment */
+ workers?: components["schemas"]["apps_deployment_worker"][];
+ };
+ /**
+ * @default UNKNOWN
+ * @example ACTIVE
+ * @enum {string}
+ */
+ apps_domain_phase: "UNKNOWN" | "PENDING" | "CONFIGURING" | "ACTIVE" | "ERROR";
+ apps_domain_progress: {
+ /** The steps of the domain's progress */
+ steps?: Record[];
+ };
+ app_domain_validation: {
+ /**
+ * TXT record name
+ * @example _acme-challenge.app.example.com
+ */
+ readonly txt_name?: string;
+ /**
+ * TXT record value
+ * @example lXLOcN6cPv0nproViNcUHcahD9TrIPlNgdwesj0pYpk
+ */
+ readonly txt_value?: string;
+ };
+ apps_domain: {
+ /**
+ * The ID of the domain
+ * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
+ */
+ id?: string;
+ phase?: components["schemas"]["apps_domain_phase"];
+ progress?: components["schemas"]["apps_domain_progress"];
+ spec?: components["schemas"]["app_domain_spec"];
+ /** List of TXT validation records */
+ validations?: components["schemas"]["app_domain_validation"][];
+ /** Validation values have changed and require manual intervention */
+ readonly rotate_validation_records?: boolean;
+ /**
+ * Current SSL certificate expiration time
+ * Format: date-time
+ * @example 2024-01-29T23:59:59Z
+ */
+ readonly certificate_expires_at?: string;
+ };
+ /** Geographical information about an app origin */
+ apps_region: {
+ /**
+ * The continent that this region is in
+ * @example europe
+ */
+ readonly continent?: string;
+ /**
+ * Data centers that are in this region
+ * @example [
+ * "ams"
+ * ]
+ */
+ readonly data_centers?: string[];
+ /**
+ * @description Whether or not the region is presented as the default.
+ * @example true
+ */
+ readonly default?: boolean;
+ /**
+ * Whether or not the region is open for new apps
+ * @example true
+ */
+ readonly disabled?: boolean;
+ /**
+ * The flag of this region
+ * @example ams
+ */
+ readonly flag?: string;
+ /**
+ * A human-readable name of the region
+ * @example ams
+ */
+ readonly label?: string;
+ /**
+ * Reason that this region is not available
+ * @example to crowded
+ */
+ readonly reason?: string;
+ /**
+ * The slug form of the region name
+ * @example basic
+ */
+ readonly slug?: string;
+ };
+ /** @description An application's configuration and status. */
+ app: {
+ active_deployment?: components["schemas"]["apps_deployment"];
+ /**
+ * The creation time of the app
+ * Format: date-time
+ * @example 2020-11-19T20:27:18Z
+ */
+ readonly created_at?: string;
+ /**
+ * The default hostname on which the app is accessible
+ * @example digitalocean.com
+ */
+ readonly default_ingress?: string;
+ /** Contains all domains for the app */
+ readonly domains?: components["schemas"]["apps_domain"][];
+ /**
+ * The ID of the application
+ * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
+ */
+ readonly id?: string;
+ in_progress_deployment?: components["schemas"]["apps_deployment"];
+ /**
+ * The creation time of the last deployment
+ * Format: date-time
+ * @example 2020-11-19T20:27:18Z
+ */
+ readonly last_deployment_created_at?: string;
+ /**
+ * The live domain of the app
+ * @example live_domain
+ */
+ readonly live_domain?: string;
+ /**
+ * The live URL of the app
+ * @example google.com
+ */
+ readonly live_url?: string;
+ /**
+ * The live URL base of the app, the URL excluding the path
+ * @example digitalocean.com
+ */
+ readonly live_url_base?: string;
+ /**
+ * The ID of the account to which the application belongs
+ * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
+ */
+ readonly owner_uuid?: string;
+ pending_deployment?: unknown & components["schemas"]["apps_deployment"];
+ /**
+ * The ID of the project the app is assigned to. This will be empty if there is a lookup failure.
+ * @example 88b72d1a-b78a-4d9f-9090-b53c4399073f
+ */
+ readonly project_id?: string;
+ region?: components["schemas"]["apps_region"];
+ spec: components["schemas"]["app_spec"];
+ /**
+ * The current pricing tier slug of the app
+ * @example basic
+ */
+ readonly tier_slug?: string;
+ /**
+ * Time of the app's last configuration update
+ * Format: date-time
+ * @example 2020-12-01T00:42:16Z
+ */
+ readonly updated_at?: string;
+ pinned_deployment?: unknown & components["schemas"]["apps_deployment"];
+ };
+ apps_response: {
+ /** A list of apps */
+ apps?: components["schemas"]["app"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ apps_create_app_request: {
+ spec: components["schemas"]["app_spec"];
+ /** @description The ID of the project the app should be assigned to. If omitted, it will be assigned to your default project. */
+ project_id?: string;
+ };
+ app_response: {
+ app?: components["schemas"]["app"];
+ };
+ apps_update_app_request: {
+ spec: components["schemas"]["app_spec"];
+ };
+ apps_delete_app_response: {
+ /**
+ * The ID of the app that was deleted
+ * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
+ */
+ id?: string;
+ };
+ apps_get_logs_response: {
+ /** A list of URLs to archived log files */
+ historic_urls?: string[];
+ /**
+ * @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.
+ * @example ws://logs/build
+ */
+ live_url?: string;
+ };
+ apps_deployments_response: {
+ /** A list of deployments */
+ deployments?: components["schemas"]["apps_deployment"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ apps_create_deployment_request: {
+ /**
+ * Indicates whether to force a build of app from source even if an existing cached build is suitable for re-use
+ * @example true
+ */
+ force_build?: boolean;
+ };
+ apps_deployment_response: {
+ deployment?: components["schemas"]["apps_deployment"];
+ };
+ apps_tier: {
+ /**
+ * The amount of included build time in seconds
+ * Format: int64
+ * @example 233
+ */
+ build_seconds?: string;
+ /**
+ * The amount of included outbound bandwidth in bytes
+ * Format: int64
+ * @example 123
+ */
+ egress_bandwidth_bytes?: string;
+ /**
+ * A human-readable name of the tier
+ * @example test
+ */
+ name?: string;
+ /**
+ * The slug of the tier
+ * @example test
+ */
+ slug?: string;
+ /**
+ * The allotted disk space in bytes
+ * Format: int64
+ * @example 10000000
+ */
+ storage_bytes?: string;
+ };
+ apps_list_tiers_response: {
+ tiers?: components["schemas"]["apps_tier"][];
+ };
+ apps_get_tier_response: {
+ tier?: components["schemas"]["apps_tier"];
+ };
+ /**
+ * - SHARED: Shared vCPU cores
+ * - DEDICATED: Dedicated vCPU cores
+ * @default UNSPECIFIED
+ * @example SHARED
+ * @enum {string}
+ */
+ instance_size_cpu_type: "UNSPECIFIED" | "SHARED" | "DEDICATED";
+ apps_instance_size: {
+ cpu_type?: components["schemas"]["instance_size_cpu_type"];
+ /**
+ * The number of allotted vCPU cores
+ * Format: int64
+ * @example 3
+ */
+ cpus?: string;
+ /**
+ * The allotted memory in bytes
+ * Format: int64
+ * @example 1048
+ */
+ memory_bytes?: string;
+ /**
+ * A human-readable name of the instance size
+ * @example name
+ */
+ name?: string;
+ /**
+ * The slug of the instance size
+ * @example basic
+ */
+ slug?: string;
+ /**
+ * The slug of the corresponding downgradable instance size on the lower tier
+ * @example basic
+ */
+ tier_downgrade_to?: string;
+ /**
+ * The slug of the tier to which this instance size belongs
+ * @example basic
+ */
+ tier_slug?: string;
+ /**
+ * The slug of the corresponding upgradable instance size on the higher tier
+ * @example basic
+ */
+ tier_upgrade_to?: string;
+ /**
+ * The cost of this instance size in USD per month
+ * @example 23
+ */
+ usd_per_month?: string;
+ /**
+ * The cost of this instance size in USD per second
+ * @example 0.00000001232
+ */
+ usd_per_second?: string;
+ };
+ apps_list_instance_sizes_response: {
+ /**
+ * Format: float
+ * @example 2.32
+ */
+ discount_percent?: number;
+ instance_sizes?: components["schemas"]["apps_instance_size"][];
+ };
+ apps_get_instance_size_response: {
+ instance_size?: components["schemas"]["apps_instance_size"];
+ };
+ apps_list_regions_response: {
+ regions?: components["schemas"]["apps_region"][];
+ };
+ app_propose: {
+ spec: components["schemas"]["app_spec"];
+ /**
+ * @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
+ */
+ app_id?: string;
+ };
+ app_propose_response: {
+ /**
+ * @description Indicates whether the app is a static app.
+ * @example true
+ */
+ app_is_static?: boolean;
+ /**
+ * @description Indicates whether the app name is available.
+ * @example true
+ */
+ app_name_available?: boolean;
+ /**
+ * @description The suggested name if the proposed app name is unavailable.
+ * @example newName
+ */
+ app_name_suggestion?: string;
+ /**
+ * @description The maximum number of free static apps the account can have. We will charge you for any additional static apps.
+ * @example 2
+ */
+ existing_static_apps?: string;
+ spec?: components["schemas"]["app_spec"];
+ /**
+ * Format: int32
+ * @description The monthly cost of the proposed app in USD using the next pricing plan tier. For example, if you propose an app that uses the Basic tier, the `app_tier_upgrade_cost` field displays the monthly cost of the app if it were to use the Professional tier. If the proposed app already uses the most expensive tier, the field is empty.
+ * @example 5
+ */
+ app_cost?: number;
+ /**
+ * 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
+ */
+ app_tier_downgrade_cost?: number;
+ };
+ /**
+ * @default
+ * @example sammy@digitalocean.com
+ */
+ app_alert_email: string;
+ app_alert_slack_webhook: {
+ /**
+ * URL of the Slack webhook
+ * @example https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
+ */
+ url?: string;
+ /**
+ * Name of the Slack Webhook Channel
+ * @example Channel Name
+ */
+ channel?: string;
+ };
+ /**
+ * @default UNKNOWN
+ * @example ACTIVE
+ * @enum {string}
+ */
+ app_alert_phase: "UNKNOWN" | "PENDING" | "CONFIGURING" | "ACTIVE" | "ERROR";
+ /**
+ * @default UNKNOWN
+ * @example SUCCESS
+ * @enum {string}
+ */
+ app_alert_progress_step_status: "UNKNOWN" | "PENDING" | "RUNNING" | "ERROR" | "SUCCESS";
+ app_alert_progress_step_reason: {
+ /**
+ * The error code
+ * @example Title of Error
+ */
+ code?: string;
+ /**
+ * The error message
+ * @example This is an error
+ */
+ message?: string;
+ };
+ app_alert_progress_step: {
+ /**
+ * The name of this step
+ * @example example_step
+ */
+ name?: string;
+ status?: components["schemas"]["app_alert_progress_step_status"];
+ /**
+ * The start time of this step
+ * Format: date-time
+ * @example 2020-11-19T20:27:18Z
+ */
+ started_at?: string;
+ /**
+ * The start time of this step
+ * Format: date-time
+ * @example 2020-11-19T20:27:18Z
+ */
+ ended_at?: string;
+ reason?: components["schemas"]["app_alert_progress_step_reason"];
+ };
+ app_alert_progress: {
+ /** Steps of an alert's progress. */
+ steps?: components["schemas"]["app_alert_progress_step"][];
+ };
+ app_alert: {
+ /**
+ * The ID of the alert
+ * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
+ */
+ readonly id?: string;
+ /**
+ * Name of component the alert belongs to
+ * @example backend
+ */
+ component_name?: string;
+ spec?: components["schemas"]["app_alert_spec"];
+ /**
+ * Emails for alerts to go to
+ * @example [
+ * "sammy@digitalocean.com"
+ * ]
+ */
+ emails?: components["schemas"]["app_alert_email"][];
+ /** Slack Webhooks to send alerts to */
+ slack_webhooks?: components["schemas"]["app_alert_slack_webhook"][];
+ phase?: components["schemas"]["app_alert_phase"];
+ progress?: components["schemas"]["app_alert_progress"];
+ };
+ apps_list_alerts_response: {
+ alerts?: components["schemas"]["app_alert"][];
+ };
+ apps_assign_app_alert_destinations_request: {
+ /** @example [
+ * "sammy@digitalocean.com"
+ * ] */
+ emails?: components["schemas"]["app_alert_email"][];
+ slack_webhooks?: components["schemas"]["app_alert_slack_webhook"][];
+ };
+ apps_alert_response: {
+ alert?: components["schemas"]["app_alert"];
+ };
+ apps_rollback_app_request: {
+ /**
+ * @description The ID of the deployment to rollback to.
+ * @example 3aa4d20e-5527-4c00-b496-601fbd22520a
+ */
+ deployment_id?: string;
+ /**
+ * @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
+ */
+ skip_pin?: boolean;
+ };
+ app_rollback_validation_condition: {
+ /**
+ * @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.
+ *
+ * @example exceeded_revision_limit
+ * @enum {string}
+ */
+ code?: "incompatible_phase" | "incompatible_result" | "exceeded_revision_limit" | "app_pinned" | "database_config_conflict" | "region_conflict" | "static_site_requires_rebuild" | "image_source_missing_digest";
+ /**
+ * @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
+ */
+ message?: string;
+ /** @example [
+ * "www"
+ * ] */
+ components?: string[];
+ };
+ /** @description Bandwidth usage for an app. */
+ app_metrics_bandwidth_usage_details: {
+ /**
+ * @description The ID of the app.
+ * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
+ */
+ app_id?: string;
+ /**
+ * Format: uint64
+ * @description The used bandwidth amount in bytes.
+ * @example 513668
+ */
+ bandwidth_bytes?: string;
+ };
+ app_metrics_bandwidth_usage: {
+ /** @description A list of bandwidth usage details by app. */
+ app_bandwidth_usage?: components["schemas"]["app_metrics_bandwidth_usage_details"][];
+ /**
+ * Format: date-time
+ * @description The date for the metrics data.
+ * @example 2023-01-17T00:00:00Z
+ */
+ date?: string;
+ };
+ app_metrics_bandwidth_usage_request: {
+ /**
+ * @description A list of app IDs to query bandwidth metrics for.
+ * @example [
+ * "4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf",
+ * "c2a93513-8d9b-4223-9d61-5e7272c81cf5"
+ * ]
+ */
+ app_ids: 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
+ */
+ date?: string;
+ };
+ cdn_endpoint: {
+ /**
+ * Format: uuid
+ * @description A unique ID that can be used to identify and reference a CDN endpoint.
+ * @example 892071a0-bb95-49bc-8021-3afd67a210bf
+ */
+ readonly id?: string;
+ /**
+ * Format: hostname
+ * @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.
+ * @example static-images.nyc3.digitaloceanspaces.com
+ */
+ origin: string;
+ /**
+ * Format: hostname
+ * @description The fully qualified domain name (FQDN) from which the CDN-backed content is served.
+ * @example static-images.nyc3.cdn.digitaloceanspaces.com
+ */
+ readonly endpoint?: string;
+ /**
+ * @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.
+ * @default 3600
+ * @example 3600
+ * @enum {integer}
+ */
+ ttl: 60 | 600 | 3600 | 86400 | 604800;
+ /**
+ * Format: uuid
+ * @description The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.
+ * @example 892071a0-bb95-49bc-8021-3afd67a210bf
+ */
+ certificate_id?: string;
+ /**
+ * Format: hostname
+ * @description The fully qualified domain name (FQDN) of the custom subdomain used with the CDN endpoint.
+ * @example static.example.com
+ */
+ custom_domain?: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the CDN endpoint was created.
+ * @example 2018-03-21T16:02:37Z
+ */
+ readonly created_at?: string;
+ };
+ update_endpoint: {
+ /**
+ * @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.
+ * @default 3600
+ * @example 3600
+ * @enum {integer}
+ */
+ ttl: 60 | 600 | 3600 | 86400 | 604800;
+ /**
+ * Format: uuid
+ * @description The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.
+ * @example 892071a0-bb95-49bc-8021-3afd67a210bf
+ */
+ certificate_id?: string;
+ /**
+ * Format: hostname
+ * @description The fully qualified domain name (FQDN) of the custom subdomain used with the CDN endpoint.
+ * @example static.example.com
+ */
+ custom_domain?: string;
+ };
+ purge_cache: {
+ /**
+ * @description An array of strings containing the path to the content to be purged from the CDN cache.
+ * @example [
+ * "path/to/image.png",
+ * "path/to/css/*"
+ * ]
+ */
+ files: string[];
+ };
+ certificate: {
+ /**
+ * Format: uuid
+ * @description A unique ID that can be used to identify and reference a certificate.
+ * @example 892071a0-bb95-49bc-8021-3afd67a210bf
+ */
+ readonly id?: string;
+ /**
+ * @description A unique human-readable name referring to a certificate.
+ * @example web-cert-01
+ */
+ name?: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents the certificate's expiration date.
+ * @example 2017-02-22T00:23:00Z
+ */
+ readonly not_after?: string;
+ /**
+ * @description A unique identifier generated from the SHA-1 fingerprint of the certificate.
+ * @example dfcc9f57d86bf58e321c2c6c31c7a971be244ac7
+ */
+ readonly sha1_fingerprint?: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the certificate was created.
+ * @example 2017-02-08T16:02:37Z
+ */
+ readonly created_at?: string;
+ /**
+ * @description An array of fully qualified domain names (FQDNs) for which the certificate was issued.
+ * @example [
+ * "www.example.com",
+ * "example.com"
+ * ]
+ */
+ dns_names?: string[];
+ /**
+ * @description A string representing the current state of the certificate. It may be `pending`, `verified`, or `error`.
+ * @example verified
+ * @enum {string}
+ */
+ readonly state?: "pending" | "verified" | "error";
+ /**
+ * @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.
+ * @example lets_encrypt
+ * @enum {string}
+ */
+ type?: "custom" | "lets_encrypt";
+ };
+ certificate_create_base: {
+ /**
+ * @description A unique human-readable name referring to a certificate.
+ * @example web-cert-01
+ */
+ name: string;
+ /**
+ * @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.
+ * @example lets_encrypt
+ * @enum {string}
+ */
+ type?: "custom" | "lets_encrypt";
+ };
+ /** Let's Encrypt Certificate Request */
+ certificate_request_lets_encrypt: components["schemas"]["certificate_create_base"] & {
+ /**
+ * @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`).
+ * @example [
+ * "www.example.com",
+ * "example.com"
+ * ]
+ */
+ dns_names: string[];
+ };
+ /** Custom Certificate Request */
+ certificate_request_custom: components["schemas"]["certificate_create_base"] & {
+ /**
+ * @description The contents of a PEM-formatted private-key corresponding to the SSL certificate.
+ * @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-----
+ */
+ private_key: string;
+ /**
+ * @description The contents of a PEM-formatted public SSL certificate.
+ * @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-----
+ */
+ leaf_certificate: string;
+ /**
+ * @description The full PEM-formatted trust chain between the certificate authority's certificate and your domain's SSL certificate.
+ * @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-----
+ */
+ certificate_chain?: string;
+ };
+ balance: {
+ /**
+ * @description Balance as of the `generated_at` time. This value includes the `account_balance` and `month_to_date_usage`.
+ * @example 23.44
+ */
+ month_to_date_balance?: string;
+ /**
+ * @description Current balance of the customer's most recent billing activity. Does not reflect `month_to_date_usage`.
+ * @example 12.23
+ */
+ account_balance?: string;
+ /**
+ * @description Amount used in the current billing period as of the `generated_at` time.
+ * @example 11.21
+ */
+ month_to_date_usage?: string;
+ /**
+ * Format: date-time
+ * @description The time at which balances were most recently generated.
+ * @example 2019-07-09T15:01:12Z
+ */
+ generated_at?: string;
+ };
+ billing_history: {
+ /**
+ * @description Description of the billing history entry.
+ * @example Invoice for May 2018
+ */
+ description?: string;
+ /**
+ * @description Amount of the billing history entry.
+ * @example 12.34
+ */
+ amount?: string;
+ /**
+ * @description ID of the invoice associated with the billing history entry, if applicable.
+ * @example 123
+ */
+ invoice_id?: string;
+ /**
+ * @description UUID of the invoice associated with the billing history entry, if applicable.
+ * @example example-uuid
+ */
+ invoice_uuid?: string;
+ /**
+ * Format: date-time
+ * @description Time the billing history entry occurred.
+ * @example 2018-06-01T08:44:38Z
+ */
+ date?: string;
+ /**
+ * @description Type of billing history entry.
+ * @example Invoice
+ * @enum {string}
+ */
+ type?: "ACHFailure" | "Adjustment" | "AttemptFailed" | "Chargeback" | "Credit" | "CreditExpiration" | "Invoice" | "Payment" | "Refund" | "Reversal";
+ };
+ meta_optional_total: {
+ meta: components["schemas"]["meta_properties"];
+ };
+ /** @description The invoice preview. */
+ invoice_preview: {
+ /**
+ * @description The UUID of the invoice. The canonical reference for the invoice.
+ * @example fdabb512-6faf-443c-ba2e-665452332a9e
+ */
+ invoice_uuid?: string;
+ /**
+ * @description Total amount of the invoice, in USD. This will reflect month-to-date usage in the invoice preview.
+ * @example 23.45
+ */
+ amount?: string;
+ /**
+ * @description Billing period of usage for which the invoice is issued, in `YYYY-MM` format.
+ * @example 2020-01
+ */
+ invoice_period?: string;
+ /**
+ * @description Time the invoice was last updated. This is only included with the invoice preview.
+ * @example 2020-01-23T06:31:50Z
+ */
+ updated_at?: string;
+ };
+ invoice_item: {
+ /**
+ * @description Name of the product being billed in the invoice item.
+ * @example Kubernetes Clusters
+ */
+ product?: string;
+ /**
+ * @description UUID of the resource billing in the invoice item if available.
+ * @example 711157cb-37c8-4817-b371-44fa3504a39c
+ */
+ resource_uuid?: string;
+ /**
+ * @description ID of the resource billing in the invoice item if available.
+ * @example 2353624
+ */
+ resource_id?: string;
+ /**
+ * @description Description of the invoice item when it is a grouped set of usage, such as DOKS or databases.
+ * @example my-doks-cluster
+ */
+ group_description?: string;
+ /**
+ * @description Description of the invoice item.
+ * @example a56e086a317d8410c8b4cfd1f4dc9f82
+ */
+ description?: string;
+ /**
+ * @description Billed amount of this invoice item. Billed in USD.
+ * @example 12.34
+ */
+ amount?: string;
+ /**
+ * @description Duration of time this invoice item was used and subsequently billed.
+ * @example 744
+ */
+ duration?: string;
+ /**
+ * @description Unit of time for duration.
+ * @example Hours
+ */
+ duration_unit?: string;
+ /**
+ * @description Time the invoice item began to be billed for usage.
+ * @example 2020-01-01T00:00:00Z
+ */
+ start_time?: string;
+ /**
+ * @description Time the invoice item stopped being billed for usage.
+ * @example 2020-02-01T00:00:00Z
+ */
+ end_time?: string;
+ /**
+ * @description Name of the DigitalOcean Project this resource belongs to.
+ * @example web
+ */
+ project_name?: string;
+ };
+ billing_address: {
+ /**
+ * @description Street address line 1
+ * @example 101 Shark Row
+ */
+ address_line1?: string;
+ /**
+ * @description Street address line 2
+ * @example
+ */
+ address_line2?: string;
+ /**
+ * @description City
+ * @example Atlantis
+ */
+ city?: string;
+ /**
+ * @description Region
+ * @example OC
+ */
+ region?: string;
+ /**
+ * @description Postal code
+ * @example 12345
+ */
+ postal_code?: string;
+ /**
+ * @description Country (ISO2) code
+ * @example US
+ */
+ country_iso2_code?: string;
+ /**
+ * @description Timestamp billing address was created
+ * @example 2019-09-03T16:34:46.000+00:00
+ */
+ created_at?: string;
+ /**
+ * @description Timestamp billing address was updated
+ * @example 2019-09-03T16:34:46.000+00:00
+ */
+ updated_at?: string;
+ };
+ product_charge_item: {
+ /**
+ * @description Amount of the charge
+ * @example 10.00
+ */
+ amount?: string;
+ /**
+ * @description Description of the charge
+ * @example Spaces Subscription
+ */
+ name?: string;
+ /**
+ * @description Number of times the charge was applied
+ * @example 1
+ */
+ count?: string;
+ };
+ product_usage_charges: {
+ /**
+ * @description Description of usage charges
+ * @example Product usage charges
+ */
+ name?: string;
+ /**
+ * @description Total amount charged
+ * @example 12.34
+ */
+ amount?: string;
+ /**
+ * @description List of amount, and grouped aggregates by resource type.
+ * @example [
+ * {
+ * "amount": "10.00",
+ * "name": "Spaces Subscription",
+ * "count": "1"
+ * },
+ * {
+ * "amount": "2.34",
+ * "name": "Database Clusters",
+ * "count": "1"
+ * }
+ * ]
+ */
+ items?: components["schemas"]["product_charge_item"][];
+ };
+ simple_charge: {
+ /**
+ * @description Name of the charge
+ * @example Overages
+ */
+ name?: string;
+ /**
+ * @description Total amount charged in USD
+ * @example 3.45
+ */
+ amount?: string;
+ };
+ invoice_summary: {
+ /**
+ * @description UUID of the invoice
+ * @example 22737513-0ea7-4206-8ceb-98a575af7681
+ */
+ invoice_uuid?: string;
+ /**
+ * @description Billing period of usage for which the invoice is issued, in `YYYY-MM` format.
+ * @example 2020-01
+ */
+ billing_period?: string;
+ /**
+ * @description Total amount of the invoice, in USD. This will reflect month-to-date usage in the invoice preview.
+ * @example 27.13
+ */
+ amount?: string;
+ /**
+ * @description Name of the DigitalOcean customer being invoiced.
+ * @example Sammy Shark
+ */
+ user_name?: string;
+ user_billing_address?: unknown & components["schemas"]["billing_address"];
+ /**
+ * @description Company of the DigitalOcean customer being invoiced, if set.
+ * @example DigitalOcean
+ */
+ user_company?: string;
+ /**
+ * @description Email of the DigitalOcean customer being invoiced.
+ * @example sammy@digitalocean.com
+ */
+ user_email?: string;
+ product_charges?: unknown & components["schemas"]["product_usage_charges"];
+ overages?: unknown & components["schemas"]["simple_charge"];
+ taxes?: unknown & components["schemas"]["simple_charge"];
+ credits_and_adjustments?: unknown & components["schemas"]["simple_charge"];
+ };
+ database_region_options: {
+ /**
+ * @description An array of strings containing the names of available regions
+ * @example [
+ * "ams3",
+ * "blr1"
+ * ]
+ */
+ readonly regions?: string[];
+ };
+ database_version_options: {
+ /**
+ * @description An array of strings containing the names of available regions
+ * @example [
+ * "4.4",
+ * "5.0"
+ * ]
+ */
+ readonly versions?: string[];
+ };
+ database_layout_option: {
+ /** @example 1 */
+ num_nodes?: number;
+ /**
+ * @description An array of objects containing the slugs available with various node counts
+ * @example [
+ * "db-s-1vcpu-1gb",
+ * "db-s-1vcpu-2gb"
+ * ]
+ */
+ readonly sizes?: string[];
+ };
+ database_layout_options: {
+ /** @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). */
+ readonly layouts?: components["schemas"]["database_layout_option"][];
+ };
+ database_version_availability: {
+ /**
+ * @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.
+ * @example 2023-11-09T00:00:00Z
+ */
+ end_of_life?: string;
+ /**
+ * @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.
+ * @example 2023-05-09T00:00:00Z
+ */
+ end_of_availability?: string;
+ /**
+ * @description The engine version.
+ * @example 8
+ */
+ version?: string;
+ };
+ /** @description An array of objects, each indicating the version end-of-life, end-of-availability for various database engines */
+ database_version_availabilities: components["schemas"]["database_version_availability"][];
+ options: {
+ options?: {
+ mongodb?: components["schemas"]["database_region_options"] & components["schemas"]["database_version_options"] & components["schemas"]["database_layout_options"];
+ pg?: components["schemas"]["database_region_options"] & components["schemas"]["database_version_options"] & components["schemas"]["database_layout_options"];
+ mysql?: components["schemas"]["database_region_options"] & components["schemas"]["database_version_options"] & components["schemas"]["database_layout_options"];
+ redis?: components["schemas"]["database_region_options"] & components["schemas"]["database_version_options"] & components["schemas"]["database_layout_options"];
+ };
+ version_availability?: {
+ pg?: components["schemas"]["database_version_availabilities"];
+ mysql?: components["schemas"]["database_version_availabilities"];
+ redis?: components["schemas"]["database_version_availabilities"];
+ mongodb?: components["schemas"]["database_version_availabilities"];
+ };
+ };
+ database_connection: {
+ /**
+ * @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 uri?: string;
+ /**
+ * @description The name of the default database.
+ * @example defaultdb
+ */
+ readonly database?: string;
+ /**
+ * @description The FQDN pointing to the database cluster's current primary node.
+ * @example backend-do-user-19081923-0.db.ondigitalocean.com
+ */
+ readonly host?: string;
+ /**
+ * @description The port on which the database cluster is listening.
+ * @example 25060
+ */
+ readonly port?: number;
+ /**
+ * @description The default user for the database.
+ * @example doadmin
+ */
+ readonly user?: string;
+ /**
+ * @description The randomly generated password for the default user.
+ * @example wv78n3zpz42xezdk
+ */
+ readonly password?: string;
+ /**
+ * @description A boolean value indicating if the connection should be made over SSL.
+ * @example true
+ */
+ readonly ssl?: boolean;
+ };
+ mysql_settings: {
+ /**
+ * @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`.
+ *
+ * @example mysql_native_password
+ * @enum {string}
+ */
+ auth_plugin: "mysql_native_password" | "caching_sha2_password";
+ };
+ database_user: {
+ /**
+ * @description The name of a database user.
+ * @example app-01
+ */
+ name: string;
+ /**
+ * @description A string representing the database user's role. The value will be either
+ * "primary" or "normal".
+ *
+ * @example normal
+ * @enum {string}
+ */
+ readonly role?: "primary" | "normal";
+ /**
+ * @description A randomly generated password for the database user.
+ * @example jge5lfxtzhx42iff
+ */
+ readonly password?: string;
+ mysql_settings?: components["schemas"]["mysql_settings"];
+ };
+ database_maintenance_window: {
+ /**
+ * @description The day of the week on which to apply maintenance updates.
+ * @example tuesday
+ */
+ day: string;
+ /**
+ * @description The hour in UTC at which maintenance updates will be applied in 24 hour format.
+ * @example 14:00
+ */
+ hour: string;
+ /**
+ * @description A boolean value indicating whether any maintenance is scheduled to be performed in the next window.
+ * @example true
+ */
+ readonly pending?: boolean;
+ /**
+ * @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 description?: string[];
+ } | null;
+ firewall_rule: {
+ /**
+ * @description A unique ID for the firewall rule itself.
+ * @example 79f26d28-ea8a-41f2-8ad8-8cfcdd020095
+ */
+ uuid?: string;
+ /**
+ * @description A unique ID for the database cluster to which the rule is applied.
+ * @example 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
+ */
+ cluster_uuid?: string;
+ /**
+ * @description The type of resource that the firewall rule allows to access the database cluster.
+ * @example droplet
+ * @enum {string}
+ */
+ type: "droplet" | "k8s" | "ip_addr" | "tag" | "app";
+ /**
+ * @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.
+ * @example ff2a6c52-5a44-4b63-b99c-0e98e7a63d61
+ */
+ value: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the firewall rule was created.
+ * @example 2019-01-11T18:37:36Z
+ */
+ readonly created_at?: string;
+ };
+ database_cluster: {
+ /**
+ * Format: uuid
+ * @description A unique ID that can be used to identify and reference a database cluster.
+ * @example 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
+ */
+ readonly id?: string;
+ /**
+ * @description A unique, human-readable name referring to a database cluster.
+ * @example backend
+ */
+ name: string;
+ /**
+ * @description A slug representing the database engine used for the cluster. The possible values are: "pg" for PostgreSQL, "mysql" for MySQL, "redis" for Redis, and "mongodb" for MongoDB.
+ * @example mysql
+ * @enum {string}
+ */
+ engine: "pg" | "mysql" | "redis" | "mongodb";
+ /**
+ * @description A string representing the version of the database engine in use for the cluster.
+ * @example 8
+ */
+ version?: string;
+ /**
+ * @description A string representing the semantic version of the database engine in use for the cluster.
+ * @example 8.0.28
+ */
+ readonly semantic_version?: string;
+ /**
+ * @description The number of nodes in the database cluster.
+ * @example 2
+ */
+ num_nodes: number;
+ /**
+ * @description The slug identifier representing the size of the nodes in the database cluster.
+ * @example db-s-2vcpu-4gb
+ */
+ size: string;
+ /**
+ * @description The slug identifier for the region where the database cluster is located.
+ * @example nyc3
+ */
+ region: string;
+ /**
+ * @description A string representing the current status of the database cluster.
+ * @example creating
+ * @enum {string}
+ */
+ readonly status?: "creating" | "online" | "resizing" | "migrating" | "forking";
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the database cluster was created.
+ * @example 2019-01-11T18:37:36Z
+ */
+ readonly created_at?: string;
+ /**
+ * @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.
+ * @example d455e75d-4858-4eec-8c95-da2f0a5f93a7
+ */
+ private_network_uuid?: string;
+ /**
+ * @description An array of tags that have been applied to the database cluster.
+ * @example [
+ * "production"
+ * ]
+ */
+ tags?: string[] | null;
+ /**
+ * @description An array of strings containing the names of databases created in the database cluster.
+ * @example [
+ * "doadmin"
+ * ]
+ */
+ readonly db_names?: string[] | null;
+ connection?: components["schemas"]["database_connection"] & unknown;
+ private_connection?: components["schemas"]["database_connection"] & unknown;
+ readonly users?: components["schemas"]["database_user"][] | null;
+ maintenance_window?: components["schemas"]["database_maintenance_window"] & unknown;
+ /**
+ * Format: uuid
+ * @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.
+ * @example 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
+ */
+ project_id?: string;
+ rules?: components["schemas"]["firewall_rule"][];
+ /**
+ * @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.
+ * @example 2023-11-09T00:00:00Z
+ */
+ readonly version_end_of_life?: string;
+ /**
+ * @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.
+ * @example 2023-05-09T00:00:00Z
+ */
+ readonly version_end_of_availability?: string;
+ };
+ database_backup: {
+ /**
+ * @description The name of an existing database cluster from which the backup will be restored.
+ * @example backend
+ */
+ database_name: string;
+ /**
+ * Format: date-time
+ * @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.
+ * @example 2019-01-31T19:25:22Z
+ */
+ backup_created_at?: string;
+ };
+ mysql: {
+ /**
+ * @description The hour of day (in UTC) when backup for the service starts. New backup only starts if previous backup has already completed.
+ * @example 3
+ */
+ backup_hour?: number;
+ /**
+ * @description The minute of the backup hour when backup for the service starts. New backup only starts if previous backup has already completed.
+ * @example 30
+ */
+ backup_minute?: number;
+ /**
+ * @description Global SQL mode. If empty, uses MySQL server defaults. Must only include uppercase alphabetic characters, underscores, and commas.
+ * @example ANSI,TRADITIONAL
+ */
+ sql_mode?: string;
+ /**
+ * @description The number of seconds that the mysqld server waits for a connect packet before responding with bad handshake.
+ * @example 10
+ */
+ connect_timeout?: number;
+ /**
+ * @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.
+ * @example +03:00
+ */
+ default_time_zone?: string;
+ /**
+ * @description The maximum permitted result length, in bytes, for the GROUP_CONCAT() function.
+ * @example 1024
+ */
+ group_concat_max_len?: number;
+ /**
+ * @description The time, in seconds, before cached statistics expire.
+ * @example 86400
+ */
+ information_schema_stats_expiry?: number;
+ /**
+ * @description The minimum length of words that an InnoDB FULLTEXT index stores.
+ * @example 3
+ */
+ innodb_ft_min_token_size?: number;
+ /**
+ * @description The InnoDB FULLTEXT index stopword list for all InnoDB tables.
+ * @example db_name/table_name
+ */
+ innodb_ft_server_stopword_table?: string;
+ /**
+ * @description The time, in seconds, that an InnoDB transaction waits for a row lock. before giving up.
+ * @example 50
+ */
+ innodb_lock_wait_timeout?: number;
+ /**
+ * @description The size of the buffer, in bytes, that InnoDB uses to write to the log files. on disk.
+ * @example 16777216
+ */
+ innodb_log_buffer_size?: number;
+ /**
+ * @description The upper limit, in bytes, of the size of the temporary log files used during online DDL operations for InnoDB tables.
+ * @example 134217728
+ */
+ innodb_online_alter_log_max_size?: number;
+ /**
+ * @description When enabled, records information about all deadlocks in InnoDB user transactions in the error log. Disabled by default.
+ * @example true
+ */
+ innodb_print_all_deadlocks?: boolean;
+ /**
+ * @description When enabled, transaction timeouts cause InnoDB to abort and roll back the entire transaction.
+ * @example true
+ */
+ innodb_rollback_on_timeout?: boolean;
+ /**
+ * @description The time, in seconds, the server waits for activity on an interactive. connection before closing it.
+ * @example 3600
+ */
+ interactive_timeout?: number;
+ /**
+ * @description The storage engine for in-memory internal temporary tables.
+ * @example TempTable
+ * @enum {string}
+ */
+ internal_tmp_mem_storage_engine?: "TempTable" | "MEMORY";
+ /**
+ * @description The time, in seconds, to wait for more data from an existing connection. aborting the read.
+ * @example 30
+ */
+ net_read_timeout?: number;
+ /**
+ * @description The number of seconds to wait for a block to be written to a connection before aborting the write.
+ * @example 30
+ */
+ net_write_timeout?: number;
+ /**
+ * @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.
+ * @example true
+ */
+ sql_require_primary_key?: boolean;
+ /**
+ * @description The number of seconds the server waits for activity on a noninteractive connection before closing it.
+ * @example 28800
+ */
+ wait_timeout?: number;
+ /**
+ * @description The size of the largest message, in bytes, that can be received by the server. Default is 67108864 (64M).
+ * @example 67108864
+ */
+ max_allowed_packet?: number;
+ /**
+ * @description The maximum size, in bytes, of internal in-memory tables. Also set tmp_table_size. Default is 16777216 (16M)
+ * @example 16777216
+ */
+ max_heap_table_size?: number;
+ /**
+ * @description The sort buffer size, in bytes, for ORDER BY optimization. Default is 262144. (256K).
+ * @example 262144
+ */
+ sort_buffer_size?: number;
+ /**
+ * @description The maximum size, in bytes, of internal in-memory tables. Also set max_heap_table_size. Default is 16777216 (16M).
+ * @example 16777216
+ */
+ tmp_table_size?: number;
+ /**
+ * @description When enabled, captures slow queries. When disabled, also truncates the mysql.slow_log table. Default is false.
+ * @example true
+ */
+ slow_query_log?: boolean;
+ /**
+ * @description The time, in seconds, for a query to take to execute before being captured by slow_query_logs. Default is 10 seconds.
+ * @example 10
+ */
+ long_query_time?: number;
+ /**
+ * @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.
+ * @example 600
+ */
+ binlog_retention_period?: number;
+ /**
+ * @description Specifies the maximum size of the InnoDB change buffer as a percentage of the buffer pool.
+ * @example 25
+ */
+ innodb_change_buffer_max_size?: number;
+ /**
+ * @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.
+ * @example 0
+ * @enum {integer}
+ */
+ innodb_flush_neighbors?: 0 | 1 | 2;
+ /**
+ * @description The number of I/O threads for read operations in InnoDB. Changing this parameter will lead to a restart of the MySQL service.
+ * @example 16
+ */
+ innodb_read_io_threads?: number;
+ /**
+ * @description The number of I/O threads for write operations in InnoDB. Changing this parameter will lead to a restart of the MySQL service.
+ * @example 16
+ */
+ innodb_write_io_threads?: number;
+ /**
+ * @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.
+ * @example 0
+ */
+ innodb_thread_concurrency?: number;
+ /**
+ * @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.
+ * @example 4096
+ */
+ net_buffer_length?: number;
+ };
+ /** @description PGBouncer connection pooling settings */
+ pgbouncer: {
+ /**
+ * @description Run server_reset_query (DISCARD ALL) in all pooling modes.
+ * @example false
+ */
+ server_reset_query_always?: boolean;
+ /**
+ * @description List of parameters to ignore when given in startup packet.
+ * @example [
+ * "extra_float_digits",
+ * "search_path"
+ * ]
+ */
+ ignore_startup_parameters?: ("extra_float_digits" | "search_path")[];
+ /**
+ * @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.
+ * @example 1
+ */
+ min_pool_size?: number;
+ /**
+ * @description The pooler closes any unused server connection that has been connected longer than this amount of seconds.
+ * @example 3600
+ */
+ server_lifetime?: number;
+ /**
+ * @description Drops server connections if they have been idle more than this many seconds. If 0, timeout is disabled.
+ * @example 600
+ */
+ server_idle_timeout?: number;
+ /**
+ * @description If non-zero, automatically creates a pool of that size per user when a pool doesn't exist.
+ * @example 1
+ */
+ autodb_pool_size?: number;
+ /**
+ * @description PGBouncer pool mode
+ * @example session
+ * @enum {string}
+ */
+ autodb_pool_mode?: "session" | "transaction" | "statement";
+ /**
+ * @description Only allows a maximum this many server connections per database (regardless of user). If 0, allows unlimited connections.
+ * @example 1
+ */
+ autodb_max_db_connections?: number;
+ /**
+ * @description If the automatically-created database pools have been unused this many seconds, they are freed. If 0, timeout is disabled.
+ * @example 3600
+ */
+ autodb_idle_timeout?: number;
+ };
+ /** @description TimescaleDB extension configuration values */
+ timescaledb: {
+ /**
+ * @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.
+ * @example 8
+ */
+ max_background_workers?: number;
+ };
+ postgres: {
+ /**
+ * @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.
+ * @example 200000000
+ */
+ autovacuum_freeze_max_age?: number;
+ /**
+ * @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.
+ * @example 5
+ */
+ autovacuum_max_workers?: number;
+ /**
+ * @description Specifies the minimum delay, in seconds, between autovacuum runs on any given database. The default is one minute.
+ * @example 43200
+ */
+ autovacuum_naptime?: number;
+ /**
+ * @description Specifies the minimum number of updated or deleted tuples needed to trigger a VACUUM in any one table. The default is 50 tuples.
+ * @example 50
+ */
+ autovacuum_vacuum_threshold?: number;
+ /**
+ * @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.
+ * @example 50
+ */
+ autovacuum_analyze_threshold?: number;
+ /**
+ * @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).
+ * @example 0.2
+ */
+ autovacuum_vacuum_scale_factor?: number;
+ /**
+ * @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).
+ * @example 0.2
+ */
+ autovacuum_analyze_scale_factor?: number;
+ /**
+ * @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.
+ * @example 20
+ */
+ autovacuum_vacuum_cost_delay?: number;
+ /**
+ * @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.
+ * @example -1
+ */
+ autovacuum_vacuum_cost_limit?: number;
+ /**
+ * @description The hour of day (in UTC) when backup for the service starts. New backup only starts if previous backup has already completed.
+ * @example 3
+ */
+ backup_hour?: number;
+ /**
+ * @description The minute of the backup hour when backup for the service starts. New backup is only started if previous backup has already completed.
+ * @example 30
+ */
+ backup_minute?: number;
+ /**
+ * @description Specifies the delay, in milliseconds, between activity rounds for the background writer. Default is 200 ms.
+ * @example 200
+ */
+ bgwriter_delay?: number;
+ /**
+ * @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.
+ * @example 512
+ */
+ bgwriter_flush_after?: number;
+ /**
+ * @description The maximum number of buffers that the background writer can write. Setting this to zero disables background writing. Default is 100.
+ * @example 100
+ */
+ bgwriter_lru_maxpages?: number;
+ /**
+ * @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.
+ * @example 2
+ */
+ bgwriter_lru_multiplier?: number;
+ /**
+ * @description The amount of time, in milliseconds, to wait on a lock before checking to see if there is a deadlock condition.
+ * @example 1000
+ */
+ deadlock_timeout?: number;
+ /**
+ * @description Specifies the default TOAST compression method for values of compressible columns (the default is lz4).
+ * @example lz4
+ * @enum {string}
+ */
+ default_toast_compression?: "lz4" | "pglz";
+ /**
+ * @description Time out sessions with open transactions after this number of milliseconds
+ * @example 10000
+ */
+ idle_in_transaction_session_timeout?: number;
+ /**
+ * @description Activates, in a boolean, the system-wide use of Just-in-Time Compilation (JIT).
+ * @example true
+ */
+ jit?: boolean;
+ /**
+ * @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.
+ * @example -1
+ */
+ log_autovacuum_min_duration?: number;
+ /**
+ * @description Controls the amount of detail written in the server log for each message that is logged.
+ * @example VERBOSE
+ * @enum {string}
+ */
+ log_error_verbosity?: "TERSE" | "DEFAULT" | "VERBOSE";
+ /**
+ * @description Selects one of the available log-formats. These can support popular log analyzers like pgbadger, pganalyze, etc.
+ * @example pid=%p,user=%u,db=%d,app=%a,client=%h
+ * @enum {string}
+ */
+ log_line_prefix?: "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";
+ /**
+ * @description Log statements that take more than this number of milliseconds to run. If -1, disables.
+ * @example -1
+ */
+ log_min_duration_statement?: number;
+ /**
+ * @description PostgreSQL maximum number of files that can be open per process.
+ * @example 2048
+ */
+ max_files_per_process?: number;
+ /**
+ * @description PostgreSQL maximum prepared transactions. Once increased, this parameter cannot be lowered from its set value.
+ * @example 20
+ */
+ max_prepared_transactions?: number;
+ /**
+ * @description PostgreSQL maximum predicate locks per transaction.
+ * @example 128
+ */
+ max_pred_locks_per_transaction?: number;
+ /**
+ * @description PostgreSQL maximum locks per transaction. Once increased, this parameter cannot be lowered from its set value.
+ * @example 128
+ */
+ max_locks_per_transaction?: number;
+ /**
+ * @description Maximum depth of the stack in bytes.
+ * @example 2097152
+ */
+ max_stack_depth?: number;
+ /**
+ * @description Max standby archive delay in milliseconds.
+ * @example 43200
+ */
+ max_standby_archive_delay?: number;
+ /**
+ * @description Max standby streaming delay in milliseconds.
+ * @example 43200
+ */
+ max_standby_streaming_delay?: number;
+ /**
+ * @description PostgreSQL maximum replication slots.
+ * @example 16
+ */
+ max_replication_slots?: number;
+ /**
+ * @description PostgreSQL maximum logical replication workers (taken from the pool of max_parallel_workers).
+ * @example 16
+ */
+ max_logical_replication_workers?: number;
+ /**
+ * @description Sets the maximum number of workers that the system can support for parallel queries.
+ * @example 12
+ */
+ max_parallel_workers?: number;
+ /**
+ * @description Sets the maximum number of workers that can be started by a single Gather or Gather Merge node.
+ * @example 16
+ */
+ max_parallel_workers_per_gather?: number;
+ /**
+ * @description Sets the maximum number of background processes that the system can support. Once increased, this parameter cannot be lowered from its set value.
+ * @example 16
+ */
+ max_worker_processes?: number;
+ /**
+ * @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.
+ * @example myrolename
+ */
+ "pg_partman_bgw.role"?: string;
+ /**
+ * @description Sets the time interval to run pg_partman's scheduled tasks.
+ * @example 3600
+ */
+ "pg_partman_bgw.interval"?: number;
+ /**
+ * @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.
+ * @example all
+ * @enum {string}
+ */
+ "pg_stat_statements.track"?: "all" | "top" | "none";
+ /**
+ * @description PostgreSQL temporary file limit in KiB. If -1, sets to unlimited.
+ * @example 5000000
+ */
+ temp_file_limit?: number;
+ /**
+ * @description PostgreSQL service timezone
+ * @example Europe/Helsinki
+ */
+ timezone?: string;
+ /**
+ * @description Specifies the number of bytes reserved to track the currently executing command for each active session.
+ * @example 1024
+ */
+ track_activity_query_size?: number;
+ /**
+ * @description Record commit time of transactions.
+ * @example off
+ * @enum {string}
+ */
+ track_commit_timestamp?: "off" | "on";
+ /**
+ * @description Enables tracking of function call counts and time used.
+ * @example all
+ * @enum {string}
+ */
+ track_functions?: "all" | "pl" | "none";
+ /**
+ * @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.
+ * @example off
+ * @enum {string}
+ */
+ track_io_timing?: "off" | "on";
+ /**
+ * @description PostgreSQL maximum WAL senders. Once increased, this parameter cannot be lowered from its set value.
+ * @example 32
+ */
+ max_wal_senders?: number;
+ /**
+ * @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.
+ * @example 60000
+ */
+ wal_sender_timeout?: number;
+ /**
+ * @description WAL flush interval in milliseconds. Note that setting this value to lower than the default 200ms may negatively impact performance
+ * @example 50
+ */
+ wal_writer_delay?: number;
+ /**
+ * @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.
+ * @example 41.5
+ */
+ shared_buffers_percentage?: number;
+ pgbouncer?: components["schemas"]["pgbouncer"];
+ /**
+ * @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).
+ * @example 4
+ */
+ work_mem?: number;
+ timescaledb?: components["schemas"]["timescaledb"];
+ /**
+ * @description Synchronous replication type. Note that the service plan also needs to support synchronous replication.
+ * @example off
+ * @enum {string}
+ */
+ synchronous_replication?: "off" | "quorum";
+ /**
+ * @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.
+ * @example false
+ */
+ stat_monitor_enable?: boolean;
+ };
+ /**
+ * @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
+ * @enum {string}
+ */
+ eviction_policy_model: "noeviction" | "allkeys_lru" | "allkeys_random" | "volatile_lru" | "volatile_random" | "volatile_ttl";
+ redis: {
+ redis_maxmemory_policy?: components["schemas"]["eviction_policy_model"];
+ /**
+ * @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.
+ * @example 64
+ */
+ redis_pubsub_client_output_buffer_limit?: number;
+ /**
+ * @description Set number of redis databases. Changing this will cause a restart of redis service.
+ * @example 16
+ */
+ redis_number_of_databases?: number;
+ /**
+ * @description Redis IO thread count
+ * @example 1
+ */
+ redis_io_threads?: number;
+ /**
+ * @description Counter logarithm factor for volatile-lfu and allkeys-lfu maxmemory-policies
+ * @default 10
+ * @example 10
+ */
+ redis_lfu_log_factor: number;
+ /**
+ * @description LFU maxmemory-policy counter decay time in minutes
+ * @default 1
+ * @example 1
+ */
+ redis_lfu_decay_time: number;
+ /**
+ * @description Require SSL to access Redis
+ * @default true
+ * @example true
+ */
+ redis_ssl: boolean;
+ /**
+ * @description Redis idle connection timeout in seconds
+ * @default 300
+ * @example 300
+ */
+ redis_timeout: number;
+ /**
+ * @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"`
+ * @default
+ * @example K
+ */
+ redis_notify_keyspace_events: string;
+ /**
+ * @description When persistence is 'rdb', Redis does RDB dumps each 10 minutes if any key is changed. Also RDB dumps are done according to backup schedule for backup purposes. When persistence is 'off', no RDB dumps and backups are done, so data can be lost at any moment if service is restarted for any reason, or if service is powered off. Also service can't be forked.
+ * @example rdb
+ * @enum {string}
+ */
+ redis_persistence?: "off" | "rdb";
+ /**
+ * @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
+ * @enum {string}
+ */
+ redis_acl_channels_default?: "allchannels" | "resetchannels";
+ };
+ database_config: {
+ config?: components["schemas"]["mysql"] | components["schemas"]["postgres"] | components["schemas"]["redis"];
+ };
+ ca: {
+ /**
+ * @description base64 encoding of the certificate used to secure database connections
+ * @example LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVRVENDQXFtZ0F3SUJBZ0lVRUZZWTdBWFZQS0Raam9jb1lpMk00Y0dvcU0wd0RRWUpLb1pJaHZjTkFRRU0KQlFBd09qRTRNRFlHQTFVRUF3d3ZOek0zT1RaaE1XRXRaamhrTUMwME9HSmpMV0V4Wm1NdFpqbGhNVFZsWXprdwpORGhsSUZCeWIycGxZM1FnUTBFd0hoY05NakF3TnpFM01UVTFNREEyV2hjTk16QXdOekUxTVRVMU1EQTJXakE2Ck1UZ3dOZ1lEVlFRRERDODNNemM1Tm1FeFlTMW1PR1F3TFRRNFltTXRZVEZtWXkxbU9XRXhOV1ZqT1RBME9HVWcKVUhKdmFtVmpkQ0JEUVRDQ0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBTVdScXhycwpMZnpNdHZyUmxKVEw4MldYMVBLZkhKbitvYjNYcmVBY3FZd1dBUUp2Q3IycmhxSXZieVZzMGlaU0NzOHI4c3RGClljQ0R1bkxJNmUwTy9laERZYTBIT2RrMkFFRzE1ckVOVmNha2NSczcyQWlHVHNrdkNXS2VkUjFTUWswVWt0WCsKQUg4S1ExS3F5bzNtZ2Y2cVV1WUpzc3JNTXFselk3YTN1RVpEb2ZqTjN5Q3MvM21pTVJKcVcyNm1JV0IrUUlEbAo5YzdLRVF5MTZvdCtjeHVnd0lLMm9oZHMzaFY1bjBKMFVBM0I3QWRBdXY5aUl5L3JHaHlTNm5CNTdaWm9JZnAyCnFybXdOY0UrVjlIdXhQSGtRVjFOQjUwOFFudWZ4Z0E5VCtqU2VrdGVUbWFORkxqNjFXL3BtcndrTytOaWFXUTIKaGgzVXBKOEozY1BoNkErbHRnUmpSV2NEb2lsYVNwRVVpU09WemNNYVFvalZKYVJlNk9NbnZYc29NaSs3ZzdneApWcittQ0lUcGcvck9DaXpBWWQ2UFAxLzdYTjk1ZXNmU2tBQnM5c3hJakpjTUFqbDBYTEFzRmtGZVdyeHNIajlVCmJnaDNWYXdtcnpUeXhZT0RQcXV1cS9JcGlwc0RRT3Fpb2ZsUStkWEJJL3NUT0NNbVp6K0pNcG5HYXdJREFRQUIKb3o4d1BUQWRCZ05WSFE0RUZnUVVSekdDRlE3WEtUdHRDN3JzNS8ydFlQcExTZGN3RHdZRFZSMFRCQWd3QmdFQgovd0lCQURBTEJnTlZIUThFQkFNQ0FRWXdEUVlKS29aSWh2Y05BUUVNQlFBRGdnR0JBSWFKQ0dSVVNxUExtcmcvCmk3MW10b0NHUDdzeG1BVXVCek1oOEdrU25uaVdaZnZGMTRwSUtqTlkwbzVkWmpHKzZqK1VjalZtK0RIdGE1RjYKOWJPeEk5S0NFeEI1blBjRXpMWjNZYitNOTcrellxbm9zUm85S21DVFJBb2JrNTZ0WU1FS1h1aVJja2tkMm1yUQo4cGw2N2xxdThjM1V4c0dHZEZVT01wMkk3ZTNpdUdWVm5UR0ZWM3JQZUdaQ0J3WGVyUUQyY0F4UjkzS3BnWVZ2ClhUUzk5dnpSbm1HOHhhUm9EVy9FbEdXZ2xWd0Q5a1JrbXhUUkdoYTdDWVZCcjFQVWY2dVVFVjhmVFIxc1hFZnIKLytMR1JoSVVsSUhWT3l2Yzk3YnZYQURPbWF1MWZDVE5lWGtRdTNyZnZFSlBmaFlLeVIwT0V3eWVvdlhRNzl0LwpTV2ZGTjBreU1Pc1UrNVNIdHJKSEh1eWNWcU0yQlVVK083VjM1UnNwOU9MZGRZMFFVbTZldFpEVEhhSUhYYzRRCnl1Rm1OL1NhSFZtNE0wL3BTVlJQdVd6TmpxMnZyRllvSDRtbGhIZk95TUNJMjc2elE2aWhGNkdDSHlkOUJqajcKUm1UWGEyNHM3NWhmSi9YTDV2bnJSdEtpVHJlVHF6V21EOVhnUmNMQ0gyS1hJaVRtSWc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
+ */
+ readonly certificate: string;
+ };
+ online_migration: {
+ /**
+ * @description The ID of the most recent migration.
+ * @example 77b28fc8-19ff-11eb-8c9c-c68e24557488
+ */
+ id?: string;
+ /**
+ * @description The current status of the migration.
+ * @example running
+ * @enum {string}
+ */
+ status?: "running" | "canceled" | "error" | "done";
+ /**
+ * @description The time the migration was initiated, in ISO 8601 format.
+ * @example 2020-10-29T15:57:38Z
+ */
+ created_at?: string;
+ };
+ source_database: {
+ source?: {
+ /**
+ * @description The FQDN pointing to the database cluster's current primary node.
+ * @example backend-do-user-19081923-0.db.ondigitalocean.com
+ */
+ host?: string;
+ /**
+ * @description The port on which the database cluster is listening.
+ * @example 25060
+ */
+ port?: number;
+ /**
+ * @description The name of the default database.
+ * @example defaultdb
+ */
+ dbname?: string;
+ /**
+ * @description The default user for the database.
+ * @example doadmin
+ */
+ username?: string;
+ /**
+ * @description The randomly generated password for the default user.
+ * @example wv78n3zpz42xezdk
+ */
+ password?: string;
+ };
+ /**
+ * @description Enables SSL encryption when connecting to the source database.
+ * @example false
+ */
+ disable_ssl?: boolean;
+ };
+ database_cluster_resize: {
+ /**
+ * @description A slug identifier representing desired the size of the nodes in the database cluster.
+ * @example db-s-4vcpu-8gb
+ */
+ size: string;
+ /**
+ * Format: int32
+ * @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.
+ * @example 3
+ */
+ num_nodes: number;
+ };
+ backup: {
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format at which the backup was created.
+ * @example 2019-01-31T19:25:22Z
+ */
+ created_at: string;
+ /**
+ * @description The size of the database backup in GBs.
+ * @example 0.03364864
+ */
+ size_gigabytes: number;
+ };
+ database_replica: {
+ /**
+ * Format: uuid
+ * @description A unique ID that can be used to identify and reference a database replica.
+ * @example 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
+ */
+ readonly id?: string;
+ /**
+ * @description The name to give the read-only replicating
+ * @example read-nyc3-01
+ */
+ name: string;
+ /**
+ * @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.
+ * @example nyc3
+ */
+ region?: string;
+ /**
+ * @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.
+ * @example db-s-2vcpu-4gb
+ */
+ size?: string;
+ /**
+ * @description A string representing the current status of the database cluster.
+ * @example creating
+ * @enum {string}
+ */
+ readonly status?: "creating" | "online" | "resizing" | "migrating" | "forking";
+ /**
+ * @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.
+ * @example [
+ * "production"
+ * ]
+ */
+ tags?: string[];
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the database cluster was created.
+ * @example 2019-01-11T18:37:36Z
+ */
+ readonly created_at?: string;
+ /**
+ * @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.
+ * @example 9423cbad-9211-442f-820b-ef6915e99b5f
+ */
+ private_network_uuid?: string;
+ connection?: unknown & components["schemas"]["database_connection"];
+ private_connection?: unknown & components["schemas"]["database_connection"];
+ };
+ database: {
+ /**
+ * @description The name of the database.
+ * @example alpha
+ */
+ name: string;
+ };
+ connection_pool: {
+ /**
+ * @description A unique name for the connection pool. Must be between 3 and 60 characters.
+ * @example backend-pool
+ */
+ name: string;
+ /**
+ * @description The PGBouncer transaction mode for the connection pool. The allowed values are session, transaction, and statement.
+ * @example transaction
+ */
+ mode: string;
+ /**
+ * 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
+ */
+ size: number;
+ /**
+ * @description The database for use with the connection pool.
+ * @example defaultdb
+ */
+ db: 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
+ */
+ user?: string;
+ connection?: components["schemas"]["database_connection"] & unknown;
+ private_connection?: components["schemas"]["database_connection"] & unknown;
+ };
+ connection_pools: {
+ /** @description An array of connection pool objects. */
+ readonly pools?: components["schemas"]["connection_pool"][];
+ };
+ connection_pool_update: {
+ /**
+ * @description The PGBouncer transaction mode for the connection pool. The allowed values are session, transaction, and statement.
+ * @example transaction
+ */
+ mode: string;
+ /**
+ * 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
+ */
+ size: number;
+ /**
+ * @description The database for use with the connection pool.
+ * @example defaultdb
+ */
+ db: 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
+ */
+ user?: string;
+ };
+ sql_mode: {
+ /**
+ * @description A string specifying the configured SQL modes for the MySQL cluster.
+ * @example ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,STRICT_ALL_TABLES
+ */
+ sql_mode: string;
+ };
+ /**
+ * @description A string representing the version of the database engine in use for the cluster.
+ * @example 8
+ */
+ version: string;
+ "version-2": {
+ version?: components["schemas"]["version"];
+ };
+ domain: {
+ /**
+ * @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
+ */
+ name?: string;
+ /**
+ * @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
+ */
+ ip_address?: string;
+ /**
+ * @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
+ */
+ readonly ttl?: number | null;
+ /**
+ * @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
+ *
+ */
+ readonly zone_file?: string | null;
+ };
+ domain_record: {
+ /**
+ * @description A unique identifier for each domain record.
+ * @example 28448429
+ */
+ readonly id?: number;
+ /**
+ * @description The type of the DNS record. For example: A, CNAME, TXT, ...
+ * @example NS
+ */
+ type: string;
+ /**
+ * @description The host name, alias, or service being defined by the record.
+ * @example @
+ */
+ name?: 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
+ */
+ data?: string;
+ /**
+ * @description The priority for SRV and MX records.
+ * @example null
+ */
+ priority?: number | null;
+ /**
+ * @description The port for SRV records.
+ * @example null
+ */
+ port?: number | null;
+ /**
+ * @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
+ */
+ ttl?: number;
+ /**
+ * @description The weight for SRV records.
+ * @example null
+ */
+ weight?: number | null;
+ /**
+ * @description An unsigned integer between 0-255 used for CAA records.
+ * @example null
+ */
+ flags?: number | null;
+ /**
+ * @description The parameter tag for CAA records. Valid values are "issue", "issuewild", or "iodef"
+ * @example null
+ */
+ tag?: string | null;
+ };
+ domain_record_a: components["schemas"]["domain_record"] & unknown;
+ domain_record_aaaa: components["schemas"]["domain_record"] & unknown;
+ domain_record_caa: components["schemas"]["domain_record"] & unknown;
+ domain_record_cname: components["schemas"]["domain_record"] & unknown;
+ domain_record_mx: components["schemas"]["domain_record"] & unknown;
+ domain_record_ns: components["schemas"]["domain_record"] & unknown;
+ domain_record_soa: components["schemas"]["domain_record"] & unknown;
+ domain_record_srv: components["schemas"]["domain_record"] & unknown;
+ domain_record_txt: components["schemas"]["domain_record"] & unknown;
+ /**
+ * @deprecated
+ * @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://www.digitalocean.com/docs/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.
+ *
+ */
+ kernel: {
+ /**
+ * @description A unique number used to identify and reference a specific kernel.
+ * @example 7515
+ */
+ id?: number;
+ /**
+ * @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.
+ * @example DigitalOcean GrubLoader v0.2 (20160714)
+ */
+ name?: string;
+ /**
+ * @description A standard kernel version string representing the version, patch, and release information.
+ * @example 2016.07.13-DigitalOcean_loader_Ubuntu
+ */
+ version?: string;
+ } | null;
+ /**
+ * @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
+ */
+ image_name: 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.
+ * @example Ubuntu
+ * @enum {string}
+ */
+ distribution: "Arch Linux" | "CentOS" | "CoreOS" | "Debian" | "Fedora" | "Fedora Atomic" | "FreeBSD" | "Gentoo" | "openSUSE" | "RancherOS" | "Rocky Linux" | "Ubuntu" | "Unknown";
+ /**
+ * @description The slug identifier for the region where the resource will initially be available.
+ * @example nyc3
+ * @enum {string}
+ */
+ region_slug: "ams1" | "ams2" | "ams3" | "blr1" | "fra1" | "lon1" | "nyc1" | "nyc2" | "nyc3" | "sfo1" | "sfo2" | "sfo3" | "sgp1" | "tor1";
+ /**
+ * @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"
+ * ]
+ */
+ regions_array: components["schemas"]["region_slug"][];
+ /**
+ * @description An optional free-form text field to describe an image.
+ * @example
+ */
+ image_description: string;
+ /**
+ * @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"
+ * ]
+ */
+ tags_array: string[] | null;
+ image: {
+ /**
+ * @description A unique number that can be used to identify and reference a specific image.
+ * @example 7555620
+ */
+ readonly id?: number;
+ name?: components["schemas"]["image_name"];
+ /**
+ * @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).
+ * @example snapshot
+ * @enum {string}
+ */
+ type?: "base" | "snapshot" | "backup" | "custom" | "admin";
+ distribution?: components["schemas"]["distribution"];
+ /**
+ * @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
+ */
+ slug?: string | null;
+ /**
+ * @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
+ */
+ public?: boolean;
+ regions?: components["schemas"]["regions_array"];
+ /**
+ * 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
+ */
+ created_at?: string;
+ /**
+ * @description The minimum disk size in GB required for a Droplet to use this image.
+ * @example 20
+ */
+ min_disk_size?: number | null;
+ /**
+ * Format: float
+ * @description The size of the image in gigabytes.
+ * @example 2.34
+ */
+ size_gigabytes?: number | null;
+ description?: components["schemas"]["image_description"];
+ tags?: components["schemas"]["tags_array"];
+ /**
+ * @description A status string indicating the state of a custom image. This may be `NEW`,
+ * `available`, `pending`, `deleted`, or `retired`.
+ * @example NEW
+ * @enum {string}
+ */
+ status?: "NEW" | "available" | "pending" | "deleted" | "retired";
+ /**
+ * @description A string containing information about errors that may occur when importing
+ * a custom image.
+ * @example
+ */
+ error_message?: string;
+ };
+ size: {
+ /**
+ * @description A human-readable string that is used to uniquely identify each size.
+ * @example s-1vcpu-1gb
+ */
+ slug: string;
+ /**
+ * @description The amount of RAM allocated to Droplets created of this size. The value is represented in megabytes.
+ * @example 1024
+ */
+ memory: number;
+ /**
+ * @description The integer of number CPUs allocated to Droplets of this size.
+ * @example 1
+ */
+ vcpus: number;
+ /**
+ * @description The amount of disk space set aside for Droplets of this size. The value is represented in gigabytes.
+ * @example 25
+ */
+ disk: number;
+ /**
+ * Format: float
+ * @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.
+ * @example 1
+ */
+ transfer: number;
+ /**
+ * Format: float
+ * @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.
+ * @example 5
+ */
+ price_monthly: number;
+ /**
+ * Format: float
+ * @description This describes the price of the Droplet size as measured hourly. The value is measured in US dollars.
+ * @example 0.00743999984115362
+ */
+ price_hourly: number;
+ /**
+ * @description An array containing the region slugs where this size is available for Droplet creates.
+ * @example [
+ * "ams2",
+ * "ams3",
+ * "blr1",
+ * "fra1",
+ * "lon1",
+ * "nyc1",
+ * "nyc2",
+ * "nyc3",
+ * "sfo1",
+ * "sfo2",
+ * "sfo3",
+ * "sgp1",
+ * "tor1"
+ * ]
+ */
+ regions: string[];
+ /**
+ * @description This is a boolean value that represents whether new Droplets can be created with this size.
+ * @default true
+ * @example true
+ */
+ available: boolean;
+ /**
+ * @description A string describing the class of Droplets created from this size. For example: Basic, General Purpose, CPU-Optimized, Memory-Optimized, or Storage-Optimized.
+ * @example Basic
+ */
+ description: string;
+ };
+ network_v4: {
+ /**
+ * Format: ipv4
+ * @description The IP address of the IPv4 network interface.
+ * @example 104.236.32.182
+ */
+ ip_address?: string;
+ /**
+ * Format: ipv4
+ * @description The netmask of the IPv4 network interface.
+ * @example 255.255.192.0
+ */
+ netmask?: string;
+ /**
+ * @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.
+ *
+ * @example 104.236.0.1
+ */
+ gateway?: string;
+ /**
+ * @description The type of the IPv4 network interface.
+ * @example public
+ * @enum {string}
+ */
+ type?: "public" | "private";
+ };
+ network_v6: {
+ /**
+ * Format: ipv6
+ * @description The IP address of the IPv6 network interface.
+ * @example 2604:a880:0:1010::18a:a001
+ */
+ ip_address?: string;
+ /**
+ * @description The netmask of the IPv6 network interface.
+ * @example 64
+ */
+ netmask?: number;
+ /**
+ * Format: ipv6
+ * @description The gateway of the specified IPv6 network interface.
+ * @example 2604:a880:0:1010::1
+ */
+ gateway?: string;
+ /**
+ * @description The type of the IPv6 network interface.
+ *
+ * **Note**: IPv6 private networking is not currently supported.
+ *
+ * @example public
+ * @enum {string}
+ */
+ type?: "public";
+ };
+ droplet: {
+ /**
+ * @description A unique identifier for each Droplet instance. This is automatically generated upon Droplet creation.
+ * @example 3164444
+ */
+ id: number;
+ /**
+ * @description The human-readable name set for the Droplet instance.
+ * @example example.com
+ */
+ name: string;
+ /**
+ * @description Memory of the Droplet in megabytes.
+ * @example 1024
+ */
+ memory: number;
+ /**
+ * @description The number of virtual CPUs.
+ * @example 1
+ */
+ vcpus: number;
+ /**
+ * @description The size of the Droplet's disk in gigabytes.
+ * @example 25
+ */
+ disk: number;
+ /**
+ * @description A boolean value indicating whether the Droplet has been locked, preventing actions by users.
+ * @example false
+ */
+ locked: boolean;
+ /**
+ * @description A status string indicating the state of the Droplet instance. This may be "new", "active", "off", or "archive".
+ * @example active
+ * @enum {string}
+ */
+ status: "new" | "active" | "off" | "archive";
+ kernel?: components["schemas"]["kernel"];
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the Droplet was created.
+ * @example 2020-07-21T18:37:44Z
+ */
+ created_at: string;
+ /**
+ * @description An array of features enabled on this Droplet.
+ * @example [
+ * "backups",
+ * "private_networking",
+ * "ipv6"
+ * ]
+ */
+ features: string[];
+ /**
+ * @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.
+ * @example [
+ * 53893572
+ * ]
+ */
+ backup_ids: number[];
+ /** @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. */
+ next_backup_window: {
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format specifying the start of the Droplet's backup window.
+ * @example 2019-12-04T00:00:00Z
+ */
+ start?: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format specifying the end of the Droplet's backup window.
+ * @example 2019-12-04T23:00:00Z
+ */
+ end?: string;
+ } | null;
+ /**
+ * @description An array of snapshot IDs of any snapshots created from the Droplet instance.
+ * @example [
+ * 67512819
+ * ]
+ */
+ snapshot_ids: number[];
+ image: components["schemas"]["image"];
+ /**
+ * @description A flat array including the unique identifier for each Block Storage volume attached to the Droplet.
+ * @example [
+ * "506f78a4-e098-11e5-ad9f-000f53306ae1"
+ * ]
+ */
+ volume_ids: string[];
+ size: components["schemas"]["size"];
+ /**
+ * @description The unique slug identifier for the size of this Droplet.
+ * @example s-1vcpu-1gb
+ */
+ size_slug: string;
+ /** @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. */
+ networks: {
+ v4?: components["schemas"]["network_v4"][];
+ v6?: components["schemas"]["network_v6"][];
+ };
+ region: components["schemas"]["region"];
+ /**
+ * @description An array of Tags the Droplet has been tagged with.
+ * @example [
+ * "web",
+ * "env:prod"
+ * ]
+ */
+ tags: string[];
+ /**
+ * @description A string specifying the UUID of the VPC to which the Droplet is assigned.
+ * @example 760e09ef-dc84-11e8-981e-3cfdfeaae000
+ */
+ vpc_uuid?: string;
+ };
+ droplet_create: {
+ /**
+ * @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.
+ * @example nyc3
+ */
+ region?: string;
+ /**
+ * @description The slug identifier for the size that you wish to select for this Droplet.
+ * @example s-1vcpu-1gb
+ */
+ size: string;
+ /**
+ * @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.
+ * @example ubuntu-20-04-x64
+ */
+ image: string | number;
+ /**
+ * @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.
+ * @default []
+ * @example [
+ * 289794,
+ * "3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45"
+ * ]
+ */
+ ssh_keys: (string | number)[];
+ /**
+ * @description A boolean indicating whether automated backups should be enabled for the Droplet.
+ * @default false
+ * @example true
+ */
+ backups: boolean;
+ /**
+ * @description A boolean indicating whether to enable IPv6 on the Droplet.
+ * @default false
+ * @example true
+ */
+ ipv6: boolean;
+ /**
+ * @description A boolean indicating whether to install the DigitalOcean agent for monitoring.
+ * @default false
+ * @example true
+ */
+ monitoring: boolean;
+ /**
+ * @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.
+ * @default []
+ * @example [
+ * "env:prod",
+ * "web"
+ * ]
+ */
+ tags: string[] | null;
+ /**
+ * @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.
+ * @example #cloud-config
+ * runcmd:
+ * - touch /test.txt
+ *
+ */
+ user_data?: string;
+ /**
+ * @deprecated
+ * @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.
+ * @default false
+ * @example true
+ */
+ private_networking: boolean;
+ /**
+ * @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.
+ * @default []
+ * @example [
+ * "12e97116-7280-11ed-b3d0-0a58ac146812"
+ * ]
+ */
+ volumes: string[];
+ /**
+ * @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.
+ * @example 760e09ef-dc84-11e8-981e-3cfdfeaae000
+ */
+ vpc_uuid?: string;
+ /**
+ * @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`.
+ * @example true
+ */
+ with_droplet_agent?: boolean;
+ };
+ /** Single Droplet Request */
+ droplet_single_create: {
+ /**
+ * @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.
+ * @example example.com
+ */
+ name: string;
+ } & components["schemas"]["droplet_create"];
+ /** Multiple Droplet Request */
+ droplet_multi_create: {
+ /**
+ * @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.
+ * @example [
+ * "sub-01.example.com",
+ * "sub-02.example.com"
+ * ]
+ */
+ names: string[];
+ } & components["schemas"]["droplet_create"];
+ /** @description The linked actions can be used to check the status of a Droplet's create event. */
+ action_link: {
+ /**
+ * @description A unique numeric ID that can be used to identify and reference an action.
+ * @example 7515
+ */
+ id?: number;
+ /**
+ * @description A string specifying the type of the related action.
+ * @example create
+ */
+ rel?: string;
+ /**
+ * Format: uri
+ * @description A URL that can be used to access the action.
+ * @example https://api.digitalocean.com/v2/actions/7515
+ */
+ href?: string;
+ };
+ snapshots_base: {
+ /**
+ * @description A human-readable name for the snapshot.
+ * @example web-01-1595954862243
+ */
+ name: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the snapshot was created.
+ * @example 2020-07-28T16:47:44Z
+ */
+ created_at: string;
+ /**
+ * @description An array of the regions that the snapshot is available in. The regions are represented by their identifying slug values.
+ * @example [
+ * "nyc3",
+ * "sfo3"
+ * ]
+ */
+ regions: string[];
+ /**
+ * @description The minimum size in GB required for a volume or Droplet to use this snapshot.
+ * @example 25
+ */
+ min_disk_size: number;
+ /**
+ * Format: float
+ * @description The billable size of the snapshot in gigabytes.
+ * @example 2.34
+ */
+ size_gigabytes: number;
+ };
+ droplet_snapshot: {
+ /**
+ * @description The unique identifier for the snapshot or backup.
+ * @example 6372321
+ */
+ id: number;
+ } & components["schemas"]["snapshots_base"] & {
+ /**
+ * @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.
+ * @example snapshot
+ * @enum {string}
+ */
+ type: "snapshot" | "backup";
+ };
+ /** @description Specifies the action that will be taken on the Droplet. */
+ droplet_action: {
+ /**
+ * @description The type of action to initiate for the Droplet.
+ * @example reboot
+ * @enum {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";
+ };
+ droplet_action_restore: components["schemas"]["droplet_action"] & {
+ /**
+ * @description The ID of a backup of the current Droplet instance to restore from.
+ * @example 12389723
+ */
+ image?: number;
+ };
+ droplet_action_resize: components["schemas"]["droplet_action"] & {
+ /**
+ * @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.
+ * @example true
+ */
+ disk?: boolean;
+ /**
+ * @description The slug identifier for the size to which you wish to resize the Droplet.
+ * @example s-2vcpu-2gb
+ */
+ size?: string;
+ };
+ droplet_action_rebuild: components["schemas"]["droplet_action"] & {
+ /**
+ * @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.
+ * @example ubuntu-20-04-x64
+ */
+ image?: string | number;
+ };
+ droplet_action_rename: components["schemas"]["droplet_action"] & {
+ /**
+ * @description The new name for the Droplet.
+ * @example nifty-new-name
+ */
+ name?: string;
+ };
+ droplet_action_change_kernel: components["schemas"]["droplet_action"] & {
+ /**
+ * @description A unique number used to identify and reference a specific kernel.
+ * @example 12389723
+ */
+ kernel?: number;
+ };
+ droplet_action_snapshot: components["schemas"]["droplet_action"] & {
+ /**
+ * @description The name to give the new snapshot of the Droplet.
+ * @example Nifty New Snapshot
+ */
+ name?: string;
+ };
+ firewall_rule_base: {
+ /**
+ * @description The type of traffic to be allowed. This may be one of `tcp`, `udp`, or `icmp`.
+ * @example tcp
+ * @enum {string}
+ */
+ protocol: "tcp" | "udp" | "icmp";
+ /**
+ * @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
+ */
+ ports: string;
+ };
+ firewall_rule_target: {
+ /**
+ * @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"
+ * ]
+ */
+ addresses?: string[];
+ /**
+ * @description An array containing the IDs of the Droplets to which the firewall will allow traffic.
+ * @example [
+ * 8043964
+ * ]
+ */
+ droplet_ids?: number[];
+ /**
+ * @description An array containing the IDs of the load balancers to which the firewall will allow traffic.
+ * @example [
+ * "4de7ac8b-495b-4884-9a69-1050c6793cd6"
+ * ]
+ */
+ load_balancer_uids?: string[];
+ /**
+ * @description An array containing the IDs of the Kubernetes clusters to which the firewall will allow traffic.
+ * @example [
+ * "41b74c5d-9bd0-5555-5555-a57c495b81a3"
+ * ]
+ */
+ kubernetes_ids?: string[];
+ tags?: components["schemas"]["tags_array"] & unknown;
+ };
+ firewall_rules: {
+ inbound_rules?: (components["schemas"]["firewall_rule_base"] & {
+ sources: components["schemas"]["firewall_rule_target"] & unknown;
+ })[] | null;
+ outbound_rules?: (components["schemas"]["firewall_rule_base"] & {
+ destinations: components["schemas"]["firewall_rule_target"] & unknown;
+ })[] | null;
+ };
+ firewall: {
+ /**
+ * @description A unique ID that can be used to identify and reference a firewall.
+ * @example bb4b2611-3d72-467b-8602-280330ecd65c
+ */
+ readonly id?: string;
+ /**
+ * @description A status string indicating the current state of the firewall. This can be "waiting", "succeeded", or "failed".
+ * @example waiting
+ * @enum {string}
+ */
+ readonly status?: "waiting" | "succeeded" | "failed";
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the firewall was created.
+ * @example 2020-05-23T21:24:00Z
+ */
+ readonly created_at?: string;
+ /**
+ * @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.
+ * @example [
+ * {
+ * "droplet_id": 8043964,
+ * "removing": false,
+ * "status": "waiting"
+ * }
+ * ]
+ */
+ readonly pending_changes?: {
+ /** @example 8043964 */
+ droplet_id?: number;
+ /** @example false */
+ removing?: boolean;
+ /** @example waiting */
+ status?: 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 (-).
+ * @example firewall
+ */
+ name?: string;
+ /**
+ * @description An array containing the IDs of the Droplets assigned to the firewall.
+ * @example [
+ * 8043964
+ * ]
+ */
+ droplet_ids?: number[] | null;
+ tags?: components["schemas"]["tags_array"] & unknown;
+ } & components["schemas"]["firewall_rules"];
+ /** @description An objects containing information about a resource associated with a Droplet. */
+ associated_resource: {
+ /**
+ * @description The unique identifier for the resource associated with the Droplet.
+ * @example 61486916
+ */
+ id?: string;
+ /**
+ * @description The name of the resource associated with the Droplet.
+ * @example ubuntu-s-1vcpu-1gb-nyc1-01-1585758823330
+ */
+ name?: string;
+ /**
+ * @description The cost of the resource in USD per month if the resource is retained after the Droplet is destroyed.
+ * @example 0.05
+ */
+ cost?: string;
+ };
+ /** @description An object containing information about a resource to be scheduled for deletion. */
+ selective_destroy_associated_resource: {
+ /**
+ * @deprecated
+ * @description An array of unique identifiers for the floating IPs to be scheduled for deletion.
+ * @example [
+ * "6186916"
+ * ]
+ */
+ floating_ips?: string[];
+ /**
+ * @description An array of unique identifiers for the reserved IPs to be scheduled for deletion.
+ * @example [
+ * "6186916"
+ * ]
+ */
+ reserved_ips?: string[];
+ /**
+ * @description An array of unique identifiers for the snapshots to be scheduled for deletion.
+ * @example [
+ * "61486916"
+ * ]
+ */
+ snapshots?: string[];
+ /**
+ * @description An array of unique identifiers for the volumes to be scheduled for deletion.
+ * @example [
+ * "ba49449a-7435-11ea-b89e-0a58ac14480f"
+ * ]
+ */
+ volumes?: string[];
+ /**
+ * @description An array of unique identifiers for the volume snapshots to be scheduled for deletion.
+ * @example [
+ * "edb0478d-7436-11ea-86e6-0a58ac144b91"
+ * ]
+ */
+ volume_snapshots?: string[];
+ };
+ /** @description An object containing information about a resource scheduled for deletion. */
+ destroyed_associated_resource: {
+ /**
+ * @description The unique identifier for the resource scheduled for deletion.
+ * @example 61486916
+ */
+ id?: string;
+ /**
+ * @description The name of the resource scheduled for deletion.
+ * @example ubuntu-s-1vcpu-1gb-nyc1-01-1585758823330
+ */
+ name?: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format indicating when the resource was destroyed if the request was successful.
+ * @example 2020-04-01T18:11:49Z
+ */
+ destroyed_at?: string;
+ /**
+ * @description A string indicating that the resource was not successfully destroyed and providing additional information.
+ * @example
+ */
+ error_message?: string;
+ };
+ /** @description An objects containing information about a resources scheduled for deletion. */
+ associated_resource_status: {
+ droplet?: components["schemas"]["destroyed_associated_resource"];
+ /** @description An object containing additional information about resource related to a Droplet requested to be destroyed. */
+ resources?: {
+ reserved_ips?: components["schemas"]["destroyed_associated_resource"][];
+ floating_ips?: components["schemas"]["destroyed_associated_resource"][];
+ snapshots?: components["schemas"]["destroyed_associated_resource"][];
+ volumes?: components["schemas"]["destroyed_associated_resource"][];
+ volume_snapshots?: components["schemas"]["destroyed_associated_resource"][];
+ };
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format indicating when the requested action was completed.
+ * @example 2020-04-01T18:11:49Z
+ */
+ completed_at?: string;
+ /**
+ * @description A count of the associated resources that failed to be destroyed, if any.
+ * @example 0
+ */
+ failures?: number;
+ };
+ floating_ip: {
+ /**
+ * Format: ipv4
+ * @description The public IP address of the floating IP. It also serves as its identifier.
+ * @example 45.55.96.47
+ */
+ ip?: string;
+ region?: components["schemas"]["region"] & Record;
+ /**
+ * @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.
+ * @example null
+ */
+ droplet?: Record | components["schemas"]["droplet"];
+ /**
+ * @description A boolean value indicating whether or not the floating IP has pending actions preventing new ones from being submitted.
+ * @example true
+ */
+ locked?: boolean;
+ /**
+ * Format: uuid
+ * @description The UUID of the project to which the reserved IP currently belongs.
+ * @example 746c6152-2fa2-11ed-92d3-27aaa54e4988
+ */
+ project_id?: string;
+ };
+ floating_ip_create: {
+ /**
+ * @description The ID of the Droplet that the floating IP will be assigned to.
+ * @example 2457247
+ */
+ droplet_id: number;
+ } | {
+ /**
+ * @description The slug identifier for the region the floating IP will be reserved to.
+ * @example nyc3
+ */
+ region: string;
+ /**
+ * Format: uuid
+ * @description The UUID of the project to which the floating IP will be assigned.
+ * @example 746c6152-2fa2-11ed-92d3-27aaa54e4988
+ */
+ project_id?: string;
+ };
+ floatingIPsAction: {
+ /**
+ * @description The type of action to initiate for the floating IP.
+ * @enum {string}
+ */
+ type: "assign" | "unassign";
+ };
+ floating_ip_action_assign: {
+ type: "assign";
+ } & (Omit & {
+ /**
+ * @description The ID of the Droplet that the floating IP will be assigned to.
+ * @example 758604968
+ */
+ droplet_id: number;
+ });
+ floating_ip_action_unassign: {
+ type: "unassign";
+ } & (Omit & Record);
+ namespace_info: {
+ /**
+ * @description The namespace's API hostname. Each function in a namespace is provided an endpoint at the namespace's hostname.
+ * @example https://api_host.io
+ */
+ api_host?: string;
+ /**
+ * @description A unique string format of UUID with a prefix fn-.
+ * @example fn-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
+ */
+ namespace?: string;
+ /**
+ * @description UTC time string.
+ * @example 2022-09-14T04:16:45Z
+ */
+ created_at?: string;
+ /**
+ * @description UTC time string.
+ * @example 2022-09-14T04:16:45Z
+ */
+ updated_at?: string;
+ /**
+ * @description The namespace's unique name.
+ * @example my namespace
+ */
+ label?: string;
+ /**
+ * @description The namespace's datacenter region.
+ * @example nyc1
+ */
+ region?: string;
+ /**
+ * @description The namespace's Universally Unique Identifier.
+ * @example xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
+ */
+ uuid?: string;
+ /**
+ * @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.
+ * @example d1zcd455h01mqjfs4s2eaewyejehi5f2uj4etqq3h7cera8iwkub6xg5of1wdde2
+ */
+ key?: string;
+ };
+ create_namespace: {
+ /**
+ * @description The [datacenter region](https://docs.digitalocean.com/products/platform/availability-matrix/#available-datacenters) in which to create the namespace.
+ * @example nyc1
+ */
+ region: string;
+ /**
+ * @description The namespace's unique name.
+ * @example my namespace
+ */
+ label: string;
+ };
+ /** @description Trigger details for SCHEDULED type, where body is optional.
+ * */
+ scheduled_details: {
+ /**
+ * @description valid cron expression string which is required for SCHEDULED type triggers.
+ * @example * * * * *
+ */
+ cron: string;
+ /** @description Optional data to be sent to function while triggering the function. */
+ body?: {
+ /** @example Welcome to DO! */
+ name?: string;
+ } | null;
+ };
+ trigger_info: {
+ /**
+ * @description A unique string format of UUID with a prefix fn-.
+ * @example fn-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
+ */
+ namespace?: string;
+ /**
+ * @description The trigger's unique name within the namespace.
+ * @example my trigger
+ */
+ name?: string;
+ /**
+ * @description Name of function(action) that exists in the given namespace.
+ * @example hello
+ */
+ function?: string;
+ /**
+ * @description String which indicates the type of trigger source like SCHEDULED.
+ * @example SCHEDULED
+ */
+ type?: string;
+ /**
+ * @description Indicates weather the trigger is paused or unpaused.
+ * @example true
+ */
+ is_enabled?: boolean;
+ /**
+ * @description UTC time string.
+ * @example 2022-11-11T04:16:45Z
+ */
+ created_at?: string;
+ /**
+ * @description UTC time string.
+ * @example 2022-11-11T04:16:45Z
+ */
+ updated_at?: string;
+ scheduled_details?: components["schemas"]["scheduled_details"];
+ scheduled_runs?: {
+ /**
+ * @description Indicates last run time. null value indicates trigger not run yet.
+ * @example 2022-11-11T04:16:45Z
+ */
+ last_run_at?: string | null;
+ /**
+ * @description Indicates next run time. null value indicates trigger will not run.
+ * @example 2022-11-11T04:16:45Z
+ */
+ next_run_at?: string | null;
+ };
+ };
+ create_trigger: {
+ /**
+ * @description The trigger's unique name within the namespace.
+ * @example my trigger
+ */
+ name: string;
+ /**
+ * @description Name of function(action) that exists in the given namespace.
+ * @example hello
+ */
+ function: string;
+ /**
+ * @description One of different type of triggers. Currently only SCHEDULED is supported.
+ * @example SCHEDULED
+ */
+ type: string;
+ /**
+ * @description Indicates weather the trigger is paused or unpaused.
+ * @example true
+ */
+ is_enabled: boolean;
+ scheduled_details: components["schemas"]["scheduled_details"];
+ };
+ update_trigger: {
+ /**
+ * @description Indicates weather the trigger is paused or unpaused.
+ * @example true
+ */
+ is_enabled?: boolean;
+ scheduled_details?: components["schemas"]["scheduled_details"];
+ };
+ image_update: {
+ name?: components["schemas"]["image_name"];
+ distribution?: components["schemas"]["distribution"];
+ description?: components["schemas"]["image_description"];
+ };
+ /** @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_new_custom: WithRequired;
+ image_action_base: {
+ /**
+ * @description The action to be taken on the image. Can be either `convert` or `transfer`.
+ * @example convert
+ * @enum {string}
+ */
+ type: "convert" | "transfer";
+ };
+ image_action_transfer: components["schemas"]["image_action_base"] & {
+ region: components["schemas"]["region_slug"];
+ };
+ kubernetes_node_pool_size: {
+ /**
+ * @description The slug identifier for the type of Droplet used as workers in the node pool.
+ * @example s-1vcpu-2gb
+ */
+ size?: string;
+ };
+ kubernetes_node_pool_taint: {
+ /**
+ * @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`.
+ * @example priority
+ */
+ key?: string;
+ /**
+ * @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`.
+ * @example high
+ */
+ value?: string;
+ /**
+ * @description How the node reacts to pods that it won't tolerate. Available effect values are `NoSchedule`, `PreferNoSchedule`, and `NoExecute`.
+ * @example NoSchedule
+ * @enum {string}
+ */
+ effect?: "NoSchedule" | "PreferNoSchedule" | "NoExecute";
+ };
+ node: {
+ /**
+ * Format: uuid
+ * @description A unique ID that can be used to identify and reference the node.
+ * @example e78247f8-b1bb-4f7a-8db9-2a5f8d4b8f8f
+ */
+ id?: string;
+ /**
+ * @description An automatically generated, human-readable name for the node.
+ * @example adoring-newton-3niq
+ */
+ name?: string;
+ /** @description An object containing a `state` attribute whose value is set to a string indicating the current status of the node. */
+ status?: {
+ /**
+ * @description A string indicating the current status of the node.
+ * @example provisioning
+ * @enum {string}
+ */
+ state?: "provisioning" | "running" | "draining" | "deleting";
+ };
+ /**
+ * @description The ID of the Droplet used for the worker node.
+ * @example 205545370
+ */
+ droplet_id?: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the node was created.
+ * @example 2018-11-15T16:00:11Z
+ */
+ created_at?: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the node was last updated.
+ * @example 2018-11-15T16:00:11Z
+ */
+ updated_at?: string;
+ };
+ kubernetes_node_pool_base: {
+ /**
+ * Format: uuid
+ * @description A unique ID that can be used to identify and reference a specific node pool.
+ * @example cdda885e-7663-40c8-bc74-3a036c66545d
+ */
+ readonly id?: string;
+ /**
+ * @description A human-readable name for the node pool.
+ * @example frontend-pool
+ */
+ name?: string;
+ /**
+ * @description The number of Droplet instances in the node pool.
+ * @example 3
+ */
+ count?: number;
+ /**
+ * @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`.
+ * @example [
+ * "k8s",
+ * "k8s:bd5f5959-5e1e-4205-a714-a914373942af",
+ * "k8s-worker",
+ * "production",
+ * "web-team"
+ * ]
+ */
+ tags?: string[];
+ /**
+ * @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.
+ * @example null
+ */
+ labels?: Record;
+ /** @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. */
+ taints?: components["schemas"]["kubernetes_node_pool_taint"][];
+ /**
+ * @description A boolean value indicating whether auto-scaling is enabled for this node pool.
+ * @example true
+ */
+ auto_scale?: boolean;
+ /**
+ * @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`.
+ * @example 3
+ */
+ min_nodes?: number;
+ /**
+ * @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`.
+ * @example 6
+ */
+ max_nodes?: number;
+ /** @description An object specifying the details of a specific worker node in a node pool. */
+ readonly nodes?: components["schemas"]["node"][];
+ };
+ kubernetes_node_pool: WithRequired;
+ /** @description An object specifying the maintenance window policy for the Kubernetes cluster. */
+ maintenance_policy: {
+ /**
+ * @description The start time in UTC of the maintenance window policy in 24-hour clock format / HH:MM notation (e.g., `15:00`).
+ * @example 12:00
+ */
+ start_time?: string;
+ /**
+ * @description The duration of the maintenance window policy in human-readable format.
+ * @example 4h0m0s
+ */
+ readonly duration?: string;
+ /**
+ * @description The day of the maintenance window policy. May be one of `monday` through `sunday`, or `any` to indicate an arbitrary week day.
+ * @example any
+ * @enum {string}
+ */
+ day?: "any" | "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday";
+ } | null;
+ cluster: {
+ /**
+ * Format: uuid
+ * @description A unique ID that can be used to identify and reference a Kubernetes cluster.
+ * @example bd5f5959-5e1e-4205-a714-a914373942af
+ */
+ readonly id?: string;
+ /**
+ * @description A human-readable name for a Kubernetes cluster.
+ * @example prod-cluster-01
+ */
+ name: string;
+ /**
+ * @description The slug identifier for the region where the Kubernetes cluster is located.
+ * @example nyc1
+ */
+ region: string;
+ /**
+ * @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.
+ * @example 1.18.6-do.0
+ */
+ version: string;
+ /**
+ * Format: cidr
+ * @description The range of IP addresses in the overlay network of the Kubernetes cluster in CIDR notation.
+ * @example 10.244.0.0/16
+ */
+ readonly cluster_subnet?: string;
+ /**
+ * @description The range of assignable IP addresses for services running in the Kubernetes cluster in CIDR notation.
+ * @example 10.245.0.0/16
+ */
+ readonly service_subnet?: string;
+ /**
+ * Format: uuid
+ * @description A string specifying the UUID of the VPC to which the Kubernetes cluster is assigned.
+ * @example c33931f2-a26a-4e61-b85c-4e95a2ec431b
+ */
+ vpc_uuid?: string;
+ /**
+ * @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+)
+ * @example 68.183.121.157
+ */
+ readonly ipv4?: string;
+ /**
+ * @description The base URL of the API server on the Kubernetes master node.
+ * @example https://bd5f5959-5e1e-4205-a714-a914373942af.k8s.ondigitalocean.com
+ */
+ readonly endpoint?: string;
+ /**
+ * @description An array of tags applied to the Kubernetes cluster. All clusters are automatically tagged `k8s` and `k8s:$K8S_CLUSTER_ID`.
+ * @example [
+ * "k8s",
+ * "k8s:bd5f5959-5e1e-4205-a714-a914373942af",
+ * "production",
+ * "web-team"
+ * ]
+ */
+ tags?: string[];
+ /** @description An object specifying the details of the worker nodes available to the Kubernetes cluster. */
+ node_pools: components["schemas"]["kubernetes_node_pool"][];
+ maintenance_policy?: components["schemas"]["maintenance_policy"];
+ /**
+ * @description A boolean value indicating whether the cluster will be automatically upgraded to new patch releases during its maintenance window.
+ * @default false
+ * @example true
+ */
+ auto_upgrade: boolean;
+ /** @description An object containing a `state` attribute whose value is set to a string indicating the current status of the cluster. */
+ readonly status?: {
+ /**
+ * @description A string indicating the current status of the cluster.
+ * @example provisioning
+ * @enum {string}
+ */
+ state?: "running" | "provisioning" | "degraded" | "error" | "deleted" | "upgrading" | "deleting";
+ /**
+ * @description An optional message providing additional information about the current cluster state.
+ * @example provisioning
+ */
+ message?: string;
+ };
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the Kubernetes cluster was created.
+ * @example 2018-11-15T16:00:11Z
+ */
+ readonly created_at?: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the Kubernetes cluster was last updated.
+ * @example 2018-11-15T16:00:11Z
+ */
+ readonly updated_at?: string;
+ /**
+ * @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.
+ * @default false
+ * @example true
+ */
+ surge_upgrade: boolean;
+ /**
+ * @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.
+ * @default false
+ * @example true
+ */
+ ha: boolean;
+ /**
+ * @description A read-only boolean value indicating if a container registry is integrated with the cluster.
+ * @example true
+ */
+ readonly registry_enabled?: boolean;
+ };
+ cluster_update: {
+ /**
+ * @description A human-readable name for a Kubernetes cluster.
+ * @example prod-cluster-01
+ */
+ name: string;
+ /**
+ * @description An array of tags applied to the Kubernetes cluster. All clusters are automatically tagged `k8s` and `k8s:$K8S_CLUSTER_ID`.
+ * @example [
+ * "k8s",
+ * "k8s:bd5f5959-5e1e-4205-a714-a914373942af",
+ * "production",
+ * "web-team"
+ * ]
+ */
+ tags?: string[];
+ maintenance_policy?: components["schemas"]["maintenance_policy"];
+ /**
+ * @description A boolean value indicating whether the cluster will be automatically upgraded to new patch releases during its maintenance window.
+ * @default false
+ * @example true
+ */
+ auto_upgrade: boolean;
+ /**
+ * @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.
+ * @default false
+ * @example true
+ */
+ surge_upgrade: boolean;
+ /**
+ * @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.
+ * @default false
+ * @example true
+ */
+ ha: boolean;
+ };
+ associated_kubernetes_resource: {
+ /**
+ * @description The ID of a resource associated with a Kubernetes cluster.
+ * @example edb0478d-7436-11ea-86e6-0a58ac144b91
+ */
+ id?: string;
+ /**
+ * @description The name of a resource associated with a Kubernetes cluster.
+ * @example volume-001
+ */
+ name?: string;
+ };
+ /** @description An object containing the IDs of resources associated with a Kubernetes cluster. */
+ associated_kubernetes_resources: {
+ /**
+ * @description A list of names and IDs for associated load balancers that can be destroyed along with the cluster.
+ * @example [
+ * {
+ * "id": "4de7ac8b-495b-4884-9a69-1050c6793cd6",
+ * "name": "lb-001"
+ * }
+ * ]
+ */
+ load_balancers?: components["schemas"]["associated_kubernetes_resource"][];
+ /**
+ * @description A list of names and IDs for associated volumes that can be destroyed along with the cluster.
+ * @example [
+ * {
+ * "id": "ba49449a-7435-11ea-b89e-0a58ac14480f",
+ * "name": "volume-001"
+ * }
+ * ]
+ */
+ volumes?: components["schemas"]["associated_kubernetes_resource"][];
+ /**
+ * @description A list of names and IDs for associated volume snapshots that can be destroyed along with the cluster.
+ * @example [
+ * {
+ * "id": "edb0478d-7436-11ea-86e6-0a58ac144b91",
+ * "name": "snapshot-001"
+ * }
+ * ]
+ */
+ volume_snapshots?: components["schemas"]["associated_kubernetes_resource"][];
+ };
+ /** @description An object containing the IDs of resources to be destroyed along with their associated with a Kubernetes cluster. */
+ destroy_associated_kubernetes_resources: {
+ /**
+ * @description A list of IDs for associated load balancers to destroy along with the cluster.
+ * @example [
+ * "4de7ac8b-495b-4884-9a69-1050c6793cd6"
+ * ]
+ */
+ load_balancers?: string[];
+ /**
+ * @description A list of IDs for associated volumes to destroy along with the cluster.
+ * @example [
+ * "ba49449a-7435-11ea-b89e-0a58ac14480f"
+ * ]
+ */
+ volumes?: string[];
+ /**
+ * @description A list of IDs for associated volume snapshots to destroy along with the cluster.
+ * @example [
+ * "edb0478d-7436-11ea-86e6-0a58ac144b91"
+ * ]
+ */
+ volume_snapshots?: string[];
+ };
+ credentials: {
+ /**
+ * Format: uri
+ * @description The URL used to access the cluster API server.
+ * @example https://bd5f5959-5e1e-4205-a714-a914373942af.k8s.ondigitalocean.com
+ */
+ server?: string;
+ /**
+ * Format: byte
+ * @description A base64 encoding of bytes representing the certificate authority data for accessing the cluster.
+ * @example LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKekNDQWcrZ0F3SUJBZ0lDQm5Vd0RRWUpLb1pJaHZjTkFRRUxCUUF3TXpFVk1CTUdBMVVFQ2hNTVJHbG4KYVhSaGJFOWpaV0Z1TVJvd0dBWURWUVFERXhGck9ITmhZWE1nUTJ4MWMzUmxjaUJEUVRBZUZ3MHlNREE0TURNeApOVEkxTWpoYUZ3MDBNREE0TURNeE5USTFNamhhTURNeEZUQVRCZ05WQkFvVERFUnBaMmwwWVd4UFkyVmhiakVhCk1CZ0dBMVVFQXhNUmF6aHpZV0Z6SUVOc2RYTjBaWElnUTBFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFDc21oa2JrSEpUcGhZQlN0R05VVE1ORVZTd2N3bmRtajArelQvcUZaNGsrOVNxUnYrSgpBd0lCaGpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1CMEdBMVVkRGdRV0JCUlRzazhhZ1hCUnFyZXdlTXJxClhwa3E1NXg5dVRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXB6V2F6bXNqYWxXTEx3ZjVpbWdDblNINDlKcGkKYWkvbzFMdEJvVEpleGdqZzE1ZVppaG5BMUJMc0lWNE9BZGM3UEFsL040L0hlbENrTDVxandjamRnNVdaYnMzYwozcFVUQ0g5bVVwMFg1SVdhT1VKV292Q1hGUlM1R2VKYXlkSDVPUXhqTURzR2N2UlNvZGQrVnQ2MXE3aWdFZ2I1CjBOZ1l5RnRnc2p0MHpJN3hURzZFNnlsOVYvUmFoS3lIQks2eExlM1RnUGU4SXhWa2RwT3QzR0FhSDRaK0pLR3gKYisyMVZia1NnRE1QQTlyR0VKNVZwVXlBV0FEVXZDRVFHV0hmNGpQN2ZGZlc3T050S0JWY3h3YWFjcVBVdUhzWApwRG5DZVR3V1NuUVp6L05xNmQxWUtsMFdtbkwzTEowemJzRVFGbEQ4MkkwL09MY2dZSDVxMklOZHhBPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
+ */
+ certificate_authority_data?: string;
+ /**
+ * Format: byte
+ * @deprecated
+ * @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://www.digitalocean.com/docs/kubernetes/how-to/connect-to-cluster/#authenticate).
+ *
+ * @example null
+ */
+ client_certificate_data?: string | null;
+ /**
+ * Format: byte
+ * @deprecated
+ * @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://www.digitalocean.com/docs/kubernetes/how-to/connect-to-cluster/#authenticate).
+ *
+ * @example null
+ */
+ client_key_data?: string | null;
+ /**
+ * @description An access token used to authenticate with the cluster. This is only returned for clusters with support for token-based authentication.
+ * @example $DIGITALOCEAN_TOKEN
+ */
+ token?: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the access token expires.
+ * @example 2019-11-09T11:50:28.889080521Z
+ */
+ expires_at?: string;
+ };
+ kubernetes_version: {
+ /**
+ * @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.
+ * @example 1.16.13-do.0
+ */
+ slug?: string;
+ /**
+ * @description The upstream version string for the version of Kubernetes provided by a given slug.
+ * @example 1.16.13
+ */
+ kubernetes_version?: string;
+ /**
+ * @description The features available with the version of Kubernetes provided by a given slug.
+ * @example [
+ * "cluster-autoscaler",
+ * "docr-integration",
+ * "token-authentication"
+ * ]
+ */
+ supported_features?: string[];
+ };
+ kubernetes_node_pool_update: WithRequired;
+ user: {
+ kubernetes_cluster_user?: {
+ /**
+ * Format: email
+ * @description The username for the cluster admin user.
+ * @example sammy@digitalocean.com
+ */
+ username?: string;
+ /**
+ * @description A list of in-cluster groups that the user belongs to.
+ * @example [
+ * "k8saas:authenticated"
+ * ]
+ */
+ groups?: string[];
+ };
+ };
+ kubernetes_region: {
+ /**
+ * @description A DigitalOcean region where Kubernetes is available.
+ * @example New York 3
+ */
+ name?: string;
+ /**
+ * @description The identifier for a region for use when creating a new cluster.
+ * @example nyc3
+ */
+ slug?: string;
+ };
+ kubernetes_size: {
+ /**
+ * @description A Droplet size available for use in a Kubernetes node pool.
+ * @example s-1vcpu-2gb
+ */
+ name?: string;
+ /**
+ * @description The identifier for a size for use when creating a new cluster.
+ * @example s-1vcpu-2gb
+ */
+ slug?: string;
+ };
+ kubernetes_options: {
+ options?: {
+ regions?: components["schemas"]["kubernetes_region"][];
+ versions?: components["schemas"]["kubernetes_version"][];
+ sizes?: components["schemas"]["kubernetes_size"][];
+ };
+ };
+ clusterlint_results: {
+ /**
+ * @description Id of the clusterlint run that can be used later to fetch the diagnostics.
+ * @example 50c2f44c-011d-493e-aee5-361a4a0d1844
+ */
+ run_id?: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the schedule clusterlint run request was made.
+ * @example 2019-10-30T05:34:07Z
+ */
+ requested_at?: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the schedule clusterlint run request was completed.
+ * @example 2019-10-30T05:34:11Z
+ */
+ completed_at?: string;
+ /** @description An array of diagnostics reporting potential problems for the given cluster. */
+ diagnostics?: {
+ /**
+ * @description The clusterlint check that resulted in the diagnostic.
+ * @example unused-config-map
+ */
+ check_name?: string;
+ /**
+ * @description Can be one of error, warning or suggestion.
+ * @example warning
+ */
+ severity?: string;
+ /**
+ * @description Feedback about the object for users to fix.
+ * @example Unused config map
+ */
+ message?: string;
+ /** @description Metadata about the Kubernetes API object the diagnostic is reported on. */
+ object?: {
+ /**
+ * @description Name of the object
+ * @example foo
+ */
+ name?: string;
+ /**
+ * @description The kind of Kubernetes API object
+ * @example config map
+ */
+ kind?: string;
+ /**
+ * @description The namespace the object resides in the cluster.
+ * @example kube-system
+ */
+ namespace?: string;
+ };
+ }[];
+ };
+ clusterlint_request: {
+ /**
+ * @description An array of check groups that will be run when clusterlint executes checks.
+ * @example [
+ * "basic",
+ * "doks",
+ * "security"
+ * ]
+ */
+ include_groups?: string[];
+ /**
+ * @description An array of checks that will be run when clusterlint executes checks.
+ * @example [
+ * "bare-pods",
+ * "resource-requirements"
+ * ]
+ */
+ include_checks?: string[];
+ /**
+ * @description An array of check groups that will be omitted when clusterlint executes checks.
+ * @example [
+ * "workload-health"
+ * ]
+ */
+ exclude_groups?: string[];
+ /**
+ * @description An array of checks that will be run when clusterlint executes checks.
+ * @example [
+ * "default-namespace"
+ * ]
+ */
+ exclude_checks?: string[];
+ };
+ cluster_registries: {
+ /**
+ * @description An array containing the UUIDs of Kubernetes clusters.
+ * @example [
+ * "bd5f5959-5e1e-4205-a714-a914373942af",
+ * "50c2f44c-011d-493e-aee5-361a4a0d1844"
+ * ]
+ */
+ cluster_uuids?: string[];
+ };
+ /** @description An object specifying a forwarding rule for a load balancer. */
+ forwarding_rule: {
+ /**
+ * @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.
+ *
+ * @example https
+ * @enum {string}
+ */
+ entry_protocol: "http" | "https" | "http2" | "http3" | "tcp" | "udp";
+ /**
+ * @description An integer representing the port on which the load balancer instance will listen.
+ * @example 443
+ */
+ entry_port: number;
+ /**
+ * @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.
+ *
+ * @example http
+ * @enum {string}
+ */
+ target_protocol: "http" | "https" | "http2" | "tcp" | "udp";
+ /**
+ * @description An integer representing the port on the backend Droplets to which the load balancer will send traffic.
+ * @example 80
+ */
+ target_port: number;
+ /**
+ * @description The ID of the TLS certificate used for SSL termination if enabled.
+ * @example 892071a0-bb95-49bc-8021-3afd67a210bf
+ */
+ certificate_id?: string;
+ /**
+ * @description A boolean value indicating whether SSL encrypted traffic will be passed through to the backend Droplets.
+ * @example false
+ */
+ tls_passthrough?: boolean;
+ };
+ /** @description An object specifying health check settings for the load balancer. */
+ health_check: {
+ /**
+ * @description The protocol used for health checks sent to the backend Droplets. The possible values are `http`, `https`, or `tcp`.
+ * @default http
+ * @example http
+ * @enum {string}
+ */
+ protocol: "http" | "https" | "tcp";
+ /**
+ * @description An integer representing the port on the backend Droplets on which the health check will attempt a connection.
+ * @default 80
+ * @example 80
+ */
+ port: number;
+ /**
+ * @description The path on the backend Droplets to which the load balancer instance will send a request.
+ * @default /
+ * @example /
+ */
+ path: string;
+ /**
+ * @description The number of seconds between between two consecutive health checks.
+ * @default 10
+ * @example 10
+ */
+ check_interval_seconds: number;
+ /**
+ * @description The number of seconds the load balancer instance will wait for a response until marking a health check as failed.
+ * @default 5
+ * @example 5
+ */
+ response_timeout_seconds: number;
+ /**
+ * @description The number of times a health check must fail for a backend Droplet to be marked "unhealthy" and be removed from the pool.
+ * @default 5
+ * @example 5
+ */
+ unhealthy_threshold: number;
+ /**
+ * @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.
+ * @default 3
+ * @example 3
+ */
+ healthy_threshold: number;
+ };
+ /** @description An object specifying sticky sessions settings for the load balancer. */
+ sticky_sessions: {
+ /**
+ * @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`.
+ * @default none
+ * @example cookies
+ * @enum {string}
+ */
+ type: "cookies" | "none";
+ /**
+ * @description The name of the cookie sent to the client. This attribute is only returned when using `cookies` for the sticky sessions type.
+ * @example DO-LB
+ */
+ cookie_name?: string;
+ /**
+ * @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.
+ * @example 300
+ */
+ cookie_ttl_seconds?: number;
+ };
+ /** @description An object specifying allow and deny rules to control traffic to the load balancer. */
+ lb_firewall: {
+ /**
+ * @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')
+ * @default []
+ * @example [
+ * "ip:1.2.3.4",
+ * "cidr:2.3.0.0/16"
+ * ]
+ */
+ deny: string[];
+ /**
+ * @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')
+ * @default []
+ * @example [
+ * "ip:1.2.3.4",
+ * "cidr:2.3.0.0/16"
+ * ]
+ */
+ allow: string[];
+ };
+ load_balancer_base: {
+ /**
+ * Format: uuid
+ * @description A unique ID that can be used to identify and reference a load balancer.
+ * @example 4de7ac8b-495b-4884-9a69-1050c6793cd6
+ */
+ readonly id?: string;
+ /**
+ * @description A human-readable name for a load balancer instance.
+ * @example example-lb-01
+ */
+ name?: string;
+ /**
+ * @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.
+ * @example 4de7ac8b-495b-4884-9a69-1050c6793cd6
+ */
+ project_id?: string;
+ /**
+ * @description An attribute containing the public-facing IP address of the load balancer.
+ * @example 104.131.186.241
+ */
+ readonly ip?: string;
+ /**
+ * @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.
+ * @default 1
+ * @example 3
+ */
+ size_unit: number;
+ /**
+ * @deprecated
+ * @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.
+ * @default lb-small
+ * @example lb-small
+ * @enum {string}
+ */
+ size: "lb-small" | "lb-medium" | "lb-large";
+ /**
+ * @deprecated
+ * @description This field has been deprecated. You can no longer specify an algorithm for load balancers.
+ * @default round_robin
+ * @example round_robin
+ * @enum {string}
+ */
+ algorithm: "round_robin" | "least_connections";
+ /**
+ * @description A status string indicating the current state of the load balancer. This can be `new`, `active`, or `errored`.
+ * @example new
+ * @enum {string}
+ */
+ readonly status?: "new" | "active" | "errored";
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the load balancer was created.
+ * @example 2017-02-01T22:22:58Z
+ */
+ readonly created_at?: string;
+ /** @description An array of objects specifying the forwarding rules for a load balancer. */
+ forwarding_rules: components["schemas"]["forwarding_rule"][];
+ health_check?: components["schemas"]["health_check"];
+ sticky_sessions?: components["schemas"]["sticky_sessions"];
+ /**
+ * @description A boolean value indicating whether HTTP requests to the load balancer on port 80 will be redirected to HTTPS on port 443.
+ * @default false
+ * @example true
+ */
+ redirect_http_to_https: boolean;
+ /**
+ * @description A boolean value indicating whether PROXY Protocol is in use.
+ * @default false
+ * @example true
+ */
+ enable_proxy_protocol: boolean;
+ /**
+ * @description A boolean value indicating whether HTTP keepalive connections are maintained to target Droplets.
+ * @default false
+ * @example true
+ */
+ enable_backend_keepalive: boolean;
+ /**
+ * @description An integer value which configures the idle timeout for HTTP requests to the target droplets.
+ * @default 60
+ * @example 90
+ */
+ http_idle_timeout_seconds: number;
+ /**
+ * Format: uuid
+ * @description A string specifying the UUID of the VPC to which the load balancer is assigned.
+ * @example c33931f2-a26a-4e61-b85c-4e95a2ec431b
+ */
+ vpc_uuid?: string;
+ /**
+ * @description A boolean value indicating whether to disable automatic DNS record creation for Let's Encrypt certificates that are added to the load balancer.
+ * @default false
+ * @example true
+ */
+ disable_lets_encrypt_dns_records: boolean;
+ firewall?: components["schemas"]["lb_firewall"];
+ };
+ load_balancer: components["schemas"]["load_balancer_base"] & {
+ region?: unknown & components["schemas"]["region"];
+ } & {
+ /**
+ * @description An array containing the IDs of the Droplets assigned to the load balancer.
+ * @example [
+ * 3164444,
+ * 3164445
+ * ]
+ */
+ droplet_ids?: number[];
+ } & {
+ /**
+ * @description The name of a Droplet tag corresponding to Droplets assigned to the load balancer.
+ * @example prod:web
+ */
+ tag?: string;
+ };
+ load_balancer_create: WithRequired<{
+ /**
+ * @description An array containing the IDs of the Droplets assigned to the load balancer.
+ * @example [
+ * 3164444,
+ * 3164445
+ * ]
+ */
+ droplet_ids?: number[];
+ } & {
+ region?: components["schemas"]["region_slug"];
+ } & components["schemas"]["load_balancer_base"], "droplet_ids" | "region"> | WithRequired<{
+ /**
+ * @description The name of a Droplet tag corresponding to Droplets assigned to the load balancer.
+ * @example prod:web
+ */
+ tag?: string;
+ } & {
+ region?: components["schemas"]["region_slug"];
+ } & components["schemas"]["load_balancer_base"], "tag" | "region">;
+ slack_details: {
+ /**
+ * @description Slack channel to notify of an alert trigger.
+ * @example Production Alerts
+ */
+ channel: string;
+ /**
+ * @description Slack Webhook URL.
+ * @example https://hooks.slack.com/services/T1234567/AAAAAAAA/ZZZZZZ
+ */
+ url: string;
+ };
+ alerts: {
+ /**
+ * @description An email to notify on an alert trigger.
+ * @example [
+ * "bob@exmaple.com"
+ * ]
+ */
+ email: string[];
+ /** @description Slack integration details. */
+ slack: components["schemas"]["slack_details"][];
+ };
+ alert_policy: {
+ alerts: components["schemas"]["alerts"];
+ /**
+ * @example GreaterThan
+ * @enum {string}
+ */
+ compare: "GreaterThan" | "LessThan";
+ /** @example CPU Alert */
+ description: string;
+ /** @example true */
+ enabled: boolean;
+ /** @example [
+ * "192018292"
+ * ] */
+ entities: string[];
+ /** @example [
+ * "droplet_tag"
+ * ] */
+ tags: string[];
+ /**
+ * @example v1/insights/droplet/cpu
+ * @enum {string}
+ */
+ type: "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 78b3da62-27e5-49ba-ac70-5db0b5935c64 */
+ uuid: string;
+ /**
+ * Format: float
+ * @example 80
+ */
+ value: number;
+ /**
+ * @example 5m
+ * @enum {string}
+ */
+ window: "5m" | "10m" | "30m" | "1h";
+ };
+ list_alert_policy: {
+ policies: components["schemas"]["alert_policy"][];
+ };
+ alert_policy_request: {
+ alerts: components["schemas"]["alerts"];
+ /**
+ * @example GreaterThan
+ * @enum {string}
+ */
+ compare: "GreaterThan" | "LessThan";
+ /** @example CPU Alert */
+ description: string;
+ /** @example true */
+ enabled: boolean;
+ /** @example [
+ * "192018292"
+ * ] */
+ entities: string[];
+ /** @example [
+ * "droplet_tag"
+ * ] */
+ tags: string[];
+ /**
+ * @example v1/insights/droplet/cpu
+ * @enum {string}
+ */
+ type: "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";
+ /**
+ * Format: float
+ * @example 80
+ */
+ value: number;
+ /**
+ * @example 5m
+ * @enum {string}
+ */
+ window: "5m" | "10m" | "30m" | "1h";
+ };
+ metrics_result: {
+ /**
+ * @description An object containing the metric labels.
+ * @example {
+ * "host_id": "19201920"
+ * }
+ */
+ metric: {
+ [key: string]: string | undefined;
+ };
+ /** @example [
+ * [
+ * 1435781430,
+ * "1"
+ * ],
+ * [
+ * 1435781445,
+ * "1"
+ * ]
+ * ] */
+ values: (number | string)[][];
+ };
+ metrics_data: {
+ /** @description Result of query. */
+ result: components["schemas"]["metrics_result"][];
+ /**
+ * @example matrix
+ * @enum {string}
+ */
+ resultType: "matrix";
+ };
+ metrics: {
+ data: components["schemas"]["metrics_data"];
+ /**
+ * @example success
+ * @enum {string}
+ */
+ status: "success" | "error";
+ };
+ project_base: {
+ /**
+ * Format: uuid
+ * @description The unique universal identifier of this project.
+ * @example 4e1bfbc3-dc3e-41f2-a18f-1b4d7ba71679
+ */
+ readonly id?: string;
+ /**
+ * @description The unique universal identifier of the project owner.
+ * @example 99525febec065ca37b2ffe4f852fd2b2581895e7
+ */
+ readonly owner_uuid?: string;
+ /**
+ * @description The integer id of the project owner.
+ * @example 258992
+ */
+ readonly owner_id?: number;
+ /**
+ * @description The human-readable name for the project. The maximum length is 175 characters and the name must be unique.
+ * @example my-web-api
+ */
+ name?: string;
+ /**
+ * @description The description of the project. The maximum length is 255 characters.
+ * @example My website API
+ */
+ description?: string;
+ /**
+ * @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`.
+ *
+ * @example Service or API
+ */
+ purpose?: string;
+ /**
+ * @description The environment of the project's resources.
+ * @example Production
+ * @enum {string}
+ */
+ environment?: "Development" | "Staging" | "Production";
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the project was created.
+ * @example 2018-09-27T20:10:35Z
+ */
+ readonly created_at?: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the project was updated.
+ * @example 2018-09-27T20:10:35Z
+ */
+ readonly updated_at?: string;
+ };
+ project: components["schemas"]["project_base"] & {
+ /**
+ * @description If true, all resources will be added to this project if no project is specified.
+ * @example false
+ */
+ is_default?: boolean;
+ };
+ /**
+ * @description The uniform resource name (URN) for the resource in the format do:resource_type:resource_id.
+ * @example do:droplet:13457723
+ */
+ urn: string;
+ resource: {
+ urn?: components["schemas"]["urn"];
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the project was created.
+ * @example 2018-09-28T19:26:37Z
+ */
+ assigned_at?: string;
+ /** @description The links object contains the `self` object, which contains the resource relationship. */
+ links?: {
+ /**
+ * Format: uri
+ * @description A URI that can be used to retrieve the resource.
+ * @example https://api.digitalocean.com/v2/droplets/13457723
+ */
+ self?: string;
+ };
+ /**
+ * @description The status of assigning and fetching the resources.
+ * @example ok
+ * @enum {string}
+ */
+ status?: "ok" | "not_found" | "assigned" | "already_assigned" | "service_down";
+ };
+ project_assignment: {
+ /**
+ * @description A list of uniform resource names (URNs) to be added to a project.
+ * @example [
+ * "do:droplet:13457723"
+ * ]
+ */
+ resources?: components["schemas"]["urn"][];
+ };
+ subscription_tier_base: {
+ /**
+ * @description The name of the subscription tier.
+ * @example Basic
+ */
+ name?: string;
+ /**
+ * @description The slug identifier of the subscription tier.
+ * @example basic
+ */
+ slug?: string;
+ /**
+ * @description The number of repositories included in the subscription tier. `0` indicates that the subscription tier includes unlimited repositories.
+ * @example 5
+ */
+ included_repositories?: number;
+ /**
+ * @description The amount of storage included in the subscription tier in bytes.
+ * @example 5368709120
+ */
+ included_storage_bytes?: number;
+ /**
+ * @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.
+ * @example true
+ */
+ allow_storage_overage?: boolean;
+ /**
+ * @description The amount of outbound data transfer included in the subscription tier in bytes.
+ * @example 5368709120
+ */
+ included_bandwidth_bytes?: number;
+ /**
+ * @description The monthly cost of the subscription tier in cents.
+ * @example 500
+ */
+ monthly_price_in_cents?: number;
+ /**
+ * @description The price paid in cents per GiB for additional storage beyond what is included in the subscription plan.
+ * @example 2
+ */
+ storage_overage_price_in_cents?: number;
+ };
+ subscription: {
+ tier?: components["schemas"]["subscription_tier_base"];
+ /**
+ * Format: date-time
+ * @description The time at which the subscription was created.
+ * @example 2020-01-23T21:19:12Z
+ */
+ readonly created_at?: string;
+ /**
+ * Format: date-time
+ * @description The time at which the subscription was last updated.
+ * @example 2020-11-05T15:53:24Z
+ */
+ readonly updated_at?: string;
+ };
+ registry: {
+ /**
+ * @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.
+ * @example example
+ */
+ name?: string;
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format that represents when the registry was created.
+ * @example 2020-03-21T16:02:37Z
+ */
+ readonly created_at?: string;
+ /**
+ * @description Slug of the region where registry data is stored
+ * @example fra1
+ */
+ region?: string;
+ /**
+ * @description The amount of storage used in the registry in bytes.
+ * @example 29393920
+ */
+ readonly storage_usage_bytes?: number;
+ /**
+ * Format: date-time
+ * @description The time at which the storage usage was updated. Storage usage is calculated asynchronously, and may not immediately reflect pushes to the registry.
+ * @example 2020-11-04T21:39:49.530562231Z
+ */
+ readonly storage_usage_bytes_updated_at?: string;
+ subscription?: unknown & components["schemas"]["subscription"];
+ };
+ registry_create: {
+ /**
+ * @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.
+ * @example example
+ */
+ name: string;
+ /**
+ * @description The slug of the subscription tier to sign up for. Valid values can be retrieved using the options endpoint.
+ * @example basic
+ * @enum {string}
+ */
+ subscription_tier_slug: "starter" | "basic" | "professional";
+ /**
+ * @description Slug of the region where registry data is stored. When not provided, a region will be selected.
+ * @example fra1
+ * @enum {string}
+ */
+ region?: "nyc3" | "sfo3" | "ams3" | "sgp1" | "fra1";
+ };
+ docker_credentials: {
+ auths?: {
+ "registry.digitalocean.com"?: {
+ /**
+ * @description A base64 encoded string containing credentials for the container registry.
+ * @example YjdkMDNhNjk0N2IyMTdlZmI2ZjNlYzNiZDM1MDQ1ODI6YjdkMDNhNjk0N2IyMTdlZmI2ZjNlYzNiZDM1MDQ1ODIK
+ */
+ auth?: string;
+ };
+ };
+ };
+ validate_registry: {
+ /**
+ * @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.
+ * @example example
+ */
+ name: string;
+ };
+ repository_tag: {
+ /**
+ * @description The name of the container registry.
+ * @example example
+ */
+ registry_name?: string;
+ /**
+ * @description The name of the repository.
+ * @example repo-1
+ */
+ repository?: string;
+ /**
+ * @description The name of the tag.
+ * @example latest
+ */
+ tag?: string;
+ /**
+ * @description The digest of the manifest associated with the tag.
+ * @example sha256:cb8a924afdf0229ef7515d9e5b3024e23b3eb03ddbba287f4a19c6ac90b8d221
+ */
+ manifest_digest?: string;
+ /**
+ * @description The compressed size of the tag in bytes.
+ * @example 2803255
+ */
+ compressed_size_bytes?: number;
+ /**
+ * @description The uncompressed size of the tag in bytes (this size is calculated asynchronously so it may not be immediately available).
+ * @example 5861888
+ */
+ size_bytes?: number;
+ /**
+ * Format: date-time
+ * @description The time the tag was last updated.
+ * @example 2020-04-09T23:54:25Z
+ */
+ updated_at?: string;
+ };
+ repository: {
+ /**
+ * @description The name of the container registry.
+ * @example example
+ */
+ registry_name?: string;
+ /**
+ * @description The name of the repository.
+ * @example repo-1
+ */
+ name?: string;
+ latest_tag?: components["schemas"]["repository_tag"];
+ /**
+ * @description The number of tags in the repository.
+ * @example 1
+ */
+ tag_count?: number;
+ };
+ repository_blob: {
+ /**
+ * @description The digest of the blob
+ * @example sha256:cb8a924afdf0229ef7515d9e5b3024e23b3eb03ddbba287f4a19c6ac90b8d221
+ */
+ digest?: string;
+ /**
+ * @description The compressed size of the blob in bytes.
+ * @example 2803255
+ */
+ compressed_size_bytes?: number;
+ };
+ repository_manifest: {
+ /**
+ * @description The name of the container registry.
+ * @example example
+ */
+ registry_name?: string;
+ /**
+ * @description The name of the repository.
+ * @example repo-1
+ */
+ repository?: string;
+ /**
+ * @description The manifest digest
+ * @example sha256:cb8a924afdf0229ef7515d9e5b3024e23b3eb03ddbba287f4a19c6ac90b8d221
+ */
+ digest?: string;
+ /**
+ * @description The compressed size of the manifest in bytes.
+ * @example 2803255
+ */
+ compressed_size_bytes?: number;
+ /**
+ * @description The uncompressed size of the manifest in bytes (this size is calculated asynchronously so it may not be immediately available).
+ * @example 5861888
+ */
+ size_bytes?: number;
+ /**
+ * Format: date-time
+ * @description The time the manifest was last updated.
+ * @example 2020-04-09T23:54:25Z
+ */
+ updated_at?: string;
+ /**
+ * @description All tags associated with this manifest
+ * @example [
+ * "latest",
+ * "v1",
+ * "v2"
+ * ]
+ */
+ tags?: string[];
+ /** @description All blobs associated with this manifest */
+ blobs?: components["schemas"]["repository_blob"][];
+ };
+ repository_v2: {
+ /**
+ * @description The name of the container registry.
+ * @example example
+ */
+ registry_name?: string;
+ /**
+ * @description The name of the repository.
+ * @example repo-1
+ */
+ name?: string;
+ latest_manifest?: components["schemas"]["repository_manifest"];
+ /**
+ * @description The number of tags in the repository.
+ * @example 1
+ */
+ tag_count?: number;
+ /**
+ * @description The number of manifests in the repository.
+ * @example 1
+ */
+ manifest_count?: number;
+ };
+ garbage_collection: {
+ /**
+ * @description A string specifying the UUID of the garbage collection.
+ * @example eff0feee-49c7-4e8f-ba5c-a320c109c8a8
+ */
+ uuid?: string;
+ /**
+ * @description The name of the container registry.
+ * @example example
+ */
+ registry_name?: string;
+ /**
+ * @description The current status of this garbage collection.
+ * @example requested
+ * @enum {string}
+ */
+ status?: "requested" | "waiting for write JWTs to expire" | "scanning manifests" | "deleting unreferenced blobs" | "cancelling" | "failed" | "succeeded" | "cancelled";
+ /**
+ * Format: date-time
+ * @description The time the garbage collection was created.
+ * @example 2020-10-30T21:03:24Z
+ */
+ created_at?: string;
+ /**
+ * Format: date-time
+ * @description The time the garbage collection was last updated.
+ * @example 2020-10-30T21:03:44Z
+ */
+ updated_at?: string;
+ /**
+ * @description The number of blobs deleted as a result of this garbage collection.
+ * @example 42
+ */
+ blobs_deleted?: number;
+ /**
+ * @description The number of bytes freed as a result of this garbage collection.
+ * @example 667
+ */
+ freed_bytes?: number;
+ };
+ update_registry: {
+ /**
+ * @description A boolean value indicating that the garbage collection should be cancelled.
+ * @example true
+ */
+ cancel?: boolean;
+ };
+ subscription_tier_extended: {
+ /**
+ * @description A boolean indicating whether your account it eligible to use a certain subscription tier.
+ * @example true
+ */
+ eligible?: boolean;
+ /**
+ * @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.
+ * @example [
+ * "OverRepositoryLimit"
+ * ]
+ */
+ eligibility_reasons?: ("OverRepositoryLimit" | "OverStorageLimit")[];
+ };
+ neighbor_ids: {
+ /**
+ * @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
+ * ]
+ * ]
+ */
+ neighbor_ids?: number[][];
+ };
+ reserved_ip: {
+ /**
+ * Format: ipv4
+ * @description The public IP address of the reserved IP. It also serves as its identifier.
+ * @example 45.55.96.47
+ */
+ ip?: string;
+ region?: components["schemas"]["region"] & Record;
+ /**
+ * @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.
+ * @example null
+ */
+ droplet?: Record | components["schemas"]["droplet"];
+ /**
+ * @description A boolean value indicating whether or not the reserved IP has pending actions preventing new ones from being submitted.
+ * @example true
+ */
+ locked?: boolean;
+ /**
+ * Format: uuid
+ * @description The UUID of the project to which the reserved IP currently belongs.
+ * @example 746c6152-2fa2-11ed-92d3-27aaa54e4988
+ */
+ project_id?: string;
+ };
+ reserved_ip_create: {
+ /**
+ * @description The ID of the Droplet that the reserved IP will be assigned to.
+ * @example 2457247
+ */
+ droplet_id: number;
+ } | {
+ /**
+ * @description The slug identifier for the region the reserved IP will be reserved to.
+ * @example nyc3
+ */
+ region: string;
+ /**
+ * Format: uuid
+ * @description The UUID of the project to which the reserved IP will be assigned.
+ * @example 746c6152-2fa2-11ed-92d3-27aaa54e4988
+ */
+ project_id?: string;
+ };
+ reserved_ip_action_type: {
+ /**
+ * @description The type of action to initiate for the reserved IP.
+ * @enum {string}
+ */
+ type: "assign" | "unassign";
+ };
+ reserved_ip_action_assign: {
+ type: "assign";
+ } & (Omit & {
+ /**
+ * @description The ID of the Droplet that the reserved IP will be assigned to.
+ * @example 758604968
+ */
+ droplet_id: number;
+ });
+ reserved_ip_action_unassign: {
+ type: "unassign";
+ } & (Omit & Record);
+ snapshots: {
+ /**
+ * @description The unique identifier for the snapshot.
+ * @example 6372321
+ */
+ id: string;
+ } & components["schemas"]["snapshots_base"] & {
+ /**
+ * @description The unique identifier for the resource that the snapshot originated from.
+ * @example 200776916
+ */
+ resource_id: string;
+ /**
+ * @description The type of resource that the snapshot originated from.
+ * @example droplet
+ * @enum {string}
+ */
+ resource_type: "droplet" | "volume";
+ /**
+ * @description An array of Tags the snapshot has been tagged with.
+ * @example [
+ * "web",
+ * "env:prod"
+ * ]
+ */
+ tags: string[] | null;
+ };
+ /** @description Tagged Resource Statistics include metadata regarding the resource type that has been tagged. */
+ tags_metadata: {
+ /**
+ * @description The number of tagged objects for this type of resource.
+ * @example 5
+ */
+ count?: number;
+ /**
+ * @description The URI for the last tagged object for this type of resource.
+ * @example https://api.digitalocean.com/v2/images/7555620
+ */
+ last_tagged_uri?: string;
+ };
+ /** @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. */
+ tags: {
+ /**
+ * @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".
+ *
+ * @example extra-awesome
+ */
+ name?: string;
+ /**
+ * @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.
+ * @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"
+ * }
+ * }
+ */
+ readonly resources?: components["schemas"]["tags_metadata"] & {
+ droplets?: components["schemas"]["tags_metadata"];
+ imgages?: components["schemas"]["tags_metadata"];
+ volumes?: components["schemas"]["tags_metadata"];
+ volume_snapshots?: components["schemas"]["tags_metadata"];
+ databases?: components["schemas"]["tags_metadata"];
+ };
+ };
+ error_with_root_causes: {
+ /**
+ * @description A message providing information about the error.
+ * @example not_found
+ */
+ error: string;
+ /**
+ * @description A list of error messages.
+ * @example null
+ */
+ messages?: string[] | null;
+ /**
+ * @description A list of underlying causes for the error, including details to help resolve it when possible.
+ * @example []
+ */
+ root_causes: string[];
+ };
+ tags_resource: {
+ /**
+ * @description An array of objects containing resource_id and resource_type attributes.
+ * @example [
+ * {
+ * "resource_id": "9569411",
+ * "resource_type": "droplet"
+ * },
+ * {
+ * "resource_id": "7555620",
+ * "resource_type": "image"
+ * },
+ * {
+ * "resource_id": "3d80cb72-342b-4aaa-b92e-4e4abb24a933",
+ * "resource_type": "volume"
+ * }
+ * ]
+ */
+ resources: {
+ /**
+ * @description The identifier of a resource.
+ * @example 3d80cb72-342b-4aaa-b92e-4e4abb24a933
+ */
+ resource_id?: string;
+ /**
+ * @description The type of the resource.
+ * @example volume
+ * @enum {string}
+ */
+ resource_type?: "droplet" | "image" | "volume" | "volume_snapshot";
+ }[];
+ };
+ volume_base: {
+ /**
+ * @description The unique identifier for the block storage volume.
+ * @example 506f78a4-e098-11e5-ad9f-000f53306ae1
+ */
+ readonly id?: string;
+ /**
+ * @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 droplet_ids?: number[] | null;
+ /**
+ * @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
+ */
+ name?: string;
+ /**
+ * @description An optional free-form text field to describe a block storage volume.
+ * @example Block store for examples
+ */
+ description?: string;
+ /**
+ * @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
+ */
+ size_gigabytes?: number;
+ /**
+ * @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 created_at?: string;
+ tags?: components["schemas"]["tags_array"];
+ };
+ volume_full: components["schemas"]["volume_base"] & {
+ /** @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 region?: unknown & components["schemas"]["region"];
+ /**
+ * @description The type of filesystem currently in-use on the volume.
+ * @example ext4
+ */
+ filesystem_type?: string;
+ /**
+ * @description The label currently applied to the filesystem.
+ * @example example
+ */
+ filesystem_label?: string;
+ };
+ volume_snapshot_id: {
+ /**
+ * @description The unique identifier for the volume snapshot from which to create the volume.
+ * @example b0798135-fb76-11eb-946a-0a58ac146f33
+ */
+ snapshot_id?: string;
+ };
+ volume_write_file_system_type: {
+ /**
+ * @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
+ */
+ filesystem_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
+ */
+ volume_write_file_system_label: string;
+ volumes_ext4: components["schemas"]["volume_base"] & components["schemas"]["volume_snapshot_id"] & components["schemas"]["volume_write_file_system_type"] & {
+ region: components["schemas"]["region_slug"];
+ filesystem_label?: components["schemas"]["volume_write_file_system_label"] & unknown;
+ };
+ volumes_xfs: components["schemas"]["volume_base"] & components["schemas"]["volume_snapshot_id"] & components["schemas"]["volume_write_file_system_type"] & {
+ region: components["schemas"]["region_slug"];
+ filesystem_label?: components["schemas"]["volume_write_file_system_label"] & unknown;
+ };
+ volume_action_post_base: {
+ /**
+ * @description The volume action to initiate.
+ * @example attach
+ * @enum {string}
+ */
+ type: "attach" | "detach" | "resize";
+ region?: components["schemas"]["region_slug"];
+ };
+ /**
+ * @description The unique identifier for the Droplet the volume will be attached or detached from.
+ * @example 11612190
+ */
+ volume_action_droplet_id: number;
+ volume_action_post_attach: components["schemas"]["volume_action_post_base"] & {
+ droplet_id: components["schemas"]["volume_action_droplet_id"];
+ tags?: components["schemas"]["tags_array"];
+ };
+ volume_action_post_detach: components["schemas"]["volume_action_post_base"] & {
+ droplet_id: components["schemas"]["volume_action_droplet_id"];
+ };
+ volumeAction: {
+ /**
+ * @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
+ */
+ type?: string;
+ /** @example null */
+ resource_id?: number | null;
+ } & components["schemas"]["action"];
+ volume_action_post_resize: components["schemas"]["volume_action_post_base"] & {
+ /** @description The new size of the block storage volume in GiB (1024^3). */
+ size_gigabytes: number;
+ };
+ vpc_updatable: {
+ /**
+ * @description The name of the VPC. Must be unique and may only contain alphanumeric characters, dashes, and periods.
+ * @example env.prod-vpc
+ */
+ name?: string;
+ /**
+ * @description A free-form text field for describing the VPC's purpose. It may be a maximum of 255 characters.
+ * @example VPC for production environment
+ */
+ description?: string;
+ };
+ vpc_create: {
+ /**
+ * @description The slug identifier for the region where the VPC will be created.
+ * @example nyc1
+ */
+ region?: string;
+ /**
+ * @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.
+ * @example 10.10.10.0/24
+ */
+ ip_range?: string;
+ };
+ vpc_default: {
+ /**
+ * @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.
+ * @example true
+ */
+ default?: boolean;
+ };
+ vpc_base: {
+ /**
+ * Format: uuid
+ * @description A unique ID that can be used to identify and reference the VPC.
+ * @example 5a4981aa-9653-4bd1-bef5-d6bff52042e4
+ */
+ readonly id?: string;
+ urn?: components["schemas"]["urn"];
+ /**
+ * Format: date-time
+ * @description A time value given in ISO8601 combined date and time format.
+ * @example 2020-03-13T19:20:47.442049222Z
+ */
+ readonly created_at?: string;
+ };
+ vpc: components["schemas"]["vpc_updatable"] & components["schemas"]["vpc_create"] & components["schemas"]["vpc_default"] & components["schemas"]["vpc_base"];
+ vpc_member: {
+ /**
+ * @description The name of the resource.
+ * @example nyc1-load-balancer-01
+ */
+ name?: string;
+ urn?: components["schemas"]["urn"];
+ /**
+ * @description A time value given in ISO8601 combined date and time format that represents when the resource was created.
+ * @example 2020-03-13T19:30:48Z
+ */
+ created_at?: string;
+ };
+ check_base: {
+ /**
+ * Format: uuid
+ * @description A unique ID that can be used to identify and reference the check.
+ * @example 5a4981aa-9653-4bd1-bef5-d6bff52042e4
+ */
+ readonly id?: string;
+ };
+ check_updatable: {
+ /**
+ * @description A human-friendly display name.
+ * @example Landing page check
+ */
+ name?: string;
+ /**
+ * @description The type of health check to perform.
+ * @example https
+ * @enum {string}
+ */
+ type?: "ping" | "http" | "https";
+ /**
+ * Format: url
+ * @description The endpoint to perform healthchecks on.
+ * @example https://www.landingpage.com
+ */
+ target?: string;
+ /**
+ * @description An array containing the selected regions to perform healthchecks from.
+ * @example [
+ * "us_east",
+ * "eu_west"
+ * ]
+ */
+ regions?: ("us_east" | "us_west" | "eu_west" | "se_asia")[];
+ /**
+ * @description A boolean value indicating whether the check is enabled/disabled.
+ * @default true
+ * @example true
+ */
+ enabled: boolean;
+ };
+ check: components["schemas"]["check_base"] & components["schemas"]["check_updatable"];
+ region_state: {
+ /**
+ * @example UP
+ * @enum {string}
+ */
+ status?: "DOWN" | "UP" | "CHECKING";
+ /** @example 2022-03-17T22:28:51Z */
+ status_changed_at?: string;
+ /** @example 97.99 */
+ thirty_day_uptime_percentage?: number;
+ };
+ /** @description A map of region to regional state */
+ regional_state: {
+ us_east?: components["schemas"]["region_state"];
+ eu_west?: components["schemas"]["region_state"];
+ };
+ previous_outage: {
+ /** @example us_east */
+ region?: string;
+ /** @example 2022-03-17T18:04:55Z */
+ started_at?: string;
+ /** @example 2022-03-17T18:06:55Z */
+ ended_at?: string;
+ /** @example 120 */
+ duration_seconds?: number;
+ };
+ state: {
+ regions?: components["schemas"]["regional_state"];
+ previous_outage?: components["schemas"]["previous_outage"];
+ };
+ alert_base: {
+ /**
+ * Format: uuid
+ * @description A unique ID that can be used to identify and reference the alert.
+ * @example 5a4981aa-9653-4bd1-bef5-d6bff52042e4
+ */
+ readonly id?: string;
+ };
+ /** @description The notification settings for a trigger alert. */
+ notification: {
+ /**
+ * @description An email to notify on an alert trigger.
+ * @example [
+ * "bob@example.com"
+ * ]
+ */
+ email: string[];
+ /** @description Slack integration details. */
+ slack: {
+ /**
+ * Format: string
+ * @description Slack channel to notify of an alert trigger.
+ * @example Production Alerts
+ */
+ channel: string;
+ /**
+ * Format: string
+ * @description Slack Webhook URL.
+ * @example https://hooks.slack.com/services/T1234567/AAAAAAAA/ZZZZZZ
+ */
+ url: string;
+ }[];
+ };
+ alert_updatable: {
+ /**
+ * @description A human-friendly display name.
+ * @example Landing page degraded performance
+ */
+ name?: string;
+ /**
+ * @description The type of alert.
+ * @example latency
+ * @enum {string}
+ */
+ type?: "latency" | "down" | "down_global" | "ssl_expiry";
+ /**
+ * @description The threshold at which the alert will enter a trigger state. The specific threshold is dependent on the alert type.
+ * @example 300
+ */
+ threshold?: number;
+ /**
+ * @description The comparison operator used against the alert's threshold.
+ * @example greater_than
+ * @enum {string}
+ */
+ comparison?: "greater_than" | "less_than";
+ notifications?: components["schemas"]["notification"];
+ /**
+ * @description Period of time the threshold must be exceeded to trigger the alert.
+ * @example 2m
+ * @enum {string}
+ */
+ period?: "2m" | "3m" | "5m" | "10m" | "15m" | "30m" | "1h";
+ };
+ alert: components["schemas"]["alert_base"] & components["schemas"]["alert_updatable"];
+ };
+ responses: {
+ /** @description Unexpected error */
+ unexpected_error: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @description A JSON object with a key of `1_clicks`. */
+ oneClicks_all: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ "1_clicks"?: components["schemas"]["oneClicks"][];
+ };
+ };
+ };
+ /** @description Unauthorized */
+ unauthorized: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @description API Rate limit exceeded */
+ too_many_requests: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @description Server error. */
+ server_error: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @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.
+ * */
+ oneClicks_create: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /**
+ * @description A message about the result of the request.
+ * @example Successfully kicked off addon job.
+ */
+ message?: string;
+ };
+ };
+ };
+ /** @description A JSON object keyed on account with an excerpt of the current user account data. */
+ account: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ account?: components["schemas"]["account"];
+ };
+ };
+ };
+ /** @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. */
+ sshKeys_all: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ ssh_keys?: components["schemas"]["sshKeys"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description The response body will be a JSON object with a key set to `ssh_key`. */
+ sshKeys_new: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ ssh_key?: components["schemas"]["sshKeys"];
+ };
+ };
+ };
+ /** @description A JSON object with the key set to `ssh_key`. The value is an `ssh_key` object containing the standard `ssh_key` attributes. */
+ sshKeys_existing: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ ssh_key?: components["schemas"]["sshKeys"];
+ };
+ };
+ };
+ /** @description The resource was not found. */
+ not_found: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @description The action was successful and the response body is empty. */
+ no_content: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @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 */
+ actions: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ actions?: components["schemas"]["action"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ action: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ action?: components["schemas"]["action"];
+ };
+ };
+ };
+ /** @description A JSON object with a `apps` key. This is list of object `apps`. */
+ list_apps: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_response"];
+ };
+ };
+ /** @description A JSON or YAML of a `spec` object. */
+ new_app: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["app_response"];
+ };
+ };
+ /** @description A JSON with key `app` */
+ apps_get: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["app_response"];
+ };
+ };
+ /** @description A JSON object of the updated `app` */
+ update_app: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["app_response"];
+ };
+ };
+ /** @description the ID of the app deleted. */
+ delete_app: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_delete_app_response"];
+ };
+ };
+ /** @description A JSON object with urls that point to archived logs */
+ list_logs: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_get_logs_response"];
+ };
+ };
+ /** @description A JSON object with a `deployments` key. This will be a list of all app deployments */
+ existing_deployments: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_deployments_response"];
+ };
+ };
+ /** @description A JSON object with a `deployment` key. */
+ new_app_deployment: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_deployment_response"];
+ };
+ };
+ /** @description A JSON of the requested deployment */
+ list_deployment: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_deployment_response"];
+ };
+ };
+ /** @description A JSON the `deployment` that was just cancelled. */
+ cancel_deployment: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_deployment_response"];
+ };
+ };
+ /** @description A JSON object with a `tiers` key. This will be a list of all app tiers */
+ all_tiers: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_list_tiers_response"];
+ };
+ };
+ /** @description A JSON with the key `tier` */
+ get_tier: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_get_tier_response"];
+ };
+ };
+ /** @description A JSON with key `instance_sizes` */
+ list_instance: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_list_instance_sizes_response"];
+ };
+ };
+ /** @description A JSON with key `instance_size` */
+ get_instance: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_get_instance_size_response"];
+ };
+ };
+ /** @description A JSON object with key `regions` */
+ list_regions: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_list_regions_response"];
+ };
+ };
+ /** @description A JSON object. */
+ propose_app: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["app_propose_response"];
+ };
+ };
+ /** @description A JSON object with a `alerts` key. This is list of object `alerts`. */
+ list_alerts: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_list_alerts_response"];
+ };
+ };
+ /** @description A JSON object with an `alert` key. This is an object of type `alert`. */
+ assign_alert_destinations: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["apps_alert_response"];
+ };
+ };
+ /** @description A JSON object with the validation results. */
+ apps_validate_rollback: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Indicates whether the app can be rolled back to the specified deployment. */
+ valid?: boolean;
+ error?: unknown & components["schemas"]["app_rollback_validation_condition"];
+ /** @description Contains a list of warnings that may cause the rollback to run under unideal circumstances. */
+ warnings?: components["schemas"]["app_rollback_validation_condition"][];
+ };
+ };
+ };
+ /** @description A JSON object with a `app_bandwidth_usage` key */
+ get_metrics_bandwidth_usage: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["app_metrics_bandwidth_usage"];
+ };
+ };
+ /** @description A JSON object with a `app_bandwidth_usage` key */
+ list_metrics_bandwidth_usage: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["app_metrics_bandwidth_usage"];
+ };
+ };
+ /** @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. */
+ all_cdn_endpoints: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ endpoints?: components["schemas"]["cdn_endpoint"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ existing_endpoint: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ endpoint?: components["schemas"]["cdn_endpoint"];
+ };
+ };
+ };
+ /** @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. */
+ all_certificates: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ certificates?: components["schemas"]["certificate"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ new_certificate: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ certificate?: components["schemas"]["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. */
+ existing_certificate: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ certificate?: components["schemas"]["certificate"];
+ };
+ };
+ };
+ /** @description The response will be a JSON object that contains the following attributes */
+ balance: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["balance"];
+ };
+ };
+ /** @description The response will be a JSON object that contains the following attributes */
+ billing_history: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ billing_history?: components["schemas"]["billing_history"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta_optional_total"];
+ };
+ };
+ /** @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. */
+ invoices: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ invoices?: components["schemas"]["invoice_preview"][];
+ invoice_preview?: components["schemas"]["invoice_preview"];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ invoice: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ invoice_items?: components["schemas"]["invoice_item"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description The response will be a CSV file. */
+ invoice_csv: {
+ headers: {
+ "content-disposition": components["headers"]["content-disposition"];
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "text/csv": string;
+ };
+ };
+ /** @description The response will be a PDF file. */
+ invoice_pdf: {
+ headers: {
+ "content-disposition": components["headers"]["content-disposition"];
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/pdf": string;
+ };
+ };
+ /** @description To retrieve a summary for an invoice, send a GET request to `/v2/customers/my/invoices/$INVOICE_UUID/summary`. */
+ invoice_summary: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["invoice_summary"];
+ };
+ };
+ /** @description A JSON string with a key of `options`. */
+ options: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["options"];
+ };
+ };
+ /** @description A JSON object with a key of `databases`. */
+ database_clusters: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ databases?: components["schemas"]["database_cluster"][];
+ };
+ };
+ };
+ /** @description A JSON object with a key of `database`. */
+ database_cluster: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ database: components["schemas"]["database_cluster"];
+ };
+ };
+ };
+ /** @description A JSON object with a key of `config`. */
+ database_config: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ config: components["schemas"]["mysql"] | components["schemas"]["postgres"] | components["schemas"]["redis"];
+ };
+ };
+ };
+ /** @description A JSON object with a key of `ca`. */
+ ca: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ ca: components["schemas"]["ca"];
+ };
+ };
+ };
+ /** @description A JSON object. */
+ online_migration: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["online_migration"];
+ };
+ };
+ /** @description The does not indicate the success or failure of any operation, just that the request has been accepted for processing. */
+ accepted: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description A JSON object with a key of `rules`. */
+ firewall_rules: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ rules?: components["schemas"]["firewall_rule"][];
+ };
+ };
+ };
+ /** @description A JSON object with a key of `database_backups`. */
+ database_backups: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ backups: components["schemas"]["backup"][];
+ };
+ };
+ };
+ /** @description A JSON object with a key of `replicas`. */
+ database_replicas: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ replicas?: components["schemas"]["database_replica"][];
+ };
+ };
+ };
+ /** @description A JSON object with a key of `replica`. */
+ database_replica: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ replica?: components["schemas"]["database_replica"];
+ };
+ };
+ };
+ /** @description A JSON object with a key of `users`. */
+ users: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ users?: components["schemas"]["database_user"][];
+ };
+ };
+ };
+ /** @description A JSON object with a key of `user`. */
+ user: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ user: components["schemas"]["database_user"];
+ };
+ };
+ };
+ /** @description A JSON object with a key of `databases`. */
+ databases: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ dbs?: components["schemas"]["database"][];
+ };
+ };
+ };
+ /** @description A JSON object with a key of `db`. */
+ database: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ db: components["schemas"]["database"];
+ };
+ };
+ };
+ /** @description A JSON object with a key of `pools`. */
+ connection_pools: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["connection_pools"];
+ };
+ };
+ /** @description A JSON object with a key of `pool`. */
+ connection_pool: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ pool: components["schemas"]["connection_pool"];
+ };
+ };
+ };
+ /** @description A JSON string with a key of `eviction_policy`. */
+ eviction_policy_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ eviction_policy: components["schemas"]["eviction_policy_model"];
+ };
+ };
+ };
+ /** @description A JSON string with a key of `sql_mode`. */
+ sql_mode: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["sql_mode"];
+ };
+ };
+ /** @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. */
+ all_domains_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Array of volumes. */
+ domains: components["schemas"]["domain"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ create_domain_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ domain?: components["schemas"]["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. */
+ existing_domain: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ domain?: components["schemas"]["domain"];
+ };
+ };
+ };
+ /** @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. */
+ all_domain_records_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ domain_records?: components["schemas"]["domain_record"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ created_domain_record: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ domain_record?: components["schemas"]["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. */
+ domain_record: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ domain_record?: components["schemas"]["domain_record"];
+ };
+ };
+ };
+ /** @description A JSON object with a key of `droplets`. */
+ all_droplets: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ droplets?: components["schemas"]["droplet"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description Accepted */
+ droplet_create: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ droplet: components["schemas"]["droplet"];
+ links: {
+ actions?: components["schemas"]["action_link"][];
+ };
+ } | {
+ droplets: components["schemas"]["droplet"][];
+ links: {
+ actions?: components["schemas"]["action_link"][];
+ };
+ };
+ };
+ };
+ /** @description The action was successful and the response body is empty. This response has content-type set. */
+ no_content_with_content_type: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ "content-type": components["headers"]["content-type"];
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @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.
+ * */
+ existing_droplet: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ droplet?: components["schemas"]["droplet"];
+ };
+ };
+ };
+ /** @description A JSON object with an `backups` key. */
+ all_droplet_backups: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ backups?: components["schemas"]["droplet_snapshot"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description A JSON object with an `snapshots` key. */
+ all_droplet_snapshots: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ snapshots?: components["schemas"]["droplet_snapshot"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description A JSON object with an `actions` key. */
+ all_droplet_actions: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ actions?: components["schemas"]["action"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description The response will be a JSON object with a key called `action`. */
+ droplet_action: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ action?: components["schemas"]["action"];
+ };
+ };
+ };
+ /** @description The response will be a JSON object with a key called `actions`. */
+ droplet_actions_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ actions?: components["schemas"]["action"][];
+ };
+ };
+ };
+ /** @description A JSON object that has a key called `kernels`. */
+ all_kernels: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ kernels?: components["schemas"]["kernel"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description A JSON object that has a key called `firewalls`. */
+ all_firewalls: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ firewalls?: components["schemas"]["firewall"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description A JSON object with an `droplets` key. */
+ neighbor_droplets: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ droplets?: components["schemas"]["droplet"][];
+ };
+ };
+ };
+ /** @description A JSON object containing `snapshots`, `volumes`, and `volume_snapshots` keys. */
+ associated_resources_list: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ reserved_ips?: components["schemas"]["associated_resource"][];
+ floating_ips?: components["schemas"]["associated_resource"][];
+ snapshots?: components["schemas"]["associated_resource"][];
+ volumes?: components["schemas"]["associated_resource"][];
+ volume_snapshots?: components["schemas"]["associated_resource"][];
+ };
+ };
+ };
+ /** @description A JSON object containing containing the status of a request to destroy a Droplet and its associated resources. */
+ associated_resources_status: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["associated_resource_status"];
+ };
+ };
+ /** @description Conflict */
+ conflict: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @description To list all of the firewalls available on your account, send a GET request to `/v2/firewalls`. */
+ list_firewalls_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ firewalls?: components["schemas"]["firewall"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description The response will be a JSON object with a firewall key. This will be set to an object containing the standard firewall attributes */
+ create_firewall_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ firewall?: components["schemas"]["firewall"];
+ };
+ };
+ };
+ /** @description Bad Request */
+ bad_request: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @description The response will be a JSON object with a firewall key. This will be set to an object containing the standard firewall attributes. */
+ get_firewall_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ firewall?: components["schemas"]["firewall"];
+ };
+ };
+ };
+ /** @description The response will be a JSON object with a `firewall` key. This will be set to an object containing the standard firewall attributes. */
+ put_firewall_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ firewall?: components["schemas"]["firewall"];
+ };
+ };
+ };
+ /** @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 */
+ floating_ip_list: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ floating_ips?: components["schemas"]["floating_ip"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ floating_ip_created: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ floating_ip?: components["schemas"]["floating_ip"];
+ links?: {
+ droplets?: components["schemas"]["action_link"][];
+ actions?: components["schemas"]["action_link"][];
+ };
+ };
+ };
+ };
+ /** @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. */
+ floating_ip: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ floating_ip?: components["schemas"]["floating_ip"];
+ };
+ };
+ };
+ /** @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. */
+ floating_ip_actions: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ actions?: components["schemas"]["action"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ floating_ip_action: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ action?: components["schemas"]["action"] & {
+ /**
+ * Format: uuid
+ * @description The UUID of the project to which the reserved IP currently belongs.
+ * @example 746c6152-2fa2-11ed-92d3-27aaa54e4988
+ */
+ project_id?: string;
+ };
+ };
+ };
+ };
+ /** @description An array of JSON objects with a key called `namespaces`. Each object represents a namespace and contains
+ * the properties associated with it. */
+ list_namespaces: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ namespaces?: components["schemas"]["namespace_info"][];
+ };
+ };
+ };
+ /** @description A JSON response object with a key called `namespace`. The object contains the properties associated
+ * with the namespace. */
+ namespace_created: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ namespace?: components["schemas"]["namespace_info"];
+ };
+ };
+ };
+ /** @description Bad Request. */
+ namespace_bad_request: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @description Limit Reached */
+ namespace_limit_reached: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @description Not Allowed. */
+ namespace_not_allowed: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @description Bad Request. */
+ namespace_not_found: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @description An array of JSON objects with a key called `namespaces`. Each object represents a namespace and contains
+ * the properties associated with it. */
+ list_triggers: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ triggers?: components["schemas"]["trigger_info"][];
+ };
+ };
+ };
+ /** @description A JSON response object with a key called `trigger`. The object contains the properties associated
+ * with the trigger. */
+ trigger_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ trigger?: components["schemas"]["trigger_info"];
+ };
+ };
+ };
+ /** @description Bad Request. */
+ trigger_bad_request: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @description Limit Reached */
+ trigger_limit_reached: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @description Bad Request. */
+ trigger_not_found: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @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. */
+ all_images: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ images: components["schemas"]["image"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ new_custom_image: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ image?: components["schemas"]["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. */
+ existing_image: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ image: components["schemas"]["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. */
+ updated_image: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ image: components["schemas"]["image"];
+ };
+ };
+ };
+ /** @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. */
+ get_image_actions_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ actions?: components["schemas"]["action"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ post_image_action_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["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 image action attributes. */
+ get_image_action_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["action"];
+ };
+ };
+ /** @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.
+ * */
+ all_clusters: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ kubernetes_clusters?: components["schemas"]["cluster"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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`.
+ * */
+ cluster_create: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ kubernetes_cluster?: components["schemas"]["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.
+ * */
+ existing_cluster: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ kubernetes_cluster?: components["schemas"]["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.
+ * */
+ updated_cluster: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ kubernetes_cluster?: components["schemas"]["cluster"];
+ };
+ };
+ };
+ /** @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. */
+ associated_kubernetes_resources_list: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["associated_kubernetes_resources"];
+ };
+ };
+ /** @description A kubeconfig file for the cluster in YAML format. */
+ kubeconfig: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/yaml": unknown;
+ };
+ };
+ /** @description A JSON object containing credentials for a cluster. */
+ credentials: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["credentials"];
+ };
+ };
+ /** @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`.
+ * */
+ available_upgrades: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ available_upgrade_versions?: components["schemas"]["kubernetes_version"][] | null;
+ };
+ };
+ };
+ /** @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.
+ * */
+ all_node_pools: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ node_pools?: components["schemas"]["kubernetes_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.
+ * */
+ node_pool_create: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ node_pool?: components["schemas"]["kubernetes_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.
+ * */
+ existing_node_pool: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ node_pool?: components["schemas"]["kubernetes_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.
+ * */
+ node_pool_update: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ node_pool?: components["schemas"]["kubernetes_node_pool"];
+ };
+ };
+ };
+ /** @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.
+ * */
+ cluster_user: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["user"];
+ };
+ };
+ /** @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.
+ * */
+ all_options: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["kubernetes_options"];
+ };
+ };
+ /** @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.
+ * */
+ clusterlint_results: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["clusterlint_results"];
+ };
+ };
+ /** @description The response is a JSON object with a key called `run_id` that you can later use to fetch the run results. */
+ clusterlint_run: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /**
+ * @description ID of the clusterlint run that can be used later to fetch the diagnostics.
+ * @example 50c2f44c-011d-493e-aee5-361a4a0d1844
+ */
+ run_id?: string;
+ };
+ };
+ };
+ /** @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. */
+ all_load_balancers: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ load_balancers?: components["schemas"]["load_balancer"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description Accepted */
+ load_balancer_create: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ load_balancer?: components["schemas"]["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
+ * */
+ existing_load_balancer: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ load_balancer?: components["schemas"]["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.
+ * */
+ updated_load_balancer: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ load_balancer?: components["schemas"]["load_balancer"];
+ };
+ };
+ };
+ /** @description A list of alert policies. */
+ list_alert_policy_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["list_alert_policy"] & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description An alert policy. */
+ alert_policy_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ policy?: components["schemas"]["alert_policy"];
+ };
+ };
+ };
+ /** @description The response will be a JSON object with a key called `data` and `status`. */
+ droplet_bandwidth_metric_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["metrics"];
+ };
+ };
+ /** @description The response will be a JSON object with a key called `data` and `status`. */
+ droplet_cpu_metric_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["metrics"];
+ };
+ };
+ /** @description The response will be a JSON object with a key called `data` and `status`. */
+ droplet_filesystem_metric_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["metrics"];
+ };
+ };
+ /** @description The response will be a JSON object with a key called `data` and `status`. */
+ metric_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["metrics"];
+ };
+ };
+ /** @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 */
+ projects_list: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ projects?: components["schemas"]["project"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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 */
+ existing_project: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ project?: components["schemas"]["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 */
+ default_project: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ project?: components["schemas"]["project"];
+ };
+ };
+ };
+ /** @description Only an empty project can be deleted. */
+ precondition_failed: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error"];
+ };
+ };
+ /** @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. */
+ resources_list: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ resources?: components["schemas"]["resource"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ assigned_resources_list: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ resources?: components["schemas"]["resource"][];
+ };
+ };
+ };
+ /** @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. */
+ all_regions: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ regions: components["schemas"]["region"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description The response will be a JSON object with the key `registry` containing information about your registry. */
+ registry_info: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ registry?: components["schemas"]["registry"];
+ };
+ };
+ };
+ /** @description The response will be a JSON object with a key called `subscription` containing information about your subscription. */
+ subscription_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ subscription?: components["schemas"]["subscription"];
+ };
+ };
+ };
+ /** @description A Docker `config.json` file for the container registry. */
+ docker_credentials: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["docker_credentials"];
+ };
+ };
+ /** @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. */
+ all_repositories: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ repositories?: components["schemas"]["repository"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ all_repositories_v2: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ repositories?: components["schemas"]["repository_v2"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ repository_tags: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ tags?: components["schemas"]["repository_tag"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ repository_manifests: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ manifests?: components["schemas"]["repository_manifest"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ garbage_collection: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ garbage_collection?: components["schemas"]["garbage_collection"];
+ };
+ };
+ };
+ /** @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. */
+ garbage_collections: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ garbage_collections?: components["schemas"]["garbage_collection"][];
+ };
+ };
+ };
+ /** @description The response will be a JSON object with a key called `options` which contains a key called `subscription_tiers` listing the available tiers. */
+ registry_options_response: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ options?: {
+ /** @example [
+ * "nyc3"
+ * ] */
+ available_regions?: string[];
+ subscription_tiers?: (components["schemas"]["subscription_tier_base"] & components["schemas"]["subscription_tier_extended"])[];
+ };
+ };
+ };
+ };
+ /** @description A JSON object with an `neighbor_ids` key. */
+ droplet_neighbors_ids: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["neighbor_ids"];
+ };
+ };
+ /** @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 */
+ reserved_ip_list: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ reserved_ips?: components["schemas"]["reserved_ip"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ reserved_ip_created: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ reserved_ip?: components["schemas"]["reserved_ip"];
+ links?: {
+ droplets?: components["schemas"]["action_link"][];
+ actions?: components["schemas"]["action_link"][];
+ };
+ };
+ };
+ };
+ /** @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. */
+ reserved_ip: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ reserved_ip?: components["schemas"]["reserved_ip"];
+ };
+ };
+ };
+ /** @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. */
+ reserved_ip_actions: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ actions?: components["schemas"]["action"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ reserved_ip_action: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ action?: components["schemas"]["action"] & {
+ /**
+ * Format: uuid
+ * @description The UUID of the project to which the reserved IP currently belongs.
+ * @example 746c6152-2fa2-11ed-92d3-27aaa54e4988
+ */
+ project_id?: string;
+ };
+ };
+ };
+ };
+ /** @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. */
+ all_sizes: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ sizes: components["schemas"]["size"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description A JSON object with a key of `snapshots`. */
+ snapshots: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ snapshots?: components["schemas"]["snapshots"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @description A JSON object with a key called `snapshot`.
+ * */
+ snapshots_existing: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ snapshot?: components["schemas"]["snapshots"];
+ };
+ };
+ };
+ /** @description To list all of your tags, you can send a `GET` request to `/v2/tags`. */
+ tags_all: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ tags?: components["schemas"]["tags"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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 */
+ tags_new: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ tag?: components["schemas"]["tags"];
+ };
+ };
+ };
+ /** @description Bad Request */
+ tags_bad_request: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ "x-request-id": components["headers"]["x-request-id"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["error_with_root_causes"];
+ };
+ };
+ /** @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. */
+ tags_existing: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ tag?: components["schemas"]["tags"];
+ };
+ };
+ };
+ /** @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. */
+ volumes: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @description Array of volumes. */
+ volumes: components["schemas"]["volume_full"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ volume: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ volume?: components["schemas"]["volume_full"];
+ };
+ };
+ };
+ /** @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 */
+ volumeAction: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ action?: components["schemas"]["volumeAction"];
+ };
+ };
+ };
+ /** @description You will get back a JSON object that has a `snapshot` key. This will contain the standard snapshot attributes */
+ volumeSnapshot: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ snapshot?: components["schemas"]["snapshots"];
+ };
+ };
+ };
+ /** @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. */
+ volumeActions: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ actions?: components["schemas"]["volumeAction"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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 */
+ volumeSnapshots: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ snapshots?: components["schemas"]["snapshots"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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 */
+ all_vpcs: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ vpcs?: components["schemas"]["vpc"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ existing_vpc: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ vpc?: components["schemas"]["vpc"];
+ };
+ };
+ };
+ /** @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. */
+ vpc_members: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ members?: components["schemas"]["vpc_member"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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 */
+ all_checks: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ checks?: components["schemas"]["check"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ existing_check: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ check?: components["schemas"]["check"];
+ };
+ };
+ };
+ /** @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. */
+ existing_check_state: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ state?: components["schemas"]["state"];
+ };
+ };
+ };
+ /** @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. */
+ all_alerts: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ alerts?: components["schemas"]["alert"][];
+ } & components["schemas"]["pagination"] & components["schemas"]["meta"];
+ };
+ };
+ /** @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. */
+ existing_alert: {
+ headers: {
+ "ratelimit-limit": components["headers"]["ratelimit-limit"];
+ "ratelimit-remaining": components["headers"]["ratelimit-remaining"];
+ "ratelimit-reset": components["headers"]["ratelimit-reset"];
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ alert?: components["schemas"]["alert"];
+ };
+ };
+ };
};
- };
- "resources/certificates/responses/new_certificate.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- certificate?: external["resources/certificates/models/certificate.yml"];
- };
- };
- };
- /**
- * 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://www.digitalocean.com/docs/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.
- */
- "resources/databases/databases_add_connectionPool.yml": {
parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- requestBody: {
- content: {
/**
- * @example {
- * "name": "backend-pool",
- * "mode": "transaction",
- * "size": 10,
- * "db": "defaultdb",
- * "user": "doadmin"
- * }
+ * @description Restrict results to a certain type of 1-Click.
+ * @example kubernetes
*/
- "application/json": external["resources/databases/models/connection_pool.yml"];
- };
- };
- responses: {
- 201: external["resources/databases/responses/connection_pool.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- *
- * 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.
- */
- "resources/databases/databases_add_user.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- requestBody: {
- content: {
- "application/json": external["resources/databases/models/database_user.yml"] & {
- /**
- * @description For MongoDB clusters, set to `true` to create a read-only user.
- * This option is not currently supported for other database engines.
- *
- * @example true
- */
- readonly?: boolean;
- };
- };
- };
- responses: {
- 201: external["resources/databases/responses/user.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_add.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- requestBody: {
- content: {
+ oneClicks_type: "droplet" | "kubernetes";
/**
- * @example {
- * "name": "alpha"
- * }
+ * @description Number of items returned per page
+ * @example 2
*/
- "application/json": external["resources/databases/models/database.yml"];
- };
- };
- responses: {
- 201: external["resources/databases/responses/database.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- * 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.
- */
- "resources/databases/databases_create_cluster.yml": {
- requestBody: {
- content: {
- "application/json": external["resources/databases/models/database_cluster.yml"] & {
- backup_restore?: external["resources/databases/models/database_backup.yml"];
- };
- };
- };
- responses: {
- 201: external["resources/databases/responses/database_cluster.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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`.
- */
- "resources/databases/databases_create_replica.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- requestBody?: {
- content: {
+ per_page: number;
/**
- * @example {
- * "name": "read-nyc3-01",
- * "region": "nyc3",
- * "size": "db-s-2vcpu-4gb"
- * }
+ * @description Which 'page' of paginated results to return.
+ * @example 1
*/
- "application/json": WithRequired;
- };
- };
- responses: {
- 201: external["resources/databases/responses/database_replica.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_delete_connectionPool.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- pool_name: external["resources/databases/parameters.yml"]["pool_name"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_delete_onlineMigration.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- migration_id: external["resources/databases/parameters.yml"]["migration_id"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_delete_user.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- username: external["resources/databases/parameters.yml"]["username"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_delete.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- database_name: external["resources/databases/parameters.yml"]["database_name"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_destroy_cluster.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_destroy_replica.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- replica_name: external["resources/databases/parameters.yml"]["replica_name"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_get_ca.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/ca.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- * The embedded maintenance_window object will contain information about any scheduled maintenance for the database cluster.
- */
- "resources/databases/databases_get_cluster.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/database_cluster.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_get_config.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/database_config.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_get_connectionPool.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- pool_name: external["resources/databases/parameters.yml"]["pool_name"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/connection_pool.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_get_evictionPolicy.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/eviction_policy_response.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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`.
- */
- "resources/databases/databases_get_migrationStatus.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/online_migration.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_get_replica.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- replica_name: external["resources/databases/parameters.yml"]["replica_name"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/database_replica.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_get_sql_mode.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/sql_mode.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_get_user.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- username: external["resources/databases/parameters.yml"]["username"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/user.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_get.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- database_name: external["resources/databases/parameters.yml"]["database_name"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/database.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_list_backups.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/database_backups.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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:
- * The embedded `maintenance_window` object will contain information about any scheduled maintenance for the database cluster.
- */
- "resources/databases/databases_list_clusters.yml": {
- parameters: {
- query?: {
- tag_name?: external["resources/databases/parameters.yml"]["tag_name"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/database_clusters.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_list_connectionPools.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/connection_pools.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_list_firewall_rules.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/firewall_rules.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_list_options.yml": {
- responses: {
- 200: external["resources/databases/responses/options.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_list_replicas.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/database_replicas.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_list_users.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/users.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_list.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/databases.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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`.
- */
- "resources/databases/databases_patch_config.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- requestBody: {
- content: {
+ page: number;
+ /**
+ * @description Either the ID or the fingerprint of an existing SSH key.
+ * @example 512189
+ */
+ ssh_key_identifier: components["schemas"]["ssh_key_id"] | components["schemas"]["ssh_key_fingerprint"];
+ /**
+ * @description A unique numeric ID that can be used to identify and reference an action.
+ * @example 36804636
+ */
+ action_id: number;
+ /**
+ * @description Whether the project_id of listed apps should be fetched and included.
+ * @example true
+ */
+ with_projects: boolean;
+ /**
+ * @description The content-type that should be used by the response. By default, the response will be `application/json`. `application/yaml` is also supported.
+ * @example application/json
+ */
+ accept: "application/json" | "application/yaml";
+ /**
+ * @description The content-type used for the request. By default, the requests are assumed to use `application/json`. `application/yaml` is also supported.
+ * @example application/json
+ */
+ "content-type": "application/json" | "application/yaml";
+ /**
+ * @description The ID of the app
+ * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
+ */
+ id_app: string;
+ /**
+ * @description The name of the app to retrieve.
+ * @example myApp
+ */
+ app_name: string;
+ /**
+ * @description The app ID
+ * @example 4f6c71e2-1e90-4762-9fee-6cc4a0a9f2cf
+ */
+ app_id: string;
+ /**
+ * @description An optional component name. If set, logs will be limited to this component only.
+ * @example component
+ */
+ component: string;
+ /**
+ * @description Whether the logs should follow live updates.
+ * @example true
+ */
+ live_updates: boolean;
+ /**
+ * @description The type of logs to retrieve
+ * - BUILD: Build-time logs
+ * - DEPLOY: Deploy-time logs
+ * - RUN: Live run-time logs
+ * @example BUILD
+ */
+ log_type: "UNSPECIFIED" | "BUILD" | "DEPLOY" | "RUN";
+ /**
+ * @description An optional time duration to wait if the underlying component instance is not immediately available. Default: `3m`.
+ * @example 3m
+ */
+ time_wait: string;
+ /**
+ * @description The deployment ID
+ * @example 3aa4d20e-5527-4c00-b496-601fbd22520a
+ */
+ deployment_id: string;
/**
- * @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
- * }
- * }
+ * @description The slug of the tier
+ * @example basic
*/
- "application/json": external["resources/databases/models/database_config.yml"];
- };
- };
- responses: {
- 200: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_promote_replica.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- replica_name: external["resources/databases/parameters.yml"]["replica_name"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_reset_auth.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- username: external["resources/databases/parameters.yml"]["username"];
- };
- };
- requestBody: {
- content: {
+ slug_tier: string;
/**
- * @example {
- * "mysql_settings": {
- * "auth_plugin": "caching_sha2_password"
- * }
- * }
+ * @description The slug of the instance size
+ * @example basic-xxs
*/
- "application/json": {
- mysql_settings?: external["resources/databases/models/mysql_settings.yml"];
- };
- };
- };
- responses: {
- 200: external["resources/databases/responses/user.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_update_clusterSize.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- requestBody: {
- content: {
+ slug_size: string;
/**
- * @example {
- * "size": "db-s-4vcpu-8gb",
- * "num_nodes": 3
- * }
+ * @description The alert ID
+ * @example 5a624ab5-dd58-4b39-b7dd-8b7c36e8a91d
*/
- "application/json": external["resources/databases/models/database_cluster_resize.yml"];
- };
- };
- responses: {
- 202: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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`.
- */
- "resources/databases/databases_update_connectionPool.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- pool_name: external["resources/databases/parameters.yml"]["pool_name"];
- };
- };
- requestBody: {
- content: {
+ alert_id: string;
/**
- * @example {
- * "mode": "transaction",
- * "size": 10,
- * "db": "defaultdb",
- * "user": "doadmin"
- * }
+ * @description A unique identifier for a CDN endpoint.
+ * @example 19f06b6a-3ace-4315-b086-499a0e521b76
*/
- "application/json": external["resources/databases/models/connection_pool_update.yml"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_update_evictionPolicy.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- requestBody: {
- content: {
+ cdn_endpoint_id: string;
/**
- * @example {
- * "eviction_policy": "allkeys_lru"
- * }
+ * @description A unique identifier for a certificate.
+ * @example 4de7ac8b-495b-4884-9a69-1050c6793cd6
*/
- "application/json": {
- eviction_policy: external["resources/databases/models/eviction_policy_model.yml"];
- };
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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://www.digitalocean.com/docs/networking/vpc/) to limit access to them instead of using a firewall.
- * A successful
- */
- "resources/databases/databases_update_firewall_rules.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- requestBody: {
- content: {
- /**
- * @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"
- * }
- * ]
- * }
- */
- "application/json": {
- rules?: external["resources/databases/models/firewall_rule.yml"][];
- };
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_update_maintenanceWindow.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- requestBody: {
- content: {
+ certificate_id: string;
/**
- * @example {
- * "day": "tuesday",
- * "hour": "14:00"
- * }
+ * @description UUID of the invoice
+ * @example 22737513-0ea7-4206-8ceb-98a575af7681
*/
- "application/json": external["resources/databases/models/database_maintenance_window.yml"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_update_onlineMigration.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- requestBody: {
- content: {
- /**
- * @example {
- * "source": {
- * "host": "source-do-user-6607903-0.b.db.ondigitalocean.com",
- * "dbname": "defaultdb",
- * "port": 25060,
- * "username": "doadmin",
- * "password": "paakjnfe10rsrsmf"
- * },
- * "disable_ssl": false
- * }
- */
- "application/json": external["resources/databases/models/source_database.yml"];
- };
- };
- responses: {
- 200: external["resources/databases/responses/online_migration.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_update_region.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- requestBody: {
- content: {
- "application/json": {
- /**
- * @description A slug identifier for the region to which the database cluster will be migrated.
- * @example lon1
- */
- region: string;
- };
- };
- };
- responses: {
- 202: external["shared/responses/accepted.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_update_sql_mode.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- requestBody: {
- content: {
+ invoice_uuid: string;
/**
- * @example {
- * "sql_mode": "ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE"
- * }
+ * @description Limits the results to database clusters with a specific tag.
+ * @example production
*/
- "application/json": external["resources/databases/models/sql_mode.yml"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/databases/databases_upgrade_major_version.yml": {
- parameters: {
- path: {
- database_cluster_uuid: external["resources/databases/parameters.yml"]["database_cluster_uuid"];
- };
- };
- requestBody: {
- content: {
+ tag_name: string;
/**
- * @example {
- * "version": "14"
- * }
+ * @description A unique identifier for a database cluster.
+ * @example 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
*/
- "application/json": external["resources/databases/models/version.yml"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- "resources/databases/models/backup.yml": {
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format at which the backup was created.
- * @example "2019-01-31T19:25:22.000Z"
- */
- created_at: string;
- /**
- * @description The size of the database backup in GBs.
- * @example 0.03364864
- */
- size_gigabytes: number;
- };
- "resources/databases/models/ca.yml": {
- /**
- * @description base64 encoding of the certificate used to secure database connections
- * @example LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVRVENDQXFtZ0F3SUJBZ0lVRUZZWTdBWFZQS0Raam9jb1lpMk00Y0dvcU0wd0RRWUpLb1pJaHZjTkFRRU0KQlFBd09qRTRNRFlHQTFVRUF3d3ZOek0zT1RaaE1XRXRaamhrTUMwME9HSmpMV0V4Wm1NdFpqbGhNVFZsWXprdwpORGhsSUZCeWIycGxZM1FnUTBFd0hoY05NakF3TnpFM01UVTFNREEyV2hjTk16QXdOekUxTVRVMU1EQTJXakE2Ck1UZ3dOZ1lEVlFRRERDODNNemM1Tm1FeFlTMW1PR1F3TFRRNFltTXRZVEZtWXkxbU9XRXhOV1ZqT1RBME9HVWcKVUhKdmFtVmpkQ0JEUVRDQ0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBTVdScXhycwpMZnpNdHZyUmxKVEw4MldYMVBLZkhKbitvYjNYcmVBY3FZd1dBUUp2Q3IycmhxSXZieVZzMGlaU0NzOHI4c3RGClljQ0R1bkxJNmUwTy9laERZYTBIT2RrMkFFRzE1ckVOVmNha2NSczcyQWlHVHNrdkNXS2VkUjFTUWswVWt0WCsKQUg4S1ExS3F5bzNtZ2Y2cVV1WUpzc3JNTXFselk3YTN1RVpEb2ZqTjN5Q3MvM21pTVJKcVcyNm1JV0IrUUlEbAo5YzdLRVF5MTZvdCtjeHVnd0lLMm9oZHMzaFY1bjBKMFVBM0I3QWRBdXY5aUl5L3JHaHlTNm5CNTdaWm9JZnAyCnFybXdOY0UrVjlIdXhQSGtRVjFOQjUwOFFudWZ4Z0E5VCtqU2VrdGVUbWFORkxqNjFXL3BtcndrTytOaWFXUTIKaGgzVXBKOEozY1BoNkErbHRnUmpSV2NEb2lsYVNwRVVpU09WemNNYVFvalZKYVJlNk9NbnZYc29NaSs3ZzdneApWcittQ0lUcGcvck9DaXpBWWQ2UFAxLzdYTjk1ZXNmU2tBQnM5c3hJakpjTUFqbDBYTEFzRmtGZVdyeHNIajlVCmJnaDNWYXdtcnpUeXhZT0RQcXV1cS9JcGlwc0RRT3Fpb2ZsUStkWEJJL3NUT0NNbVp6K0pNcG5HYXdJREFRQUIKb3o4d1BUQWRCZ05WSFE0RUZnUVVSekdDRlE3WEtUdHRDN3JzNS8ydFlQcExTZGN3RHdZRFZSMFRCQWd3QmdFQgovd0lCQURBTEJnTlZIUThFQkFNQ0FRWXdEUVlKS29aSWh2Y05BUUVNQlFBRGdnR0JBSWFKQ0dSVVNxUExtcmcvCmk3MW10b0NHUDdzeG1BVXVCek1oOEdrU25uaVdaZnZGMTRwSUtqTlkwbzVkWmpHKzZqK1VjalZtK0RIdGE1RjYKOWJPeEk5S0NFeEI1blBjRXpMWjNZYitNOTcrellxbm9zUm85S21DVFJBb2JrNTZ0WU1FS1h1aVJja2tkMm1yUQo4cGw2N2xxdThjM1V4c0dHZEZVT01wMkk3ZTNpdUdWVm5UR0ZWM3JQZUdaQ0J3WGVyUUQyY0F4UjkzS3BnWVZ2ClhUUzk5dnpSbm1HOHhhUm9EVy9FbEdXZ2xWd0Q5a1JrbXhUUkdoYTdDWVZCcjFQVWY2dVVFVjhmVFIxc1hFZnIKLytMR1JoSVVsSUhWT3l2Yzk3YnZYQURPbWF1MWZDVE5lWGtRdTNyZnZFSlBmaFlLeVIwT0V3eWVvdlhRNzl0LwpTV2ZGTjBreU1Pc1UrNVNIdHJKSEh1eWNWcU0yQlVVK083VjM1UnNwOU9MZGRZMFFVbTZldFpEVEhhSUhYYzRRCnl1Rm1OL1NhSFZtNE0wL3BTVlJQdVd6TmpxMnZyRllvSDRtbGhIZk95TUNJMjc2elE2aWhGNkdDSHlkOUJqajcKUm1UWGEyNHM3NWhmSi9YTDV2bnJSdEtpVHJlVHF6V21EOVhnUmNMQ0gyS1hJaVRtSWc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
- */
- certificate: string;
- };
- "resources/databases/models/connection_pool_update.yml": {
- /**
- * @description The PGBouncer transaction mode for the connection pool. The allowed values are session, transaction, and statement.
- * @example transaction
- */
- mode: string;
- /**
- * 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
- */
- size: number;
- /**
- * @description The database for use with the connection pool.
- * @example defaultdb
- */
- db: 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
- */
- user?: string;
- };
- "resources/databases/models/connection_pool.yml": {
- /**
- * @description A unique name for the connection pool. Must be between 3 and 60 characters.
- * @example backend-pool
- */
- name: string;
- /**
- * @description The PGBouncer transaction mode for the connection pool. The allowed values are session, transaction, and statement.
- * @example transaction
- */
- mode: string;
- /**
- * 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
- */
- size: number;
- /**
- * @description The database for use with the connection pool.
- * @example defaultdb
- */
- db: 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
- */
- user?: string;
- connection?: external["resources/databases/models/database_connection.yml"];
- private_connection?: external["resources/databases/models/database_connection.yml"];
- };
- "resources/databases/models/connection_pools.yml": {
- /** @description An array of connection pool objects. */
- pools?: readonly external["resources/databases/models/connection_pool.yml"][];
- };
- "resources/databases/models/database_backup.yml": {
- /**
- * @description The name of an existing database cluster from which the backup will be restored.
- * @example backend
- */
- database_name: string;
- /**
- * Format: date-time
- * @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.
- * @example "2019-01-31T19:25:22.000Z"
- */
- backup_created_at?: string;
- };
- "resources/databases/models/database_cluster_resize.yml": {
- /**
- * @description A slug identifier representing desired the size of the nodes in the database cluster.
- * @example db-s-4vcpu-8gb
- */
- size: string;
- /**
- * Format: int32
- * @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.
- * @example 3
- */
- num_nodes: number;
- };
- "resources/databases/models/database_cluster.yml": {
- /**
- * Format: uuid
- * @description A unique ID that can be used to identify and reference a database cluster.
- * @example 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
- */
- id?: string;
- /**
- * @description A unique, human-readable name referring to a database cluster.
- * @example backend
- */
- name: string;
- /**
- * @description A slug representing the database engine used for the cluster. The possible values are: "pg" for PostgreSQL, "mysql" for MySQL, "redis" for Redis, and "mongodb" for MongoDB.
- * @example mysql
- * @enum {string}
- */
- engine: "pg" | "mysql" | "redis" | "mongodb";
- /**
- * @description A string representing the version of the database engine in use for the cluster.
- * @example 8
- */
- version?: string;
- /**
- * @description A string representing the semantic version of the database engine in use for the cluster.
- * @example 8.0.28
- */
- semantic_version?: string;
- /**
- * @description The number of nodes in the database cluster.
- * @example 2
- */
- num_nodes: number;
- /**
- * @description The slug identifier representing the size of the nodes in the database cluster.
- * @example db-s-2vcpu-4gb
- */
- size: string;
- /**
- * @description The slug identifier for the region where the database cluster is located.
- * @example nyc3
- */
- region: string;
- /**
- * @description A string representing the current status of the database cluster.
- * @example creating
- * @enum {string}
- */
- status?: "creating" | "online" | "resizing" | "migrating" | "forking";
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format that represents when the database cluster was created.
- * @example "2019-01-11T18:37:36.000Z"
- */
- created_at?: string;
- /**
- * @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.
- * @example d455e75d-4858-4eec-8c95-da2f0a5f93a7
- */
- private_network_uuid?: string;
- /**
- * @description An array of tags that have been applied to the database cluster.
- * @example [
- * "production"
- * ]
- */
- tags?: string[] | null;
- /**
- * @description An array of strings containing the names of databases created in the database cluster.
- * @example [
- * "doadmin"
- * ]
- */
- db_names?: (readonly string[]) | null;
- connection?: external["resources/databases/models/database_connection.yml"];
- private_connection?: external["resources/databases/models/database_connection.yml"];
- users?: (readonly external["resources/databases/models/database_user.yml"][]) | null;
- maintenance_window?: external["resources/databases/models/database_maintenance_window.yml"];
- /**
- * Format: uuid
- * @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.
- * @example 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
- */
- project_id?: string;
- rules?: external["resources/databases/models/firewall_rule.yml"][];
- /**
- * @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.
- * @example 2023-11-09T00:00:00Z
- */
- version_end_of_life?: string;
- /**
- * @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.
- * @example 2023-05-09T00:00:00Z
- */
- version_end_of_availability?: string;
- };
- "resources/databases/models/database_config.yml": {
- config?: external["resources/databases/models/mysql.yml"] | external["resources/databases/models/postgres.yml"] | external["resources/databases/models/redis.yml"];
- };
- "resources/databases/models/database_connection.yml": {
- /**
- * @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
- */
- uri?: string;
- /**
- * @description The name of the default database.
- * @example defaultdb
- */
- database?: string;
- /**
- * @description The FQDN pointing to the database cluster's current primary node.
- * @example backend-do-user-19081923-0.db.ondigitalocean.com
- */
- host?: string;
- /**
- * @description The port on which the database cluster is listening.
- * @example 25060
- */
- port?: number;
- /**
- * @description The default user for the database.
- * @example doadmin
- */
- user?: string;
- /**
- * @description The randomly generated password for the default user.
- * @example wv78n3zpz42xezdk
- */
- password?: string;
- /**
- * @description A boolean value indicating if the connection should be made over SSL.
- * @example true
- */
- ssl?: boolean;
- };
- "resources/databases/models/database_layout_option.yml": {
- /** @example 1 */
- num_nodes?: number;
- /**
- * @description An array of objects containing the slugs available with various node counts
- * @example [
- * "db-s-1vcpu-1gb",
- * "db-s-1vcpu-2gb"
- * ]
- */
- sizes?: readonly string[];
- };
- "resources/databases/models/database_layout_options.yml": {
- /** @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). */
- layouts?: readonly external["resources/databases/models/database_layout_option.yml"][];
- };
- "resources/databases/models/database_maintenance_window.yml": {
- /**
- * @description The day of the week on which to apply maintenance updates.
- * @example tuesday
- */
- day: string;
- /**
- * @description The hour in UTC at which maintenance updates will be applied in 24 hour format.
- * @example 14:00
- */
- hour: string;
- /**
- * @description A boolean value indicating whether any maintenance is scheduled to be performed in the next window.
- * @example true
- */
- pending?: boolean;
- /**
- * @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"
- * ]
- */
- description?: readonly string[];
- } | null;
- "resources/databases/models/database_region_options.yml": {
- /**
- * @description An array of strings containing the names of available regions
- * @example [
- * "ams3",
- * "blr1"
- * ]
- */
- regions?: readonly string[];
- };
- "resources/databases/models/database_replica.yml": {
- /**
- * Format: uuid
- * @description A unique ID that can be used to identify and reference a database replica.
- * @example 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
- */
- id?: string;
- /**
- * @description The name to give the read-only replicating
- * @example read-nyc3-01
- */
- name: string;
- /**
- * @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.
- * @example nyc3
- */
- region?: string;
- /**
- * @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.
- * @example db-s-2vcpu-4gb
- */
- size?: string;
- /**
- * @description A string representing the current status of the database cluster.
- * @example creating
- * @enum {string}
- */
- status?: "creating" | "online" | "resizing" | "migrating" | "forking";
- /**
- * @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.
- * @example [
- * "production"
- * ]
- */
- tags?: string[];
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format that represents when the database cluster was created.
- * @example "2019-01-11T18:37:36.000Z"
- */
- created_at?: string;
- /**
- * @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.
- * @example 9423cbad-9211-442f-820b-ef6915e99b5f
- */
- private_network_uuid?: string;
- connection?: external["resources/databases/models/database_connection.yml"];
- private_connection?: external["resources/databases/models/database_connection.yml"];
- };
- "resources/databases/models/database_user.yml": {
- /**
- * @description The name of a database user.
- * @example app-01
- */
- name: string;
- /**
- * @description A string representing the database user's role. The value will be either
- * "primary" or "normal".
- *
- * @example normal
- * @enum {string}
- */
- role?: "primary" | "normal";
- /**
- * @description A randomly generated password for the database user.
- * @example jge5lfxtzhx42iff
- */
- password?: string;
- mysql_settings?: external["resources/databases/models/mysql_settings.yml"];
- };
- "resources/databases/models/database_version_availabilities.yml": external["resources/databases/models/database_version_availability.yml"][];
- "resources/databases/models/database_version_availability.yml": {
- /**
- * @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.
- * @example 2023-11-09T00:00:00Z
- */
- end_of_life?: string;
- /**
- * @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.
- * @example 2023-05-09T00:00:00Z
- */
- end_of_availability?: string;
- /**
- * @description The engine version.
- * @example 8
- */
- version?: string;
- };
- "resources/databases/models/database_version_options.yml": {
- /**
- * @description An array of strings containing the names of available regions
- * @example [
- * "4.4",
- * "5.0"
- * ]
- */
- versions?: readonly string[];
- };
- "resources/databases/models/database.yml": {
- /**
- * @description The name of the database.
- * @example alpha
- */
- name: string;
- };
- "resources/databases/models/eviction_policy_model.yml": "noeviction" | "allkeys_lru" | "allkeys_random" | "volatile_lru" | "volatile_random" | "volatile_ttl";
- "resources/databases/models/firewall_rule.yml": {
- /**
- * @description A unique ID for the firewall rule itself.
- * @example 79f26d28-ea8a-41f2-8ad8-8cfcdd020095
- */
- uuid?: string;
- /**
- * @description A unique ID for the database cluster to which the rule is applied.
- * @example 9cc10173-e9ea-4176-9dbc-a4cee4c4ff30
- */
- cluster_uuid?: string;
- /**
- * @description The type of resource that the firewall rule allows to access the database cluster.
- * @example droplet
- * @enum {string}
- */
- type: "droplet" | "k8s" | "ip_addr" | "tag" | "app";
- /**
- * @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.
- * @example ff2a6c52-5a44-4b63-b99c-0e98e7a63d61
- */
- value: string;
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format that represents when the firewall rule was created.
- * @example "2019-01-11T18:37:36.000Z"
- */
- created_at?: string;
- };
- "resources/databases/models/mysql_settings.yml": {
- /**
- * @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`.
- *
- * @example mysql_native_password
- * @enum {string}
- */
- auth_plugin: "mysql_native_password" | "caching_sha2_password";
- };
- "resources/databases/models/mysql.yml": {
- /**
- * @description The hour of day (in UTC) when backup for the service starts. New backup only starts if previous backup has already completed.
- * @example 3
- */
- backup_hour?: number;
- /**
- * @description The minute of the backup hour when backup for the service starts. New backup only starts if previous backup has already completed.
- * @example 30
- */
- backup_minute?: number;
- /**
- * @description Global SQL mode. If empty, uses MySQL server defaults. Must only include uppercase alphabetic characters, underscores, and commas.
- * @example ANSI,TRADITIONAL
- */
- sql_mode?: string;
- /**
- * @description The number of seconds that the mysqld server waits for a connect packet before responding with bad handshake.
- * @example 10
- */
- connect_timeout?: number;
- /**
- * @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.
- * @example +03:00
- */
- default_time_zone?: string;
- /**
- * @description The maximum permitted result length, in bytes, for the GROUP_CONCAT() function.
- * @example 1024
- */
- group_concat_max_len?: number;
- /**
- * @description The time, in seconds, before cached statistics expire.
- * @example 86400
- */
- information_schema_stats_expiry?: number;
- /**
- * @description The minimum length of words that an InnoDB FULLTEXT index stores.
- * @example 3
- */
- innodb_ft_min_token_size?: number;
- /**
- * @description The InnoDB FULLTEXT index stopword list for all InnoDB tables.
- * @example db_name/table_name
- */
- innodb_ft_server_stopword_table?: string;
- /**
- * @description The time, in seconds, that an InnoDB transaction waits for a row lock. before giving up.
- * @example 50
- */
- innodb_lock_wait_timeout?: number;
- /**
- * @description The size of the buffer, in bytes, that InnoDB uses to write to the log files. on disk.
- * @example 16777216
- */
- innodb_log_buffer_size?: number;
- /**
- * @description The upper limit, in bytes, of the size of the temporary log files used during online DDL operations for InnoDB tables.
- * @example 134217728
- */
- innodb_online_alter_log_max_size?: number;
- /**
- * @description When enabled, records information about all deadlocks in InnoDB user transactions in the error log. Disabled by default.
- * @example true
- */
- innodb_print_all_deadlocks?: boolean;
- /**
- * @description When enabled, transaction timeouts cause InnoDB to abort and roll back the entire transaction.
- * @example true
- */
- innodb_rollback_on_timeout?: boolean;
- /**
- * @description The time, in seconds, the server waits for activity on an interactive. connection before closing it.
- * @example 3600
- */
- interactive_timeout?: number;
- /**
- * @description The storage engine for in-memory internal temporary tables.
- * @example TempTable
- * @enum {string}
- */
- internal_tmp_mem_storage_engine?: "TempTable" | "MEMORY";
- /**
- * @description The time, in seconds, to wait for more data from an existing connection. aborting the read.
- * @example 30
- */
- net_read_timeout?: number;
- /**
- * @description The number of seconds to wait for a block to be written to a connection before aborting the write.
- * @example 30
- */
- net_write_timeout?: number;
- /**
- * @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.
- * @example true
- */
- sql_require_primary_key?: boolean;
- /**
- * @description The number of seconds the server waits for activity on a noninteractive connection before closing it.
- * @example 28800
- */
- wait_timeout?: number;
- /**
- * @description The size of the largest message, in bytes, that can be received by the server. Default is 67108864 (64M).
- * @example 67108864
- */
- max_allowed_packet?: number;
- /**
- * @description The maximum size, in bytes, of internal in-memory tables. Also set tmp_table_size. Default is 16777216 (16M)
- * @example 16777216
- */
- max_heap_table_size?: number;
- /**
- * @description The sort buffer size, in bytes, for ORDER BY optimization. Default is 262144. (256K).
- * @example 262144
- */
- sort_buffer_size?: number;
- /**
- * @description The maximum size, in bytes, of internal in-memory tables. Also set max_heap_table_size. Default is 16777216 (16M).
- * @example 16777216
- */
- tmp_table_size?: number;
- /**
- * @description When enabled, captures slow queries. When disabled, also truncates the mysql.slow_log table. Default is false.
- * @example true
- */
- slow_query_log?: boolean;
- /**
- * @description The time, in seconds, for a query to take to execute before being captured by slow_query_logs. Default is 10 seconds.
- * @example 10
- */
- long_query_time?: number;
- /**
- * @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.
- * @example 600
- */
- binlog_retention_period?: number;
- };
- "resources/databases/models/online_migration.yml": {
- /**
- * @description The ID of the most recent migration.
- * @example 77b28fc8-19ff-11eb-8c9c-c68e24557488
- */
- id?: string;
- /**
- * @description The current status of the migration.
- * @example running
- * @enum {string}
- */
- status?: "running" | "canceled" | "error" | "done";
- /**
- * @description The time the migration was initiated, in ISO 8601 format.
- * @example "2020-10-29T15:57:38.000Z"
- */
- created_at?: string;
- };
- "resources/databases/models/options.yml": {
- options?: {
- mongodb?: external["resources/databases/models/database_region_options.yml"] & external["resources/databases/models/database_version_options.yml"] & external["resources/databases/models/database_layout_options.yml"];
- pg?: external["resources/databases/models/database_region_options.yml"] & external["resources/databases/models/database_version_options.yml"] & external["resources/databases/models/database_layout_options.yml"];
- mysql?: external["resources/databases/models/database_region_options.yml"] & external["resources/databases/models/database_version_options.yml"] & external["resources/databases/models/database_layout_options.yml"];
- redis?: external["resources/databases/models/database_region_options.yml"] & external["resources/databases/models/database_version_options.yml"] & external["resources/databases/models/database_layout_options.yml"];
- };
- version_availability?: {
- pg?: external["resources/databases/models/database_version_availabilities.yml"];
- mysql?: external["resources/databases/models/database_version_availabilities.yml"];
- redis?: external["resources/databases/models/database_version_availabilities.yml"];
- mongodb?: external["resources/databases/models/database_version_availabilities.yml"];
- };
- };
- "resources/databases/models/pgbouncer.yml": {
- /**
- * @description Run server_reset_query (DISCARD ALL) in all pooling modes.
- * @example false
- */
- server_reset_query_always?: boolean;
- /**
- * @description List of parameters to ignore when given in startup packet.
- * @example [
- * "extra_float_digits",
- * "search_path"
- * ]
- */
- ignore_startup_parameters?: ("extra_float_digits" | "search_path")[];
- /**
- * @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.
- * @example 1
- */
- min_pool_size?: number;
- /**
- * @description The pooler closes any unused server connection that has been connected longer than this amount of seconds.
- * @example 3600
- */
- server_lifetime?: number;
- /**
- * @description Drops server connections if they have been idle more than this many seconds. If 0, timeout is disabled.
- * @example 600
- */
- server_idle_timeout?: number;
- /**
- * @description If non-zero, automatically creates a pool of that size per user when a pool doesn't exist.
- * @example 1
- */
- autodb_pool_size?: number;
- /**
- * @description PGBouncer pool mode
- * @example session
- * @enum {string}
- */
- autodb_pool_mode?: "session" | "transaction" | "statement";
- /**
- * @description Only allows a maximum this many server connections per database (regardless of user). If 0, allows unlimited connections.
- * @example 1
- */
- autodb_max_db_connections?: number;
- /**
- * @description If the automatically-created database pools have been unused this many seconds, they are freed. If 0, timeout is disabled.
- * @example 3600
- */
- autodb_idle_timeout?: number;
- };
- "resources/databases/models/postgres.yml": {
- /**
- * @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.
- * @example 200000000
- */
- autovacuum_freeze_max_age?: number;
- /**
- * @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.
- * @example 5
- */
- autovacuum_max_workers?: number;
- /**
- * @description Specifies the minimum delay, in seconds, between autovacuum runs on any given database. The default is one minute.
- * @example 43200
- */
- autovacuum_naptime?: number;
- /**
- * @description Specifies the minimum number of updated or deleted tuples needed to trigger a VACUUM in any one table. The default is 50 tuples.
- * @example 50
- */
- autovacuum_vacuum_threshold?: number;
- /**
- * @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.
- * @example 50
- */
- autovacuum_analyze_threshold?: number;
- /**
- * @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).
- * @example 0.2
- */
- autovacuum_vacuum_scale_factor?: number;
- /**
- * @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).
- * @example 0.2
- */
- autovacuum_analyze_scale_factor?: number;
- /**
- * @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.
- * @example 20
- */
- autovacuum_vacuum_cost_delay?: number;
- /**
- * @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.
- * @example -1
- */
- autovacuum_vacuum_cost_limit?: number;
- /**
- * @description The hour of day (in UTC) when backup for the service starts. New backup only starts if previous backup has already completed.
- * @example 3
- */
- backup_hour?: number;
- /**
- * @description The minute of the backup hour when backup for the service starts. New backup is only started if previous backup has already completed.
- * @example 30
- */
- backup_minute?: number;
- /**
- * @description Specifies the delay, in milliseconds, between activity rounds for the background writer. Default is 200 ms.
- * @example 200
- */
- bgwriter_delay?: number;
- /**
- * @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.
- * @example 512
- */
- bgwriter_flush_after?: number;
- /**
- * @description The maximum number of buffers that the background writer can write. Setting this to zero disables background writing. Default is 100.
- * @example 100
- */
- bgwriter_lru_maxpages?: number;
- /**
- * @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.
- * @example 2
- */
- bgwriter_lru_multiplier?: number;
- /**
- * @description The amount of time, in milliseconds, to wait on a lock before checking to see if there is a deadlock condition.
- * @example 1000
- */
- deadlock_timeout?: number;
- /**
- * @description Specifies the default TOAST compression method for values of compressible columns (the default is lz4).
- * @example lz4
- * @enum {string}
- */
- default_toast_compression?: "lz4" | "pglz";
- /**
- * @description Time out sessions with open transactions after this number of milliseconds
- * @example 10000
- */
- idle_in_transaction_session_timeout?: number;
- /**
- * @description Activates, in a boolean, the system-wide use of Just-in-Time Compilation (JIT).
- * @example true
- */
- jit?: boolean;
- /**
- * @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.
- * @example -1
- */
- log_autovacuum_min_duration?: number;
- /**
- * @description Controls the amount of detail written in the server log for each message that is logged.
- * @example VERBOSE
- * @enum {string}
- */
- log_error_verbosity?: "TERSE" | "DEFAULT" | "VERBOSE";
- /**
- * @description Selects one of the available log-formats. These can support popular log analyzers like pgbadger, pganalyze, etc.
- * @example pid=%p,user=%u,db=%d,app=%a,client=%h
- * @enum {string}
- */
- log_line_prefix?: "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";
- /**
- * @description Log statements that take more than this number of milliseconds to run. If -1, disables.
- * @example -1
- */
- log_min_duration_statement?: number;
- /**
- * @description PostgreSQL maximum number of files that can be open per process.
- * @example 2048
- */
- max_files_per_process?: number;
- /**
- * @description PostgreSQL maximum prepared transactions. Once increased, this parameter cannot be lowered from its set value.
- * @example 20
- */
- max_prepared_transactions?: number;
- /**
- * @description PostgreSQL maximum predicate locks per transaction.
- * @example 128
- */
- max_pred_locks_per_transaction?: number;
- /**
- * @description PostgreSQL maximum locks per transaction. Once increased, this parameter cannot be lowered from its set value.
- * @example 128
- */
- max_locks_per_transaction?: number;
- /**
- * @description Maximum depth of the stack in bytes.
- * @example 2097152
- */
- max_stack_depth?: number;
- /**
- * @description Max standby archive delay in milliseconds.
- * @example 43200
- */
- max_standby_archive_delay?: number;
- /**
- * @description Max standby streaming delay in milliseconds.
- * @example 43200
- */
- max_standby_streaming_delay?: number;
- /**
- * @description PostgreSQL maximum replication slots.
- * @example 16
- */
- max_replication_slots?: number;
- /**
- * @description PostgreSQL maximum logical replication workers (taken from the pool of max_parallel_workers).
- * @example 16
- */
- max_logical_replication_workers?: number;
- /**
- * @description Sets the maximum number of workers that the system can support for parallel queries.
- * @example 12
- */
- max_parallel_workers?: number;
- /**
- * @description Sets the maximum number of workers that can be started by a single Gather or Gather Merge node.
- * @example 16
- */
- max_parallel_workers_per_gather?: number;
- /**
- * @description Sets the maximum number of background processes that the system can support. Once increased, this parameter cannot be lowered from its set value.
- * @example 16
- */
- max_worker_processes?: number;
- /**
- * @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.
- * @example myrolename
- */
- "pg_partman_bgw.role"?: string;
- /**
- * @description Sets the time interval to run pg_partman's scheduled tasks.
- * @example 3600
- */
- "pg_partman_bgw.interval"?: number;
- /**
- * @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.
- * @example all
- * @enum {string}
- */
- "pg_stat_statements.track"?: "all" | "top" | "none";
- /**
- * @description PostgreSQL temporary file limit in KiB. If -1, sets to unlimited.
- * @example 5000000
- */
- temp_file_limit?: number;
- /**
- * @description PostgreSQL service timezone
- * @example Europe/Helsinki
- */
- timezone?: string;
- /**
- * @description Specifies the number of bytes reserved to track the currently executing command for each active session.
- * @example 1024
- */
- track_activity_query_size?: number;
- /**
- * @description Record commit time of transactions.
- * @example off
- * @enum {string}
- */
- track_commit_timestamp?: "off" | "on";
- /**
- * @description Enables tracking of function call counts and time used.
- * @example all
- * @enum {string}
- */
- track_functions?: "all" | "pl" | "none";
- /**
- * @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.
- * @example off
- * @enum {string}
- */
- track_io_timing?: "off" | "on";
- /**
- * @description PostgreSQL maximum WAL senders. Once increased, this parameter cannot be lowered from its set value.
- * @example 32
- */
- max_wal_senders?: number;
- /**
- * @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.
- * @example 60000
- */
- wal_sender_timeout?: number;
- /**
- * @description WAL flush interval in milliseconds. Note that setting this value to lower than the default 200ms may negatively impact performance
- * @example 50
- */
- wal_writer_delay?: number;
- /**
- * @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.
- * @example 41.5
- */
- shared_buffers_percentage?: number;
- pgbouncer?: external["resources/databases/models/pgbouncer.yml"];
- /**
- * @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).
- * @example 4
- */
- work_mem?: number;
- timescaledb?: external["resources/databases/models/timescaledb.yml"];
- /**
- * @description Synchronous replication type. Note that the service plan also needs to support synchronous replication.
- * @example off
- * @enum {string}
- */
- synchronous_replication?: "off" | "quorum";
- /**
- * @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.
- * @example false
- */
- stat_monitor_enable?: boolean;
- };
- "resources/databases/models/redis.yml": {
- redis_maxmemory_policy?: external["resources/databases/models/eviction_policy_model.yml"];
- /**
- * @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.
- * @example 64
- */
- redis_pubsub_client_output_buffer_limit?: number;
- /**
- * @description Set number of redis databases. Changing this will cause a restart of redis service.
- * @example 16
- */
- redis_number_of_databases?: number;
- /**
- * @description Redis IO thread count
- * @example 1
- */
- redis_io_threads?: number;
- /**
- * @description Counter logarithm factor for volatile-lfu and allkeys-lfu maxmemory-policies
- * @default 10
- * @example 10
- */
- redis_lfu_log_factor?: number;
- /**
- * @description LFU maxmemory-policy counter decay time in minutes
- * @default 1
- * @example 1
- */
- redis_lfu_decay_time?: number;
- /**
- * @description Require SSL to access Redis
- * @default true
- * @example true
- */
- redis_ssl?: boolean;
- /**
- * @description Redis idle connection timeout in seconds
- * @default 300
- * @example 300
- */
- redis_timeout?: number;
- /**
- * @description Set notify-keyspace-events option
- * @default
- * @example K
- */
- redis_notify_keyspace_events?: string;
- /**
- * @description When persistence is 'rdb', Redis does RDB dumps each 10 minutes if any key is changed. Also RDB dumps are done according to backup schedule for backup purposes. When persistence is 'off', no RDB dumps and backups are done, so data can be lost at any moment if service is restarted for any reason, or if service is powered off. Also service can't be forked.
- * @example rdb
- * @enum {string}
- */
- redis_persistence?: "off" | "rdb";
- /**
- * @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
- * @enum {string}
- */
- redis_acl_channels_default?: "allchannels" | "resetchannels";
- };
- "resources/databases/models/source_database.yml": {
- source?: {
- /**
- * @description The FQDN pointing to the database cluster's current primary node.
- * @example backend-do-user-19081923-0.db.ondigitalocean.com
- */
- host?: string;
- /**
- * @description The port on which the database cluster is listening.
- * @example 25060
- */
- port?: number;
- /**
- * @description The name of the default database.
- * @example defaultdb
- */
- dbname?: string;
- /**
- * @description The default user for the database.
- * @example doadmin
- */
- username?: string;
- /**
- * @description The randomly generated password for the default user.
- * @example wv78n3zpz42xezdk
- */
- password?: string;
- };
- /**
- * @description Enables SSL encryption when connecting to the source database.
- * @example false
- */
- disable_ssl?: boolean;
- };
- "resources/databases/models/sql_mode.yml": {
- /**
- * @description A string specifying the configured SQL modes for the MySQL cluster.
- * @example ANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,STRICT_ALL_TABLES
- */
- sql_mode: string;
- };
- "resources/databases/models/timescaledb.yml": {
- /**
- * @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.
- * @example 8
- */
- max_background_workers?: number;
- };
- "resources/databases/models/version.yml": {
- version?: external["resources/databases/models/database_cluster.yml"]["version"];
- };
- "resources/databases/parameters.yml": {
- database_cluster_uuid: string;
- database_name: string;
- replica_name: string;
- username: string;
- tag_name?: string;
- pool_name: string;
- migration_id: string;
- };
- "resources/databases/responses/ca.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- ca: external["resources/databases/models/ca.yml"];
- };
- };
- };
- "resources/databases/responses/connection_pool.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- pool: external["resources/databases/models/connection_pool.yml"];
- };
- };
- };
- "resources/databases/responses/connection_pools.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/databases/models/connection_pools.yml"];
- };
- };
- "resources/databases/responses/database_backups.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- backups: external["resources/databases/models/backup.yml"][];
- };
- };
- };
- "resources/databases/responses/database_cluster.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- database: external["resources/databases/models/database_cluster.yml"];
- };
- };
- };
- "resources/databases/responses/database_clusters.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- databases?: external["resources/databases/models/database_cluster.yml"][];
- };
- };
- };
- "resources/databases/responses/database_config.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- config: external["resources/databases/models/mysql.yml"] | external["resources/databases/models/postgres.yml"] | external["resources/databases/models/redis.yml"];
- };
- };
- };
- "resources/databases/responses/database_replica.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- replica?: external["resources/databases/models/database_replica.yml"];
- };
- };
- };
- "resources/databases/responses/database_replicas.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- replicas?: external["resources/databases/models/database_replica.yml"][];
- };
- };
- };
- "resources/databases/responses/database.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- db: external["resources/databases/models/database.yml"];
- };
- };
- };
- "resources/databases/responses/databases.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- dbs?: external["resources/databases/models/database.yml"][];
- };
- };
- };
- "resources/databases/responses/eviction_policy_response.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- eviction_policy: external["resources/databases/models/eviction_policy_model.yml"];
- };
- };
- };
- "resources/databases/responses/firewall_rules.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- rules?: external["resources/databases/models/firewall_rule.yml"][];
- };
- };
- };
- "resources/databases/responses/online_migration.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/databases/models/online_migration.yml"];
- };
- };
- "resources/databases/responses/options.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/databases/models/options.yml"];
- };
- };
- "resources/databases/responses/sql_mode.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/databases/models/sql_mode.yml"];
- };
- };
- "resources/databases/responses/user.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- user: external["resources/databases/models/database_user.yml"];
- };
- };
- };
- "resources/databases/responses/users.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- users?: external["resources/databases/models/database_user.yml"][];
- };
- };
- };
- /**
- * 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.
- */
- "resources/domains/domains_create_record.yml": {
- parameters: {
- path: {
- domain_name: external["resources/domains/parameters.yml"]["domain_name"];
- };
- };
- requestBody?: {
- content: {
- /**
- * @example {
- * "type": "A",
- * "name": "www",
- * "data": "162.10.66.0",
- * "priority": null,
- * "port": null,
- * "ttl": 1800,
- * "weight": null,
- * "flags": null,
- * "tag": null
- * }
- */
- "application/json": external["resources/domains/models/domain_record_types.yml"]["domain_record_a"] | external["resources/domains/models/domain_record_types.yml"]["domain_record_aaaa"] | external["resources/domains/models/domain_record_types.yml"]["domain_record_caa"] | external["resources/domains/models/domain_record_types.yml"]["domain_record_cname"] | external["resources/domains/models/domain_record_types.yml"]["domain_record_mx"] | external["resources/domains/models/domain_record_types.yml"]["domain_record_ns"] | external["resources/domains/models/domain_record_types.yml"]["domain_record_soa"] | external["resources/domains/models/domain_record_types.yml"]["domain_record_srv"] | external["resources/domains/models/domain_record_types.yml"]["domain_record_txt"];
- };
- };
- responses: {
- 201: external["resources/domains/responses/created_domain_record.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/domains/domains_create.yml": {
- requestBody?: {
- content: {
- /**
- * @example {
- * "name": "example.com"
- * }
- */
- "application/json": external["resources/domains/models/domain.yml"];
- };
- };
- responses: {
- 201: external["resources/domains/responses/create_domain_response.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/domains/domains_delete_record.yml": {
- parameters: {
- path: {
- domain_name: external["resources/domains/parameters.yml"]["domain_name"];
- domain_record_id: external["resources/domains/parameters.yml"]["domain_record_id"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Delete a Domain
- * @description To delete a domain, send a DELETE request to `/v2/domains/$DOMAIN_NAME`.
- */
- "resources/domains/domains_delete.yml": {
- parameters: {
- path: {
- domain_name: external["resources/domains/parameters.yml"]["domain_name"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Retrieve an Existing Domain Record
- * @description To retrieve a specific domain record, send a GET request to `/v2/domains/$DOMAIN_NAME/records/$RECORD_ID`.
- */
- "resources/domains/domains_get_record.yml": {
- parameters: {
- path: {
- domain_name: external["resources/domains/parameters.yml"]["domain_name"];
- domain_record_id: external["resources/domains/parameters.yml"]["domain_record_id"];
- };
- };
- responses: {
- 200: external["resources/domains/responses/domain_record.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Retrieve an Existing Domain
- * @description To get details about a specific domain, send a GET request to `/v2/domains/$DOMAIN_NAME`.
- */
- "resources/domains/domains_get.yml": {
- parameters: {
- path: {
- domain_name: external["resources/domains/parameters.yml"]["domain_name"];
- };
- };
- responses: {
- 200: external["resources/domains/responses/existing_domain.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/domains/domains_list_records.yml": {
- parameters: {
- query?: {
- name?: external["resources/domains/parameters.yml"]["domain_name_query"];
- type?: external["resources/domains/parameters.yml"]["domain_type_query"];
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- };
- path: {
- domain_name: external["resources/domains/parameters.yml"]["domain_name"];
- };
- };
- responses: {
- 200: external["resources/domains/responses/all_domain_records_response.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * List All Domains
- * @description To retrieve a list of all of the domains in your account, send a GET request to `/v2/domains`.
- */
- "resources/domains/domains_list.yml": {
- parameters: {
- query?: {
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- };
- };
- responses: {
- 200: external["resources/domains/responses/all_domains_response.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/domains/domains_patch_record.yml": {
- parameters: {
- path: {
- domain_name: external["resources/domains/parameters.yml"]["domain_name"];
- domain_record_id: external["resources/domains/parameters.yml"]["domain_record_id"];
- };
- };
- requestBody?: {
- content: {
+ database_cluster_uuid: string;
/**
- * @example {
- * "name": "blog",
- * "type": "A"
- * }
+ * @description A unique identifier assigned to the online migration.
+ * @example 77b28fc8-19ff-11eb-8c9c-c68e24557488
*/
- "application/json": external["resources/domains/models/domain_record.yml"];
- };
- };
- responses: {
- 200: external["resources/domains/responses/domain_record.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/domains/domains_update_record.yml": {
- parameters: {
- path: {
- domain_name: external["resources/domains/parameters.yml"]["domain_name"];
- domain_record_id: external["resources/domains/parameters.yml"]["domain_record_id"];
- };
- };
- requestBody?: {
- content: {
+ migration_id: string;
/**
- * @example {
- * "name": "blog",
- * "type": "CNAME"
- * }
+ * @description The name of the database replica.
+ * @example read-nyc3-01
*/
- "application/json": external["resources/domains/models/domain_record.yml"];
- };
- };
- responses: {
- 200: external["resources/domains/responses/domain_record.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- "resources/domains/examples.yml": unknown
- "resources/domains/models/domain_record_types.yml": {
- domain_record_a: external["resources/domains/models/domain_record.yml"];
- domain_record_aaaa: external["resources/domains/models/domain_record.yml"];
- domain_record_caa: external["resources/domains/models/domain_record.yml"];
- domain_record_cname: external["resources/domains/models/domain_record.yml"];
- domain_record_mx: external["resources/domains/models/domain_record.yml"];
- domain_record_ns: external["resources/domains/models/domain_record.yml"];
- domain_record_soa: external["resources/domains/models/domain_record.yml"];
- domain_record_srv: external["resources/domains/models/domain_record.yml"];
- domain_record_txt: external["resources/domains/models/domain_record.yml"];
- };
- "resources/domains/models/domain_record.yml": {
- /**
- * @description A unique identifier for each domain record.
- * @example 28448429
- */
- id?: number;
- /**
- * @description The type of the DNS record. For example: A, CNAME, TXT, ...
- * @example NS
- */
- type: string;
- /**
- * @description The host name, alias, or service being defined by the record.
- * @example @
- */
- name?: 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
- */
- data?: string;
- /**
- * @description The priority for SRV and MX records.
- * @example null
- */
- priority?: number | null;
- /**
- * @description The port for SRV records.
- * @example null
- */
- port?: number | null;
- /**
- * @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
- */
- ttl?: number;
- /**
- * @description The weight for SRV records.
- * @example null
- */
- weight?: number | null;
- /**
- * @description An unsigned integer between 0-255 used for CAA records.
- * @example null
- */
- flags?: number | null;
- /**
- * @description The parameter tag for CAA records. Valid values are "issue", "issuewild", or "iodef"
- * @example null
- */
- tag?: string | null;
- };
- "resources/domains/models/domain.yml": {
- /**
- * @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
- */
- name?: string;
- /**
- * @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
- */
- ip_address?: string;
- /**
- * @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
- */
- ttl?: number | null;
- /**
- * @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
- */
- zone_file?: string | null;
- };
- "resources/domains/parameters.yml": {
- domain_name: string;
- domain_record_id: number;
- domain_name_query?: string;
- domain_type_query?: "A" | "AAAA" | "CAA" | "CNAME" | "MX" | "NS" | "SOA" | "SRV" | "TXT";
- };
- "resources/domains/responses/all_domain_records_response.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- domain_records?: external["resources/domains/models/domain_record.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- "resources/domains/responses/all_domains_response.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- /** @description Array of volumes. */
- domains: external["resources/domains/models/domain.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- "resources/domains/responses/create_domain_response.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- domain?: external["resources/domains/models/domain.yml"];
- };
- };
- };
- "resources/domains/responses/created_domain_record.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- domain_record?: external["resources/domains/models/domain_record.yml"];
- };
- };
- };
- "resources/domains/responses/domain_record.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- domain_record?: external["resources/domains/models/domain_record.yml"];
- };
- };
- };
- "resources/domains/responses/existing_domain.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- domain?: external["resources/domains/models/domain.yml"];
- };
- };
- };
- /**
- * 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.
- */
- "resources/droplets/dropletActions_get.yml": {
- parameters: {
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- action_id: external["resources/actions/parameters.yml"]["action_id"];
- };
- };
- responses: {
- 200: external["resources/actions/responses/action.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/dropletActions_list.yml": {
- parameters: {
- query?: {
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- };
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- responses: {
- 200: external["resources/droplets/responses/all_droplet_actions.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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`
- */
- "resources/droplets/dropletActions_post_byTag.yml": {
- parameters: {
- query?: {
- tag_name?: external["resources/droplets/parameters.yml"]["droplet_tag_name"];
- };
- };
- /**
- * @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.
- */
- requestBody?: {
- content: {
- "application/json": external["resources/droplets/models/droplet_actions.yml"]["droplet_action"] | external["resources/droplets/models/droplet_actions.yml"]["droplet_action_snapshot"];
- };
- };
- responses: {
- 201: external["resources/droplets/responses/droplet_actions_response.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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 |
- * | `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. |
- * | `snapshot` | Takes a snapshot of a Droplet. |
- */
- "resources/droplets/dropletActions_post.yml": {
- parameters: {
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- /**
- * @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.
- */
- requestBody?: {
- content: {
- "application/json": external["resources/droplets/models/droplet_actions.yml"]["droplet_action"] | external["resources/droplets/models/droplet_actions.yml"]["droplet_action_restore"] | external["resources/droplets/models/droplet_actions.yml"]["droplet_action_resize"] | external["resources/droplets/models/droplet_actions.yml"]["droplet_action_rebuild"] | external["resources/droplets/models/droplet_actions.yml"]["droplet_action_rename"] | external["resources/droplets/models/droplet_actions.yml"]["droplet_action_change_kernel"] | external["resources/droplets/models/droplet_actions.yml"]["droplet_action_snapshot"];
- };
- };
- responses: {
- 201: external["resources/droplets/responses/droplet_action.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_create.yml": {
- requestBody?: {
- content: {
- "application/json": external["resources/droplets/models/droplet_single_create.yml"] | external["resources/droplets/models/droplet_multi_create.yml"];
- };
- };
- responses: {
- 202: external["resources/droplets/responses/droplet_create.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_destroy_byTag.yml": {
- parameters: {
- query: {
- tag_name: external["resources/droplets/parameters.yml"]["droplet_delete_tag_name"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content_with_content_type.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_destroy_retryWithAssociatedResources.yml": {
- parameters: {
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- responses: {
- 202: external["shared/responses/accepted.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 409: external["shared/responses/conflict.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_destroy_withAssociatedResourcesDangerous.yml": {
- parameters: {
- header: {
- "X-Dangerous": external["resources/droplets/parameters.yml"]["x_dangerous"];
- };
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- responses: {
- 202: external["shared/responses/accepted.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_destroy_withAssociatedResourcesSelective.yml": {
- parameters: {
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- requestBody?: {
- content: {
- "application/json": external["resources/droplets/models/selective_destroy_associated_resource.yml"];
- };
- };
- responses: {
- 202: external["shared/responses/accepted.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_destroy.yml": {
- parameters: {
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content_with_content_type.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_get_destroyAssociatedResourcesStatus.yml": {
- parameters: {
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- responses: {
- 200: external["resources/droplets/responses/associated_resources_status.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Retrieve an Existing Droplet
- * @description To show information about an individual Droplet, send a GET request to
- * `/v2/droplets/$DROPLET_ID`.
- */
- "resources/droplets/droplets_get.yml": {
- parameters: {
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- responses: {
- 200: external["resources/droplets/responses/existing_droplet.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_list_associatedResources.yml": {
- parameters: {
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- responses: {
- 200: external["resources/droplets/responses/associated_resources_list.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_list_backups.yml": {
- parameters: {
- query?: {
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- };
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- responses: {
- 200: external["resources/droplets/responses/all_droplet_backups.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_list_firewalls.yml": {
- parameters: {
- query?: {
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- };
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- responses: {
- 200: external["resources/droplets/responses/all_firewalls.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_list_kernels.yml": {
- parameters: {
- query?: {
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- };
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- responses: {
- 200: external["resources/droplets/responses/all_kernels.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_list_neighbors.yml": {
- parameters: {
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- responses: {
- 200: external["resources/droplets/responses/neighbor_droplets.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_list_neighborsIds.yml": {
- responses: {
- 200: external["resources/droplets/responses/droplet_neighbors_ids.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/droplets/droplets_list_snapshots.yml": {
- parameters: {
- query?: {
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- };
- path: {
- droplet_id: external["resources/droplets/parameters.yml"]["droplet_id"];
- };
- };
- responses: {
- 200: external["resources/droplets/responses/all_droplet_snapshots.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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`.
- */
- "resources/droplets/droplets_list.yml": {
- parameters: {
- query?: {
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- tag_name?: external["resources/droplets/parameters.yml"]["droplet_tag_name"];
- name?: external["resources/droplets/parameters.yml"]["droplet_name"];
- };
- };
- responses: {
- 200: external["resources/droplets/responses/all_droplets.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- "resources/droplets/examples.yml": unknown
- "resources/droplets/models/associated_resource_status.yml": {
- droplet?: external["resources/droplets/models/destroyed_associated_resource.yml"];
- /** @description An object containing additional information about resource related to a Droplet requested to be destroyed. */
- resources?: {
- reserved_ips?: external["resources/droplets/models/destroyed_associated_resource.yml"][];
- floating_ips?: external["resources/droplets/models/destroyed_associated_resource.yml"][];
- snapshots?: external["resources/droplets/models/destroyed_associated_resource.yml"][];
- volumes?: external["resources/droplets/models/destroyed_associated_resource.yml"][];
- volume_snapshots?: external["resources/droplets/models/destroyed_associated_resource.yml"][];
- };
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format indicating when the requested action was completed.
- * @example "2020-04-01T18:11:49.000Z"
- */
- completed_at?: string;
- /**
- * @description A count of the associated resources that failed to be destroyed, if any.
- * @example 0
- */
- failures?: number;
- };
- "resources/droplets/models/associated_resource.yml": {
- /**
- * @description The unique identifier for the resource associated with the Droplet.
- * @example 61486916
- */
- id?: string;
- /**
- * @description The name of the resource associated with the Droplet.
- * @example ubuntu-s-1vcpu-1gb-nyc1-01-1585758823330
- */
- name?: string;
- /**
- * @description The cost of the resource in USD per month if the resource is retained after the Droplet is destroyed.
- * @example 0.05
- */
- cost?: string;
- };
- "resources/droplets/models/destroyed_associated_resource.yml": {
- /**
- * @description The unique identifier for the resource scheduled for deletion.
- * @example 61486916
- */
- id?: string;
- /**
- * @description The name of the resource scheduled for deletion.
- * @example ubuntu-s-1vcpu-1gb-nyc1-01-1585758823330
- */
- name?: string;
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format indicating when the resource was destroyed if the request was successful.
- * @example "2020-04-01T18:11:49.000Z"
- */
- destroyed_at?: string;
- /**
- * @description A string indicating that the resource was not successfully destroyed and providing additional information.
- * @example
- */
- error_message?: string;
- };
- "resources/droplets/models/droplet_actions.yml": {
- /** @description Specifies the action that will be taken on the Droplet. */
- droplet_action: {
- /**
- * @description The type of action to initiate for the Droplet.
- * @example reboot
- * @enum {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";
- };
- droplet_action_restore: external["resources/droplets/models/droplet_actions.yml"]["droplet_action"] & {
- /**
- * @description The ID of a backup of the current Droplet instance to restore from.
- * @example 12389723
- */
- image?: number;
- };
- droplet_action_resize: external["resources/droplets/models/droplet_actions.yml"]["droplet_action"] & {
- /**
- * @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.
- * @example true
- */
- disk?: boolean;
- /**
- * @description The slug identifier for the size to which you wish to resize the Droplet.
- * @example s-2vcpu-2gb
- */
- size?: string;
- };
- droplet_action_rebuild: external["resources/droplets/models/droplet_actions.yml"]["droplet_action"] & ({
- /**
- * @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.
- * @example ubuntu-20-04-x64
- */
- image?: string | number;
- });
- droplet_action_rename: external["resources/droplets/models/droplet_actions.yml"]["droplet_action"] & {
- /**
- * @description The new name for the Droplet.
- * @example nifty-new-name
- */
- name?: string;
- };
- droplet_action_change_kernel: external["resources/droplets/models/droplet_actions.yml"]["droplet_action"] & {
- /**
- * @description A unique number used to identify and reference a specific kernel.
- * @example 12389723
- */
- kernel?: number;
- };
- droplet_action_snapshot: external["resources/droplets/models/droplet_actions.yml"]["droplet_action"] & {
- /**
- * @description The name to give the new snapshot of the Droplet.
- * @example Nifty New Snapshot
- */
- name?: string;
- };
- };
- "resources/droplets/models/droplet_create.yml": {
- /**
- * @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.
- * @example nyc3
- */
- region?: string;
- /**
- * @description The slug identifier for the size that you wish to select for this Droplet.
- * @example s-1vcpu-1gb
- */
- size: string;
- /**
- * @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.
- * @example ubuntu-20-04-x64
- */
- image: string | number;
- /**
- * @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.
- * @default []
- * @example [
- * 289794,
- * "3b:16:e4:bf:8b:00:8b:b8:59:8c:a9:d3:f0:19:fa:45"
- * ]
- */
- ssh_keys?: (string | number)[];
- /**
- * @description A boolean indicating whether automated backups should be enabled for the Droplet.
- * @default false
- * @example true
- */
- backups?: boolean;
- /**
- * @description A boolean indicating whether to enable IPv6 on the Droplet.
- * @default false
- * @example true
- */
- ipv6?: boolean;
- /**
- * @description A boolean indicating whether to install the DigitalOcean agent for monitoring.
- * @default false
- * @example true
- */
- monitoring?: boolean;
- /**
- * @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.
- * @default []
- * @example [
- * "env:prod",
- * "web"
- * ]
- */
- tags?: string[] | null;
- /**
- * @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.
- * @example #cloud-config
- * runcmd:
- * - touch /test.txt
- */
- user_data?: string;
- /**
- * @deprecated
- * @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.
- * @default false
- * @example true
- */
- private_networking?: boolean;
- /**
- * @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.
- * @default []
- * @example [
- * "12e97116-7280-11ed-b3d0-0a58ac146812"
- * ]
- */
- volumes?: string[];
- /**
- * @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.
- * @example 760e09ef-dc84-11e8-981e-3cfdfeaae000
- */
- vpc_uuid?: string;
- /**
- * @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`.
- * @example true
- */
- with_droplet_agent?: boolean;
- };
- "resources/droplets/models/droplet_multi_create.yml": {
- /**
- * @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.
- * @example [
- * "sub-01.example.com",
- * "sub-02.example.com"
- * ]
- */
- names: string[];
- } & external["resources/droplets/models/droplet_create.yml"];
- "resources/droplets/models/droplet_single_create.yml": {
- /**
- * @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.
- * @example example.com
- */
- name: string;
- } & external["resources/droplets/models/droplet_create.yml"];
- "resources/droplets/models/droplet_snapshot.yml": {
- /**
- * @description The unique identifier for the snapshot or backup.
- * @example 6372321
- */
- id: number;
- } & external["resources/snapshots/models/snapshots_base.yml"] & ({
- /**
- * @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.
- * @example snapshot
- * @enum {string}
- */
- type: "snapshot" | "backup";
- });
- "resources/droplets/models/droplet.yml": {
- /**
- * @description A unique identifier for each Droplet instance. This is automatically generated upon Droplet creation.
- * @example 3164444
- */
- id: number;
- /**
- * @description The human-readable name set for the Droplet instance.
- * @example example.com
- */
- name: string;
- /**
- * @description Memory of the Droplet in megabytes.
- * @example 1024
- */
- memory: number;
- /**
- * @description The number of virtual CPUs.
- * @example 1
- */
- vcpus: number;
- /**
- * @description The size of the Droplet's disk in gigabytes.
- * @example 25
- */
- disk: number;
- /**
- * @description A boolean value indicating whether the Droplet has been locked, preventing actions by users.
- * @example false
- */
- locked: boolean;
- /**
- * @description A status string indicating the state of the Droplet instance. This may be "new", "active", "off", or "archive".
- * @example active
- * @enum {string}
- */
- status: "new" | "active" | "off" | "archive";
- kernel?: external["resources/droplets/models/kernel.yml"];
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format that represents when the Droplet was created.
- * @example 2020-07-21T18:37:44Z
- */
- created_at: string;
- /**
- * @description An array of features enabled on this Droplet.
- * @example [
- * "backups",
- * "private_networking",
- * "ipv6"
- * ]
- */
- features: string[];
- /**
- * @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.
- * @example [
- * 53893572
- * ]
- */
- backup_ids: number[];
- /** @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. */
- next_backup_window: {
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format specifying the start of the Droplet's backup window.
- * @example 2019-12-04T00:00:00Z
- */
- start?: string;
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format specifying the end of the Droplet's backup window.
- * @example 2019-12-04T23:00:00Z
- */
- end?: string;
- } | null;
- /**
- * @description An array of snapshot IDs of any snapshots created from the Droplet instance.
- * @example [
- * 67512819
- * ]
- */
- snapshot_ids: number[];
- image: external["resources/images/models/image.yml"];
- /**
- * @description A flat array including the unique identifier for each Block Storage volume attached to the Droplet.
- * @example [
- * "506f78a4-e098-11e5-ad9f-000f53306ae1"
- * ]
- */
- volume_ids: string[];
- size: external["resources/sizes/models/size.yml"];
- /**
- * @description The unique slug identifier for the size of this Droplet.
- * @example s-1vcpu-1gb
- */
- size_slug: string;
- /** @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. */
- networks: {
- v4?: external["resources/droplets/models/network_v4.yml"][];
- v6?: external["resources/droplets/models/network_v6.yml"][];
- };
- region: external["resources/regions/models/region.yml"];
- /**
- * @description An array of Tags the Droplet has been tagged with.
- * @example [
- * "web",
- * "env:prod"
- * ]
- */
- tags: string[];
- /**
- * @description A string specifying the UUID of the VPC to which the Droplet is assigned.
- * @example 760e09ef-dc84-11e8-981e-3cfdfeaae000
- */
- vpc_uuid?: string;
- };
- "resources/droplets/models/kernel.yml": {
- /**
- * @description A unique number used to identify and reference a specific kernel.
- * @example 7515
- */
- id?: number;
- /**
- * @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.
- * @example DigitalOcean GrubLoader v0.2 (20160714)
- */
- name?: string;
- /**
- * @description A standard kernel version string representing the version, patch, and release information.
- * @example 2016.07.13-DigitalOcean_loader_Ubuntu
- */
- version?: string;
- } | null;
- "resources/droplets/models/neighbor_ids.yml": {
- /**
- * @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
- * ]
- * ]
- */
- neighbor_ids?: number[][];
- };
- "resources/droplets/models/network_v4.yml": {
- /**
- * Format: ipv4
- * @description The IP address of the IPv4 network interface.
- * @example 104.236.32.182
- */
- ip_address?: string;
- /**
- * Format: ipv4
- * @description The netmask of the IPv4 network interface.
- * @example 255.255.192.0
- */
- netmask?: string;
- /**
- * @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.
- *
- * @example 104.236.0.1
- */
- gateway?: string;
- /**
- * @description The type of the IPv4 network interface.
- * @example public
- * @enum {string}
- */
- type?: "public" | "private";
- };
- "resources/droplets/models/network_v6.yml": {
- /**
- * Format: ipv6
- * @description The IP address of the IPv6 network interface.
- * @example 2604:a880:0:1010::18a:a001
- */
- ip_address?: string;
- /**
- * @description The netmask of the IPv6 network interface.
- * @example 64
- */
- netmask?: number;
- /**
- * Format: ipv6
- * @description The gateway of the specified IPv6 network interface.
- * @example 2604:a880:0:1010::1
- */
- gateway?: string;
- /**
- * @description The type of the IPv6 network interface.
- *
- * **Note**: IPv6 private networking is not currently supported.
- *
- * @example public
- * @enum {string}
- */
- type?: "public";
- };
- "resources/droplets/models/selective_destroy_associated_resource.yml": {
- /**
- * @deprecated
- * @description An array of unique identifiers for the floating IPs to be scheduled for deletion.
- * @example [
- * "6186916"
- * ]
- */
- floating_ips?: string[];
- /**
- * @description An array of unique identifiers for the reserved IPs to be scheduled for deletion.
- * @example [
- * "6186916"
- * ]
- */
- reserved_ips?: string[];
- /**
- * @description An array of unique identifiers for the snapshots to be scheduled for deletion.
- * @example [
- * "61486916"
- * ]
- */
- snapshots?: string[];
- /**
- * @description An array of unique identifiers for the volumes to be scheduled for deletion.
- * @example [
- * "ba49449a-7435-11ea-b89e-0a58ac14480f"
- * ]
- */
- volumes?: string[];
- /**
- * @description An array of unique identifiers for the volume snapshots to be scheduled for deletion.
- * @example [
- * "edb0478d-7436-11ea-86e6-0a58ac144b91"
- * ]
- */
- volume_snapshots?: string[];
- };
- "resources/droplets/parameters.yml": {
- droplet_id: number;
- droplet_tag_name?: string;
- droplet_delete_tag_name: string;
- droplet_name?: string;
- x_dangerous: boolean;
- };
- "resources/droplets/responses/all_droplet_actions.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- actions?: external["resources/actions/models/action.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- "resources/droplets/responses/all_droplet_backups.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- backups?: external["resources/droplets/models/droplet_snapshot.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- "resources/droplets/responses/all_droplet_snapshots.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- snapshots?: external["resources/droplets/models/droplet_snapshot.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- "resources/droplets/responses/all_droplets.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- droplets?: external["resources/droplets/models/droplet.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- "resources/droplets/responses/all_firewalls.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- firewalls?: external["resources/firewalls/models/firewall.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- "resources/droplets/responses/all_kernels.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- kernels?: external["resources/droplets/models/kernel.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- "resources/droplets/responses/associated_resources_list.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- reserved_ips?: external["resources/droplets/models/associated_resource.yml"][];
- floating_ips?: external["resources/droplets/models/associated_resource.yml"][];
- snapshots?: external["resources/droplets/models/associated_resource.yml"][];
- volumes?: external["resources/droplets/models/associated_resource.yml"][];
- volume_snapshots?: external["resources/droplets/models/associated_resource.yml"][];
- };
- };
- };
- "resources/droplets/responses/associated_resources_status.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/droplets/models/associated_resource_status.yml"];
- };
- };
- "resources/droplets/responses/droplet_action.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- action?: external["resources/actions/models/action.yml"];
- };
- };
- };
- "resources/droplets/responses/droplet_actions_response.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- actions?: external["resources/actions/models/action.yml"][];
- };
- };
- };
- "resources/droplets/responses/droplet_create.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": OneOf<[{
- droplet: external["resources/droplets/models/droplet.yml"];
- links: {
- actions?: external["shared/models/action_link.yml"][];
- };
- }, {
- droplets: external["resources/droplets/models/droplet.yml"][];
- links: {
- actions?: external["shared/models/action_link.yml"][];
- };
- }]>;
- };
- };
- "resources/droplets/responses/droplet_neighbors_ids.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": external["resources/droplets/models/neighbor_ids.yml"];
- };
- };
- "resources/droplets/responses/examples.yml": unknown
- "resources/droplets/responses/existing_droplet.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- droplet?: external["resources/droplets/models/droplet.yml"];
- };
- };
- };
- "resources/droplets/responses/neighbor_droplets.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- droplets?: external["resources/droplets/models/droplet.yml"][];
- };
- };
- };
- /**
- * 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.
- */
- "resources/firewalls/firewalls_add_rules.yml": {
- parameters: {
- path: {
- firewall_id: external["resources/firewalls/parameters.yml"]["firewall_id"];
- };
- };
- requestBody?: {
- content: {
- /**
- * @example {
- * "inbound_rules": [
- * {
- * "protocol": "tcp",
- * "ports": "3306",
- * "sources": {
- * "droplet_ids": [
- * 49696269
- * ]
- * }
- * }
- * ],
- * "outbound_rules": [
- * {
- * "protocol": "tcp",
- * "ports": "3306",
- * "destinations": {
- * "droplet_ids": [
- * 49696269
- * ]
- * }
- * }
- * ]
- * }
- */
- "application/json": external["resources/firewalls/models/firewall_rule.yml"]["firewall_rules"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 400: external["shared/responses/bad_request.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/firewalls/firewalls_add_tags.yml": {
- parameters: {
- path: {
- firewall_id: external["resources/firewalls/parameters.yml"]["firewall_id"];
- };
- };
- requestBody?: {
- content: {
+ replica_name: string;
+ /**
+ * @description The name of the database user.
+ * @example app-01
+ */
+ username: string;
+ /**
+ * @description The name of the database.
+ * @example alpha
+ */
+ database_name: string;
+ /**
+ * @description The name used to identify the connection pool.
+ * @example backend-pool
+ */
+ pool_name: string;
+ /**
+ * @description The name of the domain itself.
+ * @example example.com
+ */
+ domain_name: string;
+ /**
+ * @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`.
+ * @example sub.example.com
+ */
+ domain_name_query: string;
/**
- * @example {
- * "tags": [
- * "frontend"
- * ]
- * }
+ * @description The type of the DNS record. For example: A, CNAME, TXT, ...
+ * @example A
*/
- "application/json": {
- tags: external["shared/attributes/tags_array.yml"];
- };
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 400: external["shared/responses/bad_request.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/firewalls/firewalls_assign_droplets.yml": {
- parameters: {
- path: {
- firewall_id: external["resources/firewalls/parameters.yml"]["firewall_id"];
- };
- };
- requestBody?: {
- content: {
- /**
- * @example {
- * "droplet_ids": [
- * 49696269
- * ]
- * }
- */
- "application/json": {
- /**
- * @description An array containing the IDs of the Droplets to be assigned to the firewall.
- * @example [
- * 49696269
- * ]
- */
- droplet_ids: number[];
- };
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 400: external["shared/responses/bad_request.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/firewalls/firewalls_create.yml": {
- requestBody?: {
- content: {
- /**
- * @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
- * ]
- * }
- */
- "application/json": external["resources/firewalls/models/firewall.yml"];
- };
- };
- responses: {
- 202: external["resources/firewalls/responses/create_firewall_response.yml"];
- 400: external["shared/responses/bad_request.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/firewalls/firewalls_delete_droplets.yml": {
- parameters: {
- path: {
- firewall_id: external["resources/firewalls/parameters.yml"]["firewall_id"];
- };
- };
- requestBody?: {
- content: {
- /**
- * @example {
- * "droplet_ids": [
- * 49696269
- * ]
- * }
- */
- "application/json": {
- /**
- * @description An array containing the IDs of the Droplets to be removed from the firewall.
- * @example [
- * 49696269
- * ]
- */
- droplet_ids: number[];
- };
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 400: external["shared/responses/bad_request.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/firewalls/firewalls_delete_rules.yml": {
- parameters: {
- path: {
- firewall_id: external["resources/firewalls/parameters.yml"]["firewall_id"];
- };
- };
- requestBody?: {
- content: {
- /**
- * @example {
- * "inbound_rules": [
- * {
- * "protocol": "tcp",
- * "ports": "3306",
- * "sources": {
- * "droplet_ids": [
- * 49696269
- * ]
- * }
- * }
- * ],
- * "outbound_rules": [
- * {
- * "protocol": "tcp",
- * "ports": "3306",
- * "destinations": {
- * "droplet_ids": [
- * 49696269
- * ]
- * }
- * }
- * ]
- * }
- */
- "application/json": external["resources/firewalls/models/firewall_rule.yml"]["firewall_rules"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 400: external["shared/responses/bad_request.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/firewalls/firewalls_delete_tags.yml": {
- parameters: {
- path: {
- firewall_id: external["resources/firewalls/parameters.yml"]["firewall_id"];
- };
- };
- requestBody?: {
- content: {
+ domain_type_query: "A" | "AAAA" | "CAA" | "CNAME" | "MX" | "NS" | "SOA" | "SRV" | "TXT";
/**
- * @example {
- * "tags": [
- * "frontend"
- * ]
- * }
+ * @description The unique identifier of the domain record.
+ * @example 3352896
*/
- "application/json": {
- tags: external["shared/attributes/tags_array.yml"];
- };
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 400: external["shared/responses/bad_request.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/firewalls/firewalls_delete.yml": {
- parameters: {
- path: {
- firewall_id: external["resources/firewalls/parameters.yml"]["firewall_id"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Retrieve an Existing Firewall
- * @description To show information about an existing firewall, send a GET request to `/v2/firewalls/$FIREWALL_ID`.
- */
- "resources/firewalls/firewalls_get.yml": {
- parameters: {
- path: {
- firewall_id: external["resources/firewalls/parameters.yml"]["firewall_id"];
- };
- };
- responses: {
- 200: external["resources/firewalls/responses/get_firewall_response.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * List All Firewalls
- * @description To list all of the firewalls available on your account, send a GET request to `/v2/firewalls`.
- */
- "resources/firewalls/firewalls_list.yml": {
- parameters: {
- query?: {
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- };
- };
- responses: {
- 200: external["resources/firewalls/responses/list_firewalls_response.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.**
- */
- "resources/firewalls/firewalls_update.yml": {
- parameters: {
- path: {
- firewall_id: external["resources/firewalls/parameters.yml"]["firewall_id"];
- };
- };
- requestBody?: {
- content: {
- /**
- * @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"
- * ]
- * }
- */
- "application/json": WithRequired;
- };
- };
- responses: {
- 200: external["resources/firewalls/responses/put_firewall_response.yml"];
- 400: external["shared/responses/bad_request.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- "resources/firewalls/models/firewall_rule.yml": unknown;
- "resources/firewalls/models/firewall.yml": ({
- /**
- * @description A unique ID that can be used to identify and reference a firewall.
- * @example bb4b2611-3d72-467b-8602-280330ecd65c
- */
- id?: string;
- /**
- * @description A status string indicating the current state of the firewall. This can be "waiting", "succeeded", or "failed".
- * @example waiting
- * @enum {string}
- */
- status?: "waiting" | "succeeded" | "failed";
- /**
- * Format: date-time
- * @description A time value given in ISO8601 combined date and time format that represents when the firewall was created.
- * @example 2020-05-23T21:24:00Z
- */
- created_at?: string;
- /**
- * @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.
- * @example [
- * {
- * "droplet_id": 8043964,
- * "removing": false,
- * "status": "waiting"
- * }
- * ]
- */
- pending_changes?: readonly {
- /** @example 8043964 */
- droplet_id?: number;
- /** @example false */
- removing?: boolean;
- /** @example waiting */
- status?: 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 (-).
- * @example firewall
- */
- name?: string;
- /**
- * @description An array containing the IDs of the Droplets assigned to the firewall.
- * @example [
- * 8043964
- * ]
- */
- droplet_ids?: number[] | null;
- tags?: external["shared/attributes/tags_array.yml"];
- }) & external["resources/firewalls/models/firewall_rule.yml"]["firewall_rules"];
- "resources/firewalls/parameters.yml": {
- firewall_id: string;
- };
- "resources/firewalls/responses/create_firewall_response.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- firewall?: external["resources/firewalls/models/firewall.yml"];
- };
- };
- };
- "resources/firewalls/responses/get_firewall_response.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- firewall?: external["resources/firewalls/models/firewall.yml"];
- };
- };
- };
- "resources/firewalls/responses/list_firewalls_response.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- firewalls?: external["resources/firewalls/models/firewall.yml"][];
- } & external["shared/pages.yml"]["pagination"] & external["shared/meta.yml"];
- };
- };
- "resources/firewalls/responses/put_firewall_response.yml": {
- headers: {
- "ratelimit-limit": external["shared/headers.yml"]["ratelimit-limit"];
- "ratelimit-remaining": external["shared/headers.yml"]["ratelimit-remaining"];
- "ratelimit-reset": external["shared/headers.yml"]["ratelimit-reset"];
- };
- content: {
- "application/json": {
- firewall?: external["resources/firewalls/models/firewall.yml"];
- };
- };
- };
- /**
- * 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.
- */
- "resources/floating_ips/floatingIPs_create.yml": {
- requestBody: {
- content: {
- "application/json": external["resources/floating_ips/models/floating_ip_create.yml"];
- };
- };
- responses: {
- 202: external["resources/floating_ips/responses/floating_ip_created.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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.
- */
- "resources/floating_ips/floatingIPs_delete.yml": {
- parameters: {
- path: {
- floating_ip: external["resources/floating_ips/parameters.yml"]["floating_ip"];
- };
- };
- responses: {
- 204: external["shared/responses/no_content.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * Retrieve an Existing Floating IP
- * @description To show information about a floating IP, send a GET request to `/v2/floating_ips/$FLOATING_IP_ADDR`.
- */
- "resources/floating_ips/floatingIPs_get.yml": {
- parameters: {
- path: {
- floating_ip: external["resources/floating_ips/parameters.yml"]["floating_ip"];
- };
- };
- responses: {
- 200: external["resources/floating_ips/responses/floating_ip.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * List All Floating IPs
- * @description To list all of the floating IPs available on your account, send a GET request to `/v2/floating_ips`.
- */
- "resources/floating_ips/floatingIPs_list.yml": {
- parameters: {
- query?: {
- per_page?: external["shared/parameters.yml"]["per_page"];
- page?: external["shared/parameters.yml"]["page"];
- };
- };
- responses: {
- 200: external["resources/floating_ips/responses/floating_ip_list.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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`.
- */
- "resources/floating_ips/floatingIPsAction_get.yml": {
- parameters: {
- path: {
- floating_ip: external["resources/floating_ips/parameters.yml"]["floating_ip"];
- action_id: external["resources/actions/parameters.yml"]["action_id"];
- };
- };
- responses: {
- 200: external["resources/floating_ips/responses/floating_ip_action.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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`.
- */
- "resources/floating_ips/floatingIPsAction_list.yml": {
- parameters: {
- path: {
- floating_ip: external["resources/floating_ips/parameters.yml"]["floating_ip"];
- };
- };
- responses: {
- 200: external["resources/floating_ips/responses/floating_ip_actions.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- /**
- * 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
- */
- "resources/floating_ips/floatingIPsAction_post.yml": {
- parameters: {
- path: {
- floating_ip: external["resources/floating_ips/parameters.yml"]["floating_ip"];
- };
- };
- /**
- * @description The `type` attribute set in the request body will specify the action that
- * will be taken on the floating IP.
- */
- requestBody?: {
- content: {
- "application/json": external["resources/floating_ips/models/floating_ip_actions.yml"]["floating_ip_action_unassign"] | external["resources/floating_ips/models/floating_ip_actions.yml"]["floating_ip_action_assign"];
- };
- };
- responses: {
- 201: external["resources/floating_ips/responses/floating_ip_action.yml"];
- 401: external["shared/responses/unauthorized.yml"];
- 404: external["shared/responses/not_found.yml"];
- 429: external["shared/responses/too_many_requests.yml"];
- 500: external["shared/responses/server_error.yml"];
- default: external["shared/responses/unexpected_error.yml"];
- };
- }
- "resources/floating_ips/models/floating_ip_actions.yml": {
- floatingIPsAction: {
- /**
- * @description The type of action to initiate for the floating IP.
- * @enum {string}
- */
- type: "assign" | "unassign";
- };
- floating_ip_action_unassign: {
- type: undefined;
- } & Omit & Record;
- floating_ip_action_assign: {
- type: undefined;
- } & Omit & {
- /**
- * @description The ID of the Droplet that the floating IP will be assigned to.
- * @example 758604968
- */
- droplet_id: number;
- };
- };
- "resources/floating_ips/models/floating_ip_create.yml": OneOf<[{
- /**
- * @description The ID of the Droplet that the floating IP will be assigned to.
- * @example 2457247
- */
- droplet_id: number;
- }, {
- /**
- * @description The slug identifier for the region the floating IP will be reserved to.
- * @example nyc3
- */
- region: string;
- /**
- * Format: uuid
- * @description The UUID of the project to which the floating IP will be assigned.
- * @example 746c6152-2fa2-11ed-92d3-27aaa54e4988
- */
- project_id?: string;
- }]>;
- "resources/floating_ips/models/floating_ip.yml": {
- /**
- * Format: ipv4
- * @description The public IP address of the floating IP. It also serves as its identifier.
- * @example 45.55.96.47
- */
- ip?: string;
- region?: external["resources/regions/models/region.yml"] & Record